From 34a7e21b3508ac0f5f011d958210fdb7176d726b Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期六, 09 九月 2023 11:54:05 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.22:9001/r/lims-before

---
 src/views/experiment/planAssignments/index.vue |  356 ++++++++++++++++++++++++++++++----------------------------
 1 files changed, 185 insertions(+), 171 deletions(-)

diff --git a/src/views/experiment/planAssignments/index.vue b/src/views/experiment/planAssignments/index.vue
index cffcc61..ad051ce 100644
--- a/src/views/experiment/planAssignments/index.vue
+++ b/src/views/experiment/planAssignments/index.vue
@@ -3,12 +3,17 @@
     <div class="top-bar">
       <el-form ref="form" :inline="true" :model="searchData">
         <el-form-item label="璁惧鍚嶇О:" class="sermargin">
-          <el-select v-model="searchData.devicename" placeholder="鍏ㄩ儴" style="width: 100px;">
+          <el-select
+            v-model="searchData.devicename"
+            placeholder="鍏ㄩ儴"
+            style="width: 120px"
+          >
             <el-option
-              v-for="item in options"
+              v-for="item in options1"
               :key="item.value"
               :label="item.label"
-              :value="item.value">
+              :value="item.value"
+            >
             </el-option>
           </el-select>
         </el-form-item>
@@ -16,206 +21,215 @@
           <el-date-picker
             v-model="searchData.time"
             type="daterange"
+            value-format="yyyy-MM-dd"
             range-separator="~"
             start-placeholder="寮�濮嬫棩鏈�"
-            end-placeholder="缁撴潫鏃ユ湡">
+            end-placeholder="缁撴潫鏃ユ湡"
+          >
           </el-date-picker>
         </el-form-item>
-        <el-form-item label="妫�楠屼汉:" style="margin-right: 20px;">
-          <el-select v-model="searchData.person" placeholder="鍏ㄩ儴" style="width: 80px;margin-right: 100px;">
+        <el-form-item label="妫�楠屼汉:" style="margin-right: 20px">
+          <el-select
+            v-model="searchData.person"
+            placeholder="鍏ㄩ儴"
+            style="width: 100px; margin-right: 100px"
+          >
             <el-option
-              v-for="item in options"
+              v-for="item in options2"
               :key="item.value"
               :label="item.label"
-              :value="item.value">
+              :value="item.value"
+            >
             </el-option>
           </el-select>
         </el-form-item>
         <el-form-item>
-          <el-button type="primary" plain style="margin-right: 10px;">閲嶇疆</el-button>
-          <el-button type="primary">鏌ヨ</el-button>
+          <el-button
+            type="primary"
+            plain
+            style="margin-right: 10px"
+            @click="resetData()"
+            >閲嶇疆</el-button
+          >
+          <el-button type="primary" @click="getData()">鏌ヨ</el-button>
         </el-form-item>
-        </el-form>
+      </el-form>
     </div>
     <div class="table-box">
       <div class="formwrapper">
         <el-table
           ref="planTable"
           :max-height="800"
-          :cell-style="{textAlign: 'center'}"
-          :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}"
+          :cell-style="{ textAlign: 'center' }"
+          :header-cell-style="{
+            border: '0px',
+            background: '#f5f7fa',
+            color: '#606266',
+            boxShadow: 'inset 0 1px 0 #ebeef5',
+            textAlign: 'center',
+          }"
           :data="planTable"
           style="width: 100%"
         >
