From de967d5d54a6eee38221ea14b2472401974608db Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期三, 10 七月 2024 18:25:04 +0800
Subject: [PATCH] 晚上上传组件导入提示、调整默认对话框边距、密码策略查询以及新增修改 密码长度、必填种类、锁定时间等正则校验 完善启动流程默认传参

---
 Source/plt-web/plt-web-ui/src/views/system/department/option.js              |    1 
 Source/plt-web/plt-web-ui/src/views/system/role/index.vue                    |    4 
 Source/plt-web/plt-web-ui/src/api/system/password/api.js                     |   13 
 Source/plt-web/plt-web-ui/src/components/actions/handlers.js                 |    2 
 Source/plt-web/plt-web-ui/src/components/actions/base/downloadFileAction.js  |    1 
 Source/plt-web/plt-web-ui/src/components/actions/base/uploadFileAction.js    |    2 
 Source/plt-web/plt-web-ui/src/views/system/department/index.vue              |   21 +
 Source/plt-web/plt-web-ui/src/views/system/password/index.vue                |  440 +++++++++++++++++++++++++++++++
 Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue |   18 +
 Source/plt-web/plt-web-ui/src/views/system/password/option.js                |  249 +++++++++++++++++
 Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue      |   12 
 Source/plt-web/plt-web-ui/src/App.vue                                        |    2 
 Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js |   50 +-
 Source/plt-web/plt-web-ui/src/views/system/user/index.vue                    |    7 
 Source/plt-web/plt-web-ui/src/components/actions/base/uploadFile.vue         |   15 
 15 files changed, 785 insertions(+), 52 deletions(-)

