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;