From 8022f7036945b75f82f2dfc43055623f81ed98f6 Mon Sep 17 00:00:00 2001
From: yxh <172933527@qq.com>
Date: 星期五, 23 五月 2025 22:42:56 +0800
Subject: [PATCH] yxh

---
 src/views/project/externalperson/index.vue |  416 +++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 277 insertions(+), 139 deletions(-)

diff --git a/src/views/project/externalperson/index.vue b/src/views/project/externalperson/index.vue
index 763db3d..0ece431 100644
--- a/src/views/project/externalperson/index.vue
+++ b/src/views/project/externalperson/index.vue
@@ -5,30 +5,30 @@
       ref="queryForm"
       :inline="true"
       v-show="showSearch"
-      label-width="68px"
+      label-width="80px"
     >
-      <el-form-item label="浜哄憳缂栧彿" prop="userno">
+      <el-form-item label="璐﹀彿缂栧彿" prop="userno">
         <el-input
           v-model="queryParams.userno"
-          placeholder="璇疯緭鍏ヤ汉鍛樼紪鍙�"
+          placeholder="璇疯緭鍏ヨ处鍙风紪鍙�"
           clearable
           size="small"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="浜哄憳鍚嶇О" prop="username">
+      <el-form-item label="璐﹀彿鍚嶇О" prop="username">
         <el-input
           v-model="queryParams.username"
-          placeholder="璇疯緭鍏ヤ汉鍛樺悕绉�"
+          placeholder="璇疯緭鍏ヨ处鍙峰悕绉�"
           clearable
           size="small"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="浜哄憳绫诲埆" prop="usertype">
+      <el-form-item label="璐﹀彿绫诲埆" prop="usertype">
         <el-select
           v-model="queryParams.usertype"
-          placeholder="璇烽�夋嫨浜哄憳绫诲埆"
+          placeholder="璇烽�夋嫨璐﹀彿绫诲埆"
           clearable
           size="small"
         >
@@ -114,7 +114,7 @@
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="浜哄憳绫诲埆" align="center" prop="usertype">
+      <el-table-column label="璐﹀彿绫诲埆" align="center" prop="usertype">
         <template slot-scope="scope">
           <dict-tag
             :options="dict.type.sys_UserType"
@@ -122,22 +122,14 @@
           />
         </template>
       </el-table-column>
-      <el-table-column label="鍦ㄨ亴鐘舵��" align="center" prop="userstatus"
-        ><template slot-scope="scope">
-          <dict-tag
-            :options="dict.type.sys_0_1"
-            :value="scope.row.userstatus"
-          /> </template
-      ></el-table-column>
-      <el-table-column label="浜哄憳缂栧彿" align="center" prop="userno" />
-      <el-table-column label="浜哄憳濮撳悕" align="center" prop="username" />
-      <el-table-column label="鎬у埆" align="center" prop="sex">
-        <template slot-scope="scope">
-          <dict-tag
-            :options="dict.type.sys_user_sex"
-            :value="scope.row.sex"
-          /> </template
-      ></el-table-column>
+      <el-table-column label="璐﹀彿缂栧彿" align="center" prop="userno" />
+      <el-table-column label="璐﹀彿鍚嶇О" align="center" prop="username" />
+      <el-table-column
+        label="韬唤璇佸彿"
+        width="200"
+        align="center"
+        prop="idcardno"
+      />
       <el-table-column label="鑱岀О" align="center" prop="title">
         <template slot-scope="scope">
           <dict-tag
@@ -145,14 +137,26 @@
             :value="scope.row.title"
           /> </template
       ></el-table-column>
-      <el-table-column label="鍗曚綅鍚嶇О" align="center" prop="unitname" />
       <el-table-column
-        label="宸ヤ綔浜哄憳缂栧彿"
+        label="鍗曚綅鍚嶇О"
+        width="250"
         align="center"
-        prop="personnelunitno"
+        prop="unitname"
       />
-      <el-table-column label="鑱旂郴鐢佃瘽" align="center" prop="telephone" />
-      <el-table-column label="鑱旂郴鍦板潃" align="center" prop="address" />
+      <!--
+      <el-table-column label="鎬у埆" align="center" prop="sex">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex" />
+        </template>
+      </el-table-column>
+      <el-table-column label="鍗曚綅宸ヤ綔缂栧彿" align="center" prop="personnelunitno" />
+      <el-table-column label="鍦ㄨ亴鐘舵��" align="center" prop="userstatus">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_0_1" :value="scope.row.userstatus" />
+        </template>
+      </el-table-column>
+      <el-table-column label="鑱旂郴鐢佃瘽" width="200" align="center" prop="telephone" />
+      <el-table-column label="鑱旂郴鍦板潃" width="250" align="center" prop="address" />-->x
       <el-table-column
         label="鎿嶄綔"
         align="center"
