From 037a7112a2bc9e38bb2f398ff5ca740ac01a8fb2 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期四, 20 二月 2025 10:21:05 +0800
Subject: [PATCH] 检验任务搬迁30%

---
 src/views/performance/manHour/workTimeConfig.vue |  249 +++++++++++++++++++++++++++++++------------------
 1 files changed, 156 insertions(+), 93 deletions(-)

diff --git a/src/views/performance/manHour/workTimeConfig.vue b/src/views/performance/manHour/workTimeConfig.vue
index 590c182..5364c89 100644
--- a/src/views/performance/manHour/workTimeConfig.vue
+++ b/src/views/performance/manHour/workTimeConfig.vue
@@ -4,97 +4,108 @@
       <div class="search_thing">
         <div class="search_label">缂栧彿锛�</div>
         <div class="search_input">
-          <el-input
-            size="small"
-            placeholder="璇疯緭鍏�"
-            clearable
-            v-model="queryParams.number"
-            @keyup.enter.native="refreshTable()"
-          ></el-input>
+          <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="queryParams.number"
+            @keyup.enter.native="refreshTable()"></el-input>
         </div>
       </div>
       <div class="search_thing">
         <div class="search_label">瀹為獙瀹わ細</div>
-        <el-select
-          v-model="queryParams.laboratory"
-          placeholder="鍏ㄩ儴"
-          size="small"
-          @change="refreshTable()"
-          clearable
-        >
-          <el-option
-            v-for="item in laboratoryList"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          >
+        <el-select v-model="queryParams.laboratory" placeholder="鍏ㄩ儴" size="small" @change="refreshTable()" clearable>
+          <el-option v-for="item in laboratoryList" :key="item.value" :label="item.label" :value="item.value">
           </el-option>
         </el-select>
       </div>
       <div class="search_thing">
         <div class="search_label">閮ㄩ棬锛�</div>
         <div class="search_input">
-          <el-input
-            size="small"
-            placeholder="璇疯緭鍏�"
-            clearable
-            v-model="queryParams.department"
-            @keyup.enter.native="refreshTable()"
-          ></el-input>
+          <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="queryParams.department"
+            @keyup.enter.native="refreshTable()"></el-input>
         </div>
       </div>
       <div class="search_thing" style="padding-left: 30px">
         <el-button size="small" @click="refresh()">閲� 缃�</el-button>
-        <el-button size="small" type="primary" @click="refreshTable()"
-          >鏌� 璇�</el-button
-        >
+        <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
       </div>
-      <el-button
-        size="small"
-        type="primary"
-        style="position: absolute; right: 50px"
-        @click="openAdd"
-        >鏂� 澧�</el-button
-      >
+      <el-button size="small" type="primary" style="position: absolute; right: 50px" @click="openAdd('鏂板')"
+        v-if="checkPermi(['performance:manHour:workTimeConfig:add'])">鏂� 澧�</el-button>
     </div>
     <div class="table">
-      <lims-table
-        :tableData="tableData"
-        :column="column"
-        :page="page"
-        :tableLoading="tableLoading"
-        :height="'calc(100vh - 150px)'"
-        @pagination="pagination"
-      ></lims-table>
+      <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading"
+        :height="'calc(100vh - 290px)'" @pagination="pagination"></lims-table>
     </div>
