From 38f01dc619fb9b7326abc345a216793750758c9a Mon Sep 17 00:00:00 2001
From: lxp <1928192722@qq.com>
Date: 星期五, 14 三月 2025 20:09:45 +0800
Subject: [PATCH] Merge branch 'dev' of http://114.132.189.42:9002/r/center-lims-before-ruoyi into dev

---
 src/views/performance/manHour/work-time-config.vue |  469 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 469 insertions(+), 0 deletions(-)

diff --git a/src/views/performance/manHour/work-time-config.vue b/src/views/performance/manHour/work-time-config.vue
new file mode 100644
index 0000000..abe1b42
--- /dev/null
+++ b/src/views/performance/manHour/work-time-config.vue
@@ -0,0 +1,469 @@
+<template>
+  <div class="work-time-config bg-1">
+    <div class="search">
+      <div class="search_thing">
+        <div class="search_label">缂栧彿锛�</div>
+        <div class="search_input">
+          <el-input
+            size="small"
+            placeholder="璇疯緭鍏�"
+            clearable
+            v-model="entity.number"
+            @keyup.enter.native="refreshTable()"
+          ></el-input>
+        </div>
+      </div>
+      <div class="search_thing">
+        <div class="search_label">瀹為獙瀹わ細</div>
+        <el-select
+          v-model="entity.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="entity.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
+        >
+      </div>
+      <el-button
+        size="small"
+        type="primary"
+        style="position: absolute; right: 50px"
+        @click="openAdd()"
+        >鏂� 澧�</el-button
+      >
+    </div>
+    <div class="table">
+      <!-- <ValueTable ref="ValueTable0"
+                  :url="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours" :upUrl="$api.auxiliaryWorkingHours.upAuxiliaryWorkingHours"
+                  :delUrl="$api.auxiliaryWorkingHours.deleteAuxiliaryWorkingHours" :componentData="componentData" :key="upIndex" /> -->
+      <lims-table
+        :tableData="tableData"
+        :column="column"
+        :tableLoading="tableLoading"
+        :height="'calc(100vh - 270px)'"
+        :page="page"
+        @pagination="pagination"
+      ></lims-table>
+    </div>
+
+    <!-- 鏂板 缂栬緫-->
+    <el-dialog
+      :title="title"
+      :visible.sync="dialogVisible"
+      width="30%"
+      :before-close="handleClose"
+    >
+      <el-form
+        :model="formData"
+        label-position="right"
+        :rules="rules"
+        ref="form"
+        label-width="120px"
+        class="demo-form"
+      >
+        <el-form-item label="缂栧彿" prop="number">
+          <el-input
+            v-model="formData.number"
+            size="mini"
+            style="width: 100%"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="杈呭姪椤圭洰鍚嶇О" prop="auxiliaryProject">
+          <el-input
+            v-model="formData.auxiliaryProject"
+            size="mini"
+            style="width: 100%"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="瀹為獙瀹�" prop="laboratory">
+          <el-select
+            v-model="formData.laboratory"
+            clearable
+            placeholder="璇烽�夋嫨"
+            size="mini"
+            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="formData.unit"
+            clearable
+            placeholder="璇烽�夋嫨"
+            size="mini"
+            style="width: 100%"
+          >
+            <el-option
+              v-for="item in utilList"
+              :key="item.dictValue"
+              :label="item.dictLabel"
+              :value="item.dictValue"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="鏍稿噯宸ユ椂" prop="approvedWorkingHour">
+          <el-input
+            v-model="formData.approvedWorkingHour"
+            size="mini"
+            style="width: 100%"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="澶囨敞">
+          <el-input
+            v-model="formData.remarks"
+            size="mini"
+            style="width: 100%"
+          ></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="submitForm('form')"
+            >鎻愪氦</el-button
+          >
+          <el-button @click="handleClose">鍙栨秷</el-button>
+        </el-form-item>
+      </el-form>
+    </el-dialog>
+  </div>
+</template>
+  
+  <script>
+import limsTable from "@/components/Table/lims-table.vue";
+import {
+  selectAuxiliaryWorkingHours,
+  obtainItemParameterList,
+  deleteAuxiliaryWorkingHours,
+  upAuxiliaryWorkingHours,
+  insertAuxiliaryWorkingHours
+} from "../../../api/business/manHour";
+import { getYearAndMonthAndDays } from "../../../utils/date";
+
+import { getDicts } from "@/api/system/dict/data";
+import { number } from "echarts";
+export default {
+  components: {
+    limsTable,
+  },
+  data() {
+    return {
+      rules: {
+        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" },
+        ],
+      },
+      dialogVisible: false,
+      formData: {
+        id: null,
+        number: null,
+        auxiliaryProject: null,
+        laboratory: '',
+        unit: '',
+        approvedWorkingHour: null,
+        remarks: null,
+      },
+      title: "",
+      utilList: [],
+      tableData: [],
+      column: [
+        {
+          label: "缂栧彿",
+          prop: "number",
+        },
+        {
+          label: "杈呭姪椤圭洰鍚嶇О",
+          prop: "auxiliaryProject",
+        },
+        {
+          dataType: "tag",
+          label: "瀹為獙瀹�",
+          prop: "laboratory",
+          formatData: (params) => {
+            let farmat = "";
+            let list = this.laboratoryList.filter(
+              (item) => item.value == Number(params)
+            );
+            if (list.length > 0) {
+              farmat = list[0].label;
+            }
+            return farmat;
+          },
+          formatType: () => {
+            return "success";
+          },
+        },
+        {
+          label: "鍗曚綅",
+          prop: "unit",
+          dataType: "tag",
+          formatData: (params) => {
+            let farmat = "";
+            let list = this.utilList.filter((item) => item.dictValue == params);
+            if (list.length > 0) {
+              farmat = list[0].dictLabel;
+            }
+            return farmat;
+          },
+          formatType: () => {
+            return "primary";
+          },
+        },
+        {
+          label: "鏍稿噯宸ユ椂",
+          prop: "approvedWorkingHour",
+        },
+        {
+          label: "閮ㄩ棬",
+          prop: "department",
+        },
+        {
+          label: "澶囨敞",
+          prop: "remarks",
+        },
+        {
+          dataType: "action",
+          fixed: "right",
+          label: "鎿嶄綔",
+          operation: [
+            {
+              name: "缂栬緫",
+              type: "text",
+              clickFun: (row) => {
+                this.openAdd(row);
+              },
+            },
+            {
+              name: "鍒犻櫎",
+              type: "text",
+              clickFun: (row) => {
+                this.del(row);
+              },
+            },
+          ],
+        },
+      ],
+      tableLoading: false,
+      page: {
+        current: 1,
+        size: 20,
+        total: 0,
+      },
+      entity: {
+        number: null,
+        department: null,
+        laboratory: null,
+      },
+      entityCopy: {},
+      upIndex: 0,
+      laboratoryList: [],
+      partList: [],
+      addPower: true,
+    };
+  },
+  created() {},
+  mounted() {
+    this.entityCopy = this.HaveJson(this.entity);
+    this.obtainItemParameterList();
+    this.selectEnumByCategoryForUnit();
+    this.getData();
+  },
+  methods: {
+    getData() {
+      this.tableLoading = true;
+      this.page.total = 0;
+      selectAuxiliaryWorkingHours({ ...this.page, ...this.entity }).then(
+        (res) => {
+          this.tableData = res.data.records;
+          this.page.total = res.data.total;
+          this.tableLoading = false;
+        }
+      );
+    },
+    submitForm(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          if (this.formData.id) {
+            upAuxiliaryWorkingHours(this.formData).then((res) => {
+              this.$message({
+                type: "success",
+                message: "鎿嶄綔鎴愬姛!",
+              });
+              this.refreshTable();
+              this.dialogVisible = false;
+            });
+            this.dialogVisible = false;
+          } else {
+            insertAuxiliaryWorkingHours(this.formData).then((res) => {
+              this.$message({
+                type: "success",
+                message: "鎿嶄綔鎴愬姛!",
+              });
+              this.refreshTable();
+              this.dialogVisible = false;
+            });
+          }
+        } else {
+          return false;
+        }
+      });
+    },
+    resetForm(formName) {
+      this.$refs[formName].resetFields();
+    },
+    del(row) {
+      console.log(row);
+      this.$confirm("姝ゆ搷浣滃皢姘镐箙鍒犻櫎, 鏄惁缁х画?", "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+      }).then(() => {
+        deleteAuxiliaryWorkingHours({id:row.id}).then((res) => {
+          this.$message({
+            type: "success",
+            message: "鍒犻櫎鎴愬姛!",
+          });
+          this.refreshTable();
+        });
+      });
+    },
+    refresh() {
+      this.entity = this.HaveJson(this.entityCopy);
+      this.upIndex++;
+    },
+    refreshTable() {
+      this.getData();
+    },
+    pagination({ page, limit }) {
+      this.page.current = page;
+      this.page.size = limit;
+      this.refreshTable();
+    },
+    openAdd(row) {
+        console.log(row);
+        console.log(this.laboratoryList);
+      if (row) {
+        this.title = "缂栬緫";
+        this.formData.id = row.id;
+        this.formData.number = row.number;
+        this.formData.auxiliaryProject = row.auxiliaryProject;
+        this.formData.laboratory = row.laboratory;
+        this.formData.unit = row.unit;
+        this.formData.approvedWorkingHour = row.approvedWorkingHour;
+        this.formData.remarks = row.remarks;
+      } else {
+        this.title = "鏂板";
+      }
+      this.dialogVisible = true;
+    },
+    obtainItemParameterList() {
+      obtainItemParameterList().then((res) => {
+        let data = [];
+        res.data.forEach((a) => {
+          data.push({
+            label: a.laboratoryName,
+            value: a.id,
+          });
+        });
+        this.laboratoryList = data;
+      });
+    },
+    handleClose() {
+      this.formData = {
+        id: null,
+        number: null,
+        auxiliaryProject: null,
+        laboratory: '',
+        unit: '',
+        approvedWorkingHour: null,
+        remarks: null,
+      };
+      this.resetForm("form");
+      this.dialogVisible = false;
+      console.log(7898,this.formData);
+    },
+    selectEnumByCategoryForUnit() {
+      getDicts("sys_unit").then((res) => {
+        this.utilList = res.data;
+      });
+    },
+  },
+};
+</script>
+  
+  <style scoped>
+.work-time-config {
+  height: 100%;
+}
+.search {
+  background-color: #fff;
+  height: 80px;
+  display: flex;
+  align-items: center;
+}
+
+.search_thing {
+  width: 250px;
+  display: flex;
+  align-items: center;
+}
+
+.search_label {
+  width: 70px;
+  font-size: 14px;
+  text-align: right;
+}
+
+.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;
+}
+</style>
+  
\ No newline at end of file

--
Gitblit v1.9.3