田源
2023-07-26 9675f1491ef23c4c6f69cb83cbf6de3fd6dac61b
Source/UBCS-WEB/src/components/Tree/attrCrud.vue
@@ -1,38 +1,38 @@
<template>
  <div>
    <div style="display: flex;flex-wrap: wrap;" v-if="this.crudArrayFlag">
      <el-button-group>
    <div style="display: flex;flex-wrap: wrap;" v-if="this.crudArrayFlag"class="app">
      <!--新增-->
      <el-button v-if="attrEditVisible == false && attrFlagChiledren==false" size="small" type="primary" icon="el-icon-plus" @click="busineHandle">添加 {{ msg }}</el-button>
      <el-button v-if="attrEditVisible == false && attrFlagChiledren==false && (!checkStatus || crudLCStatus=='Editing')" size="small" type="primary" icon="el-icon-plus" @click="busineHandle">添加 {{ msg }}</el-button>
      <!--        全屏编辑-->
      <el-button v-if=" attrEditVisible == false && attrFlagChiledren==false" size="small" @click="fullscreenHandle" icon="el-icon-full-screen">全屏编辑</el-button>
      <el-button v-if=" attrEditVisible == false && attrFlagChiledren==false && (!checkStatus || crudLCStatus=='Editing')" size="small" @click="fullscreenHandle" icon="el-icon-full-screen">全屏编辑</el-button>
      <!--        验证规则-->
      <el-button icon="el-icon-info" size="small" @click="ruleAddHandler">验证规则</el-button>
      <el-button v-if="!checkStatus || crudLCStatus=='Editing'" icon="el-icon-info" size="small" @click="ruleAddHandler">验证规则</el-button>
      <!--        属性分组-->
      <el-button icon="el-icon-menu" size="small" @click="attrVisibleHandle">属性分组</el-button>
      </el-button-group>
      <el-button-group>
      <el-button v-if="!checkStatus || crudLCStatus=='Editing'" icon="el-icon-menu" size="small" @click="attrVisibleHandle">属性分组</el-button>
      <!--        分类注入-->
      <el-button icon="el-icon-magic-stick" size="small" @click="injectBtn">分类注入</el-button>
      <el-button v-if="!checkStatus || crudLCStatus=='Editing'" icon="el-icon-magic-stick" size="small" @click="injectBtn">分类注入</el-button>
        <!--    组合规则-->
        <el-button size="small" @click="isShowHandler">组合规则</el-button>
        <el-button v-if="!checkStatus || crudLCStatus=='Editing'" size="small" @click="isShowHandler">组合规则</el-button>
      <!--        枚举注入-->
      <el-button size="small" @click="enmuVisHandle">枚举注入</el-button>
      <el-button v-if="!checkStatus || crudLCStatus=='Editing'" size="small" @click="enmuVisHandle">枚举注入</el-button>
      <!--    级联属性-->
      <el-button size="small" @click="CascadeHandle">级联属性</el-button>
      <el-button v-if="!checkStatus|| crudLCStatus=='Editing'" size="small" @click="CascadeHandle">级联属性</el-button>
      <!--    预览排序-->
        <el-button size="small" @click="orderHandle" icon="el-icon-arrow-down">预览排序</el-button>
      </el-button-group>
      <el-button-group>
      <!--    保存-->
      <el-button size="small" @click="addsHandler" icon="el-icon-check">保存</el-button>
      <el-button v-if="!checkStatus|| crudLCStatus=='Editing'" size="small" @click="addsHandler" icon="el-icon-check">保存</el-button>
      <!--    删除-->
      <el-button size="small" @click="CrudRemove" icon="el-icon-delete">删除</el-button>
      <el-button v-if="!checkStatus || crudLCStatus=='Editing'" size="small" @click="CrudRemove" icon="el-icon-delete">删除</el-button>
      <!--    重置-->
      <el-button size="small" @click="reset" icon="el-icon-refresh-right">重置</el-button>
      <!--    同步到其他模板-->
      <el-button size="small"@click="syncHandle" icon="el-icon-share">同步到其他模板</el-button>
      </el-button-group>
      <!--    编码申请预览-->
      <el-button size="small" @click="applicationHandle" style="">编码申请预览</el-button>
      <!--        验证规则-->
@@ -72,11 +72,6 @@
          <el-table :data="tableData" style="width: 100%" @cell-click="handleCellClick"
                    @selection-change="handleSelectionChange">
            <!-- 渲染表格列及传参 -->
            <el-table-column label="序号" type="index"></el-table-column>
            <el-table-column
              type="selection"
              width="55">
            </el-table-column>
            <el-table-column label="选项值" prop="key">
              <template slot-scope="{ row }">
                <!-- 编辑和展示逻辑 -->