diff --git a/Source/plt-web/plt-web-ui/src/App.vue b/Source/plt-web/plt-web-ui/src/App.vue
index f1e0fcb..5dd0d0d 100644
--- a/Source/plt-web/plt-web-ui/src/App.vue
+++ b/Source/plt-web/plt-web-ui/src/App.vue
@@ -39,7 +39,7 @@
   margin-top: 0 !important;
 }
 .avue-dialog .el-dialog__body{
-  padding: 20px;
+  padding: 20px 20px 30px 20px; // 涓婂彸涓嬪乏
   margin-bottom: 20px !important;
 }
 .avue--detail .el-col{
diff --git a/Source/plt-web/plt-web-ui/src/api/system/password/api.js b/Source/plt-web/plt-web-ui/src/api/system/password/api.js
new file mode 100644
index 0000000..57153dc
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/src/api/system/password/api.js
@@ -0,0 +1,13 @@
+import request from '@/router/axios';
+
+// 鍒楄〃鏌ヨ
+export function refDataGrid(page,limit) {
+  return request({
+    url: "/api/passwordStrategyQueryController/refDataGrid",
+    method: "get",
+    params:{
+      page,
+      limit,
+    }
+  });
+}
diff --git a/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue b/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue
index 37862b0..3c3da9d 100644
--- a/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue
+++ b/Source/plt-web/plt-web-ui/src/components/PLT-basic-component/upload-file.vue
@@ -10,11 +10,16 @@
     class="avue-dialog"
     style="margin-top: -20vh !important;"
   >
-    <Divider left="30px" text="瀵煎叆鎻愮ず"></Divider>
-    <ul>
+    <Divider left="30px" text="瀵煎叆鎻愮ず">
+    </Divider>
+    <ul v-if="tipList.length === 0" style="color: #f33939">
       <li>
         璇风偣鍑绘祻瑙堟枃浠惰繘琛屼笂浼�
       </li>
+    </ul>
+
+    <ul style="color: #f33939" v-if="tipList.length >=1 ">
+      <li v-for="(item, index) in tipList" :key="index">{{ index + 1 }}: {{ item }} 銆�</li>
     </ul>
     <Divider left="30px" text="閫夋嫨鏂囦欢鍚庝細鑷姩涓婁紶"></Divider>
     <el-upload
@@ -43,21 +48,30 @@
 export default {
   name: "upload-file",
   props: {
+    // 鎺у埗涓婁紶绫诲瀷 鏍煎紡涓�: ['xls', 'xlsx'],
     fileType: {
       type: Array,
       default: () => []
     },
+    // 瀵硅瘽妗嗗ご閮ㄥ悕绉�
     title: {
       type: String,
       default: '涓婁紶鏂囦欢'
     },
+    // 蹇呬紶 涓婁紶鐨勫湴鍧�
     fileUrl: {
       type: String,
       default: ''
     },
+    // 璇锋眰鍦板潃 鎼哄甫鍙傛暟
     fileData: {
       type: Array,
       default: () => []
+    },
+    // 瀵煎叆鎻愮ず鏂囧瓧  tipList:["瀵煎叆妯℃澘涓爣鏄庣孩鑹插瓧浣撶殑涓哄繀杈撻」","閮ㄩ棬鍒椾笂涓嬬骇鍏崇郴蹇呴』鎸夌収鍙嶆枩鏉犻殧寮�(/)"]
+    tipList:{
+      type:Array,
+      default:() => []
     }
   },
   data() {
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js b/Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js
index e81ff9b..f13002d 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js
+++ b/Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js
@@ -10,33 +10,35 @@
 export const doAction = (options,callback) => {
   //multi 鏄惁寮�鍚閫�
   //checknotprocess 鏄惁鍏佽鍙戣捣娴佺▼
+  //templateType 娴佺▼妯℃澘type 蹇呭~
+  //filterTemplate 娴佺▼杩囨护妯℃澘淇℃伅
 
   options.sourceData = options.sourceData || {};
   options.dataStore = options.dataStore || [];
-  // if (!options.dataStore || options.dataStore.length < 1) {
-  //   Vue.prototype.$message.error("璇烽�夋嫨闇�瑕佸彂璧锋祦绋嬬殑鏁版嵁");
-  //   return false;
-  // }
-  // if (!options.paramVOS.multi && options.dataStore.length > 1) {
-  //   Vue.prototype.$message.error("浠呰兘閫夋嫨涓�鏉℃暟鎹彂璧锋祦绋�");
-  //   return false;
-  // }
-  //
-  // //楠岃瘉涓嶅厑璁稿惎鍔ㄧ殑鏉′欢
-  // if(!validatenull(options.paramVOS.checknotprocess)) {
-  //   let notprocess = options.paramVOS.checknotprocess.split('&');
-  //   let checknotprocess=false;
-  //   notprocess.forEach((item,i)=>{
-  //     if (options.dataStore[0][item.split('=')[0]] == item.split('=')[1]) {
-  //       checknotprocess=true;
-  //       return false;
-  //     }
-  //   })
-  //   if (checknotprocess) {
-  //     Vue.prototype.$message.error(replaceFreeMarker(options.paramVOS.checknotprocessmsg,options.dataStore,{}) || "褰撳墠鏁版嵁涓嶅厑璁稿彂璧锋祦绋�");
-  //     return false;
-  //   }
-  // }
+  if (!options.dataStore || options.dataStore.length < 1) {
+    Vue.prototype.$message.error("璇烽�夋嫨闇�瑕佸彂璧锋祦绋嬬殑鏁版嵁");
+    return false;
+  }
+  if (!options.paramVOS.multi && options.dataStore.length > 1) {
+    Vue.prototype.$message.error("浠呰兘閫夋嫨涓�鏉℃暟鎹彂璧锋祦绋�");
+    return false;
+  }
+
+  //楠岃瘉涓嶅厑璁稿惎鍔ㄧ殑鏉′欢
+  if(!validatenull(options.paramVOS.checknotprocess)) {
+    let notprocess = options.paramVOS.checknotprocess.split('&');
+    let checknotprocess=false;
+    notprocess.forEach((item,i)=>{
+      if (options.dataStore[0][item.split('=')[0]] == item.split('=')[1]) {
+        checknotprocess=true;
+        return false;
+      }
+    })
+    if (checknotprocess) {
+      Vue.prototype.$message.error(replaceFreeMarker(options.paramVOS.checknotprocessmsg,options.dataStore,{}) || "褰撳墠鏁版嵁涓嶅厑璁稿彂璧锋祦绋�");
+      return false;
+    }
+  }
 
   callPreEvent(options, doBefore, function (options) {
     showStartWindow(options, function () {
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/downloadFileAction.js b/Source/plt-web/plt-web-ui/src/components/actions/base/downloadFileAction.js
index 85da8fe..da79423 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/base/downloadFileAction.js
+++ b/Source/plt-web/plt-web-ui/src/components/actions/base/downloadFileAction.js
@@ -39,7 +39,6 @@
   let data = new FormData();
   data.append('fileOid',oids);
   download(data).then(res => {
-    console.log(res);
     if (res) {
       func.downloadFileByBlobHandler(res);
       Vue.prototype.$message.success("涓嬭浇鎴愬姛");
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue b/Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue
index b374b46..11a7e3b 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue
+++ b/Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue
@@ -162,16 +162,18 @@
   },
   created() {
     // this.modelNameChange();
-    this.getWorkByType();
+
   },
   mounted() {
+    this.getWorkByType();
   },
   methods: {
     // 鑾峰彇娴佺▼妯℃澘淇℃伅
     getWorkByType() {
+      console.log('this.paramVOS',this.paramVOS)
       let params = {
-        type: '鏂囨。瀹$娴佺▼',
-        filterTemplate: "鏂囨。瀹$娴佺▼"
+        type: this.paramVOS.templatetype,
+        filterTemplate: this.paramVOS.filterTemplate || ""
       }
       getTemplateByType(params).then(res => {
         const data = res.data.data;
@@ -179,7 +181,7 @@
 
         this.processTemplateList = data;
         this.saveParam.processTemplate = data[0].value;
-        this.saveParam.processName = this.paramVOS.processName || userInfo.content.userName + '-' + data[0].value; // 瀵规祦绋嬫ā鏉� 娴佺▼鍚嶇О璧嬮粯璁ゅ��
+        this.saveParam.processName = this.paramVOS.processname || userInfo.content.userName + '-' + data[0].value; // 瀵规祦绋嬫ā鏉� 娴佺▼鍚嶇О璧嬮粯璁ゅ��
 
         this.getProcessNode(data[0].attributes.oid); // 棣栨杩涘叆璋冪敤绗竴涓ā鏉跨殑鎵�鏈夎妭鐐�
       }).catch(err => {
@@ -191,7 +193,7 @@
     getProcessNode(oid) {
       let params = {
         processOid: oid,
-        maxSecret: -1
+        maxSecret: this.paramVOS.maxSecret || -1
       }
       getAllProcessNode(params).then(res => {
         const nodes = res.data.data;
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFile.vue b/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFile.vue
index 6b73c7c..8dc07bf 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFile.vue
+++ b/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFile.vue
@@ -11,10 +11,11 @@
     style="margin-top: -20vh !important;"
   >
     <Divider left="30px" text="瀵煎叆鎻愮ず"></Divider>
-    <ul>
-      <li>
+    <ul style="color: #e73a3a">
+      <li v-if="!paramVOS.tipList">
         璇风偣鍑绘祻瑙堟枃浠惰繘琛屼笂浼�
       </li>
+      <li v-if="paramVOS.tipList && paramVOS.tipList.length >=1 " v-for="(item,index) in paramVOS.tipList" :key="index"> {{index+1}} : {{item}}銆�</li>
     </ul>
     <Divider left="30px" text="閫夋嫨鏂囦欢鍚庝細鑷姩涓婁紶"></Divider>
     <el-upload
@@ -87,9 +88,9 @@
       return {
         ownbizOid: this.sourceData.oid,
         ownBtmName: this.sourceData.btmname,
-        secretGrade: -1,
-        fileDocClassify: '',
-        updateFileFlag: true,
+        secretGrade: this.paramVOS.secretGrade || -1,
+        fileDocClassify: this.paramVOS.fileDocClassify || "",
+        updateFileFlag: this.paramVOS.updateFileFlag  || true,
       }
     },
     width() {
@@ -140,7 +141,7 @@
     onSuccess(resbonse) {
       if (resbonse.code === 200) {
         this.$message.success("涓婁紶鎴愬姛锛�");
-        this.dialogVisible = false;
+        this.visible = false;
       }else {
         this.$message.error(resbonse.msg);
       }
@@ -155,7 +156,7 @@
       if (file.status === "success" || file.status === "error") {
         this.pageLoading.close();
       }
-    }
+    },
   }
 }
 </script>
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFileAction.js b/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFileAction.js
index 13c4f04..72318a6 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFileAction.js
+++ b/Source/plt-web/plt-web-ui/src/components/actions/base/uploadFileAction.js
@@ -11,7 +11,7 @@
 export const doAction = (options,callback) => {
   options.sourceData = options.sourceData || {};
   options.dataStore = options.dataStore || [];
-  if (func.isEmptyObject(options.sourceData)) {
+  if (!options.dataStore || options.dataStore.length < 1) {
     Vue.prototype.$message.error("璇烽�夋嫨瑕佷笂浼犵殑鍒嗙被锛�");
     return false;
   }
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/handlers.js b/Source/plt-web/plt-web-ui/src/components/actions/handlers.js
index 31752f6..78d4ede 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/handlers.js
+++ b/Source/plt-web/plt-web-ui/src/components/actions/handlers.js
@@ -28,7 +28,7 @@
       module.doAction(options,callback);
     })},
     //鍚姩娴佺▼
-    launchworkflow: () => {import("@/components/actions/base/StartWorkflowAction").then(module => {
+    startwork: () => {import("@/components/actions/base/StartWorkflowAction").then(module => {
       module.doAction(options,callback);
     })},
     //涓婁紶鏂囦欢
diff --git a/Source/plt-web/plt-web-ui/src/views/system/department/index.vue b/Source/plt-web/plt-web-ui/src/views/system/department/index.vue
index d56868a..288f0ad 100644
--- a/Source/plt-web/plt-web-ui/src/views/system/department/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/system/department/index.vue
@@ -25,9 +25,10 @@
       </template>
 
       <template slot="menuLeft" slot-scope="scope">
-        <el-button icon="el-icon-school" plain size="small" type="primary" @click="assignMembersHandler">鍒嗛厤鎴愬憳</el-button>
+        <el-button icon="el-icon-school" plain size="small" type="primary" @click="assignMembersHandler">鍒嗛厤鎴愬憳
+        </el-button>
         <el-button icon="el-icon-user" plain size="small" type="primary" @click="statisticsHandler">缁熻</el-button>
-        <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="statisticsHandler">瀵煎叆閮ㄩ棬</el-button>
+        <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadHandler">瀵煎叆閮ㄩ棬</el-button>
         <el-button icon="el-icon-download" plain size="small" type="primary" @click="downLoadHandler">涓嬭浇瀵煎叆妯℃澘</el-button>
       </template>
     </avue-crud>
@@ -62,6 +63,10 @@
               :transferTitle="transferTitle" title="閮ㄩ棬娣诲姞鎴愬憳"
               @transferSend="departTransferSend">
     </transfer>
+
+    <!-- 瀵煎叆閮ㄩ棬   -->
+    <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" title="瀵煎叆閮ㄩ棬"
+                 @updata="getTableList"></upload-file>
 
   </basic-container>
 </template>
@@ -131,12 +136,16 @@
             label: '瑙掕壊',
             prop: 'pkPersonName',
             sortable: true,
+            overHidden: true,
           },
         ]
       },
       leftTransferData: [],
       rightTransferData: [],
       transferTitle: ['寰呴�変汉鍛�', '宸查�変汉鍛�'],
+      tipList: ['瀵煎叆妯℃澘涓爣鏄庣孩鑹插瓧浣撶殑涓哄繀杈撻」', '瀵煎叆缁撴瀯涓烘爲缁撴瀯鏃惰淇濊瘉ID鍒椾笉鑳介噸澶�', '鐖禝D璇蜂娇鐢ㄧ晫闈笂閮ㄩ棬鐨勫敮涓�鏍囪瘑ID鎴栬�匛xcel涓墜鍔ㄨ緭鍏ョ殑ID', '鐖禝D鍒椾负绌烘椂锛屽鍏ョ殑閮ㄩ棬鍗充负椤跺眰閮ㄩ棬'],
+      upFileType: ['xls', 'xlsx'],
+      fileUrl: 'api/departmentQueryController/importDept',
     }
   },
   methods: {
@@ -273,7 +282,6 @@
       }
 
       countSmUserByDeptOid({pkDepartment: this.departCurrenRow.ALLDept === 'ALLDept' ? null : this.departCurrenRow.oid}).then(res => {
-        console.log(res);
         if (res.data.code === 200) {
           const data = res.data.data;
           this.countData = data.map(item => {
@@ -339,13 +347,18 @@
     },
 
     // 涓嬭浇瀵煎叆妯℃澘
-    downLoadHandler(){
+    downLoadHandler() {
       download().then(res => {
         func.downloadFileByBlobHandler(res);
         this.$message.success('涓嬭浇鎴愬姛')
       }).catch(err => {
         this.$message.error(err);
       })
+    },
+
+    // 瀵煎叆閮ㄩ棬
+    upLoadHandler() {
+      this.$refs.upload.visible = true;
     }
   }
 }
diff --git a/Source/plt-web/plt-web-ui/src/views/system/department/option.js b/Source/plt-web/plt-web-ui/src/views/system/department/option.js
index fe70287..42601ec 100644
--- a/Source/plt-web/plt-web-ui/src/views/system/department/option.js
+++ b/Source/plt-web/plt-web-ui/src/views/system/department/option.js
@@ -2,6 +2,7 @@
   {
     label: '鍚嶇О',
     prop: 'name',
+    align:'left',
     rules: [
       {
         required: true,
diff --git a/Source/plt-web/plt-web-ui/src/views/system/password/index.vue b/Source/plt-web/plt-web-ui/src/views/system/password/index.vue
index 54b19c1..7a49cdd 100644
--- a/Source/plt-web/plt-web-ui/src/views/system/password/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/system/password/index.vue
@@ -1,13 +1,449 @@
 <template>
+  <basic-container>
+    <avue-crud
+      ref="passWordCrud"
+      :data="tableData"
+      :option="option"
+      :page.sync="page"
+      :table-loading="tableLoading"
+      v-model="form"
+      @on-load="getTableList"
+      @refresh-change="handleRefresh"
+      @size-change="sizeChange"
+      @current-change="currentChange"
+      @row-save="rowSaveHandler"
+      @row-update="rowUpdateHandler"
+      @row-del="rowDeleteHandler"
+    >
+      <template slot="menu" slot-scope="{ row, index }">
+        <el-button
+          icon="el-icon-edit"
+          size="small"
+          type="text"
+          @click="handleEdit(row, index)"
+        >
+          缂栬緫
+        </el-button>
+        <el-button
+          icon="el-icon-delete"
+          size="small"
+          type="text"
+          @click="handleDel(row, index)"
+        >
+          鍒犻櫎
+        </el-button>
+      </template>
+
+
+      <template slot="name" slot-scope="{row}">
+        <el-tag>{{row.name}}</el-tag>
+      </template>
+      <template slot="defaultFlag" slot-scope="{row}">
+        <el-tag v-if="row.defaultFlag" type="success">鏄�</el-tag>
+        <el-tag v-if="!row.defaultFlag" type="danger">鍚�</el-tag>
+      </template>
+    </avue-crud>
+  </basic-container>
 
 </template>
 
 <script>
+import {refDataGrid} from "@/api/system/password/api"
+import basicOption from "@/util/basic-option";
+import {column} from "@/views/system/password/option";
+import Vue from "vue";
 export default {
-  name: "index"
+  name: "index",
+  data(){
+    return{
+      form:{},
+      tableData:[],
+      option:{
+        ...basicOption,
+        selection:false,
+        calcHeight:-60,
+        menuWidth:150,
+        column:[
+          {
+            label: '绛栫暐鍚嶇О',
+            prop: 'name',
+            sortable: true,
+            span: 24,
+            labelWidth: "11%",
+            rules: [{
+              required: true,
+              message: "璇疯緭鍏ョ瓥鐣ュ悕绉�",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: '瀵嗙爜鏈�灏忛暱搴�',
+            prop: 'minLength',
+            sortable: true,
+            span: 12,
+            labelWidth: "22%",
+            rules: [{
+              required: true,
+              validator: (rule, value, callback) => {
+                this.minValue = value * 1
+                if (value == "") {
+                  callback(new Error('璇疯緭鍏ュ瘑鐮佹渶灏忛暱搴�'));
+                } else if (/[^\d]/g.test(value)) {
+                  callback(new Error('瀵嗙爜鏈�灏忛暱搴︾殑杈撳叆绫诲瀷鍙兘涓烘暟瀛楃被鍨�'));
+                } else if ( this.minValue >=  this.maxValue &&  this.maxValue != 0) {
+                  callback(new Error('瀵嗙爜鏈�灏忛暱搴︿笉鑳藉ぇ浜庡瘑鐮佹渶澶ч暱搴�'))
+                } else {
+                  callback();
+                }
+              },
+              trigger: 'blur'
+            }]
+          },
+          {
+            label: '瀵嗙爜鏈�澶ч暱搴�',
+            prop: 'maxLength',
+            sortable: true,
+            span: 12,
+            labelWidth: "28%",
+            rules: [{
+              required: true,
+              validator: (rule, value, callback) => {
+                this.maxValue = value * 1
+                if (value == "") {
+                  callback(new Error('璇疯緭鍏ュ瘑鐮佹渶澶ч暱搴�'));
+                } else if ( this.maxValue <=  this.minValue) {
+                  callback(new Error('瀵嗙爜鏈�澶ч暱搴︿笉鑳藉皬浜庡瘑鐮佹渶澶ч暱搴�'));
+                } else if (/[^\d]/g.test(value)) {
+                  callback(new Error('瀵嗙爜鏈�澶ч暱搴︾殑杈撳叆绫诲瀷鍙兘涓烘暟瀛楃被鍨�'));
+                } else {
+                  callback();
+                }
+              },
+              trigger: 'change'
+            }]
+          },
+          {
+            label: '缁勫悎鏂瑰紡',
+            prop: 'requireCharTypeText',
+            sortable: true,
+            display: false,
+            overHidden: true,
+            labelWidth: "22%",
+          },
+          {
+            label: '缁勫悎鏂瑰紡',
+            prop: 'requireCharType',
+            type: "checkbox",
+            hide: true,
+            span: 12,
+            labelWidth: "22%",
+            change: this.handleCheckboxChange,
+            rules: [{
+              required: true,
+              message: "璇烽�夋嫨缁勫悎鏂规硶",
+              trigger: "blur"
+            }],
+            dicData: [
+              {
+                label: '鏁板瓧',
+                value: "number"
+              },
+              {
+                label: '灏忓啓瀛楁瘝',
+                value: "lower"
+              },
+              {
+                label: '澶у啓瀛楁瘝',
+                value: "upper"
+              },
+              {
+                label: '绗﹀彿',
+                value: "symbol"
+              },
+            ]
+          },
+          {
+            label: '蹇呭~绉嶇被',
+            prop: 'requireCharCount',
+            type: 'select',
+            span: 12,
+            labelWidth: "28%",
+            sortable: true,
+            change: this.handleSelectChange,
+            dicData: [{
+              label: '1绉�',
+              value: 1,
+              disabled: false
+            },
+              {
+                label: '2绉�',
+                value: 2,
+                disabled: false
+              },
+              {
+                label: '3绉�',
+                value: 3,
+                disabled: false
+              },
+              {
+                label: '4绉�',
+                value: 4,
+                disabled: false
+              }
+            ]
+          },
+          {
+            label: '杩囨湡鏃堕棿锛堝ぉ)',
+            prop: 'validDay',
+            sortable: true,
+            span: 12,
+            labelWidth: "22%",
+            rules: [{
+              required: true,
+              validator: (rule, value, callback) => {
+                if (value == "") {
+                  callback(new Error('璇疯緭鍏ヨ繃鏈熸椂闂�'));
+                } else if (/[^\d]/g.test(value)) {
+                  callback(new Error('杩囨湡鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+                } else {
+                  callback();
+                }
+              },
+              trigger: 'blur'
+            }]
+          },
+          {
+            label: '鎻愰啋鏃堕棿锛堝ぉ锛�',
+            prop: 'remindDay',
+            sortable: true,
+            span: 12,
+            labelWidth: "28%",
+            width: 140,
+            rules: [{
+              required: true,
+              validator: (rule, value, callback) => {
+                if (value == "") {
+                  callback(new Error('璇疯緭鍏ヨ繃鏈熸椂闂�'));
+                } else if (/[^\d]/g.test(value)) {
+                  callback(new Error('杩囨湡鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+                } else {
+                  callback();
+                }
+              },
+              trigger: 'blur'
+            }]
+          },
+          {
+            label: '閲嶈瘯娆℃暟',
+            prop: 'retryTime',
+            sortable: true,
+            span: 12,
+            labelWidth: "22%",
+            rules: [{
+              required: true,
+              validator: (rule, value, callback) => {
+                if (value == "") {
+                  callback(new Error('閲嶈瘯娆℃暟'));
+                } else if (/[^\d]/g.test(value)) {
+                  callback(new Error('閲嶈瘯娆℃暟鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+                } else {
+                  callback();
+                }
+              },
+              trigger: 'blur'
+            }]
+          },
+          {
+            label: '閿佸畾鏃堕棿锛堝垎閽燂級',
+            prop: 'lockTime',
+            sortable: true,
+            width: 150,
+            span: 12,
+            labelWidth: "28%",
+            rules: [{
+              required: true,
+              validator: (rule, value, callback) => {
+                if (value == "") {
+                  callback(new Error('璇疯緭鍏ラ攣瀹氭椂闂�'));
+                } else if (/[^\d]/g.test(value)) {
+                  callback(new Error('閿佸畾鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+                } else {
+                  callback();
+                }
+              },
+              trigger: 'blur'
+            }]
+          },
+          {
+            label: '鎻忚堪',
+            prop: 'description',
+            overHidden: true,
+            type: 'textarea',
+            span: 12,
+            labelWidth: "22%",
+            rows: 5,
+          },
+          {
+            label: '鏄惁涓洪粯璁ょ瓥鐣�',
+            prop: 'defaultFlag',
+            type: 'switch',
+            labelWidth: "30%",
+            dicData: [{
+              label: '鍚�',
+              value: 0
+            }, {
+              label: '鏄�',
+              value: 1
+            }]
+          },
+        ]
+      },
+      page: {
+        currentPage: 1,
+        pageSize: 10,
+        total: 0,
+        pageSizes: [10, 30, 50, 100],
+      },
+      tableLoading:false,
+      checkboxlength: "", //娣诲姞瀛樻斁澶氶�夌殑鍙橀噺,鐢ㄤ簬涓嬫媺鑿滃崟鐨勭鐢ㄦ晥鏋滃拰蹇呭~绉嶇被鏄惁澶т簬缁勫悎鏂瑰紡鐒跺悗鎻愮ず鐢ㄦ埛閲嶆柊閫夋嫨
+      selectlength: 0,    //杩欎釜鏄笅鎷夎彍鍗曠殑鏁版嵁鍙橀噺
+      checkboxlist: "" ,  //杩欎釜鏄敤浜庨槻姝hange鏃堕棿鍐掓场,鍑虹幇涓ゆ寮圭獥瀹氫箟鐨勫彉閲�
+      checkboxNumber: "", //鐢ㄤ簬棣栨鐐瑰嚮缂栬緫锛屽垽鏂粍鍚堟柟寮忔槸鍚﹀皬浜庡繀濉绫荤殑鍙橀噺
+      selectNumber: "",   //杩欎釜涔熸槸瀛樻斁澶氶�夌殑鍙橀噺,鏁堟灉涓�鏍�,鍙槸鐢ㄤ綔鍦ㄧ紪杈戞ā鍧�
+      checkboxedit: "",   // 鐢ㄤ簬鍒ゆ柇鏄惁鏄紪杈�
+      editFlag: false,
+      minValue:"", // 鏈�灏忛暱搴alue
+      maxValue:""  // 鏈�澶ч暱搴alue
+    }
+  },
+  methods:{
+    // 琛ㄦ牸鍒濆鍖栬姹�
+    getTableList() {
+      this.tableLoading = true;
+      refDataGrid(this.page.currentPage, this.page.pageSize).then(res =>{
+        console.log(res);
+        this.tableData = res.data.data;
+        this.page.total = res.data.total;
+        this.tableLoading = false;
+      })
+    },
+
+    // 琛ㄦ牸澶撮儴鍒锋柊
+    handleRefresh(){
+      this.getTableList();
+    },
+
+    //  鏉℃暟
+    sizeChange(val){
+      this.page.pageSize = val;
+    },
+
+    // 椤电爜
+    currentChange(val){
+      this.page.currentPage = val;
+    },
+
+    // 娣诲姞
+    rowSaveHandler(){
+      console.log(this.form.requireCharCount);
+    },
+
+    // 缂栬緫鎸夐挳
+    handleEdit(row,index){
+      this.$refs.passWordCrud.rowEdit(row, index);
+      this.editFlag = true;
+      this.checkboxNumber = row.requireCharType.split(",");
+      this.selectNumber = row.requireCharCount;
+    },
+
+    // 淇敼
+    rowUpdateHandler(){
+
+    },
+
+    // 鍒犻櫎鎸夐挳
+    handleDel(){
+
+    },
+
+    // 鍒犻櫎
+    rowDeleteHandler(){
+
+    },
+
+    // 蹇呭~绉嶇被changge浜嬩欢
+    handleSelectChange(val){
+      this.selectlength = val.value;
+    },
+
+    // 娣诲姞淇敼 缁勫悎鏂瑰紡鍒ゆ柇閫昏緫
+    handleCheckboxChange(val) {
+      const arr = this.option.column.find(item => item.prop === 'requireCharCount'); // 鎵惧埌option閲岄潰蹇呭~绉嶇被鐨勬暟缁�
+      this.checkboxlength = val.value;
+      this.checkboxedit = this.checkboxlength.toString().split(",");
+
+      if (val.value !== undefined && val.value !== null) {
+        if (this.checkboxlist === val.value) {
+          return;
+        } else {
+          this.checkboxlist = val.value;
+          if (this.selectlength > val.value.length && val.value.length > 0) {
+            // 鍒ゆ柇濡傛灉蹇呭~绉嶇被澶т簬缁勫悎鏂瑰紡娓呯┖
+            this.form.requireCharCount = "";
+          } else if (this.selectlength > this.checkboxedit.length && this.checkboxedit.length > 0) {
+            // 淇敼鍚屾牱閫昏緫
+            this.form.requireCharCount = "";
+          }
+        }
+      }
+
+      // 澶勭悊 蹇呭~绉嶇被閫夐」绂佺敤
+      if (val.value !== undefined && val.value !== null) {
+        if (val.value.length === 1) {
+          this.setDisabled(arr, [0]);
+        } else if (val.value.length === 2) {
+          this.setDisabled(arr, [0, 1]);
+        } else if (val.value.length === 3) {
+          this.setDisabled(arr, [0, 1, 2]);
+        } else if (val.value.length === 4) {
+          this.setDisabled(arr, [0, 1, 2, 3]);
+        } else if (val.value.length === 0) {
+          this.setDisabled(arr, [-1]);
+        }
+      } else if (this.checkboxNumber.length !== 0) {
+        this.setDisabled(arr, [0, 1, 2, 3]);
+      }
+
+      // 淇敼鍚岀悊
+      if (this.editFlag) {
+        if (this.checkboxedit.length === 1) {
+          this.setDisabled(arr, [0]);
+        } else if (this.checkboxedit.length === 2) {
+          this.setDisabled(arr, [0, 1]);
+        } else if (this.checkboxedit.length === 3) {
+          this.setDisabled(arr, [0, 1, 2]);
+        } else if (this.checkboxedit.length === 4) {
+          this.setDisabled(arr, [0, 1, 2, 3]);
+        } else if (this.checkboxedit.length === 0) {
+          this.setDisabled(arr, [-1]);
+        }
+      }
+    },
+
+    // 寰幆鎵惧埌瀵瑰簲蹇呭~绉嶇被绂佺敤閫夐」
+    setDisabled(arr, indices) {
+      arr.dicData.forEach((item, index) => {
+        item.disabled = !indices.includes(index);
+      });
+    },
+
+  }
 }
 </script>
 
-<style scoped>
+<style scoped lang="scss">
+.avue-form__group--flex{
+  padding-bottom: 25px !important;
+}
 
 </style>
diff --git a/Source/plt-web/plt-web-ui/src/views/system/password/option.js b/Source/plt-web/plt-web-ui/src/views/system/password/option.js
new file mode 100644
index 0000000..be04f8c
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/src/views/system/password/option.js
@@ -0,0 +1,249 @@
+import Vue from "vue";
+// 鏆傛椂涓嶇敤澶栭儴js鏂囦欢鍐欏湪vue鍐呴儴鏂囦欢  鍥犱负鏄袱涓猚hange浜嬩欢鑱斿姩锛宯ew涓�涓獀ue瀹炰緥鎴栬�呮瀯閫犲櫒瀹炰緥浼氬鑷村叾瀹冩柟娉曞0鏄庣殑鍙橀噺涔熶細閲嶆柊鎭㈠榛樿鍊�
+let minValue = ""; // 鏈�灏忛暱搴alue
+let maxValue = ""; // 鏈�澶ч暱搴alue
+import passwordVue from '@/views/system/password/index'
+
+const app = new Vue(passwordVue);
+export const column = [
+  {
+    label: '绛栫暐鍚嶇О',
+    prop: 'name',
+    sortable: true,
+    span: 24,
+    labelWidth: "11%",
+    rules: [{
+      required: true,
+      message: "璇疯緭鍏ョ瓥鐣ュ悕绉�",
+      trigger: "blur"
+    }]
+  },
+  {
+    label: '瀵嗙爜鏈�灏忛暱搴�',
+    prop: 'minLength',
+    sortable: true,
+    span: 12,
+    labelWidth: "22%",
+    rules: [{
+      required: true,
+      validator: (rule, value, callback) => {
+        minValue = value * 1
+        if (value == "") {
+          callback(new Error('璇疯緭鍏ュ瘑鐮佹渶灏忛暱搴�'));
+        } else if (/[^\d]/g.test(value)) {
+          callback(new Error('瀵嗙爜鏈�灏忛暱搴︾殑杈撳叆绫诲瀷鍙兘涓烘暟瀛楃被鍨�'));
+        } else if (minValue >= maxValue && maxValue != 0) {
+          callback(new Error('瀵嗙爜鏈�灏忛暱搴︿笉鑳藉ぇ浜庡瘑鐮佹渶澶ч暱搴�'))
+        } else {
+          callback();
+        }
+      },
+      trigger: 'blur'
+    }]
+  },
+  {
+    label: '瀵嗙爜鏈�澶ч暱搴�',
+    prop: 'maxLength',
+    sortable: true,
+    span: 12,
+    labelWidth: "28%",
+    rules: [{
+      required: true,
+      validator: (rule, value, callback) => {
+        maxValue = value * 1
+        if (value == "") {
+          callback(new Error('璇疯緭鍏ュ瘑鐮佹渶澶ч暱搴�'));
+        } else if (maxValue <= minValue) {
+          callback(new Error('瀵嗙爜鏈�澶ч暱搴︿笉鑳藉皬浜庡瘑鐮佹渶澶ч暱搴�'));
+        } else if (/[^\d]/g.test(value)) {
+          callback(new Error('瀵嗙爜鏈�澶ч暱搴︾殑杈撳叆绫诲瀷鍙兘涓烘暟瀛楃被鍨�'));
+        } else {
+          callback();
+        }
+      },
+      trigger: 'change'
+    }]
+  },
+  {
+    label: '缁勫悎鏂瑰紡',
+    prop: 'requireCharTypeText',
+    sortable: true,
+    display: false,
+    overHidden: true,
+    labelWidth: "22%",
+  },
+  {
+    label: '缁勫悎鏂瑰紡',
+    prop: 'requireCharType',
+    type: "checkbox",
+    hide: true,
+    span: 12,
+    labelWidth: "22%",
+    change: function (val){
+      const dialogConstructor = Vue.extend(passwordVue);
+      let instance = new dialogConstructor();
+      instance.handleCheckboxChange(val);
+    },
+    rules: [{
+      required: true,
+      message: "璇烽�夋嫨缁勫悎鏂规硶",
+      trigger: "blur"
+    }],
+    dicData: [
+      {
+        label: '鏁板瓧',
+        value: "number"
+      },
+      {
+        label: '灏忓啓瀛楁瘝',
+        value: "lower"
+      },
+      {
+        label: '澶у啓瀛楁瘝',
+        value: "upper"
+      },
+      {
+        label: '绗﹀彿',
+        value: "symbol"
+      },
+    ]
+  },
+  {
+    label: '蹇呭~绉嶇被',
+    prop: 'requireCharCount',
+    type: 'select',
+    span: 12,
+    labelWidth: "28%",
+    sortable: true,
+    change: function (val){
+      const dialogConstructor = Vue.extend(passwordVue);
+      let instance = new dialogConstructor();
+      instance.handleSelectChange(val);
+    },
+    dicData: [{
+      label: '1绉�',
+      value: 1,
+      disabled: false
+    },
+      {
+        label: '2绉�',
+        value: 2,
+        disabled: false
+      },
+      {
+        label: '3绉�',
+        value: 3,
+        disabled: false
+      },
+      {
+        label: '4绉�',
+        value: 4,
+        disabled: false
+      }
+    ]
+  },
+  {
+    label: '杩囨湡鏃堕棿锛堝ぉ)',
+    prop: 'validDay',
+    sortable: true,
+    span: 12,
+    labelWidth: "22%",
+    rules: [{
+      required: true,
+      validator: (rule, value, callback) => {
+        if (value == "") {
+          callback(new Error('璇疯緭鍏ヨ繃鏈熸椂闂�'));
+        } else if (/[^\d]/g.test(value)) {
+          callback(new Error('杩囨湡鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+        } else {
+          callback();
+        }
+      },
+      trigger: 'blur'
+    }]
+  },
+  {
+    label: '鎻愰啋鏃堕棿锛堝ぉ锛�',
+    prop: 'remindDay',
+    sortable: true,
+    span: 12,
+    labelWidth: "28%",
+    width: 140,
+    rules: [{
+      required: true,
+      validator: (rule, value, callback) => {
+        if (value == "") {
+          callback(new Error('璇疯緭鍏ヨ繃鏈熸椂闂�'));
+        } else if (/[^\d]/g.test(value)) {
+          callback(new Error('杩囨湡鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+        } else {
+          callback();
+        }
+      },
+      trigger: 'blur'
+    }]
+  },
+  {
+    label: '閲嶈瘯娆℃暟',
+    prop: 'retryTime',
+    sortable: true,
+    span: 12,
+    labelWidth: "22%",
+    rules: [{
+      required: true,
+      validator: (rule, value, callback) => {
+        if (value == "") {
+          callback(new Error('閲嶈瘯娆℃暟'));
+        } else if (/[^\d]/g.test(value)) {
+          callback(new Error('閲嶈瘯娆℃暟鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+        } else {
+          callback();
+        }
+      },
+      trigger: 'blur'
+    }]
+  },
+  {
+    label: '閿佸畾鏃堕棿锛堝垎閽燂級',
+    prop: 'lockTime',
+    sortable: true,
+    width: 150,
+    span: 12,
+    labelWidth: "28%",
+    rules: [{
+      required: true,
+      validator: (rule, value, callback) => {
+        if (value == "") {
+          callback(new Error('璇疯緭鍏ラ攣瀹氭椂闂�'));
+        } else if (/[^\d]/g.test(value)) {
+          callback(new Error('閿佸畾鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+        } else {
+          callback();
+        }
+      },
+      trigger: 'blur'
+    }]
+  },
+  {
+    label: '鎻忚堪',
+    prop: 'description',
+    overHidden: true,
+    type: 'textarea',
+    span: 12,
+    labelWidth: "22%",
+    rows: 5,
+  },
+  {
+    label: '鏄惁涓洪粯璁ょ瓥鐣�',
+    prop: 'defaultFlag',
+    type: 'switch',
+    labelWidth: "30%",
+    dicData: [{
+      label: '鍚�',
+      value: 0
+    }, {
+      label: '鏄�',
+      value: 1
+    }]
+  },
+]
diff --git a/Source/plt-web/plt-web-ui/src/views/system/role/index.vue b/Source/plt-web/plt-web-ui/src/views/system/role/index.vue
index 11b775a..f757b48 100644
--- a/Source/plt-web/plt-web-ui/src/views/system/role/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/system/role/index.vue
@@ -61,7 +61,7 @@
     </el-dialog>
 
     <!-- 瀵煎叆瑙掕壊  -->
-    <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" @updata="getTableList" title="瀵煎叆瑙掕壊"></upload-file>
+    <upload-file ref="upload" :tipList="tipList" :fileType="upFileType" :fileUrl="fileUrl" @updata="getTableList" title="瀵煎叆瑙掕壊"></upload-file>
 
   </basic-container>
 </template>
@@ -132,11 +132,13 @@
             label: '瑙掕壊',
             prop: 'pkPersonName',
             sortable: true,
+            overHidden: true,
           },
         ]
       },
       upFileType: ['xls', 'xlsx'],
       fileUrl: 'api/roleQueryController/importRole',
+      tipList:["瑙掕壊瀵煎叆鍙湁 鍚嶇О 鍜� 鎻忚堪 涓ゅ垪锛屼笖鍚嶇О涓哄繀杈撻」涓嶈兘涓虹┖"]
     }
   },
   methods: {
diff --git a/Source/plt-web/plt-web-ui/src/views/system/user/index.vue b/Source/plt-web/plt-web-ui/src/views/system/user/index.vue
index 94dba49..cd91554 100644
--- a/Source/plt-web/plt-web-ui/src/views/system/user/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/system/user/index.vue
@@ -100,7 +100,7 @@
     </el-dialog>
 
     <!-- 瀵煎叆浜哄憳   -->
-    <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" title="瀵煎叆浜哄憳" @updata="getTableList"></upload-file>
+    <upload-file ref="upload" :tipList="tipList" :fileType="upFileType" :fileUrl="fileUrl" title="瀵煎叆浜哄憳" @updata="getTableList"></upload-file>
 
     <!-- 鍒嗛厤閮ㄩ棬瀵硅瘽妗�    -->
     <el-dialog
@@ -213,7 +213,8 @@
       selectList: [],
       leftRoleData: [],  // 鍒嗛厤瑙掕壊绌挎妗嗗乏渚у垵濮嬫暟鎹�
       rightRoleData: [], // 鍒嗛厤瑙掕壊绌挎妗嗗彸渚у垵濮嬫暟鎹�
-      transferTitle: ['鐜版湁瑙掕壊', '鎷ユ湁瑙掕壊']
+      transferTitle: ['鐜版湁瑙掕壊', '鎷ユ湁瑙掕壊'],
+      tipList:["瀵煎叆妯℃澘涓爣鏄庣孩鑹插瓧浣撶殑涓哄繀杈撻」","閮ㄩ棬鍒椾笂涓嬬骇鍏崇郴蹇呴』鎸夌収鍙嶆枩鏉犻殧寮�(/)"]
     }
   },
   created() {
@@ -397,7 +398,7 @@
         if (res.data.code === 200) {
           this.$message.success(res.data.obj);
           this.getTableList();
-          done()
+          done();
         }
       }).catch(err => {
         loading()

--
Gitblit v1.9.3