+    <!-- 鏂板/缂栬緫 -->
+    <el-dialog :title="title" :visible.sync="timeDia" width="500px">
+      <el-form :model="timeForm" ref="timeForm" :rules="timeRules" label-position="right" label-width="120px">
+        <el-form-item label="缂栧彿" prop="number">
+          <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="timeForm.number"></el-input>
+        </el-form-item>
+        <el-form-item label="杈呭姪椤圭洰鍚嶇О" prop="auxiliaryProject">
+          <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="timeForm.auxiliaryProject">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="閮ㄩ棬" prop="department">
+          <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="timeForm.department">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="瀹為獙瀹�" prop="laboratory">
+          <el-select v-model="timeForm.laboratory" size="small" clearable placeholder="璇烽�夋嫨" style="width: 100%">
+            <el-option v-for="item in laboratoryList" :key="item.value" :label="item.label" :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="鍗曚綅" prop="unit">
+          <el-select v-model="timeForm.unit" size="small" clearable placeholder="璇烽�夋嫨" style="width: 100%">
+            <el-option v-for="item in unitList" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="鏍稿噯宸ユ椂" prop="approvedWorkingHour">
+          <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="timeForm.approvedWorkingHour">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="澶囨敞" prop="remarks">
+          <el-input size="small" placeholder="璇疯緭鍏�" type="textarea" :rows="2" clearable v-model="timeForm.remarks">
+          </el-input>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="timeDia = false">鍙� 娑�</el-button>
+        <el-button :loading="uploading" type="primary" @click="submitProduct('timeForm')">纭� 璁�</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import ValueTable from "@/components/Table/value-table.vue";
 import limsTable from "@/components/Table/lims-table.vue";
-import { checkPermi } from "@/utils/permission"; // 鏉冮檺鍒ゆ柇鍑芥暟
 import {
   selectAuxiliaryWorkingHours,
-  insertAuxiliaryWorkingHoursDay,
+  insertAuxiliaryWorkingHours,
   obtainItemParameterList,
+  upAuxiliaryWorkingHours,
+  deleteAuxiliaryWorkingHours,
 } from "@/api/performance/manHour";
 export default {
   components: {
-    ValueTable,
     limsTable,
   },
+  dicts: ["sys_unit"],
   data() {
     return {
       laboratoryList: [],
-      partList: [],
-      addPower: true,
       queryParams: {},
       tableData: [],
       column: [
         { label: "缂栧彿", prop: "number" },
         { label: "杈呭姪椤圭洰鍚嶇О", prop: "auxiliaryProject", width: "120px" },
-        { label: "瀹為獙瀹�", prop: "laboratory" },
+        {
+          label: "瀹為獙瀹�",
+          prop: "laboratory",
+          dataType: "tag",
+          formatData: (params) => {
+            return this.laboratoryList.find((m) => m.value == params).label;
+          },
+        },
         { label: "鍗曚綅", prop: "unit" },
         { label: "鏍稿噯宸ユ椂", prop: "approvedWorkingHour" },
         { label: "閮ㄩ棬", prop: "department" },
@@ -103,16 +114,17 @@
           dataType: "action",
           fixed: "right",
           label: "鎿嶄綔",
-          width: "160px",
           operation: [
             {
               name: "缂栬緫",
               type: "text",
               clickFun: (row) => {
-                this.handleEdit(row);
+                this.openAdd("缂栬緫", row);
               },
               showHide: (row) => {
-                return this.checkPermi(["standard:model:edit"]);
+                return this.checkPermi([
+                  "performance:manHour:workTimeConfig:edit",
+                ]);
               },
             },
             {
@@ -122,7 +134,9 @@
                 this.handleDelete(row);
               },
               showHide: (row) => {
-                return this.checkPermi(["standard:model:del"]);
+                return this.checkPermi([
+                  "performance:manHour:workTimeConfig:del",
+                ]);
               },
             },
           ],
@@ -135,16 +149,31 @@
       },
       tableLoading: false,
       unitList: [],
+      title: "鏂板",
+      timeDia: false,
+      timeForm: {},
+      timeRules: {
+        number: [{ required: true, message: "璇疯緭鍏ョ紪鍙�", trigger: "blur" }],
+        auxiliaryProject: [
+          { required: true, message: "璇疯緭鍏ヨ緟鍔╅」鐩悕绉�", trigger: "blur" },
+        ],
+        laboratory: [
+          { required: true, message: "璇烽�夋嫨瀹為獙瀹�", trigger: "change" },
+        ],
+        unit: [{ required: true, message: "璇烽�夋嫨鍗曚綅", trigger: "change" }],
+        approvedWorkingHour: [
+          { required: true, message: "璇疯緭鍏ユ牳鍑嗗伐鏃�", trigger: "blur" },
+        ],
+      },
+      uploading: false,
     };
   },
   mounted() {
-    this.entityCopy = this.HaveJson(this.componentData.entity);
-    this.getPower();
     this.obtainItemParameterList();
     this.selectEnumByCategoryForUnit();
+    this.getList();
   },
   methods: {
-    checkPermi,
     getList() {
       this.tableLoading = true;
       let param = { ...this.queryParams, ...this.page };
@@ -161,8 +190,9 @@
           this.tableLoading = false;
         });
     },