@@ -234,15 +229,18 @@
          <el-button size="small" type="primary" @click="addVisible=false">取消</el-button>
        </div>
      </el-dialog>
      <!--      参照配置-->
        <refer-config-form-dialog
          ref="referConfigFormDialog"
          @echoReferConfig="echoReferConfig"
        ></refer-config-form-dialog>
        <refer-config-dialog
          :display="referConfigVisble"
          @setReferConfigValue="setReferConfigValue"
          :referConfigOption="referConfigOption"
        ></refer-config-dialog>
    </div>
    <el-table :data="ProData"
              style="width: 100%"
              height="280"
              height="400"
              @cell-click="handleCellClicks"
              @select="selectHandle"
              @selection-change="selectionChange"
@@ -316,6 +314,14 @@
      type: String,
      default: ''
    },
    checkStatus:{
      type: Boolean,
      default: false
    },
    crudLCStatus: {
      type: String,
      default: 'Editing'
    },
    crudArray: {
      type: Array,
    },
@@ -352,6 +358,11 @@
  },
  data() {
    return {
      referConfigText:"",
      referConfigVisble:false,
      referConfigOption:{
        referConfig:'',
      },
      screenWidth: document.documentElement.clientWidth, // 屏幕宽度
      //当前单元格
      CurrentCell:'',
@@ -374,6 +385,7 @@
      editingRows: null,
      editShows:"",
      attrFlag: false,
      referObject:{},
      //编码申请预览option
      applicationoption: {
        column: []
@@ -1327,7 +1339,8 @@
      //时间格式下拉框
      codeDataFlag:false,
    //  组合规单元格编辑回填
      componentRuleText:""
      componentRuleText:"",
    }
  },
  computed:{
@@ -1347,17 +1360,6 @@
    }
  },
  mounted() {
    window.addEventListener(
      'resize',
      () => {
        if(Math.abs(this.screenWidth - document.body.clientWidth) > 20) {
          this.$nextTick(() => {
            this.$refs.AddOriginPlace.refreshTable();
          })
        }
        this.screenWidth = document.body.clientWidth;
      }
    )
  },
  created() {
    this.option.column.forEach((item,index) => {
@@ -1391,6 +1393,7 @@
    //参照配置子组件
    echoReferConfig(val){
      console.log('val--',val)
      this.referObject=val
      this.$set(this.CurrentCell,'referConfig',JSON.stringify(val))
    },
@@ -1457,7 +1460,7 @@
          citem.oid = ''
          this.busineAddList=Object.assign(citem, {
            orderNum: ++ordernum,
            attributedatatype: citem.attrDataType,
            attributeDataType: citem.attrDataType,
            attributeDataTypeText: this.vciFieldTypeMap[citem.attrDataType],
            controlLength: citem.attributeLength,
            valueArea: citem.range,
@@ -1473,7 +1476,8 @@
            sortAttrFlag: 'false',
            queryAttrFlag: 'true',
            seniorQueryAttrFlag: 'true',
            attrTableWidth: 120
            attrTableWidth: 120,
            ts:""
          })
          this.ProData.push(JSON.parse(JSON.stringify(this.busineAddList)))
        }
@@ -1483,7 +1487,8 @@
    },
    //业务类型选择
    businessSelect(selection, row) {
      this.busineSelectList = selection
      this.busineSelectList = selection;
      console.log(selection)
    },
    // 从业务类型中选择数据弹窗
    busineHandle() {
@@ -1545,7 +1550,7 @@
      console.log(row)
    },
    //表格选择
    selectionChange(list,) {
    selectionChange(list) {
      this.attrSelectList = list;
      console.log(list)
    },
@@ -1563,18 +1568,30 @@
        this.rowOid = row.oid;
      this.CurrentCell=row;
      if(column.property == 'referConfig' ){
        this.$refs.referConfigFormDialog.isShowReferConfigForm = true;
        this.$refs.referConfigFormDialog.onloadAttrData();
        this.referConfigVisble= true;
        this.referConfigOption = {
          referConfig: this.referConfigText || '',
        }
        if(this.CurrentCell.referConfig == ''){
          this.referConfigOption = {
            referConfig:'',
          }
        }
        console.log('--',this.referConfigOption)
        // this.$refs.referConfigFormDialog.onloadAttrData();
      }else if(column.property == 'classifyInvokeLevelName'){
        this.injectVisible=true;
      }else if(column.property == 'componentRule'){
        if(this.CurrentCell){
          this.CurrentCell.componentRule=this.componentRuleText;
        }
        this.isShowformulaEdit = true;
      }else if(column.property == 'enumString'){
        this.enumVisible=true;
        if(this.attrSelectList[0].enumString != ""){
          this.tableData=JSON.parse(this.attrSelectList[0].enumString)
          return
        }
      }else if(column.property == 'parentCode'){
        gridCodeClassifyTemplateAttr({
          'conditionMap[classifyTemplateOid]': this.Formlist[0].oid,
@@ -1593,7 +1610,6 @@
    },
    saveRows() {
      this.editingRows = null;
      console.log('1321')
    },
    // 枚举注入添加一行空数据
    addRow() {
@@ -1619,6 +1635,11 @@
        this.$message.warning('请选择一条模板属性')
      } else if (this.attrSelectList.length === 1) {
        this.enumVisible = true;
        if(this.attrSelectList[0].enumString != ""){
          this.tableData=JSON.parse(this.attrSelectList[0].enumString)
          return
        }
      }
    },
    enumBeforeClose(done){
@@ -1635,15 +1656,26 @@
    },
    //枚举注入保存
    enumAddHandle() {
      if (this.enumRow.length < 1) {
        this.$message.warning('请至少选择一条数据')
      } else {
        if(this.CurrentCell){
          this.$set(this.CurrentCell, 'enumString', JSON.stringify(this.enumRow));
      let hasError = false; // 添加一个变量
      this.tableData.forEach((item, index) => {
        if (item.key === '') {
          this.$message.warning(`第${index + 1}行的选项值不能为空`);
          hasError = true;
          return;
        } else if (item.value === '') {
          this.$message.warning(`第${index + 1}行的选项中文标签不能为空`);
          hasError = true;
          return;
        }
      });
        // 保存执行逻辑
      if (!hasError) {
        if (this.CurrentCell) {
          this.$set(this.CurrentCell, 'enumString', JSON.stringify(this.tableData));
          this.enumVisible = false;
        }else {
          this.$set(this.attrSelectList[0], 'enumString', JSON.stringify(this.enumRow));
          this.tableData=[]
        } else {
          this.$set(this.attrSelectList[0], 'enumString', JSON.stringify(this.tableData));
          this.tableData=[];
          this.enumVisible = false;
        }
      }
@@ -1713,18 +1745,20 @@
      if(this.CurrentCell){
        this.$set(this.CurrentCell, "classifyInvokeLevelName", data);
        this.$set(this.CurrentCell, "classifyInvokeLevel", JSON.stringify(this.injectOption));
        this.injectHandleReset()
      }else {
        this.$set(this.attrSelectList[0], 'classifyInvokeLevelName', data);
        this.$set(this.attrSelectList[0], 'classifyInvokeLevel', JSON.stringify(this.injectOption));
        this.injectHandleReset()
      }
      this.injectVisible = false
    },
    //分类注入清空
    injectHandleReset() {
      this.injectOption.type = "";
      this.injectOption.set = "";
      this.injectOption.change = "";
      this.injectOption.injectNum = "";
      this.injectOption.type = "分类名称";
      this.injectOption.set = "最小层";
      this.injectOption.change = "是";
      this.injectOption.injectNum = "0";
    },
    // 分类注入取消
    injectRemove() {
@@ -1744,7 +1778,12 @@
    },
    //表格重置
    reset() {
      this.CrudRend()
      // this.CrudRend(
      this.referConfigVisble=true;
      this.referConfigOption = {
        referConfig: 'confing',
      }
      console.log(this.referConfigOption)
    },
    //同步到其他模板
    syncHandle() {
@@ -1790,11 +1829,20 @@
    //组合规则确定
    updataFormlaContent(val) {
      if(this.CurrentCell){
        this.$set(this.CurrentCell, 'componentRule', JSON.stringify(val))
        this.$set(this.CurrentCell, 'componentRule', val.replace(/"/g, ''))
      }else {
        this.$set(this.attrRow, 'componentRule', JSON.stringify(val))
        this.$set(this.attrRow, 'componentRule', val.replace(/"/g, ''))
      }
    },
    setReferConfigValue(content){
      let submitFormJson = JSON.stringify(content);
      this.referConfigText=submitFormJson
      if(this.CurrentCell){
        this.$set(this.CurrentCell, 'referConfig', JSON.stringify(content))
      }else {
        this.$set(this.attrRow, 'referConfig', JSON.stringify(content))
      }
    },
    // 排序
    sortChange(val) {
@@ -1815,7 +1863,9 @@
</script>
<style scoped lang="scss" >
/deep/ .el-button {
  margin: 0 10px 10px 0;
.app {
   /deep/ .el-button {
   margin: 0 10px 10px 0;
   }
}
</style>