xiejun
2023-09-18 7db3ee6e84714a868e0b57a61a033d050b1a61fc
Source/UBCS-WEB/src/views/modeling/originalAdd.vue
@@ -6,7 +6,7 @@
            <el-form ref="form" :model="attribute" show-message="true" inline size="medium" label-suffix=":"
                class="attributeForm" :rules="rules" @resetFields="resetAttributeForm" status-icon="true">
                <el-form-item label="属性编号" label-width="100px" prop="id">
                    <el-input v-model="attribute.id" maxlength="15" show-word-limit type="text"></el-input>
                    <el-input v-model="attribute.id" maxlength="30" show-word-limit type="text"></el-input>
                </el-form-item>
                <el-form-item label="属性名称" label-width="100px" prop="name">
                    <el-input v-model="attribute.name"></el-input>
@@ -17,9 +17,9 @@
                        </el-option>
                    </el-select>
                </el-form-item>
                <el-form-item label="标签" label-width="100px">
<!--                <el-form-item label="标签" label-width="100px">
                    <el-input v-model="attribute.hashtag"></el-input>
                </el-form-item>
                </el-form-item>-->
                <el-form-item label="默认值" label-width="100px">
                    <el-input v-model="attribute.defaultValue"></el-input>
                </el-form-item>
@@ -37,17 +37,16 @@
                <el-form-item label="描述" label-width="100px">
                    <el-input v-model="attribute.description" type="text"></el-input>
                </el-form-item>
                <el-tabs v-model="activeName" @tab-click="handleClick" stretch="true">
                    <el-tab-pane label="参照" name="referTab">
                        <el-form-item label="参照类型" label-width="100px">
                        <el-form-item label="参照类型" label-width="100px" class="referTypeForm">
                            <el-select v-model="attribute.referTypeKey" @change="referTypeSelectChange">
                                <el-option v-for="item in btmRefer.referTypeList" :key="item.value" :label="item.label"
                                    :value="item.value">
                                </el-option>
                            </el-select>
                        </el-form-item>
                        <el-form-item label="参照名称" label-width="100px">
                        <el-form-item label="参照名称" label-width="100px" class="referNameForm">
                            <el-input v-model="attribute.referToName" @focus="openReferConfig" clearable="true"
                                :disabled="referToFlag" @clear="clearReferTo">
                                <i slot="suffix" class="el-input__icon el-icon-search"></i>
@@ -61,14 +60,16 @@
                            </el-input>
                        </el-form-item>
                        <el-form-item label="枚举项" label-width="100px">
                            <el-tag v-for="eItem in dictEnums" :key="eItem.itemName" type="info">
                              {{eItem.itemName}}
                            </el-tag>
                        </el-form-item>
                    </el-tab-pane>
                </el-tabs>
            </el-form>
            <div slot="footer" class="dialog-footer">
                <el-button type="primary" @click="submitAttribute">确定</el-button>
                <el-button @click="cancleSubmit">取消</el-button>
                <el-button @click="cancelSubmit">取消</el-button>
            </div>
            <!-- 选择参照时的弹窗 -->
            <el-dialog title="参照列表" :visible.sync="btmRefer.show" append-to-body @close="closeReferDialog" width="80%"
@@ -104,13 +105,26 @@
                </el-container>
                <div slot="footer" class="dialog-footer">
                    <el-button type="primary" @click="confirmBtm" size="small">确定</el-button>
                    <el-button @click="cancleBtm" size="small">取消</el-button>
                    <el-button @click="cancelBtm" size="small">取消</el-button>
                </div>
            </el-dialog>
            <!-- 选择枚举时的弹窗 -->
            <el-dialog title="枚举列表" :visible.sync="enumRefer.show" append-to-body @close="closeEnumDialog" width="70%"
                style="height: 115vh;">
                <avue-crud ref="eunmTable" :option="enumRefer.option" :data="enumRefer.data" class="enumTable"
                <div>
                  <el-form :inline="true" :model="form" class="demo-form-inline" size="small">
                    <el-form-item label="枚举代号">
                      <el-input v-model="form.name" placeholder="枚举代号"></el-input>
                    </el-form-item>
                    <el-form-item label="枚举名称">
                        <el-input v-model="form.label" placeholder="枚举名称"></el-input>
                    </el-form-item>
                    <el-form-item>
                      <el-button type="primary" @click="onSubmit">查询</el-button>
                    </el-form-item>
                  </el-form>
                </div>
                <avue-crud ref="eunmTable" :option="enumRefer.option"  @on-load="enumOnLoad" :data="enumRefer.data" class="enumTable"
                    @row-click="enumReferClick" :page.sync="enumRefer.enumPage">
                    <template slot="radio" slot-scope="{row}">
                        <el-radio v-model="enumRefer.selectRow" :label="row.$index">&nbsp;
