From 2aa3cb47df411ba61352c27280db9154d706e376 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期日, 02 三月 2025 22:18:18 +0800
Subject: [PATCH] 工程

---
 src/views/engineering/index.vue |  113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 111 insertions(+), 2 deletions(-)

diff --git a/src/views/engineering/index.vue b/src/views/engineering/index.vue
index 3dfc4a5..808b6c7 100644
--- a/src/views/engineering/index.vue
+++ b/src/views/engineering/index.vue
@@ -93,7 +93,16 @@
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="engineeringList" @selection-change="handleSelectionChange">
+    <el-table
+      v-loading="loading"
+      :data="engineeringList"
+      sortable="custom"
+      row-key="id"
+      border
+      default-expand-all
+      :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
+      :show-overflow-tooltip="true"
+      @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="宸ョ▼鍚嶇О" align="center" prop="projectName" />
       <el-table-column label="涓婚」鐩悕绉�" align="center" prop="projectInfoName" />
@@ -106,6 +115,16 @@
       <el-table-column label="寮�宸ョ姸鎬�" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_project_status" :value="scope.row.status"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="涓荤閮ㄩ棬" align="center" prop="departmentName">
+
+      </el-table-column>
+      <el-table-column label="涓氫富鍗曚綅" align="center" prop="unitName">
+      </el-table-column>
+      <el-table-column label="骞翠唤" align="center" prop="year">
+        <template slot-scope="scope">
+          {{ scope.row.year ? scope.row.year.split('-')[0] + '骞�' : '' }}
         </template>
       </el-table-column>
       <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
@@ -183,6 +202,23 @@
             ></el-option>
           </el-select>
         </el-form-item>
+        <el-form-item label="涓荤閮ㄩ棬" prop="department">
+          <treeselect v-model="form.department"  @input="getCompetentDepartmentInfo" noChildrenText="鏃犲尮閰嶆暟鎹�" :options="approvalList"  :normalizer="normalizer"  placeholder="璇烽�夋嫨涓荤閮ㄩ棬">
+          </treeselect>
+        </el-form-item>
+        <el-form-item label="涓氫富鍗曚綅" prop="unit">
+          <treeselect v-model="form.unit"  @input="getProjectOwnerUnit" noChildrenText="鏃犲尮閰嶆暟鎹�" :options="selectOptions" :normalizer="normalizer" placeholder="閫夋嫨鍗曚綅" />
+        </el-form-item>
+        <el-form-item label="骞翠唤" prop="year">
+          <el-date-picker v-model="form.year "
+                          placeholder="閫夋嫨鏃堕棿"
+                          style="width: 100%"
+                          type="date"
+                          value-format="yyyy-MM-dd HH:mm:ss"/>
+        </el-form-item>
+        <el-form-item label="鐖跺伐绋�" prop="parent">
+          <treeselect v-model="form.parent"  @input="getProjectOwnerUnit" noChildrenText="鏃犲尮閰嶆暟鎹�" :options="selectOptions" :normalizer="normalizer" placeholder="閫夋嫨鍗曚綅" />
+        </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
@@ -195,9 +231,15 @@
 <script>
 import { getProjectEngineerings, getProjectEngineeringById, deleteProjectEngineeringByIds, deleteProjectEngineeringById, editProjectEngineering, addProjectEngineering } from "@/api/projectEngineering/projectEngineering";
 import {list} from "@/api/projectEngineering/projectInfo";
