田源
2024-08-15 bc90fb7e0c6c8313e7d5fcf3aba57e3a1f975c93
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue
@@ -108,7 +108,7 @@
                <template slot="label">
                  版本号规则
                </template>
                <el-tag v-if="nodeRow.revRuleName">{{ nodeRow.revRuleName }}</el-tag>
                <el-tag v-if="nodeRow.revisionRuleId">{{ nodeRow.revisionRuleId }}</el-tag>
              </el-descriptions-item>
              <el-descriptions-item v-if="nodeRow.revLevel !== '0'" :contentStyle="descriptionOption.contentStyle"
                                    :labelStyle="descriptionOption.labelStyle">
@@ -123,12 +123,12 @@
                <template slot="label">
                  版次号规则
                </template>
                <el-tag v-if="nodeRow.verRuleName"
                        :type="nodeRow.verRuleName === '0' ? 'warning' : nodeRow.revLevel === '1' ? '' : 'success'">
                <el-tag v-if="nodeRow.revisionRuleId"
                        :type="nodeRow.revisionRuleId === '0' ? 'warning' : nodeRow.revisionRuleId === '1' ? '' : 'success'">
                  {{
                    nodeRow.verRuleName === '0'
                    nodeRow.versionRule === '0'
                      ? '1.2.3...'
                      : nodeRow.revLevel === '1'
                      : nodeRow.versionRule === '1'
                      ? 'a.b.c...'
                      : '0.1.2...'
                  }}
@@ -144,7 +144,7 @@
                <template slot="label">
                  生命周期
                </template>
                <el-tag v-if="nodeRow.lifeCycle">{{ nodeRow.lifeCycle }}</el-tag>
                <el-tag v-if="nodeRow.lifeCycleId">{{ nodeRow.lifeCycleId }}</el-tag>
              </el-descriptions-item>
            </el-descriptions>
          </div>
@@ -168,17 +168,17 @@
      class="avue-dialog"
      width="75%"
      @close="addDialogClose">
      <el-form ref="form" :model="form" :rules="rules" label-width="90px">
      <el-form ref="form" :model="form" :rules="rules" label-width="95px">
        <div class="dialogForm">
          <div class="leftForm">
            <el-form-item label="类型名称:" prop="name">
            <el-form-item label="类型名称:" prop="id">
              <el-input v-model="form.id" :readOnly="title === 'edit'"></el-input>
            </el-form-item>
            <el-form-item label="标签:">
              <el-input v-model="form.name"></el-input>
            </el-form-item>
            <el-form-item label="继承自:">
              <el-input v-model="form.name" :readOnly="title === 'edit'"></el-input>
              <el-input v-model="form.fName" :readOnly="title === 'edit'"></el-input>
            </el-form-item>
            <el-form-item label="实现类:">
              <el-input v-model="form.implClass"></el-input>