@@ -119,7 +133,7 @@
                </avue-crud>
                <div slot="footer" class="dialog-footer">
                    <el-button type="primary" @click="confirmEnum" size="small">确定</el-button>
                    <el-button @click="cancleEnum" size="small">取消</el-button>
                    <el-button @click="cancelEnum" size="small">取消</el-button>
                </div>
            </el-dialog>
        </el-dialog>
@@ -140,6 +154,10 @@
    },
    data() {
        return {
            form:{
              name:'',
              label:''
            },
            showSubmitDialog: false,
            // 默认的页签
            activeName: 'referTab',
@@ -152,7 +170,7 @@
                id: [
                    { required: true, message: '请输入属性编号', trigger: 'blur' },
                    { pattern: /^[A-Za-z]+$/, message: '属性编号只能为英文', trigger: 'blur' },
                    { min: 2, max: 15, message: '长度在2到15个字符', trigger: 'blur' }
                    { min: 2, max: 30, message: '长度在2到30个字符', trigger: 'blur' }
                ],
                name: [
                    { required: true, message: '请输入属性名称', trigger: 'blur' }
@@ -223,12 +241,13 @@
                    addBtn: false,
                    refreshBtn: false,
                    columnBtn: false,
                    selection: true,
                    // selection: true,
                    menu: false,
                    border: true,
                    reserveSelection: true,
                    searchMenuSpan: 32,
                    searchShowBtn: false,
                    // searchShowBtn: false,
                    // search:true,
                    highlightCurrentRow: true,
                    column: [{
                        label: '',
@@ -240,13 +259,13 @@
                        prop: 'name',
                        align: 'center',
                        searchSpan: 8,
                        search: true,
                        // search: true,
                    }, {
                        label: '枚举名称',
                        prop: 'label',
                        align: 'center',
                        searchSpan: 8,
                        search: true,
                        // search: true,
                    }]
                },
                // 枚举参照表格数据
@@ -267,7 +286,12 @@
                        value: 'oid',
                    }
                }
            }
            },
            dictEnums: [],
            enumEditFlag: false,
            enumInitFlag: false,
            referInitFlag: false,
            referEditFlag: false,
        }
    },
    created() {
@@ -275,6 +299,28 @@
        this.initAttributeReferTypeList();
    },
    methods: {
      onSubmit() {
        if (this.form.name || this.form.label) {
          const params = {};
          if (this.form.name) {
            params.name = this.form.name;
          }
          if (this.form.label) {
            params.label = this.form.label;
          }
          getParentList(this.enumRefer.enumPage.currentPage, this.enumRefer.enumPage.pageSize, params)
            .then((res) => {
              this.enumRefer.enumPage.total = res.data.data.total;
              this.enumRefer.data = res.data.data.records;
            });
        }
      },
        enumOnLoad(){
          getParentList(this.enumRefer.enumPage.currentPage, this.enumRefer.enumPage.pageSize).then(res => {
            this.enumRefer.enumPage.total = res.data.data.total;
            this.enumRefer.data = res.data.data.records;
          })
        },
        closeSubmitDialog() {
            this.resetAttributeForm();
            this.showSubmitDialog = false;
@@ -286,9 +332,23 @@
            };
            this.referToFlag = true;
            this.$refs.form.resetFields();
            this.dictEnums = [];
        },
        submitAttribute() {
            const that = this;
            if (that.referInitFlag && that.referEditFlag){
                this.$set(this.attribute,'dictCode','');
                this.$set(this.attribute,'dictKey','');
                this.$set(this.attribute,'dictValue','');
                this.$set(this.attribute,'usingDict','');
            }
            if (that.enumInitFlag && that.enumEditFlag){
                this.$set(this.attribute,'referTypeCode','');
                this.$set(this.attribute,'referTypeKey','');
                this.$set(this.attribute,'referTypeValue','');
                this.$set(this.attribute,'referToId','');
                this.$set(this.attribute,'referToName','');
            }
            this.$refs.form.validate(function (pass, field) {
                if (pass) {
                    add(that.attribute).then(res => {
@@ -302,21 +362,23 @@
                }
            })
        },
        cancleSubmit() {
        cancelSubmit() {
            this.closeSubmitDialog();
        },
        closeEnumDialog() {
            this.cancleEnum();
            this.cancelEnum();
        },
        closeReferDialog() {
            this.cancleBtm();
            this.cancelBtm();
        },
        confirmBtm() {
            this.attribute.referToId = this.btmRefer.selectItem.oid;
            this.attribute.referToName = this.btmRefer.selectItem.name;
            this.btmRefer.show = false;
            this.referEditFlag =  true;
            this.enumEditFlag = false;
        },
        cancleBtm() {
        cancelBtm() {
            this.btmRefer.selectItem = {};
            this.btmRefer.show = false;
            this.btmRefer.selectRow = '';
@@ -326,8 +388,13 @@
            this.attribute.dictCode = this.enumRefer.selectItem.name;
            this.attribute.dictValue = this.enumRefer.selectItem.label;
            this.enumRefer.show = false;
            getDictionary({code :this.enumRefer.selectItem.name}).then(res => {
                this.dictEnums = res.data.data;
            });
            this.referEditFlag =  false;
            this.enumEditFlag = true;
        },
        cancleEnum() {
        cancelEnum() {
            this.enumRefer.selectItem = {};
            this.enumRefer.show = false;
            this.enumRefer.selectRow = '';
@@ -345,20 +412,19 @@
                this.domain.data = res.data.data;
            })
            this.btmRefer.show = true;
        },
        // 参照类型树的点击事件
        nodeClick(data) {
            // 区分业务类型的查询和链接类型的查询
            if (this.attribute.referTypeKey == 'btmType') {
                btmPage(this.btmRefer.btmPage.currentPage, this.btmRefer.btmPage.pageSize, { domain: data.id }).then(res => {
                btmPage(this.btmRefer.btmPage.currentPage, this.btmRefer.btmPage.pageSize, { bizDomain: data.id }).then(res => {
                    this.btmRefer.data = res.data.data.records;
                    this.btmRefer.btmPage.total = res.data.data.total;
                })
            }
            if (this.attribute.referTypeKey == 'linkType') {
            }
            // if (this.attribute.referTypeKey == 'linkType') {
            //
            // }
        },
        // 枚举类型输入框获得焦点时的事件
        openEnumConfig() {
@@ -431,18 +497,16 @@
            this.btmRefer.selectItem = {};
            this.btmRefer.selectRow = '';
        },
        // handleClick(tab){
        //     // 因为只能参照和枚举二选一。所以在切换的时候把属性给清空。
        //     this.$delete(this.attribute,'referTypeCode');
        //     this.$delete(this.attribute,'referTypeKey');
        //     this.$delete(this.attribute,'referTypeValue');
        //     this.$delete(this.attribute,'referToId');
        //     this.$delete(this.attribute,'referToName');
        //     this.$delete(this.attribute,'dictCode');
        //     this.$delete(this.attribute,'dictKey');
        //     this.$delete(this.attribute,'dictValue');
        //     this.$delete(this.attribute,'usingDict');
        // }
        handleClick(tab){
            // 因为只能参照和枚举二选一。所以在切换的时候把属性给清空。
            if (tab.name === 'enumTab'){
              this.enumInitFlag = true;
              this.referInitFlag = false;
            }else {
              this.enumInitFlag = false;
              this.referInitFlag = true;
            }
        }
    }
}
</script>
@@ -462,4 +526,16 @@
.attributeForm>.el-form-item>.el-form-item__content>.el-select>.el-input>.el-input__inner {
    width: 200px;
}</style>
}
.attributeForm>.el-form-item>.el-form-item__content{
  width :190px;
}
.referTypeForm > .el-form-item__content > .el-select > .el-input>.el-input__inner {
  width: 200px;
}
.referNameForm > .el-form-item__content > .el-input > .el-input__inner {
  width: 200px;
}
</style>