From 4757e21f5477d10934c8e26d28e19bbafaa7196f Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期四, 02 十一月 2023 19:26:56 +0800
Subject: [PATCH] 物料详情的弹框开发一半

---
 src/views/dashboard/components/InputOutMaterialInfo.vue |   13 ++
 src/views/dashboard/components/MaterialDetails.vue      |  176 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 186 insertions(+), 3 deletions(-)

diff --git a/src/views/dashboard/components/InputOutMaterialInfo.vue b/src/views/dashboard/components/InputOutMaterialInfo.vue
index a178b56..fa0766c 100644
--- a/src/views/dashboard/components/InputOutMaterialInfo.vue
+++ b/src/views/dashboard/components/InputOutMaterialInfo.vue
@@ -1,5 +1,5 @@
 <template>
-  <div class="input-out-material-info">
+  <div class="input-out-material-info" @click="materialInfoClick">
     <div class="card-t">
       <div class="card-t-t card_drop">
         <el-popover :width="200" placement="top-start" trigger="click">
@@ -35,12 +35,13 @@
       </div>
     </div>
   </div>
+  <MaterialDetails v-model="showModal"></MaterialDetails>
 </template>
 <script setup lang="ts">
 import type { inputMaterial } from '@/api/task'
+import MaterialDetails from '@/views/dashboard/components/MaterialDetails.vue'
 import { Right } from '@element-plus/icons-vue'
-import { toRefs } from 'vue'
-
+import { ref, toRefs } from 'vue'
 export interface InputOutMaterialInfoProps {
   item: inputMaterial
   background?: string
@@ -50,6 +51,11 @@
   background: '#ffcc00'
 })
 const { item, background } = toRefs(props)
+const showModal = ref(false)
+
+function materialInfoClick() {
+  showModal.value = true
+}
 </script>
 
 <style scoped lang="scss">
@@ -70,6 +76,7 @@
   margin-right: 10px;
   margin-bottom: 10px;
   position: relative;
+  cursor: pointer;
 
   .card_drop {
     width: 100%;
diff --git a/src/views/dashboard/components/MaterialDetails.vue b/src/views/dashboard/components/MaterialDetails.vue
new file mode 100644
index 0000000..9801f76
--- /dev/null
+++ b/src/views/dashboard/components/MaterialDetails.vue
@@ -0,0 +1,176 @@
+<template>
+  <div class="material-details">
+    <BaseModal v-model="modelData" :wider="true" @close="closeModal">
+      <template #title>鐗╂枡璇︽儏 </template>
+      <div class="details-box">
+        <div class="details-t">
+          <div class="details-t-t">{{ materialObj.form.materialId }}</div>
+          <div class="details-t-b">
+            <div class="details-t-b-l">
+              <div class="item">鐗╂枡鍚嶇О锛歿{ materialObj.form.materialName }}</div>
+              <div class="item">鏁伴噺锛歿{ materialObj.form.amount }}</div>
+              <div class="item">鐗╂枡瑙勬牸锛歿{ materialObj.form.amount }}</div>
+              <div class="item">鐗╂枡绫诲瀷锛歿{ materialObj.form.amount }}</div>
+            </div>
+            <BigButton class="btn" bg-color="#03d203f0">宸查�佽揪</BigButton>
+          </div>
+        </div>
+        <div class="details-b">
+          <el-scrollbar always class="scroller">
+            <div class="details-b-t">杩愯緭璇︽儏</div>
+            <div class="details-b-b">
+              <el-steps finish-status="success" class="steps" direction="vertical">
+                <el-step v-for="(item, index) in materialObj.materialFlow" :key="index" icon="">
+                  <template #title>
+                    {{ item.label }}
+                  </template>
+                  <template #description>
+                    {{ item.date }}
+                    {{ item.name }}
+                    {{ item.deviceName }}
+                  </template>
+                </el-step>
+              </el-steps>
+            </div>
+          </el-scrollbar>
+        </div>
+      </div>
+    </BaseModal>
+  </div>
+</template>
+<script setup lang="ts">
+import { useVModel } from '@vueuse/core'
+import BigButton from '@/views/dashboard/components/BigButton.vue'
+import { ref } from 'vue'
+export interface MaterialDetailsProps {
+  modelValue: boolean
+}
+const props = withDefaults(defineProps<MaterialDetailsProps>(), {
+  modelValue: false
+})
+const emit = defineEmits<{
+  'update:modelValue': [show: boolean]
+}>()
+const modelData = useVModel(props, 'modelValue', emit)
+
+function closeModal() {
+  modelData.value = false
+}
+const materialObj = {
+  form: {
+    materialId: '1111',
+    materialName: '杈撳叆鍚嶇О',
+    amount: 10,
+    unit: '涓�',
+    date: 10
+  },
+  materialFlow: [
+    {
+      label: '宸查�佽揪',
+      date: '2023-07-11',
+      name: '寮犱笁',
+      deviceName: '璁惧鍚嶇О'
+    },
+    {
+      label: '宸查�佽揪',
+      date: '2023-07-11',
+      name: '寮犱笁',
+      deviceName: '璁惧鍚嶇О'
+    },
+    {
+      label: '宸查�佽揪',
+      date: '2023-07-11',
+      name: '寮犱笁',
+      deviceName: '璁惧鍚嶇О'
+    },
+    {
+      label: '宸查�佽揪',
+      date: '2023-07-11',
+      name: '寮犱笁',
+      deviceName: '璁惧鍚嶇О'
+    }
+  ]
+}
+</script>
+<style scoped lang="scss">
+$status-default: #03d203f0;
+$status-running: #f76c0f;
+$status-ready: #13235a;
+$status-done: #0dfde6;
+.details-box {
+  height: 600px;
+  .details-t {
+    width: 100%;
+    padding: 10px 30px;
+    height: 100px;
+    color: $status-done;
+    font-size: 16px;
+    .details-t-t {
+      font-size: 23px;
+      line-height: 30px;
+      font-weight: bold;
+      margin-bottom: 10px;
+    }
+    .details-t-b {
+      width: 100%;
+      height: 90px;
+      padding: 0 30px 10px;
+      .details-t-b-l {
+        float: left;
+        width: calc(100% - 110px);
+        .item {
+          width: 50%;
+          float: left;
+        }
+      }
+      .btn {
+        width: 110px;
+        float: right;
+        font-size: 14px;
+        height: 35px;
+        line-height: 35px;
+      }
+    }
+  }
+  .details-b {
+    width: calc(100% - 60px);
+    padding: 10px 20px;
+    background: $status-ready;
+    border-radius: 4px;
+    margin: 20px 30px 10px;
+    height: calc(100% - 140px);
+    color: #fff;
+    .details-b-t {
+      font-size: 17px;
+      line-height: 30px;
+      height: 30px;
+      width: 100%;
+    }
+    .details-b-b {
+      width: 100%;
+      height: calc(100% - 30px);
+      overflow-x: auto;
+      margin-top: -5px;
+      padding: 0 20px;
+      .steps {
+        height: 100%;
+        .el-step__icon {
+          width: 16px;
+          height: 16px;
+        }
+        .el-step__title {
+          line-height: 25px;
+          font-size: 14px;
+        }
+        .el-step__title.is-process {
+          color: #a8abb2;
+        }
+      }
+    }
+  }
+}
+
+.scroller {
+  padding: 4px 16px;
+}
+</style>

--
Gitblit v1.8.0