+import Treeselect from '@riophae/vue-treeselect'
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+import {approvalList,listDept} from "@/api/system/dept";
+
 
 export default {
   name: "Engineering",
+  components: { Treeselect },
   dicts: ['sys_project_type', 'sys_project_status'],
   data() {
     return {
@@ -220,6 +262,10 @@
       title: "",
       // 鏄惁鏄剧ず寮瑰嚭灞�
       open: false,
+      //涓荤閮ㄩ棬
+      approvalList: [],
+      //涓氫富鍗曚綅
+      selectOptions: [],
       // 鏌ヨ鍙傛暟
       queryParams: {
         currentPage: 1,
@@ -238,6 +284,10 @@
         investmentAmount: [{required: true, message: '璇疯緭鍏ユ姇璧勯', trigger: 'change'}],
         projectType: [{required: true, message: '璇烽�夋嫨娴佺▼鎺ㄨ繘绫诲瀷', trigger: 'change'}],
         status: [{required: true, message: '璇烽�夋嫨寮�宸ョ姸鎬�', trigger: 'change'}],
+        department: [{required: true, message: '璇烽�夋嫨涓荤閮ㄩ棬', trigger: 'change'}],
+        unit: [{required: true, message: '璇烽�夋嫨椤圭洰涓氫富鍗曚綅', trigger: 'change'}],
+        year: [{required: true, message: '璇烽�夋嫨璁″垝寮�宸ユ椂闂�', trigger: 'change'}],
+        parent: [{required: false, message: '璇烽�夋嫨鐖跺伐绋�', trigger: 'change'}],
       }
     };
   },
@@ -245,7 +295,60 @@
     this.getList();
     this.getProjectList();
   },
+  mounted() {
+    //鍒濆鍖栦富绠¢儴闂ㄤ笅鎷夋
+    this.getApprovalList();
+    //鍗曚綅
+    this.getDeptList();
+  },
   methods: {
+    getProjectOwnerUnit(unitId) {
+      console.log(unitId)
+      // if (deptId) {
+      //   this.projectForm.unit = deptId
+      // } else {
+      //   this.projectForm.unit = ''
+      // }
+    },
+    getCompetentDepartmentInfo(deptId) {
+      console.log(deptId)
+      // if (deptId) {
+      //   if (this.projectForm.department != deptId) {
+      //     this.projectForm.competentDepartmentPerson = ""
+      //     this.projectForm.competentDepartmentPhone = ""
+      //   }
+      //   this.projectForm.department = deptId
+      //   this.getCompetentDepartmentPeople(deptId)
+      // } else {
+      //   this.projectForm.department = ''
+      //   this.deptPersonList = [];
+      // }
+    },
+    getDeptList(){
+      listDept().then(response => {
+        console.log(response.data)
+        this.selectOptions = this.handleTree(response.data, "deptId");
+        this.selectOptions.push({deptId: '', deptName: '鏃�', children: []})
+      });
+    },
+    getApprovalList() {
+      approvalList().then(res => {
+        this.approvalList = this.handleTree(res.data, "deptId");
+        this.approvalList.push({deptId: '', deptName: '鏃�', children: []})
+        console.log(this.approvalList)
+      });
+    },
+    /** 杞崲閮ㄩ棬鏁版嵁缁撴瀯 */
+    normalizer(node) {
+      if (node.children && !node.children.length) {
+        delete node.children;
+      }
+      return {
+        id: node.deptId,
+        label: node.deptName,
+        children: node.children
+      };
+    },
     getProjectList() {
       list().then(res => {
         this.projectList = res.data
@@ -256,6 +359,7 @@
       this.loading = true;
       getProjectEngineerings(this.queryParams).then(res => {
         this.engineeringList = res.data;
+        console.log(this.engineeringList)
         this.total = res.total;
         this.loading = false;
       });
@@ -276,7 +380,11 @@
         status: null,
         gmtCreate: null,
         gmtUpdate: null,
-        deleted: null
+        deleted: null,
+        department:null,
+        unit:null,
+        year:null,
+        parent:null,
       };
       this.resetForm("form");
     },
@@ -315,6 +423,7 @@
     /** 鎻愪氦鎸夐挳 */
     submitForm() {
       this.$refs["form"].validate(valid => {
+        console.log(this.form)
         if (valid) {
           if (this.form.id != null) {
             editProjectEngineering(this.form).then(response => {

--
Gitblit v1.8.0