From a1d3e34009cb1a5079633a41006b01124d81abff Mon Sep 17 00:00:00 2001 From: hyt <958868763@qq.com> Date: Wed, 26 Jun 2024 16:42:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=91=A8=E4=B8=89=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E6=8F=90=E5=87=BA=E7=9A=84=E4=BD=8F=E6=95=B0=E6=8D=AE?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layout/components/TagsView/index.vue | 2 +- .../compoments/baseTableForm_v2.vue | 300 +++++++++--------- .../masterDataOptions/authority/index.vue | 2 +- .../dataOrigin/configData.js | 4 +- .../masterDataOptions/dataOrigin/index.vue | 11 +- .../masterDataOptions/dataOrigin/sonTable.vue | 4 +- .../masterDataOptions/distribute/index.vue | 2 +- src/views/masterDataOptions/masterDataAdd.vue | 67 ++-- 8 files changed, 202 insertions(+), 190 deletions(-) diff --git a/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue index f077d32..69e8c46 100644 --- a/src/layout/components/TagsView/index.vue +++ b/src/layout/components/TagsView/index.vue @@ -370,7 +370,7 @@ export default { //width: 16px; //height: 16px; left: -14px; - top: -3px; + top: 0px; position: absolute; vertical-align: 2px; border-radius: 50%; diff --git a/src/views/integrationOptionV2/compoments/baseTableForm_v2.vue b/src/views/integrationOptionV2/compoments/baseTableForm_v2.vue index e0dfe19..36fc7a0 100644 --- a/src/views/integrationOptionV2/compoments/baseTableForm_v2.vue +++ b/src/views/integrationOptionV2/compoments/baseTableForm_v2.vue @@ -98,209 +98,211 @@ <template slot-scope="scope"> <!-- 定义插槽:父组件可以使用 v-slot:prop="{row}" 搭配template标签,自定义每一列单元格的样式与操作 --> <slot :name="item.id" :row="slotrow ? scope : scope.row"> - <template v-if="!lookflag"> - <el-input - v-if="item.type === 'input' || item.type === 'textrea'" - :disabled=" + <template v-if="scope.$index + 1 != tableInfo.tableData.length"> + <template v-if="!lookflag"> + <el-input + v-if="item.type === 'input' || item.type === 'textrea'" + :disabled=" lookflag || scope.$index + 1 == tableInfo.tableData.length " - v-model="tableInfo.tableData[scope.row.index][item.id]" - placeholder="" - :maxlength="item.maxlength ? item.maxlength : ''" - ></el-input> - <el-input - v-if="item.type === 'number'" - type="number" - onkeyup="value=value.replace(/[^\d]/g,'')" - :disabled=" + v-model="tableInfo.tableData[scope.row.index][item.id]" + placeholder="" + :maxlength="item.maxlength ? item.maxlength : ''" + ></el-input> + <el-input + v-if="item.type === 'number'" + type="number" + onkeyup="value=value.replace(/[^\d]/g,'')" + :disabled=" lookflag || scope.$index + 1 == tableInfo.tableData.length " - v-model="tableInfo.tableData[scope.row.index][item.id]" - placeholder="" - min="1" - :maxlength="item.maxlength ? item.maxlength : ''" - ></el-input> - <el-checkbox - v-if="item.type === 'checkbox'" - :disabled=" + v-model="tableInfo.tableData[scope.row.index][item.id]" + placeholder="" + min="1" + :maxlength="item.maxlength ? item.maxlength : ''" + ></el-input> + <el-checkbox + v-if="item.type === 'checkbox'" + :disabled=" lookflag || scope.$index + 1 == tableInfo.tableData.length " - v-model="tableInfo.tableData[scope.row.index][item.id]" - ></el-checkbox> - <BaseSelect - v-if="item.type === 'select'" - v-model="tableInfo.tableData[scope.row.index][item.id]" - :disabled=" + v-model="tableInfo.tableData[scope.row.index][item.id]" + ></el-checkbox> + <BaseSelect + v-if="item.type === 'select'" + v-model="tableInfo.tableData[scope.row.index][item.id]" + :disabled=" lookflag || scope.$index + 1 == tableInfo.tableData.length " - :selectInfo="item" - :itemObj="item" - :ruleForm="tableInfo.tableData[scope.row.index]" - ></BaseSelect> - <baseCascader - :disabled=" + :selectInfo="item" + :itemObj="item" + :ruleForm="tableInfo.tableData[scope.row.index]" + ></BaseSelect> + <baseCascader + :disabled=" lookflag || scope.$index + 1 == tableInfo.tableData.length " - v-if="item.type === 'treeselect'" - v-model="tableInfo.tableData[scope.row.index][item.id]" - :itemObj="item" - :ruleForm="tableInfo.tableData[scope.row.index]" - > - </baseCascader> - <el-link - style=" + v-if="item.type === 'treeselect'" + v-model="tableInfo.tableData[scope.row.index][item.id]" + :itemObj="item" + :ruleForm="tableInfo.tableData[scope.row.index]" + > + </baseCascader> + <el-link + style=" overflow: hidden; text-overflow: ellipsis; white-space: nowrap; " - :disabled=" + :disabled=" lookflag || scope.$index + 1 == tableInfo.tableData.length " - v-if="item.type === 'click'" - @click="clickBoxHandle(scope.row)" - type="primary" + v-if="item.type === 'click'" + @click="clickBoxHandle(scope.row)" + type="primary" >{{ - tableInfo.tableData[scope.row.index][item.id] - ? tableInfo.tableData[scope.row.index][item.id] - : "点击这里..." - }}</el-link - > - <div v-if="item.type === 'text'"> - <el-tooltip class="item" effect="dark" placement="top"> - <div slot="content"> - {{ tableInfo.tableData[scope.row.index][item.id] }} - </div> - <div - style=" + tableInfo.tableData[scope.row.index][item.id] + ? tableInfo.tableData[scope.row.index][item.id] + : "点击这里..." + }}</el-link + > + <div v-if="item.type === 'text'"> + <el-tooltip class="item" effect="dark" placement="top"> + <div slot="content"> + {{ tableInfo.tableData[scope.row.index][item.id] }} + </div> + <div + style=" overflow: hidden; text-overflow: ellipsis; white-space: nowrap; " - > - {{ tableInfo.tableData[scope.row.index][item.id] }} - </div> - </el-tooltip> - </div> - <BaseDatePicker - v-if="item.type === 'datepick'" - v-model="tableInfo.tableData[scope.row.index][item.id]" - :disabled=" + > + {{ tableInfo.tableData[scope.row.index][item.id] }} + </div> + </el-tooltip> + </div> + <BaseDatePicker + v-if="item.type === 'datepick'" + v-model="tableInfo.tableData[scope.row.index][item.id]" + :disabled=" lookflag || scope.$index + 1 == tableInfo.tableData.length " - :row="scope.row" - :low="item.low ? item.low : ''" - :up="item.up ? item.up : ''" - ></BaseDatePicker> - <BaseDatePicker - v-if="item.type === 'daterange'" - v-model="tableInfo.tableData[scope.row.index][item.id]" - :disabled=" + :row="scope.row" + :low="item.low ? item.low : ''" + :up="item.up ? item.up : ''" + ></BaseDatePicker> + <BaseDatePicker + v-if="item.type === 'daterange'" + v-model="tableInfo.tableData[scope.row.index][item.id]" + :disabled=" lookflag || scope.$index + 1 == tableInfo.tableData.length " - datePickerType="daterange" - ></BaseDatePicker> - <BaseDatePicker - v-if="item.type === 'datetimepick'" - datePickerType="datetime" - v-model="tableInfo.tableData[scope.row.index][item.id]" - :disabled=" + datePickerType="daterange" + ></BaseDatePicker> + <BaseDatePicker + v-if="item.type === 'datetimepick'" + datePickerType="datetime" + v-model="tableInfo.tableData[scope.row.index][item.id]" + :disabled=" lookflag || scope.$index + 1 == tableInfo.tableData.length " - ></BaseDatePicker> - <div - v-if=" + ></BaseDatePicker> + <div + v-if=" item.type === 'compute' && !lookflag && scope.$index + 1 != tableInfo.tableData.length " - > - <el-tooltip class="item" effect="dark" placement="top"> - <div slot="content"> - {{ calculator(item, scope.row) }} - </div> - <div - style=" + > + <el-tooltip class="item" effect="dark" placement="top"> + <div slot="content"> + {{ calculator(item, scope.row) }} + </div> + <div + style=" overflow: hidden; text-overflow: ellipsis; white-space: nowrap; " - > - {{ calculator(item, scope.row) }} - </div> - </el-tooltip> - </div> - <el-switch - v-if="item.type === 'switch'" - :disabled=" + > + {{ calculator(item, scope.row) }} + </div> + </el-tooltip> + </div> + <el-switch + v-if="item.type === 'switch'" + :disabled=" lookflag || scope.$index + 1 == tableInfo.tableData.length " - v-model="tableInfo.tableData[scope.row.index][item.id]" - :active-text="row.activeText" - :inactive-text="row.inactiveText" - :active-value="row.activeValue ? row.activeValue : true" - :inactive-value=" + v-model="tableInfo.tableData[scope.row.index][item.id]" + :active-text="row.activeText" + :inactive-text="row.inactiveText" + :active-value="row.activeValue ? row.activeValue : true" + :inactive-value=" row.inactiveValue || row.inactiveValue == 0 ? row.inactiveValue : false " - > - </el-switch> - </template> - <template v-else> - <div - v-if=" + > + </el-switch> + </template> + <template v-else> + <div + v-if=" item.type != 'checkbok' && item.type !== 'select' && item.type !== 'treeselect' && item.type !== 'datepick' " - > - <el-tooltip class="item" effect="dark" placement="top"> - <div slot="content"> - {{ tableInfo.tableData[scope.row.index][item.id] }} - </div> - <div - style=" + > + <el-tooltip class="item" effect="dark" placement="top"> + <div slot="content"> + {{ tableInfo.tableData[scope.row.index][item.id] }} + </div> + <div + style=" overflow: hidden; text-overflow: ellipsis; white-space: nowrap; " - > - {{ tableInfo.tableData[scope.row.index][item.id] }} - </div> - </el-tooltip> - </div> - <BaseSelect - v-if="item.type === 'select'" - v-model="tableInfo.tableData[scope.row.index][item.id]" - :disabled=" + > + {{ tableInfo.tableData[scope.row.index][item.id] }} + </div> + </el-tooltip> + </div> + <BaseSelect + v-if="item.type === 'select'" + v-model="tableInfo.tableData[scope.row.index][item.id]" + :disabled=" lookflag || scope.$index + 1 == tableInfo.tableData.length " - :selectInfo="item" - :itemObj="item" - :ruleForm="tableInfo.tableData[scope.row.index]" - :lookflag="true" - ></BaseSelect> - <baseCascader - v-if="item.type === 'treeselect'" - v-model="tableInfo.tableData[scope.row.index][item.id]" - :lookflag="true" - :itemObj="item" - :ruleForm="tableInfo.tableData[scope.row.index]" - > - </baseCascader> - <div v-if="item.type === 'datepick'"> - {{ - tableInfo.tableData[scope.row.index][item.id].split("T")[0] - }} - </div> - <el-checkbox - v-if="item.type === 'checkbox'" - :disabled=" + :selectInfo="item" + :itemObj="item" + :ruleForm="tableInfo.tableData[scope.row.index]" + :lookflag="true" + ></BaseSelect> + <baseCascader + v-if="item.type === 'treeselect'" + v-model="tableInfo.tableData[scope.row.index][item.id]" + :lookflag="true" + :itemObj="item" + :ruleForm="tableInfo.tableData[scope.row.index]" + > + </baseCascader> + <div v-if="item.type === 'datepick'"> + {{ + tableInfo.tableData[scope.row.index][item.id].split("T")[0] + }} + </div> + <el-checkbox + v-if="item.type === 'checkbox'" + :disabled=" lookflag || scope.$index + 1 == tableInfo.tableData.length " - v-model="tableInfo.tableData[scope.row.index][item.id]" - ></el-checkbox> + v-model="tableInfo.tableData[scope.row.index][item.id]" + ></el-checkbox> + </template> </template> </slot> </template> diff --git a/src/views/masterDataOptions/authority/index.vue b/src/views/masterDataOptions/authority/index.vue index 9d7f5d9..b96545f 100644 --- a/src/views/masterDataOptions/authority/index.vue +++ b/src/views/masterDataOptions/authority/index.vue @@ -278,7 +278,7 @@ export default { <style scoped lang="scss"> .receiptsAddRow { - margin-top: 30px; + margin-top: 15px; border: 1px dotted #ccc; text-align: center; height: 50px; diff --git a/src/views/masterDataOptions/dataOrigin/configData.js b/src/views/masterDataOptions/dataOrigin/configData.js index 5e00452..2d0909b 100644 --- a/src/views/masterDataOptions/dataOrigin/configData.js +++ b/src/views/masterDataOptions/dataOrigin/configData.js @@ -47,8 +47,8 @@ const optionFormRow = [ disabled: false, required: true, fontSize: 16, - pattern: /^[a-zA-Z][a-zA-Z0-9_]{0,50}$/, - message: "须以字母开头且不能出现_外的字符与中文", + pattern: /^[a-z][a-z0-9_]{0,50}$/, + message: "须以需字母开头且字母小写且不能出现_外的字符与中文", disabledOfId: true, }, ], diff --git a/src/views/masterDataOptions/dataOrigin/index.vue b/src/views/masterDataOptions/dataOrigin/index.vue index e200251..6ec6e4f 100644 --- a/src/views/masterDataOptions/dataOrigin/index.vue +++ b/src/views/masterDataOptions/dataOrigin/index.vue @@ -249,7 +249,9 @@ export default { }, // 主表按钮(删除) mainDeleOnFunc(row, item) { - this.$confirm('确定删除?') + console.log(row, 'row') + let msg = row.dbType == 1 ? '删除主表将会导致所有相关子表一并删除,是否确认继续删除操作?' : '确定是否删除?' + this.$confirm(msg) .then(async(_) => { this.openLoading('submit') const res = await authApi('mdmModuleService', '', 'deleteMdmDb', '', { @@ -257,6 +259,10 @@ export default { ...row }) this.$vmNews('删除成功!', 'success') + if (this.mainTempClick.id === row.id || row.dbType == 1) { + this.activedTableData = [] + this.mainTempClick = {} + } this.getMainTableHandle() }) .catch((_) => { @@ -407,7 +413,7 @@ export default { this.$refs.mainTable.$refs.mainOptionForm.$refs['ruleForm'].validate(async(valid) => { if (valid) { //主数据英文名黑名单 - let blacklist = ['id', 'document_rule', 'document_rule_num', 'data_status', 'add_status', 'update_status', 'delete_status', 'sorts', 'create_user_id', 'create_time', 'modify_user_id', 'modify_time', 'sts', 'org_id', 'company_id','data_id'] + let blacklist = ['id', 'document_rule', 'document_rule_num', 'data_status', 'add_status', 'update_status', 'delete_status', 'sorts', 'create_user_id', 'create_time', 'modify_user_id', 'modify_time', 'sts', 'org_id', 'company_id', 'data_id'] let form = this.$refs.mainTable.mainOptionForm //判断黑名单 if (blacklist.includes(form.dbName)) { @@ -529,6 +535,7 @@ export default { margin-left: 5px; border-radius: 8px; height: calc(100%); + .mainAddRow { margin-top: 30px; border: 1px dotted #ccc; diff --git a/src/views/masterDataOptions/dataOrigin/sonTable.vue b/src/views/masterDataOptions/dataOrigin/sonTable.vue index f99ba8b..6707402 100644 --- a/src/views/masterDataOptions/dataOrigin/sonTable.vue +++ b/src/views/masterDataOptions/dataOrigin/sonTable.vue @@ -99,8 +99,8 @@ export default { disabled: false, required: true, fontSize: 16, - pattern: /^[a-zA-Z][a-zA-Z0-9_]{0,50}$/, - message: '须以字母开头且不能出现_外的字符与中文', + pattern: /^[a-z][a-z0-9_]{0,50}$/, + message: "须以需字母开头且字母小写且不能出现_外的字符与中文", disabledOfId: true } ] diff --git a/src/views/masterDataOptions/distribute/index.vue b/src/views/masterDataOptions/distribute/index.vue index 519ccba..3dc9a3e 100644 --- a/src/views/masterDataOptions/distribute/index.vue +++ b/src/views/masterDataOptions/distribute/index.vue @@ -277,7 +277,7 @@ export default { <style scoped lang="scss"> .receiptsAddRow { - margin-top: 30px; + margin-top: 15px; border: 1px dotted #ccc; text-align: center; height: 50px; diff --git a/src/views/masterDataOptions/masterDataAdd.vue b/src/views/masterDataOptions/masterDataAdd.vue index 4a0d395..485a857 100644 --- a/src/views/masterDataOptions/masterDataAdd.vue +++ b/src/views/masterDataOptions/masterDataAdd.vue @@ -43,10 +43,10 @@ <div class="upload"> <div class="uploadMain"> <div class="left"> - <div class="title">主数据logo</div> + <div class="smalltitle">主数据logo</div> <el-upload class="avatar-uploader" ref="upload" action="https://jsonplaceholder.typicode.com/posts/" - :on-preview="handlePreview" :on-progress="handleProgress" :before-upload="beforeUpload" - list-type="picture" :limit="1" :disabled="lookFlag" :on-success="handleAvatarSuccess" + :on-preview="handlePreview" :before-upload="handleProgress" + list-type="picture" :limit="1" :disabled="lookFlag" :show-file-list="false" > <div class="line"> @@ -121,10 +121,27 @@ export default { }, methods: { // 文件上传相关时间 - handleProgress(file, fileList) { - this.loading = true + handleProgress(fileList, file) { + console.log(fileList, 'file') + if (!fileList) return + if ( + fileList.type.split('/')[1] != 'jpeg' && + fileList.type.split('/')[1] != 'png' + ) { + this.$message({ + type: 'warning', + message: '只能上传jpg/png文件' + }) + return false + } + if (fileList.size >= 2000000) { + this.$message({ + type: 'warning', + message: '文件大小不超过2MB' + }) + return false + } this.handleAvatarSuccess({}, fileList).then(res => { - this.loading = false }) }, handlePreview(file) { @@ -132,9 +149,9 @@ export default { async handleAvatarSuccess(res, file) { this.loading = true this.$refs.upload.clearFiles()//清理文件上传状态 - this.imgUrl = URL.createObjectURL(file.raw) + this.imgUrl = URL.createObjectURL(file) let formData = new FormData() - formData.append('file', file.raw) + formData.append('file', file) formData.append('fileFlag', true) formData.append('businessType', 'application') return request({ @@ -142,35 +159,18 @@ export default { method: 'post', data: formData }).then((res) => { - if (res.status === '200') { console.log(res) this.$vmNews('上传成功', 'success') this.appLogo = res.attribute.id + this.loading = false } }) + this.loading = false return true }, async beforeUpload(file) { - if ( - file.type.split('/')[1] != 'jpeg' && - file.type.split('/')[1] != 'png' - ) { - this.$message({ - type: 'warning', - message: '只能上传jpg/png文件' - }) - return - } else { - if (file.size >= 2000000) { - this.$message({ - type: 'warning', - message: '文件大小不超过2MB' - }) - return - } - } }, // 保存按钮、列表验证 saveHandle() { @@ -307,7 +307,7 @@ export default { margin-left: 5px; .title { - margin-bottom: 32px; + margin-bottom: 20px; margin-left: 32px; font-family: PingFangSC, PingFang SC; font-weight: 600; @@ -399,7 +399,7 @@ export default { justify-content: space-between; > .left { - > .title { + > .smalltitle { font-size: 18px; color: #999999; margin-bottom: 10px; @@ -443,10 +443,12 @@ export default { margin-top: 10px; background-color: #fff; border-radius: 16px; - .line{ + + .line { margin-left: 32px; display: flex; - .name{ + + .name { font-family: PingFangSC, PingFang SC; font-weight: 400; font-size: 18px; @@ -455,7 +457,8 @@ export default { text-align: left; font-style: normal; } - .value{ + + .value { display: flex; margin-left: 15px; font-family: PingFangSC, PingFang SC;