-    pagination(current, size) {
-      this.page.current = current;
+    pagination({ page, limit }) {
+      this.page.current = page;
+      this.page.size = limit;
       this.getList();
     },
     refresh() {
@@ -174,34 +204,15 @@
       this.page.current = 1;
       this.getList();
     },
-    getPower(radio) {
-      let power = JSON.parse(sessionStorage.getItem("power"));
-      let up = false;
-      let del = false;
-      let add = false;
-      for (var i = 0; i < power.length; i++) {
-        if (power[i].menuMethod == "upDeviceParameter") {
-          up = true;
-        }
-        if (power[i].menuMethod == "delDeviceParameter") {
-          del = true;
-        }
-        if (power[i].menuMethod == "addDeviceParameter") {
-          add = true;
-        }
+    openAdd(title, row) {
+      this.title = title;
+      if (row) {
+        this.timeForm = row;
+        this.timeForm.laboratory = Number(this.timeForm.laboratory);
+      } else {
+        this.timeForm = {};
       }
-      if (!up) {
-        this.componentData.do.splice(1, 1);
-      }
-      if (!del) {
-        this.componentData.do.splice(0, 1);
-      }
-      this.addPower = add;
-    },
-    openAdd() {
-      // this.$refs.ValueTable0.openAddDia(
-      //   this.$api.auxiliaryWorkingHours.insertAuxiliaryWorkingHours
-      // );
+      this.timeDia = true;
     },
     obtainItemParameterList() {
       obtainItemParameterList().then((res) => {
@@ -220,6 +231,59 @@
         this.unitList = response.data;
       });
     },
+    submitProduct(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          this.uploading = true;
+          if (this.title == "鏂板") {
+            insertAuxiliaryWorkingHours(this.timeForm)
+              .then((res) => {
+                this.uploading = false;
+                if (res.code != 200) {
+                  return;
+                }
+                this.$message.success("鎻愪氦鎴愬姛");
+                this.refresh();
+                this.timeDia = false;
+              })
+              .catch((err) => {
+                this.uploading = false;
+              });
+          } else {
+            upAuxiliaryWorkingHours(this.timeForm)
+              .then((res) => {
+                this.uploading = false;
+                if (res.code != 200) {
+                  return;
+                }
+                this.$message.success("鎻愪氦鎴愬姛");
+                this.refresh();
+                this.timeDia = false;
+              })
+              .catch((err) => {
+                this.uploading = false;
+              });
+          }
+        } else {
+          return false;
+        }
+      });
+    },
+    handleDelete(row) {
+      this.$confirm("鏄惁鍒犻櫎璇ユ潯鏁版嵁?", "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+      })
+        .then(() => {
+          deleteAuxiliaryWorkingHours({ id: row.id }).then((res) => {
+            if (res.code == 201) return;
+            this.$message.success("鍒犻櫎鎴愬姛");
+            this.refresh();
+          });
+        })
+        .catch(() => { });
+    },
   },
 };
 </script>
@@ -228,6 +292,7 @@
 .work-time-config {
   height: 100%;
 }
+
 .search {
   background-color: #fff;
   height: 80px;
@@ -250,11 +315,9 @@
 .search_input {
   width: calc(100% - 70px);
 }
+
 .table {
-  margin-top: 10px;
-  background-color: #fff;
-  width: calc(100% - 40px);
-  height: calc(100% - 60px - 80px - 10px - 24px);
-  padding: 20px;
+  padding: 10px;
+  padding-top: 0;
 }
 </style>

--
Gitblit v1.9.3