田源
2024-11-01 8c107924ebc49105fa81f13f972f1710b42c1503
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/enumType/index.vue
@@ -16,7 +16,7 @@
        >
          <template slot="menuLeft" slot-scope="scope">
            <el-button icon="el-icon-plus" size="small" type="primary" @click="rowSaveHandlerClick">创建</el-button>
            <el-button icon="el-icon-plus" plain size="small" type="primary" @click="rowSaveHandlerClick">创建</el-button>
            <el-button icon="el-icon-delete" plain size="small" type="danger" @click="allDelHandler">删除</el-button>
            <el-button icon="el-icon-view" plain size="small" type="primary" @click="chekView">查看使用范围</el-button>
            <el-button icon="el-icon-download" plain size="small" type="primary" @click="downloadTemplateHandler">下载导入模板
@@ -41,13 +41,13 @@
          :visible.sync="dialogVisible"
          append-to-body="true"
          class="avue-dialog"
          width="70%"
          width="1000px"
          @close="dialogClose"
        >
          <el-form ref="form" :model="form" :rules="rules" label-width="80px">
          <el-form ref="form" :model="form" :rules="rules" size="small" label-width="100px">
            <el-row>
              <el-col :span="12">
                <el-form-item label="名称:" prop="id">
                <el-form-item label="枚举名称:" prop="id">
                  <el-input v-model="form.id"></el-input>
                </el-form-item>
              </el-col>
@@ -58,7 +58,7 @@
              </el-col>
              <el-col :span="12">
                <el-form-item label="类型:">
                  <el-select v-model="form.enumValueDataType" placeholder="请选择类型">
                  <el-select v-model="form.enumValueDataType" placeholder="请选择类型" style="width: 376px;">
                    <el-option label="String" value="String"></el-option>
                    <el-option label="Integer" value="Integer"></el-option>
                  </el-select>
@@ -66,7 +66,7 @@
              </el-col>
              <el-col :span="12">
                <el-form-item label="长度:">
                  <el-input-number v-model="form.length" :max="999" :min="1" label="描述文字"></el-input-number>
                  <el-input-number v-model="form.length" :max="999" :min="1" label="描述文字" style="width: 376px;"></el-input-number>
                </el-form-item>
              </el-col>
              <el-col :span="24">
@@ -82,11 +82,10 @@
              </el-col>
            </el-row>
          </el-form>
          <span slot="footer" class="dialog-footer">
        <el-button type="primary" @click="rowSaveHandler">确 定</el-button>
        <el-button @click="dialogVisible = false">取 消</el-button>
      </span>
            <el-button type="primary" @click="rowSaveHandler">确 定</el-button>
            <el-button @click="dialogVisible = false">取 消</el-button>
          </span>
        </el-dialog>
        <!-- 查看使用范围    -->
@@ -116,9 +115,9 @@
      </basic-container>
    </el-main>
    <el-aside width="30%">
    <el-aside width="35%">
      <basic-container>
        <el-descriptions :column="1" border size="medium" style="margin-bottom: 20px" title="枚举信息">
        <el-descriptions :column="1" border size="medium" style="margin-bottom: 20px" title="枚举信息" :labelStyle="{width:'150px'}">
          <el-descriptions-item>
            <template slot="label">
              名称