@@ -172,7 +176,6 @@
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
-            v-hasPermi="['project:externalperson:remove']"
             >鍒犻櫎</el-button
           >
         </template>
@@ -187,36 +190,50 @@
       @pagination="getList"
     />
 
-    <!-- 娣诲姞鎴栦慨鏀瑰鍥村崟浣嶄汉鍛樺璇濇 -->
-    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
+    <!-- 娣诲姞鎴栦慨鏀逛汉鍛�/鍗曚綅璐﹀彿淇℃伅瀵硅瘽妗� -->
+    <el-dialog
+      :title="title"
+      :visible.sync="open"
+      width="800px"
+      append-to-body
+      :close-on-click-modal="false"
+    >
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
-        <el-row
-          ><el-col :span="12">
-            <el-form-item label="浜哄憳缂栧彿" prop="userno">
-              <el-input
-                v-model="form.userno"
-                placeholder="璇疯緭鍏ヤ汉鍛樼紪鍙�"
-              /> </el-form-item></el-col
-          ><el-col :span="12"
-            ><el-form-item label="浜哄憳绫诲埆" prop="usertype">
-              <el-select v-model="form.usertype" placeholder="璇烽�夋嫨浜哄憳绫诲埆">
+        <el-row>
+          <el-col :span="12"
+            ><el-form-item label="璐﹀彿绫诲埆" prop="usertype">
+              <el-select v-model="form.usertype" placeholder="璇烽�夋嫨璐﹀彿绫诲埆">
                 <el-option
                   v-for="dict in dict.type.sys_UserType"
                   :key="dict.value"
                   :label="dict.label"
                   :value="dict.value"
                 ></el-option>
-              </el-select> </el-form-item></el-col></el-row
-        ><el-row>
+              </el-select>
+            </el-form-item>
+          </el-col>
           <el-col :span="12">
-            <el-form-item label="浜哄憳濮撳悕" prop="username">
+            <el-form-item label="璐﹀彿缂栧彿" prop="userno">
               <el-input
-                v-model="form.username"
-                placeholder="璇疯緭鍏ヤ汉鍛樺鍚�"
-              /> </el-form-item
-          ></el-col>
+                disabled="true"
+                v-model="form.userno"
+                placeholder="璇疯緭鍏ヨ处鍙风紪鍙�"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
           <el-col :span="12">
-            <el-form-item label="鍦ㄨ亴鐘舵��" prop="userstatus">
+            <el-form-item label="璐﹀彿鍚嶇О" prop="username">
+              <el-input v-model="form.username" placeholder="璇疯緭鍏ヨ处鍙峰悕绉�" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item
+              label="鍚敤鐘舵��"
+              prop="userstatus"
+              :disabled="ismanager == false"
+            >
               <el-radio-group v-model="form.userstatus">
                 <el-radio
                   v-for="dict in dict.type.sys_0_1"
@@ -225,89 +242,109 @@
                   >{{ dict.label }}</el-radio
                 >
               </el-radio-group>
-            </el-form-item></el-col
-          ></el-row
-        ><el-row
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row v-if="form.usertype != 'org'">
+          <el-col :span="24">
+            <el-form-item label="韬唤璇佸彿" prop="idcardno">
+              <el-input v-model="form.idcardno" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row v-if="form.usertype != 'org'"
           ><el-col :span="12">
-            <el-form-item label="鎷� 闊� 鐮�" prop="pym">
-              <el-input
-                v-model="form.pym"
-                placeholder="璇疯緭鍏ユ嫾闊崇爜"
-              /> </el-form-item></el-col
-          ><el-col :span="12">
-            <el-form-item label="浜� 绗� 鐮�" prop="wbm">
-              <el-input
-                v-model="form.wbm"
-                placeholder="璇疯緭鍏ヤ簲绗旂爜"
-              /> </el-form-item></el-col></el-row
-        ><el-row
-          ><el-col :span="12">
-            <el-form-item label="鎬�    鍒�" prop="sex">
+            <el-form-item label="鎬у埆" prop="sex">
               <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆">
                 <el-option
                   v-for="dict in dict.type.sys_user_sex"
                   :key="dict.value"
                   :label="dict.label"
                   :value="dict.value"