@@ -188,39 +188,48 @@
            </el-form-item>
          </div>
          <div class="centerForm">
            <el-form-item label="版本规则:" label-width="100px" prop="revLevel">
            <el-form-item label="版本规则:" label-width="110px" prop="revLevel">
              <el-select v-model="form.revLevel">
                <el-option label="不可修订" value="0"></el-option>
                <el-option label="采用一级版本管理" value="1"></el-option>
                <el-option label="采用二级版本管理" value="2"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item v-if="form.revLevel !== '0'" label="版本号规则:" label-width="100px" prop="revLevel">
            <el-form-item v-if="form.revLevel !== '0'" label="版本号规则:" label-width="110px" prop="revisionRuleName">
              <div style="display: flex;gap: 5px;align-items: center">
                <el-input v-model="form.revRuleName" :readOnly="true"></el-input>
                <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success" @click="versionAddHandler">添加</el-button>
                <el-input v-model="form.revisionRuleId" :readOnly="true"></el-input>
                <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success"
                           @click="versionAddHandler">添加
                </el-button>
                <el-switch
                  v-model="form.inputRevisionFlag"
                  active-text="手工输入"
                  style="width: 300px">
                </el-switch>
              </div>
            </el-form-item>
            <el-form-item v-if="form.revLevel !== '0'" label="分隔符:" label-width="100px" prop="revLevel">
            <el-form-item v-if="form.revLevel !== '0'" label="分隔符:" label-width="110px" prop="delimiter">
              <el-select v-model="form.delimiter" clearable>
                <el-option label="." value="."></el-option>
                <el-option label="-" value="-"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item v-if="form.revLevel !== '0' && form.revLevel !== '1'" label="版次号规则:" label-width="100px"
            <el-form-item v-if="form.revLevel !== '0' && form.revLevel !== '1'" label="版次号规则:" label-width="110px"
                          prop="revLevel">
              <el-select v-model="form.verRuleName" clearable>
                <el-option label="1.2.3..." value="1.2.3..."></el-option>
                <el-option label="a.b.c..." value="a.b.c..."></el-option>
                <el-option label="0.1.2..." value="0.1.2..."></el-option>
              <el-select v-model="form.versionRule" clearable>
                <el-option label="1.2.3..." value="0"></el-option>
                <el-option label="a.b.c..." value="1"></el-option>
                <el-option label="0.1.2..." value="2"></el-option>
              </el-select>
            </el-form-item>
          </div>
          <div class="rightForm">
            <el-form-item label="生命周期:" label-width="138px" prop="revLevel">
            <el-form-item label="生命周期:" label-width="138px" prop="lifeCycleId">
              <div style="display: flex;gap: 5px;align-items: center">
                <el-input v-model="form.lifeCycle" :readOnly="true"></el-input>
                <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success">添加</el-button>
                <el-input v-model="form.lifeCycleId" :readOnly="true"></el-input>
                <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success"
                           @click="lifeAddHandler('input')">添加
                </el-button>
              </div>
            </el-form-item>
@@ -229,12 +238,12 @@
                <div style="height: 200px; width: 280px; border: 1px solid #bdbbbb;overflow-y: auto">
                  <!-- 内容 -->
                  <el-table
                    :data="bizFormData"
                    :data="dialogLifeTable"
                    :show-header="false"
                    style="width: 100%">
                    <el-table-column
                      align="center"
                      prop="name">
                      prop="id">
                    </el-table-column>
                    <el-table-column
                      fixed="right"
@@ -245,7 +254,7 @@
                          size="small"
                          style="color:#F56C6C;"
                          type="text"
                          @click.native.prevent="bizTypeDeleteRow('form',scope.$index)">
                          @click.native.prevent="dialogDeleteLifeTable(scope.$index)">
                          移除
                        </el-button>
                      </template>
@@ -253,7 +262,7 @@
                  </el-table>
                </div>
                <el-button plain size="mini" style="margin-left: 5px" type="success"
                           @click="FormItemReferChange('form')">添加
                           @click="lifeAddHandler('table')">添加
                </el-button>
              </div>
@@ -276,6 +285,8 @@
         <el-button type="primary" @click="addDialogSavaHandler">确 定</el-button>
        </span>
    </el-dialog>
    <!-- 属性池添加 -->
    <el-dialog
      v-dialogDrag
      :visible.sync="attrPollDialogVisible"
@@ -306,19 +317,128 @@
        </span>
    </el-dialog>
    <el-dialog
      v-dialogDrag
      :visible.sync="dialogVersionVisible"
      append-to-body="true"
      class="avue-dialog"
      title="版本号规则"
      width="60%"
    >
      <avue-crud
        :key="dialogVersionKey"
        ref="dialogAttrCrud"
        :data="dialogVersionData"
        :option="dialogVersionOption"
        :table-loading="dialogVersionLoading"
        @row-click="dialogVersionRowClick"
        @search-change="versionHandleSearch"
        @search-reset="versionHandleReset"
      >
      </avue-crud>
      <span slot="footer" class="dialog-footer">
         <el-button @click="dialogVersionVisible = false">取 消</el-button>
         <el-button type="primary" @click="dialogVersionAddClickHandler">确 定</el-button>
        </span>
    </el-dialog>
    <!-- 生命周期 -->
    <el-dialog
      v-dialogDrag
      :visible.sync="dialogLfeVisible"
      append-to-body="true"
      class="avue-dialog"
      title="生命周期模板"
      width="60%"
    >
      <avue-crud
        :key="dialogLifeKey"
        ref="dialogAttrCrud"
        :data="dialogLifeData"
        :option="dialogLifeOption"
        :table-loading="dialogLifeLoading"
        @row-click="dialogLifeRowClick"
        @search-change="lifeHandleSearch"
        @search-reset="lifeHandleReset"
      >
      </avue-crud>
      <span slot="footer" class="dialog-footer">
         <el-button @click="dialogLfeVisible = false">取 消</el-button>
         <el-button type="primary" @click="dialogLifeAddClickHandler">确 定</el-button>
        </span>
    </el-dialog>
  </el-container>