-        <el-table-column
-          type="index"
-          label="搴忓彿"
-          min-width="10%"
-        />
-        <el-table-column
-          prop="device"
-          label="妫�楠岃澶�"
-          min-width="8%"
-        />
-        <el-table-column
-          prop="samplename"
-          label="鏍峰搧鍚嶇О"
-          min-width="8%"
-        />
-        <el-table-column
-          prop="sampleid"
-          label="鏍峰搧缂栧彿"
-          min-width="10%"
-        />
-        <el-table-column
-          prop="modelandspecification"
-          label="瑙勬牸鍨嬪彿"
-          min-width="12%"
-        />
-        <el-table-column
-          prop="unit"
-          label="鍗曚綅"
-          min-width="5%"
-        />
-        <el-table-column
-          prop="amount"
-          label="鏁伴噺"
-          min-width="5%"
-        />
-        <el-table-column
-          prop="checkproject"
-          label="妫�楠岄」鐩�"
-          min-width="12%"
-        />
-        <el-table-column
-          prop="checker"
-          label="妫�楠屼汉"
-          min-width="6%"
-        />
-        <el-table-column
-          prop="duration"
-          label="璁″垝宸ユ湡/h"
-          min-width="8%"
-        />
-        <el-table-column
-          prop="progress"
-          label="妫�楠岃繘搴�"
-          min-width="12%">
-          <template slot-scope="scope">
-            <div v-if="scope.row.progress === 100" style="display: flex;">
-              <el-progress :text-inside="true" :stroke-width="15" :percentage="scope.row.progress" status="success" style="width: 70%;"></el-progress>
-              <span style="color: rgb(103, 194, 58);">宸插畬鎴�</span>
-            </div>
-            <div v-if="scope.row.progress <100 && scope.row.progress >0" style="display: flex;">
-              <el-progress :text-inside="true" :stroke-width="15" :percentage="scope.row.progress" status="warning" style="width: 70%;"></el-progress>
-              <span style="color: rgb(230, 162, 60);">妫�楠屼腑</span>
-            </div>
-            <div v-if="scope.row.progress === 0" style="display: flex;">
-              <el-progress :text-inside="true" :stroke-width="15" :percentage="scope.row.progress" style="width: 70%;"></el-progress>
-              <span style="color: gray">鏈垎閰�</span>
-            </div>
-            <div v-else>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column
-          prop="starttime"
-          label="璁″垝寮�濮嬫椂闂�"
-          min-width="10%"
-        />
-        <el-table-column
-          prop="finishtime"
-          label="璁″垝缁撴潫鏃堕棿"
-          min-width="10%"
-        />
-        <el-table-column
-            label="鎿嶄綔"
-            min-width="8%"
-        >
-          <template slot-scope="scope">
-            <el-button type="text" size="small" @click="handleClick(scope.row)">鏌ョ湅</el-button>
-          </template>
-        </el-table-column>
+          <el-table-column type="index" label="搴忓彿" min-width="10%" />
+          <el-table-column prop="device" label="妫�楠岃澶�" min-width="8%" />
+          <el-table-column prop="samplename" label="鏍峰搧鍚嶇О" min-width="8%" />
+          <el-table-column prop="sampleid" label="鏍峰搧缂栧彿" min-width="10%" />
+          <el-table-column
+            prop="modelandspecification"
+            label="瑙勬牸鍨嬪彿"
+            min-width="12%"
+          />
+          <el-table-column prop="unit" label="鍗曚綅" min-width="5%" />
+          <el-table-column prop="amount" label="鏁伴噺" min-width="5%" />
+          <el-table-column
+            prop="checkproject"
+            label="妫�楠岄」鐩�"
+            min-width="12%"
+          />
+          <el-table-column prop="checker" label="妫�楠屼汉" min-width="6%" />
+          <el-table-column prop="duration" label="璁″垝宸ユ湡/h" min-width="8%" />
+          <el-table-column prop="progress" label="妫�楠岃繘搴�" min-width="12%">
+            <template slot-scope="scope">
+              <div v-if="scope.row.progress === 100" style="display: flex">
+                <el-progress
+                  :text-inside="true"
+                  :stroke-width="15"
+                  :percentage="scope.row.progress"
+                  status="success"
+                  style="width: 70%"
+                ></el-progress>
+                <span style="color: rgb(103, 194, 58)">宸插畬鎴�</span>
+              </div>
+              <div
+                v-if="scope.row.progress < 100 && scope.row.progress > 0"
+                style="display: flex"
+              >
+                <el-progress
+                  :text-inside="true"
+                  :stroke-width="15"
+                  :percentage="scope.row.progress"
+                  status="warning"
+                  style="width: 70%"
+                ></el-progress>
+                <span style="color: rgb(230, 162, 60)">妫�楠屼腑</span>
+              </div>
+              <div v-if="scope.row.progress === 0" style="display: flex">
+                <el-progress
+                  :text-inside="true"
+                  :stroke-width="15"
+                  :percentage="scope.row.progress"
+                  style="width: 70%"
+                ></el-progress>
+                <span style="color: gray">鏈垎閰�</span>
+              </div>
+              <div v-else></div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="starttime"
+            label="璁″垝寮�濮嬫椂闂�"
+            min-width="10%"
+          />
+          <el-table-column
+            prop="finishtime"
+            label="璁″垝缁撴潫鏃堕棿"
+            min-width="10%"
+          />
+          <el-table-column label="鎿嶄綔" min-width="8%">
+            <template slot-scope="scope">
+              <el-button
+                type="text"
+                size="small"
+                @click="handleClick(scope.row)"
+                >鏌ョ湅</el-button
+              >
+            </template>
+          </el-table-column>
         </el-table>
       </div>
-      </div>
+    </div>
   </div>
 </template>
 
 <script>