-                ></el-option> </el-select></el-form-item></el-col
-          ><el-col :span="12">
-            <el-form-item label="鑱旂郴鐢佃瘽" prop="telephone">
-              <el-input
-                v-model="form.telephone"
-                placeholder="璇疯緭鍏ヨ仈绯荤數璇�"
-              /> </el-form-item></el-col></el-row
-        ><el-row
-          ><el-col :span="24">
-            <el-form-item label="鑱旂郴鍦板潃" prop="address">
-              <el-input
-                v-model="form.address"
-                placeholder="璇疯緭鍏ヨ仈绯诲湴鍧�"
-              /> </el-form-item></el-col></el-row
-        ><el-row
-          ><el-col :span="24">
-            <el-form-item label="鍗曚綅鍚嶇О" prop="unitname">
-              <el-input
-                v-model="form.unitname"
-                placeholder="璇疯緭鍏ュ崟浣嶅悕绉�"
-              /> </el-form-item></el-col></el-row
-        ><el-row
-          ><el-col :span="12">
-            <el-form-item label="鍗曚綅浜哄憳缂栧彿" prop="personnelunitno">
-              <el-input
-                v-model="form.personnelunitno"
-                placeholder="璇疯緭鍏ュ崟浣嶄汉鍛樼紪鍙�"
-              /> </el-form-item></el-col
-          ><el-col :span="12"
-            ><el-form-item label="鑱�    绉�" prop="title">
+                ></el-option> </el-select
+            ></el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鑱岀О" prop="title">
               <el-select v-model="form.title" placeholder="璇烽�夋嫨浜哄憳鑱岀О">
                 <el-option
                   v-for="dict in dict.type.sys_professionaltitle"
                   :key="dict.value"
                   :label="dict.label"
                   :value="dict.value"
-                ></el-option> </el-select>
-            </el-form-item> </el-col></el-row
-        ><el-row
-          ><el-col :span="12"
-            ><el-form-item label="閾惰鍚嶇О" prop="depositbank">
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row v-if="form.usertype != 'org'">
+          <el-col :span="12">
+            <el-form-item label="鎵�鍦ㄥ崟浣�" prop="unitname">
+              <el-select
+                v-model="form.unitno"
+                placeholder="鎵�鍦ㄥ崟浣�"
+                clearable
+                filterable
+                allow-create
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="(spec, index) in unitList"
+                  :key="index"
+                  :label="spec.organizationname"
+                  :value="spec.organizationid"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鍗曚綅宸ュ彿" prop="personnelunitno">
+              <el-input
+                v-model="form.personnelunitno"
+                placeholder="璇疯緭鍏ユ墍鍦ㄥ崟浣嶇殑宸ュ彿"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="24"
+            ><el-form-item label="寮�鎴烽摱琛�" prop="depositbank">
               <el-input
                 v-model="form.depositbank"
-                placeholder="璇疯緭鍏ラ摱琛屽悕绉�"
-              /> </el-form-item></el-col
-          ><el-col :span="12"
+                placeholder="璇疯緭鍏ュ紑鎴烽摱琛屽悕绉�"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="24"
             ><el-form-item label="閾惰鍗″彿" prop="bankcardno">
               <el-input
                 v-model="form.bankcardno"
                 placeholder="璇疯緭鍏ラ摱琛屽崱鍙�"
-              /> </el-form-item></el-col></el-row
-        ><el-row
-          ><el-col :span="24"
-            ><el-form-item label="寮�鎴锋敮琛�" prop="branchbankname">
-              <el-input
-                v-model="form.branchbankname"
-                placeholder="璇疯緭鍏ュ紑鎴锋敮琛�"
-              /> </el-form-item></el-col
-        ></el-row>
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="鑱旂郴鍦板潃" prop="address">
+              <el-input v-model="form.address" placeholder="璇疯緭鍏ヨ仈绯诲湴鍧�" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="鑱旂郴鐢佃瘽" prop="telephone">
+              <el-input v-model="form.telephone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <!--
+          <el-row>
+            <el-col :span="24"><el-form-item label="寮�鎴锋敮琛�" prop="branchbankname">
+              <el-input v-model="form.branchbankname" placeholder="璇疯緭鍏ュ紑鎴锋敮琛�" /> </el-form-item>
+            </el-col>
+          </el-row>
+            -->
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
@@ -325,7 +362,17 @@
   addExternalperson,
   updateExternalperson,
   exportExternalperson,
