From bc90fb7e0c6c8313e7d5fcf3aba57e3a1f975c93 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期四, 15 八月 2024 17:39:45 +0800 Subject: [PATCH] 对象建模模块,保存统一先进行正则校验(之间是失焦才进行校验) --- Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue | 366 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 334 insertions(+), 32 deletions(-) diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue index b5c03e9..c5bcb1c 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue @@ -108,7 +108,7 @@ <template slot="label"> 鐗堟湰鍙疯鍒� </template> - <el-tag v-if="nodeRow.revRuleName">{{ nodeRow.revRuleName }}</el-tag> + <el-tag v-if="nodeRow.revisionRuleId">{{ nodeRow.revisionRuleId }}</el-tag> </el-descriptions-item> <el-descriptions-item v-if="nodeRow.revLevel !== '0'" :contentStyle="descriptionOption.contentStyle" :labelStyle="descriptionOption.labelStyle"> @@ -123,12 +123,12 @@ <template slot="label"> 鐗堟鍙疯鍒� </template> - <el-tag v-if="nodeRow.verRuleName" - :type="nodeRow.verRuleName === '0' ? 'warning' : nodeRow.revLevel === '1' ? '' : 'success'"> + <el-tag v-if="nodeRow.revisionRuleId" + :type="nodeRow.revisionRuleId === '0' ? 'warning' : nodeRow.revisionRuleId === '1' ? '' : 'success'"> {{ - nodeRow.verRuleName === '0' + nodeRow.versionRule === '0' ? '1.2.3...' - : nodeRow.revLevel === '1' + : nodeRow.versionRule === '1' ? 'a.b.c...' : '0.1.2...' }} @@ -144,7 +144,7 @@ <template slot="label"> 鐢熷懡鍛ㄦ湡 </template> - <el-tag v-if="nodeRow.lifeCycle">{{ nodeRow.lifeCycle }}</el-tag> + <el-tag v-if="nodeRow.lifeCycleId">{{ nodeRow.lifeCycleId }}</el-tag> </el-descriptions-item> </el-descriptions> </div> @@ -168,17 +168,17 @@ class="avue-dialog" width="75%" @close="addDialogClose"> - <el-form ref="form" :model="form" :rules="rules" label-width="90px"> + <el-form ref="form" :model="form" :rules="rules" label-width="95px"> <div class="dialogForm"> <div class="leftForm"> - <el-form-item label="绫诲瀷鍚嶇О锛�" prop="name"> + <el-form-item label="绫诲瀷鍚嶇О锛�" prop="id"> <el-input v-model="form.id" :readOnly="title === 'edit'"></el-input> </el-form-item> <el-form-item label="鏍囩锛�"> <el-input v-model="form.name"></el-input> </el-form-item> <el-form-item label="缁ф壙鑷細"> - <el-input v-model="form.name" :readOnly="title === 'edit'"></el-input> + <el-input v-model="form.fName" :readOnly="title === 'edit'"></el-input> </el-form-item> <el-form-item label="瀹炵幇绫伙細"> <el-input v-model="form.implClass"></el-input> @@ -188,39 +188,48 @@ </el-form-item> </div> <div class="centerForm"> - <el-form-item label="鐗堟湰瑙勫垯锛�" label-width="100px" prop="revLevel"> + <el-form-item label="鐗堟湰瑙勫垯锛�" label-width="110px" prop="revLevel"> <el-select v-model="form.revLevel"> <el-option label="涓嶅彲淇" value="0"></el-option> <el-option label="閲囩敤涓�绾х増鏈鐞�" value="1"></el-option> <el-option label="閲囩敤浜岀骇鐗堟湰绠$悊" value="2"></el-option> </el-select> </el-form-item> - <el-form-item v-if="form.revLevel !== '0'" label="鐗堟湰鍙疯鍒欙細" label-width="100px" prop="revLevel"> + <el-form-item v-if="form.revLevel !== '0'" label="鐗堟湰鍙疯鍒欙細" label-width="110px" prop="revisionRuleName"> <div style="display: flex;gap: 5px;align-items: center"> - <el-input v-model="form.revRuleName" :readOnly="true"></el-input> - <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success" @click="versionAddHandler">娣诲姞</el-button> + <el-input v-model="form.revisionRuleId" :readOnly="true"></el-input> + <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success" + @click="versionAddHandler">娣诲姞 + </el-button> + <el-switch + v-model="form.inputRevisionFlag" + active-text="鎵嬪伐杈撳叆" + style="width: 300px"> + </el-switch> </div> </el-form-item> - <el-form-item v-if="form.revLevel !== '0'" label="鍒嗛殧绗︼細" label-width="100px" prop="revLevel"> + <el-form-item v-if="form.revLevel !== '0'" label="鍒嗛殧绗︼細" label-width="110px" prop="delimiter"> <el-select v-model="form.delimiter" clearable> <el-option label="." value="."></el-option> <el-option label="-" value="-"></el-option> </el-select> </el-form-item> - <el-form-item v-if="form.revLevel !== '0' && form.revLevel !== '1'" label="鐗堟鍙疯鍒欙細" label-width="100px" + <el-form-item v-if="form.revLevel !== '0' && form.revLevel !== '1'" label="鐗堟鍙疯鍒欙細" label-width="110px" prop="revLevel"> - <el-select v-model="form.verRuleName" clearable> - <el-option label="1.2.3..." value="1.2.3..."></el-option> - <el-option label="a.b.c..." value="a.b.c..."></el-option> - <el-option label="0.1.2..." value="0.1.2..."></el-option> + <el-select v-model="form.versionRule" clearable> + <el-option label="1.2.3..." value="0"></el-option> + <el-option label="a.b.c..." value="1"></el-option> + <el-option label="0.1.2..." value="2"></el-option> </el-select> </el-form-item> </div> <div class="rightForm"> - <el-form-item label="鐢熷懡鍛ㄦ湡锛�" label-width="138px" prop="revLevel"> + <el-form-item label="鐢熷懡鍛ㄦ湡锛�" label-width="138px" prop="lifeCycleId"> <div style="display: flex;gap: 5px;align-items: center"> - <el-input v-model="form.lifeCycle" :readOnly="true"></el-input> - <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success">娣诲姞</el-button> + <el-input v-model="form.lifeCycleId" :readOnly="true"></el-input> + <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success" + @click="lifeAddHandler('input')">娣诲姞 + </el-button> </div> </el-form-item> @@ -229,12 +238,12 @@ <div style="height: 200px; width: 280px; border: 1px solid #bdbbbb;overflow-y: auto"> <!-- 鍐呭 --> <el-table - :data="bizFormData" + :data="dialogLifeTable" :show-header="false" style="width: 100%"> <el-table-column align="center" - prop="name"> + prop="id"> </el-table-column> <el-table-column fixed="right" @@ -245,7 +254,7 @@ size="small" style="color:#F56C6C;" type="text" - @click.native.prevent="bizTypeDeleteRow('form',scope.$index)"> + @click.native.prevent="dialogDeleteLifeTable(scope.$index)"> 绉婚櫎 </el-button> </template> @@ -253,7 +262,7 @@ </el-table> </div> <el-button plain size="mini" style="margin-left: 5px" type="success" - @click="FormItemReferChange('form')">娣诲姞 + @click="lifeAddHandler('table')">娣诲姞 </el-button> </div> @@ -276,6 +285,8 @@ <el-button type="primary" @click="addDialogSavaHandler">纭� 瀹�</el-button> </span> </el-dialog> + + <!-- 灞炴�ф睜娣诲姞 --> <el-dialog v-dialogDrag :visible.sync="attrPollDialogVisible" @@ -306,19 +317,128 @@ </span> </el-dialog> + <el-dialog + v-dialogDrag + :visible.sync="dialogVersionVisible" + append-to-body="true" + class="avue-dialog" + title="鐗堟湰鍙疯鍒�" + width="60%" + > + + <avue-crud + :key="dialogVersionKey" + ref="dialogAttrCrud" + :data="dialogVersionData" + :option="dialogVersionOption" + :table-loading="dialogVersionLoading" + @row-click="dialogVersionRowClick" + @search-change="versionHandleSearch" + @search-reset="versionHandleReset" + > + </avue-crud> + + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogVersionVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="dialogVersionAddClickHandler">纭� 瀹�</el-button> + </span> + + </el-dialog> + + <!-- 鐢熷懡鍛ㄦ湡 --> + <el-dialog + v-dialogDrag + :visible.sync="dialogLfeVisible" + append-to-body="true" + class="avue-dialog" + title="鐢熷懡鍛ㄦ湡妯℃澘" + width="60%" + > + <avue-crud + :key="dialogLifeKey" + ref="dialogAttrCrud" + :data="dialogLifeData" + :option="dialogLifeOption" + :table-loading="dialogLifeLoading" + @row-click="dialogLifeRowClick" + @search-change="lifeHandleSearch" + @search-reset="lifeHandleReset" + > + </avue-crud> + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogLfeVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="dialogLifeAddClickHandler">纭� 瀹�</el-button> + </span> + + </el-dialog> + </el-container> </template> <script> import basicOption from '@/util/basic-option' -import {getBizTypes} from "@/api/modeling/businessType/api" +import {getBizTypes, addLifeCycle} from "@/api/modeling/businessType/api" import {gridAttribute} from "@/api/modeling/attributePool/api"; import func from "@/util/func"; +import {getVersionRuleAllList} from "@/api/modeling/version/api"; +import {gridLifeCycle} from "@/api/modeling/lifeCycle/api"; export default { name: "index", data() { return { + dialogLifeDefalutData: [], // 鏌ヨ閲嶇疆榛樿鏁版嵁 + lifeType: '', + dialogLifeTable: [], + dialogLifeSaveRow: {}, + dialogLifeKey: Math.random(), + dialogLifeData: [], + dialogLifeOption: { + ...basicOption, + addBtn: false, + selection: false, + refreshBtn: false, + menu: false, + height: 450, + searchMenuSpan: 8, + highlightCurrentRow: true, + column: [ + { + label: '鐢熷懡鍛ㄦ湡妯℃澘鍚�', + prop: 'id', + searchLabelWidth: 120, + search: true + } + ] + }, + dialogLifeLoading: false, + dialogLfeVisible: false, + dialogVersionDefalutData: [], // 鏌ヨ閲嶇疆榛樿鏁版嵁 + dialogSwitchValue: false, + dialogVersionSaveRow: {}, + dialogVersionVisible: false, + dialogVersionKey: Math.random(), + dialogVersionData: [], + dialogVersionOption: { + ...basicOption, + addBtn: false, + selection: false, + refreshBtn: false, + menu: false, + height: 450, + searchMenuSpan: 8, + highlightCurrentRow: true, + // calcHeight: 100, + column: [ + { + label: '鐗堟湰鍙疯鍒�', + prop: 'id', + searchLabelWidth: 110, + search: true + } + ] + }, + dialogVersionLoading: false, dialogAttrSelectList: [], searchAttrParams: {}, dialogAttrLoading: false, @@ -331,7 +451,6 @@ }, dialogAttrSaveOption: { ...basicOption, - calcHeight: -60, addBtn: false, menu: false, refreshBtn: false, @@ -366,7 +485,18 @@ }, dialogAttrSaveData: [], attrPollDialogVisible: false, - rules: [], + rules: { + id: [ + {required: true, message: '璇疯緭绫诲瀷鍚嶇О', trigger: 'blur'}, + {validator: this.validateEnglishOnly, trigger: 'blur'} + ], + revLevel: [ + {required: true, message: '璇烽�夋嫨鐗堟湰瑙勫垯', trigger: 'blur'}, + ], + lifeCycleId: [ + {required: true, message: '璇烽�夋嫨鐢熷懡鍛ㄦ湡', trigger: 'blur'}, + ] + }, dialogAttrData: [], dialogAttrOption: { ...basicOption, @@ -438,7 +568,20 @@ } ] }, - form: {}, + form: { + id: '', // 绫诲瀷鍚嶇О + name: '', // 鏍囩 + fName: '', // 缁ф壙鑷� + implClass: '', // 瀹炵幇绫� + description: '', // 鎻忚堪 + revLevel: '', // 鐗堟湰瑙勫垯 + revisionRuleId: '',// 鐗堟湰鍙疯鍒� + inputRevisionFlag: false, // 鎵嬪伐杈撳叆 + versionRule: '', // 鐗堟鍙疯鍒� + lifeCycleId: '', // 鐢熷懡鍛ㄦ湡 + subLifeCycleId: '', // 鐢熷懡鍛ㄦ湡澶囬�夊垪琛�, + apNameArray: "", // 灞炴�ф睜鍒楄〃鈥欙紝鈥樺垎闅� + }, nodeRow: {}, treeOption: { height: 'auto', @@ -602,16 +745,175 @@ }, // 鐗堟湰瑙勫垯绠$悊娣诲姞 - versionAddHandler(){ + versionAddHandler() { + this.dialogVersionVisible = true; + this.dialogVersionKey = Math.random(); // 鎵撳紑鏃跺埛鏂拌〃鏍奸伩鍏嶈〃鏍奸敊琛� + this.dialogVersionLoading = true; + getVersionRuleAllList().then(res => { + const data = res.data.data.map(item => { + return { + id: item.id + } + }); + this.dialogVersionData = data; + this.dialogVersionDefalutData = data; + this.dialogVersionLoading = false; + }).catch(err => { + this.$message.error(err) + }); + }, + + // 鐗堟湰瑙勫垯琛岀偣鍑� + dialogVersionRowClick(row) { + this.dialogVersionSaveRow = row; + }, + + // 鐗堟湰瑙勫垯鎼滅储 + versionHandleSearch(params, done) { + const {id} = params; + + if (!params.id) { + this.dialogVersionData = this.dialogVersionDefalutData; + return done(); + } + ; + + this.dialogVersionData = this.dialogVersionDefalutData.filter(item => { + return item.id && item.id.includes(id); + }); + + done(); + + }, + + // 鐗堟湰绠$悊缃┖ + versionHandleReset() { + this.dialogVersionData = this.dialogVersionDefalutData; + }, + + // 鐗堟湰鍙疯鍒欎繚瀛� + dialogVersionAddClickHandler() { + if (func.isEmptyObject(this.dialogVersionSaveRow)) { + this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�'); + return; + } + this.form.revisionRuleId = this.dialogVersionSaveRow.id; + this.dialogVersionVisible = false; + }, + + // 鐢熷懡鍛ㄦ湡鏂板 + lifeAddHandler(val) { + this.dialogLfeVisible = true; + this.dialogLifeKey = Math.random(); // 鎵撳紑鏃跺埛鏂拌〃鏍奸伩鍏嶈〃鏍奸敊琛� + this.dialogLifeLoading = true; + this.lifeType = val; + gridLifeCycle().then(res => { + const data = res.data.data.map(item => { + return { + id: item.id + } + }); + this.dialogLifeData = data; + this.dialogLifeDefalutData = data; + this.dialogLifeLoading = false + }).catch(err => { + this.$message.error(err) + }); + }, + + // 鐢熷懡鍛ㄦ湡琛岀偣鍑� + dialogLifeRowClick(row) { + this.dialogLifeSaveRow = row; + }, + + // 鐢熷懡鍛ㄦ湡淇濆瓨 + dialogLifeAddClickHandler() { + if (func.isEmptyObject(this.dialogLifeSaveRow)) { + this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�'); + return; + } + if (this.lifeType === 'input') { + this.form.lifeCycleId = this.dialogLifeSaveRow.id; + } else { + const flag = this.dialogLifeTable.some(item => item.id === this.dialogLifeSaveRow.id); + + if (flag) { + this.$message.error('宸插瓨鍦ㄧ浉鍚岀殑鏁版嵁锛岃娣诲姞鍏朵粬鏁版嵁'); + return; + } + this.dialogLifeTable.push(this.dialogLifeSaveRow); + } + this.dialogLfeVisible = false; + }, + + // 鐢熷懡鍛ㄦ湡澶囬�夊垪琛ㄧЩ闄� + dialogDeleteLifeTable(index) { + this.dialogLifeTable.splice(index, 1) + }, + + // 鐢熷懡鍛ㄦ湡鎼滅储 + lifeHandleSearch(params, done) { + const {id} = params; + + if (!params.id) { + this.dialogLifeData = this.dialogLifeDefalutData; + return done(); + } + ; + + this.dialogLifeData = this.dialogLifeDefalutData.filter(item => { + return item.id && item.id.includes(id); + }); + + done(); + + }, + + // 鐢熷懡鍛ㄦ湡閲嶇疆 + lifeHandleReset() { + this.dialogLifeData = this.dialogLifeDefalutData; + }, + + // 鍙兘杈撳叆鑻辨枃姝e垯鏍¢獙 + validateEnglishOnly(rule, value, callback) { + if (!value) { + return callback(new Error('璇疯緭鍏ョ被鍨嬪悕绉�')); + } + if (!/^[A-Za-z]+$/.test(value)) { + return callback(new Error('鍙兘杈撳叆鑻辨枃瀛楁瘝')); + } + callback(); // 楠岃瘉閫氳繃 + }, + + // 鏂板缂栬緫淇濆瓨 + addDialogSavaHandler() { + console.log(this.form) + this.$refs.form.validate((valid) => { + if (valid) { + addLifeCycle(this.form).then(res => { + console.log(res); + }) + } else { + return false; + } + }); + + this.$refs.form.validate((valid) => { + if (valid) { + } else { + return false; + } + }); } + } } </script> <style lang="scss" scoped> ::v-deep { - .avue-dialog .el-dialog__body{ + .avue-dialog .el-dialog__body { padding: 20px 20px 0px 20px; // 涓婂彸涓嬪乏 margin-bottom: 10px !important; } -- Gitblit v1.9.3