+import { selectAllPlan } from "@/api/experiment/planAssignments";
 export default {
   data() {
     return {
       searchData: {
         devicename: "",
-        time: "",
+        time: [],
         person: "",
       },
-      options: [
-        {
-          value: "閫夐」1",
-          label: "閫夐」1",
-        },
-        {
-          value: "閫夐」2",
-          label: "閫夐」2",
-          disabled: true,
-        },
-      ],
-      planTable: [{
-        device: '鎷夊姏鏈�',
-        samplename: '闀�閿岄挗缁炵嚎',
-        sampleid: 'SN1027401-12937',
-        modelandspecification: 'JLHA/G1A-185/30-14/7',
-        unit: 'm',
-        amount: '200',
-        checkproject: '鎶楀帇寮哄害锛堢粸鍓嶏級',
-        checker: '榛勫皬鏄�',
-        duration: '2',
-        progress: 100,
-        starttime: '2023-08-04 8:00',
-        finishtime: '2023-08-04 10:00',
-      },{
-        device: '鎷夊姏鏈�',
-        samplename: '闀�閿岄挗缁炵嚎',
-        sampleid: 'SN1027401-12937',
-        modelandspecification: 'JLHA/G1A-185/30-14/7',
-        unit: 'm',
-        amount: '200',
-        checkproject: '鎶楀帇寮哄害锛堢粸鍓嶏級',
-        checker: '榛勫皬鏄�',
-        duration: '2',
-        progress: 60,
-        starttime: '2023-08-04 8:00',
-        finishtime: '2023-08-04 10:00',
-      },{
-        device: '鎷夊姏鏈�',
-        samplename: '闀�閿岄挗缁炵嚎',
-        sampleid: 'SN1027401-12937',
-        modelandspecification: 'JLHA/G1A-185/30-14/7',
-        unit: 'm',
-        amount: '200',
-        checkproject: '鎶楀帇寮哄害锛堢粸鍓嶏級',
-        checker: '榛勫皬鏄�',
-        duration: '2',
-        progress: 30,
-        starttime: '2023-08-04 8:00',
-        finishtime: '2023-08-04 10:00',
-      },{
-        device: '鎷夊姏鏈�',
-        samplename: '闀�閿岄挗缁炵嚎',
-        sampleid: 'SN1027401-12937',
-        modelandspecification: 'JLHA/G1A-185/30-14/7',
-        unit: 'm',
-        amount: '200',
-        checkproject: '鎶楀帇寮哄害锛堢粸鍓嶏級',
-        checker: '榛勫皬鏄�',
-        duration: '2',
-        progress: 0,
-        starttime: '2023-08-04 8:00',
-        finishtime: '2023-08-04 10:00',
-      }]
+      options1: [],
+      options2: [],
+      planTable: [],
+      planTableView: [],
     };
+  },
+  created() {
+    this.getData();
+  },
+
+  methods: {
+    // 鏌ヨ鍒楄〃
+    async getData() {
+      const params = {
+        device: this.searchData.devicename
+          ? this.searchData.devicename
+          : undefined,
+        user: this.searchData.person ? this.searchData.person : undefined,
+        beginTime:
+          this.searchData.time && this.searchData.time.length > 0
+            ? this.searchData.time[0]
+            : undefined,
+        endTime:
+          this.searchData.time && this.searchData.time.length > 0
+            ? this.searchData.time[1]
+            : undefined,
+      };
+      const { data } = await selectAllPlan(params);
+      this.planTable = data;
+      if (this.options1.length === 0) {
+        //娣诲姞璁惧鍚嶇О
+        const deviceData = [];
+        this.planTable.forEach((res) => {
+          if (!deviceData.includes(res.device)) {
+            deviceData.push(res.device);
+          }
+        });
+        deviceData.forEach((item) => {
+          this.options1.push({
+            value: item,
+            label: item,
+          });
+        });
+        //娣诲姞鐢ㄦ埛
+        const userData = [];
+        this.planTable.forEach((res) => {
+          if (res.checker != undefined && !userData.includes(res.checker)) {
+            userData.push(res.checker);
+          }
+        });
+        userData.forEach((item) => {
+          this.options2.push({
+            value: item,
+            label: item,
+          });
+        });
+        console.log(this.options2);
+      }
+    },
+    // 閲嶇疆鎸夐挳
+    resetData() {
+      (this.searchData = {
+        devicename: "",
+        time: [],
+        person: "",
+      }),
+        this.getData();
+    },
   },
 };
 </script>
@@ -236,16 +250,16 @@
     margin-right: 60px;
   }
 }
-.table-box{
+.table-box {
   background-color: #fff;
   margin: 0px -15px;
   margin-top: 35px;
   display: flex;
   flex-direction: column;
   height: 78vh;
-  .formwrapper{
+  .formwrapper {
     padding: 0px 20px;
-    margin-top: 0px;
+    margin-top: 20px;
     flex: 1;
     background: #fff;
     /* padding: 20px 20px 10px 20px; */

--
Gitblit v1.9.3