@@ -183,6 +182,8 @@
        refreshBtn: false,
        selection: false,
        index: false,
        header:false,
        calcHeight: -40,
        column: [
          {
            label: '枚举项名称',
@@ -243,13 +244,16 @@
      dialogData: [],
      dialogOption: {
        ...basicOption,
        calcHeight: 50,
        refreshBtn: false,
        selection: false,
        dialogWidth:500,
        column: [
          {
            label: '枚举项名',
            prop: 'name',
            sortable: true,
            span:24,
            rules: [
              {
                required: true,
@@ -262,6 +266,7 @@
            label: '枚举值',
            prop: 'value',
            sortable: true,
            span:24,
            rules: [
              {
                required: true,
@@ -273,13 +278,13 @@
          {
            label: '描述',
            prop: 'description',
            sortable: true,
            span:24
          },
        ]
      },
      rules: {
        id: [
          {required: true, message: '请输入枚举项名', trigger: 'blur'},
          {required: true, message: '请输入枚举名称', trigger: 'blur'},
          {validator: this.validateEnglishOnly, trigger: 'blur'}
        ],
      },
@@ -294,11 +299,12 @@
      tableData: [],
      option: {
        ...basicOption,
        calcHeight: -60,
        calcHeight: -40,
        searchMenuSpan: 8,
        addBtn: false,
        editBtn: false,
        delBtn: false,
        menuWidth:160,
        column: [
          {
            label: '枚举名称',
@@ -315,6 +321,7 @@
            label: '返回类型',
            prop: 'enumValueDataTypeText',
            sortable: true,
            width:130
          }
        ]
      },
@@ -376,8 +383,12 @@
        row,
        this.$refs.userCrud,
        this.lastIndex,
        (newIndex) => { this.lastIndex = newIndex; },
        () => { this.selectList = []; }
        (newIndex) => {
          this.lastIndex = newIndex;
        },
        () => {
          this.selectList = [];
        }
      );
    },
@@ -472,61 +483,67 @@
    // 对话框枚举保存
    rowSaveHandler() {
      const lengthStatus = this.dialogData.some(item => item.value.length > this.form.length)
      if (lengthStatus) {
        this.$message.error('请检查枚举值是否超过最大长度!')
        return;
      }
      if (this.form.enumValueDataType === "Integer") {
        // 判断是否包含非数字字符
        const integerStatus = this.dialogData.some(item => {
          if (!/^\-?\d+$/.test(item.value)) {
            return true;
      const lengthStatus = this.dialogData.some(item => item.value.length > this.form.length);
      this.$refs.form.validate((valid) => {
        if (valid) {
          if (lengthStatus) {
            this.$message.error('请检查枚举值是否超过最大长度!')
            return;
          }
        })
        // 判断是否是integer格式
        const integerNumStatus = this.dialogData.some(item => {
          let numValue = parseInt(item.value);
          if (isNaN(numValue) || !Number.isInteger(numValue)) {
            return true;
          if (this.form.enumValueDataType === "Integer") {
            // 判断是否包含非数字字符
            const integerStatus = this.dialogData.some(item => {
              if (!/^\-?\d+$/.test(item.value)) {
                return true;
              }
            })
            // 判断是否是integer格式
            const integerNumStatus = this.dialogData.some(item => {
              let numValue = parseInt(item.value);
              if (isNaN(numValue) || !Number.isInteger(numValue)) {
                return true;
              }
            })
            if (integerStatus || integerNumStatus) {
              this.$message.error('枚举值必须是Integer类型');
              return;
            }
          }
        })
        if (integerStatus || integerNumStatus) {
          this.$message.error('枚举值必须是Integer类型');
          return;
          if (this.dialogType === 'add') {
            let params = {
              ...this.form,
              items: this.dialogData
            }
            addEnumType(params).then(res => {
              if (res.data.code === 200) {
                this.$message.success(res.data.obj);
                this.dialogVisible = false;
                this.getTableList();
              }
            })
          } else if (this.dialogType === 'edit') {
            let params = {
              ...this.form,
              items: this.dialogData,
              oid: this.editRow.oid,
              ts: this.editRow.ts
            }
            updateEnumType(params).then(res => {
              if (res.data.code === 200) {
                this.$message.success(res.data.obj);
                this.dialogVisible = false;
                this.getTableList();
              }
            })
          }
        } else {
          return false;
        }
      }
      if (this.dialogType === 'add') {
        let params = {
          ...this.form,
          items: this.dialogData
        }
        addEnumType(params).then(res => {
          if (res.data.code === 200) {
            this.$message.success(res.data.obj);
            this.dialogVisible = false;
            this.getTableList();
          }
        })
      } else if (this.dialogType === 'edit') {
        let params = {
          ...this.form,
          items: this.dialogData,
          oid: this.editRow.oid,
          ts: this.editRow.ts
        }
        updateEnumType(params).then(res => {
          if (res.data.code === 200) {
            this.$message.success(res.data.obj);
            this.dialogVisible = false;
            this.getTableList();
          }
        })
      }
      });
    },
    // 枚举项新增