+  getOnlyCode
 } from "@/api/project/externalperson";
+
+import {
+  listOrganization,
+  getOrganization,
+  listReportname,
+  listUser
+} from "@/api/project/organization";
+
+import { getUserProfile } from "@/api/system/user";
 
 export default {
   name: "Externalperson",
@@ -333,7 +380,7 @@
   data() {
     return {
       // 閬僵灞�
-      loading: true,
+      loading: false,
       // 瀵煎嚭閬僵灞�
       exportLoading: false,
       // 閫変腑鏁扮粍
@@ -348,6 +395,9 @@
       total: 0,
       // 澶栧洿鍗曚綅浜哄憳琛ㄦ牸鏁版嵁
       externalpersonList: [],
+
+      //鍖荤枟鏈烘瀯鍒楄〃
+      unitList: [],
       // 寮瑰嚭灞傛爣棰�
       title: "",
       // 鏄惁鏄剧ず寮瑰嚭灞�
@@ -358,26 +408,77 @@
         pageSize: 10,
         userno: null,
         username: null,
-        usertype: null,
+        usertype: null
+      },
+
+      // 鏌ヨ鏈�鏂板簭鍙峰弬鏁�
+      seqnoParams: {
+        businessType: "externalperson",
+        datequery: false
       },
       // 琛ㄥ崟鍙傛暟
       form: {},
       // 琛ㄥ崟鏍¢獙
-      rules: {},
+      rules: {
+        usertype: [
+          { required: true, message: "璇疯緭鍏ヨ处鎴风被鍨�", trigger: "blur" }
+        ],
+        username: [
+          { required: true, message: "璇疯緭鍏ヨ处鎴峰悕绉�", trigger: "blur" }
+        ],
+        idcardno: [
+          { required: true, message: "璇疯緭鍏ヨ韩浠借瘉鍙风爜", trigger: "blur" }
+        ],
+        bankcardno: [
+          { required: true, message: "璇疯緭鍏ラ摱琛岃处鍙�", trigger: "blur" }
+        ],
+        depositbank: [
+          { required: true, message: "璇疯緭鍏ュ紑鎴烽摱琛�", trigger: "blur" }
+        ]
+      },
+      //鏄惁鏄笓瀹惰垂鐨凮PO瀹℃壒浜哄憳
+      ismanager: false
     };
   },
   created() {
-    this.getList();
+    this.getUserProfile();
+    this.getUnitList();
+    // 榛樿涓嶆墦寮�
+    // this.getList();
   },
   methods: {
-    /** 鏌ヨ澶栧洿鍗曚綅浜哄憳鍒楄〃 */
+    //鑾峰彇褰撳墠鐢ㄦ埛淇℃伅
+    getUserProfile() {
+      getUserProfile().then(res => {
+        if (
+          res.data.userName == "admin" ||
+          res.data.userName == "001" ||
+          res.data.userName == "047"
+        ) {
+          this.ismanager = true;
+        } else {
+          this.ismanager = false;
+        }
+      });
+    },
+
+    /** 鏌ヨ鍗曚綅銆佷汉鍛樿处鍙峰垪琛� */
     getList() {
-      this.loading = true;
-      listExternalperson(this.queryParams).then((response) => {
-        console.log("listExternalperson", response.rows);
+      if (
+        this.queryParams.username === null ||
+        this.queryParams.username.replace(/\s/g, "") == ""
+      ) {
+        this.$modal.msgWarning(
+          "鏌ユ壘璐︽埛鏃讹紝璐︽埛鍚嶇О涓嶈兘涓虹┖锛岃杈撳叆璐︽埛鍚嶇О锛�"
+        );
+        return;
+      }
+
+      // this.loading = true;
+      listExternalperson(this.queryParams).then(response => {
         this.externalpersonList = response.rows;
         this.total = response.total;
-        this.loading = false;
+        // this.loading = false;
       });
     },
     // 鍙栨秷鎸夐挳
@@ -400,12 +501,23 @@
         updateBy: null,
         updateTime: null,
         pym: null,
-        wbm: null,
+        wbm: null
       };
       this.resetForm("form");
     },
     /** 鎼滅储鎸夐挳鎿嶄綔 */
     handleQuery() {
+      console.log("handleQuery", this.queryParams);
+      if (
+        this.queryParams.username === null ||
+        this.queryParams.username.replace(/\s/g, "") == ""
+      ) {
+        this.$modal.msgWarning(
+          "涓洪檺鍒舵壒閲忔煡鎵捐处鎴蜂俊鎭紝闄愬埗璐︽埛鍚嶇О涓哄繀杈撻」锛岃杈撳叆璐︽埛鍚嶇О鍚庡啀鎼滅储锛�"
+        );
+        return;
+      }
+
       this.queryParams.pageNum = 1;
       this.getList();
     },
@@ -416,7 +528,7 @@
     },
     // 澶氶�夋閫変腑鏁版嵁
     handleSelectionChange(selection) {
-      this.ids = selection.map((item) => item.id);
+      this.ids = selection.map(item => item.id);
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
     },
