From 0c296ab5e1e4ed1eaab1940f85959ed66f68fbe7 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期二, 18 二月 2025 09:39:36 +0800
Subject: [PATCH] 完成工时管理搬迁

---
 src/views/performance/manHour/workTimeConfig.vue |  253 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 206 insertions(+), 47 deletions(-)

diff --git a/src/views/performance/manHour/workTimeConfig.vue b/src/views/performance/manHour/workTimeConfig.vue
index 590c182..83dcc11 100644
--- a/src/views/performance/manHour/workTimeConfig.vue
+++ b/src/views/performance/manHour/workTimeConfig.vue
@@ -53,7 +53,8 @@
         size="small"
         type="primary"
         style="position: absolute; right: 50px"
-        @click="openAdd"
+        @click="openAdd('鏂板')"
+        v-if="checkPermi(['performance:manHour:workTimeConfig:add'])"
         >鏂� 澧�</el-button
       >
     </div>
@@ -63,38 +64,145 @@
         :column="column"
         :page="page"
         :tableLoading="tableLoading"
-        :height="'calc(100vh - 150px)'"
+        :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" },
@@ -109,10 +217,12 @@
               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 +232,9 @@
                 this.handleDelete(row);
               },
               showHide: (row) => {
-                return this.checkPermi(["standard:model:del"]);
+                return this.checkPermi([
+                  "performance:manHour:workTimeConfig:del",
+                ]);
               },
             },
           ],
@@ -135,16 +247,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 +288,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 +302,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) => {
@@ -219,6 +328,59 @@
       this.getDicts("sys_unit").then((response) => {
         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(() => {});
     },
   },
 };
@@ -251,10 +413,7 @@
   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