</template>
<script>
import basicOption from '@/util/basic-option'
import {getBizTypes} from "@/api/modeling/businessType/api"
import {getBizTypes, addLifeCycle} from "@/api/modeling/businessType/api"
import {gridAttribute} from "@/api/modeling/attributePool/api";
import func from "@/util/func";
import {getVersionRuleAllList} from "@/api/modeling/version/api";
import {gridLifeCycle} from "@/api/modeling/lifeCycle/api";
export default {
  name: "index",
  data() {
    return {
      dialogLifeDefalutData: [], // 查询重置默认数据
      lifeType: '',
      dialogLifeTable: [],
      dialogLifeSaveRow: {},
      dialogLifeKey: Math.random(),
      dialogLifeData: [],
      dialogLifeOption: {
        ...basicOption,
        addBtn: false,
        selection: false,
        refreshBtn: false,
        menu: false,
        height: 450,
        searchMenuSpan: 8,
        highlightCurrentRow: true,
        column: [
          {
            label: '生命周期模板名',
            prop: 'id',
            searchLabelWidth: 120,
            search: true
          }
        ]
      },
      dialogLifeLoading: false,
      dialogLfeVisible: false,
      dialogVersionDefalutData: [], // 查询重置默认数据
      dialogSwitchValue: false,
      dialogVersionSaveRow: {},
      dialogVersionVisible: false,
      dialogVersionKey: Math.random(),
      dialogVersionData: [],
      dialogVersionOption: {
        ...basicOption,
        addBtn: false,
        selection: false,
        refreshBtn: false,
        menu: false,
        height: 450,
        searchMenuSpan: 8,
        highlightCurrentRow: true,
        // calcHeight: 100,
        column: [
          {
            label: '版本号规则',
            prop: 'id',
            searchLabelWidth: 110,
            search: true
          }
        ]
      },
      dialogVersionLoading: false,
      dialogAttrSelectList: [],
      searchAttrParams: {},
      dialogAttrLoading: false,
@@ -331,7 +451,6 @@
      },
      dialogAttrSaveOption: {
        ...basicOption,
        calcHeight: -60,
        addBtn: false,
        menu: false,
        refreshBtn: false,
@@ -366,7 +485,18 @@
      },
      dialogAttrSaveData: [],
      attrPollDialogVisible: false,
      rules: [],
      rules: {
        id: [
          {required: true, message: '请输类型名称', trigger: 'blur'},
          {validator: this.validateEnglishOnly, trigger: 'blur'}
        ],
        revLevel: [
          {required: true, message: '请选择版本规则', trigger: 'blur'},
        ],
        lifeCycleId: [
          {required: true, message: '请选择生命周期', trigger: 'blur'},
        ]
      },
      dialogAttrData: [],
      dialogAttrOption: {
        ...basicOption,
@@ -438,7 +568,20 @@
          }
        ]
      },
      form: {},
      form: {
        id: '', // 类型名称
        name: '', // 标签
        fName: '', // 继承自
        implClass: '', // 实现类
        description: '', // 描述
        revLevel: '', // 版本规则
        revisionRuleId: '',// 版本号规则
        inputRevisionFlag: false, // 手工输入
        versionRule: '', // 版次号规则
        lifeCycleId: '', // 生命周期
        subLifeCycleId: '', // 生命周期备选列表,
        apNameArray: "", // 属性池列表’,‘分隔
      },
      nodeRow: {},
      treeOption: {
        height: 'auto',
@@ -602,16 +745,175 @@
    },
    // 版本规则管理添加
    versionAddHandler(){
    versionAddHandler() {
      this.dialogVersionVisible = true;
      this.dialogVersionKey = Math.random(); // 打开时刷新表格避免表格错行
      this.dialogVersionLoading = true;
      getVersionRuleAllList().then(res => {
        const data = res.data.data.map(item => {
          return {
            id: item.id
          }
        });
        this.dialogVersionData = data;
        this.dialogVersionDefalutData = data;
        this.dialogVersionLoading = false;
      }).catch(err => {
        this.$message.error(err)
      });
    },
    // 版本规则行点击
    dialogVersionRowClick(row) {
      this.dialogVersionSaveRow = row;
    },
    // 版本规则搜索
    versionHandleSearch(params, done) {
      const {id} = params;
      if (!params.id) {
        this.dialogVersionData = this.dialogVersionDefalutData;
        return done();
      }
      ;
      this.dialogVersionData = this.dialogVersionDefalutData.filter(item => {
        return item.id && item.id.includes(id);
      });
      done();
    },
    // 版本管理置空
    versionHandleReset() {
      this.dialogVersionData = this.dialogVersionDefalutData;
    },
    // 版本号规则保存
    dialogVersionAddClickHandler() {
      if (func.isEmptyObject(this.dialogVersionSaveRow)) {
        this.$message.error('请至少选择一条数据');
        return;
      }
      this.form.revisionRuleId = this.dialogVersionSaveRow.id;
      this.dialogVersionVisible = false;
    },
    // 生命周期新增
    lifeAddHandler(val) {
      this.dialogLfeVisible = true;
      this.dialogLifeKey = Math.random(); // 打开时刷新表格避免表格错行
      this.dialogLifeLoading = true;
      this.lifeType = val;
      gridLifeCycle().then(res => {
        const data = res.data.data.map(item => {
          return {
            id: item.id
          }
        });
        this.dialogLifeData = data;
        this.dialogLifeDefalutData = data;
        this.dialogLifeLoading = false
      }).catch(err => {
        this.$message.error(err)
      });
    },
    // 生命周期行点击
    dialogLifeRowClick(row) {
      this.dialogLifeSaveRow = row;
    },
    // 生命周期保存
    dialogLifeAddClickHandler() {
      if (func.isEmptyObject(this.dialogLifeSaveRow)) {
        this.$message.error('请至少选择一条数据');
        return;
      }
      if (this.lifeType === 'input') {
        this.form.lifeCycleId = this.dialogLifeSaveRow.id;
      } else {
        const flag = this.dialogLifeTable.some(item => item.id === this.dialogLifeSaveRow.id);
        if (flag) {
          this.$message.error('已存在相同的数据,请添加其他数据');
          return;
        }
        this.dialogLifeTable.push(this.dialogLifeSaveRow);
      }
      this.dialogLfeVisible = false;
    },
    // 生命周期备选列表移除
    dialogDeleteLifeTable(index) {
      this.dialogLifeTable.splice(index, 1)
    },
    // 生命周期搜索
    lifeHandleSearch(params, done) {
      const {id} = params;
      if (!params.id) {
        this.dialogLifeData = this.dialogLifeDefalutData;
        return done();
      }
      ;
      this.dialogLifeData = this.dialogLifeDefalutData.filter(item => {
        return item.id && item.id.includes(id);
      });
      done();
    },
    // 生命周期重置
    lifeHandleReset() {
      this.dialogLifeData = this.dialogLifeDefalutData;
    },
    // 只能输入英文正则校验
    validateEnglishOnly(rule, value, callback) {
      if (!value) {
        return callback(new Error('请输入类型名称'));
      }
      if (!/^[A-Za-z]+$/.test(value)) {
        return callback(new Error('只能输入英文字母'));
      }
      callback(); // 验证通过
    },
    // 新增编辑保存
    addDialogSavaHandler() {
      console.log(this.form)
      this.$refs.form.validate((valid) => {
        if (valid) {
          addLifeCycle(this.form).then(res => {
            console.log(res);
          })
        } else {
          return false;
        }
      });
      this.$refs.form.validate((valid) => {
        if (valid) {
        } else {
          return false;
        }
      });
    }
  }
}
</script>
<style lang="scss" scoped>
::v-deep {
  .avue-dialog .el-dialog__body{
  .avue-dialog .el-dialog__body {
    padding: 20px 20px 0px 20px; // 上右下左
    margin-bottom: 10px !important;
  }