@@ -424,33 +536,45 @@
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "娣诲姞澶栧洿鍗曚綅浜哄憳";
+      this.title = "娣诲姞浜哄憳/鍗曚綅璐﹀彿淇℃伅";
     },
     /** 淇敼鎸夐挳鎿嶄綔 */
     handleUpdate(row) {
       this.reset();
       const id = row.id || this.ids;
-      getExternalperson(id).then((response) => {
+      getExternalperson(id).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "浜哄憳淇℃伅淇敼";
+        this.title = "浜哄憳/鍗曚綅璐﹀彿淇℃伅淇敼";
       });
     },
     /** 鎻愪氦鎸夐挳 */
     submitForm() {
-      this.$refs["form"].validate((valid) => {
+      this.$refs["form"].validate(valid => {
         if (valid) {
+          console.log("unitList", this.unitList);
+          this.unitList.map(res => {
+            if (res.organizationid == this.form.unitno)
+              this.form.unitname = res.organizationname;
+          });
+          console.log(this.form);
           if (this.form.id != null) {
-            updateExternalperson(this.form).then((response) => {
+            updateExternalperson(this.form).then(response => {
               this.$modal.msgSuccess("淇敼鎴愬姛");
               this.open = false;
+              this.queryParams.username = this.form.username;
               this.getList();
             });
           } else {
-            addExternalperson(this.form).then((response) => {
-              this.$modal.msgSuccess("鏂板鎴愬姛");
-              this.open = false;
-              this.getList();
+            getOnlyCode(this.seqnoParams).then(res => {
+              this.form.userno = res.data.currentvalue;
+
+              addExternalperson(this.form).then(response => {
+                this.$modal.msgSuccess("鏂板鎴愬姛");
+                this.open = false;
+                this.queryParams.username = this.form.username;
+                this.getList();
+              });
             });
           }
         }
@@ -460,8 +584,8 @@
     handleDelete(row) {
       const ids = row.id || this.ids;
       this.$modal
-        .confirm('鏄惁纭鍒犻櫎澶栧洿鍗曚綅浜哄憳缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�')
-        .then(function () {
+        .confirm('鏄惁纭鍒犻櫎浜哄憳/鍗曚綅璐﹀彿淇℃伅缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�')
+        .then(function() {
           return delExternalperson(ids);
         })
         .then(() => {
@@ -474,17 +598,31 @@
     handleExport() {
       const queryParams = this.queryParams;
       this.$modal
-        .confirm("鏄惁纭瀵煎嚭鎵�鏈夊鍥村崟浣嶄汉鍛樻暟鎹」锛�")
+        .confirm("鏄惁纭瀵煎嚭鎵�鏈変汉鍛�/鍗曚綅璐﹀彿淇℃伅鏁版嵁椤癸紵")
         .then(() => {
           this.exportLoading = true;
           return exportExternalperson(queryParams);
         })
-        .then((response) => {
+        .then(response => {
           this.$download.name(response.msg);
           this.exportLoading = false;
         })
         .catch(() => {});
     },
-  },
+
+    //鑾峰彇鍖荤枟鏈烘瀯鍒楄〃
+    getUnitList() {
+      listOrganization(3).then(response => {
+        for (let i = 0; i < response.rows.length; i++) {
+          this.unitList.push({
+            //organizationid: response.rows[i].organizationid,
+            organizationid: response.rows[i].id.toString(),
+            organizationname: response.rows[i].organizationname
+          });
+          console.log(this.unitList);
+        }
+      });
+    }
+  }
 };
 </script>

--
Gitblit v1.9.3