田源
2024-01-05 1da8ba361d446d08ef10186e349a6ac72de6db26
Source/UBCS-WEB/src/views/modeling/original.vue
@@ -1,23 +1,23 @@
<template>
  <template>
  <el-container>
    <el-main>
      <basic-container>
        <avue-crud v-model="form" ref="crud" :option="option" :data="data" @on-load="onLoad" :page.sync="page"
          @refresh-change="refreshChange" @row-click="rowClick">
        <avue-crud v-model="form" ref="crud" :option="option" :data="data" @on-load="onLoad" :page.sync="page" :permission="permissionList"
          @refresh-change="refreshChange" @row-click="rowClick" style="height: calc(100vh - 148px)">
          <template slot="radio" slot-scope="{row}">
            <el-radio v-model="selectRow" :label="row.$index">&nbsp;
            </el-radio>
          </template>
          <template slot="menu" slot-scope="{row,index}">
            <el-button icon="el-icon-edit" size="small" type="text" @click="updateSave(row,index)">编辑</el-button>
            <el-button icon="el-icon-delete" size="small" type="text" @click="deleteSave(row,index)">删除</el-button>
            <el-button icon="el-icon-edit" size="small" type="text" @click="updateSave(row,index)" v-if="permissionList.editBtn">编辑</el-button>
            <el-button icon="el-icon-delete" size="small" type="text" @click="deleteSave(row,index)" v-if="permissionList.delBtn">删除</el-button>
          </template>
          <template slot="menuLeft">
            <el-button size="small" type="primary" icon="el-icon-plus" @click="addSave">新&nbsp;&nbsp;增
            <template slot="menuLeft">
            <el-button size="small" type="primary" icon="el-icon-plus" @click="addSave" v-if="permissionList.addBtn">新&nbsp;&nbsp;增
            </el-button>
            <el-button size="small" plain type="primary" icon="el-icon-zoom-in" @click="applyRangeOpen">查看使用范围
            <el-button size="small" plain type="primary" icon="el-icon-zoom-in" @click="applyRangeOpen" v-if="permissionList.apply">查看使用范围
            </el-button>
            <el-input placeholder="按属性英文名称查询" v-model="searchId" clearable prefix-icon="el-icon-search" class="attrSearch"
            <el-input placeholder="按属性编号查询" v-model="searchId" clearable prefix-icon="el-icon-search" class="attrSearch"
              size="small" @change="doSearch" type="text"></el-input>
            <el-button size="small" plain type="primary" icon="el-icon-search" @click="doSearch">&nbsp;搜索</el-button>
          </template>
@@ -35,7 +35,8 @@
    </el-main>
    <el-aside>
      <basic-container class="itemForm">
        <el-descriptions class="margin-top" :column="1" size="medium" border title="属性项">
      <div style="height: 44vh">
        <el-descriptions class="margin-top" :column="1" size="medium" border title="属性项" >
          <el-descriptions-item>
            <template slot="label">
              属性编号
@@ -54,12 +55,12 @@
            </template>
            {{ itemForm.itemData.typeValue }}
          </el-descriptions-item>
          <el-descriptions-item>
            <template slot="label">
              标签
            </template>
            {{ itemForm.itemData.hashtag }}
          </el-descriptions-item>
          <!--          <el-descriptions-item>
                      <template slot="label">
                        标签
                      </template>
                      {{ itemForm.itemData.hashtag }}
                    </el-descriptions-item>-->
          <el-descriptions-item>
            <template slot="label">
              默认值
@@ -70,7 +71,7 @@
            <template slot="label">
              允许为空
            </template>
            {{ itemForm.itemData.nullable }}
            {{ 'true' == itemForm.itemData.nullable ? '是' : '否'}}
          </el-descriptions-item>
          <el-descriptions-item>
            <template slot="label">
