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