@@ -85,51 +86,53 @@
            {{ itemForm.itemData.description }}
          </el-descriptions-item>
        </el-descriptions>
        <div style="height:15px"></div>
        <el-descriptions class="margin-top" :column="1" size="medium" border title="属性配置"></el-descriptions>
        <el-tabs v-model="itemForm.activeName" @tab-click="handleClick" stretch="true" style="height:235px">
          <el-tab-pane label="参照" name="referTab">
            <el-descriptions class="margin-top" :column="1" size="medium" border>
              <el-descriptions-item>
                <template slot="label">
                  使用参照
                </template>
                {{ itemForm.itemData.referTypeValue ? '是' : '否' }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  参照类型
                </template>
                {{ itemForm.itemData.referTypeValue }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  参照名称
                </template>
                {{ itemForm.itemData.referToName }}
              </el-descriptions-item>
            </el-descriptions>
          </el-tab-pane>
          <el-tab-pane label="枚举" name="enumTab">
            <el-descriptions class="margin-top" :column="1" :size="small" border>
              <el-descriptions-item>
                <template slot="label">
                  使用枚举
                </template>
                {{ itemForm.itemData.usingDict ? '是' : '否' }}
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label">
                  枚举类型
                </template>
                {{ itemForm.itemData.dictCode }}
              </el-descriptions-item>
            </el-descriptions>
          </el-tab-pane>
        </el-tabs>
      </div>
        <div style="height: 40vh">
          <el-descriptions class="margin-top" :column="1" size="medium" border title="属性配置"></el-descriptions>
          <el-tabs v-model="itemForm.activeName" @tab-click="handleClick" stretch="true" style="height:235px">
            <el-tab-pane label="参照" name="referTab">
              <el-descriptions class="margin-top" :column="1" size="medium" border>
                <el-descriptions-item>
                  <template slot="label">
                    使用参照
                  </template>
                  {{ itemForm.itemData.referTypeValue ? '是' : '否' }}
                </el-descriptions-item>
                <el-descriptions-item>
                  <template slot="label">
                    参照类型
                  </template>
                  {{ itemForm.itemData.referTypeValue }}
                </el-descriptions-item>
                <el-descriptions-item>
                  <template slot="label">
                    参照名称
                  </template>
                  {{ itemForm.itemData.referToName }}
                </el-descriptions-item>
              </el-descriptions>
            </el-tab-pane>
            <el-tab-pane label="枚举" name="enumTab">
              <el-descriptions class="margin-top" :column="1" :size="small" border>
                <el-descriptions-item>
                  <template slot="label">
                    使用枚举
                  </template>
                  {{ itemForm.itemData.usingDict ? '是' : '否' }}
                </el-descriptions-item>
                <el-descriptions-item>
                  <template slot="label">
                    枚举类型
                  </template>
                  {{ itemForm.itemData.dictValue }}
                </el-descriptions-item>
              </el-descriptions>
            </el-tab-pane>
          </el-tabs>
        </div>
      </basic-container>
    </el-aside>
    <originalAdd ref="originalAdd" @refreshTable="refreshChange"></originalAdd>
    <originalAdd ref="originalAdd" @refreshTable="refreshChange" :attribute="editAttribute"></originalAdd>
  </el-container>
</template>
@@ -141,6 +144,8 @@
  update, getPage, getApplyRange
} from "@/api/omd/OmdAttribute";
import Versionpackage from "./Versionpackage.vue";
import {getDictionary} from "@/api/omd/enum";
import {mapGetters} from "vuex";
export default {
  name: "original",
@@ -157,10 +162,11 @@
      attribute: {
        nullable: true
      },
      editAttibute: {},
      editAttribute: {},
      applyRangeData: [],
      option: {
        height: "550px",
        height:'auto',
        calcHeight:20,
        headerAlign: "center",
        border: true,
        index: true,
@@ -192,12 +198,12 @@
          prop: "name",
          align: "left",
          display: false
        }, {
        },/* {
          label: "标签",
          prop: "hashtag",
          // hide: true,
          display: false
        }, {
        },*/ {
          label: "是否使用枚举",
          prop: "usingDict",
          type: "switch",
@@ -250,10 +256,23 @@
      itemForm: {
        itemData: {},
        activeName: "referTab",
        enumInitFlag:false,
        referInitFlag: false,
        form: {}
      },
      searchId: '',
    };
  },
  computed:{
    ...mapGetters(["permission"]),
    permissionList(){
      return{
        addBtn:this.vaildData(this.permission.modeling_original.original_add,false),
        apply:this.vaildData(this.permission.modeling_original.original_applyopen,false),
        delBtn:this.vaildData(this.permission.modeling_original.original_delete,false),
        editBtn:this.vaildData(this.permission.modeling_original.original_edit,false),
      }
    },
  },
  created() {
  },
@@ -263,23 +282,36 @@
    },
    addSave() {
      this.$refs.originalAdd.showSubmitDialog = true;
      this.$refs.originalAdd.attribute = {};
      const newAttr = {};
      newAttr.nullable = true;
      this.$refs.originalAdd.attribute = newAttr;
    },
    updateSave(row,index) {
      this.selectRow = index;
      var json = JSON.stringify(row);
      this.editAttibute = JSON.parse(json);
      this.editAttibute.nullable = row.nullable == 'true' ? true : false;
      this.$refs.originalAdd.attribute = this.editAttibute;
      this.editAttribute = JSON.parse(json);
      this.editAttribute.nullable = row.nullable == 'true' ? true : false;
      this.$refs.originalAdd.attribute = this.editAttribute;
      this.$refs.originalAdd.showSubmitDialog = true;
      this.refreshChange()
      this.checkUsingReferDict(row);
      this.$refs.originalAdd.activeName = this.itemForm.activeName;
      this.$refs.originalAdd.enumInitFlag = this.itemForm.enumInitFlag;
      this.$refs.originalAdd.referInitFlag = this.itemForm.referInitFlag;
      // this.refreshChange()
    },
    deleteSave(row,index) {
      console.log(row);
      remove(row.oid).then(res => {
        this.$message.success("删除成功");
      this.$confirm("删除元数据将无法被恢复, 是否继续?", "提示", {
        iconClass: 'el-icon-question',
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        showClose: true,
        type: "warning"
      }).then(() => {
        remove(row.oid).then(res => {
          this.$message.success("删除成功");
          this.refreshChange();
        });
      });
      this.refreshChange();
    },
    onLoad(page, params = {}) {
      this.loading = true;
@@ -296,6 +328,27 @@
      this.itemForm.itemData = row;
      this.selectRow = row.$index;
      this.attribute = row;
      this.checkUsingReferDict(row);
    },
    checkUsingReferDict(row){
      if (row.referToId !== null && row.referToId !== ""){
        this.itemForm.activeName = 'referTab';
        this.itemForm.referInitFlag = true;
        this.itemForm.enumInitFlag = false;
      }else if (row.usingDict === 'true'){
        this.itemForm.activeName = 'enumTab';
        this.itemForm.referInitFlag = false;
        this.itemForm.enumInitFlag = true;
        getDictionary({code: row.dictCode}).then(res => {
          this.editAttribute.dictValue = res.data.data[0].label;
          this.itemForm.itemData.dictValue = this.editAttribute.dictValue;
          this.$refs.originalAdd.dictEnums = res.data.data;
        })
      }else {
        this.itemForm.activeName = 'referTab';
        this.itemForm.referInitFlag = true;
        this.itemForm.enumInitFlag = false;
      }
    },
    selectBtmType() {
      this.referType.display = true;