|
|
@@ -1,59 +1,87 @@
|
|
|
<template>
|
|
|
- <ele-modal custom-class="ele-dialog-form long-dialog-form"
|
|
|
- :centered="true" :visible.sync="addOrEditDialogFlag" :title="title"
|
|
|
- append-to-body
|
|
|
- :close-on-click-modal="false" width="28%" :before-close="cancel" :maxable="true">
|
|
|
- <el-form ref="form" :model="form" :rules="rules" class="el-form-box" label-width="110px">
|
|
|
- <headerTitle title="基本信息"/>
|
|
|
+ <ele-modal
|
|
|
+ custom-class="ele-dialog-form long-dialog-form"
|
|
|
+ :centered="true"
|
|
|
+ :visible.sync="addOrEditDialogFlag"
|
|
|
+ :title="title"
|
|
|
+ append-to-body
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ width="28%"
|
|
|
+ :before-close="cancel"
|
|
|
+ :maxable="true"
|
|
|
+ >
|
|
|
+ <el-form
|
|
|
+ ref="form"
|
|
|
+ :model="form"
|
|
|
+ :rules="rules"
|
|
|
+ class="el-form-box"
|
|
|
+ label-width="110px"
|
|
|
+ >
|
|
|
+ <headerTitle title="基本信息" />
|
|
|
<el-row :gutter="12">
|
|
|
<el-col :span="12">
|
|
|
- <div style="margin:0 0 10px 70px">
|
|
|
+ <div style="margin: 0 0 10px 70px">
|
|
|
<span>示例</span>
|
|
|
- <span style="color: red;margin-left: 10px">
|
|
|
- {{ getExample }}
|
|
|
- </span>
|
|
|
+ <span style="color: red; margin-left: 10px">
|
|
|
+ {{ getExample }}
|
|
|
+ </span>
|
|
|
</div>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="12">
|
|
|
<el-col :span="24">
|
|
|
<el-form-item label="分类" prop="type">
|
|
|
-<!-- <ele-tree-select-->
|
|
|
-<!-- clearable-->
|
|
|
-<!-- :data="typeList"-->
|
|
|
-<!-- v-model="form.type"-->
|
|
|
-<!-- placeholder="请选择"-->
|
|
|
-<!-- valueKey="id"-->
|
|
|
-<!-- labelKey="name"-->
|
|
|
-<!-- childrenKey="subList"-->
|
|
|
-<!-- />-->
|
|
|
- <DictSelection dictName="版本规则分类" clearable filterable v-model="form.type" :isProhibit="type=='view'">
|
|
|
+ <!-- <ele-tree-select-->
|
|
|
+ <!-- clearable-->
|
|
|
+ <!-- :data="typeList"-->
|
|
|
+ <!-- v-model="form.type"-->
|
|
|
+ <!-- placeholder="请选择"-->
|
|
|
+ <!-- valueKey="id"-->
|
|
|
+ <!-- labelKey="name"-->
|
|
|
+ <!-- childrenKey="subList"-->
|
|
|
+ <!-- />-->
|
|
|
+ <DictSelection
|
|
|
+ dictName="版本规则分类"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ v-model="form.type"
|
|
|
+ :isProhibit="type == 'view'"
|
|
|
+ >
|
|
|
</DictSelection>
|
|
|
-<!-- <el-select v-model="form.type" filterable style="width: 100%;" :disabled="type=='view'">-->
|
|
|
-<!-- <el-option v-for="item in typeList" :key="item.id" :value="item.id" :label="item.name"></el-option>-->
|
|
|
-<!-- </el-select>-->
|
|
|
+ <!-- <el-select v-model="form.type" filterable style="width: 100%;" :disabled="type=='view'">-->
|
|
|
+ <!-- <el-option v-for="item in typeList" :key="item.id" :value="item.id" :label="item.name"></el-option>-->
|
|
|
+ <!-- </el-select>-->
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="12">
|
|
|
<el-col :span="24">
|
|
|
<el-form-item label="名称" prop="name">
|
|
|
- <el-input v-model="form.name" :disabled="type=='view'"></el-input>
|
|
|
+ <el-input v-model="form.name" :disabled="type == 'view'"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="12">
|
|
|
<el-col :span="16">
|
|
|
- <el-form-item label="大版本采用" prop="noteType">
|
|
|
- <el-select v-model="form.noteType" @change="handleNoteType" :disabled="type=='view'" style="width: 100%;">
|
|
|
+ <el-form-item label="大版本采用" prop="bigVersionType">
|
|
|
+ <el-select
|
|
|
+ v-model="form.bigVersionType"
|
|
|
+ @change="handleNoteType"
|
|
|
+ :disabled="type == 'view'"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
<el-option :value="1" label="字母"></el-option>
|
|
|
<el-option :value="2" label="数字"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="位数" prop="noteNum" label-width="50px">
|
|
|
- <el-select v-model="form.noteNum" style="width: 100%;" :disabled="type=='view'">
|
|
|
+ <el-form-item label="位数" prop="bigVersionNum" label-width="50px">
|
|
|
+ <el-select
|
|
|
+ v-model="form.bigVersionNum"
|
|
|
+ style="width: 100%"
|
|
|
+ :disabled="type == 'view'"
|
|
|
+ >
|
|
|
<el-option :value="1" label="1"></el-option>
|
|
|
<el-option :value="2" label="2"></el-option>
|
|
|
</el-select>
|
|
|
@@ -62,32 +90,44 @@
|
|
|
</el-row>
|
|
|
<el-row :gutter="12">
|
|
|
<el-col :span="16">
|
|
|
- <el-form-item label="大版本初始值" prop="note">
|
|
|
- <el-input v-model="form.note" :disabled="type=='view'"></el-input>
|
|
|
+ <el-form-item label="大版本初始值" prop="bigVersion">
|
|
|
+ <el-input
|
|
|
+ v-model="form.bigVersion"
|
|
|
+ :disabled="type == 'view'"
|
|
|
+ ></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <span style="margin-left: 10px;line-height: 38px;color: red">默认字母A,数字1</span>
|
|
|
+ <span style="margin-left: 10px; line-height: 38px; color: red"
|
|
|
+ >默认字母A,数字1</span
|
|
|
+ >
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="12">
|
|
|
<el-col :span="16">
|
|
|
<el-form-item label="连接符" prop="mark">
|
|
|
- <el-input v-model="form.mark" :disabled="type=='view'"></el-input>
|
|
|
+ <el-input v-model="form.mark" :disabled="type == 'view'"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <el-col :span="12">
|
|
|
- </el-col>
|
|
|
+ <el-col :span="12"> </el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="12">
|
|
|
<el-col :span="16">
|
|
|
- <el-form-item label="小版本初始值" prop="versionNumber">
|
|
|
- <el-input type="number" v-model="form.versionNumber" :disabled="type=='view'"></el-input>
|
|
|
+ <el-form-item label="小版本初始值" prop="smallVersion">
|
|
|
+ <el-input
|
|
|
+ type="number"
|
|
|
+ v-model="form.smallVersion"
|
|
|
+ :disabled="type == 'view'"
|
|
|
+ ></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="位数" prop="versionNum" label-width="50px">
|
|
|
- <el-select v-model="form.versionNum" style="width: 100%;" :disabled="type=='view'">
|
|
|
+ <el-form-item label="位数" prop="smallVersionNum" label-width="50px">
|
|
|
+ <el-select
|
|
|
+ v-model="form.smallVersionNum"
|
|
|
+ style="width: 100%"
|
|
|
+ :disabled="type == 'view'"
|
|
|
+ >
|
|
|
<el-option :value="1" label="1"></el-option>
|
|
|
<el-option :value="2" label="2"></el-option>
|
|
|
<el-option :value="3" label="3"></el-option>
|
|
|
@@ -98,7 +138,11 @@
|
|
|
<el-row :gutter="12">
|
|
|
<el-col :span="16">
|
|
|
<el-form-item label="变更后版本">
|
|
|
- <el-select v-model="form.changeType" style="width: 100%;" :disabled="type=='view'">
|
|
|
+ <el-select
|
|
|
+ v-model="form.changeType"
|
|
|
+ style="width: 100%"
|
|
|
+ :disabled="type == 'view'"
|
|
|
+ >
|
|
|
<el-option :value="1" label="提升大版本"></el-option>
|
|
|
<el-option :value="2" label="提升小版本"></el-option>
|
|
|
</el-select>
|
|
|
@@ -107,136 +151,149 @@
|
|
|
</el-row>
|
|
|
</el-form>
|
|
|
<div slot="footer">
|
|
|
- <el-button v-if="type!=='view'" type="primary" @click="handleSave">保存</el-button>
|
|
|
+ <el-button v-if="type !== 'view'" type="primary" @click="handleSave"
|
|
|
+ >保存</el-button
|
|
|
+ >
|
|
|
<el-button @click="cancel">返回</el-button>
|
|
|
</div>
|
|
|
</ele-modal>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import {getDetailsByIdAPI, versionManageSaveAPI, versionManageUpdateAPI} from "@/api/versionManage";
|
|
|
-import {getInfoById} from "@/api/classifyManage";
|
|
|
+ import {
|
|
|
+ getDetailsByIdAPI,
|
|
|
+ versionManageSaveAPI,
|
|
|
+ versionManageUpdateAPI
|
|
|
+ } from '@/api/versionManage';
|
|
|
+ import { getInfoById } from '@/api/classifyManage';
|
|
|
|
|
|
-export default {
|
|
|
- name: "addOrEditDIalog",
|
|
|
- props: {
|
|
|
- addOrEditDialogFlag: Boolean,
|
|
|
- typeList: {
|
|
|
- type: Array,
|
|
|
- default: () => {
|
|
|
- return []
|
|
|
+ export default {
|
|
|
+ name: 'addOrEditDIalog',
|
|
|
+ props: {
|
|
|
+ addOrEditDialogFlag: Boolean,
|
|
|
+ typeList: {
|
|
|
+ type: Array,
|
|
|
+ default: () => {
|
|
|
+ return [];
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
- },
|
|
|
- data() {
|
|
|
- return {
|
|
|
- title: '',
|
|
|
- type: '',
|
|
|
- form: {
|
|
|
- id: '',
|
|
|
- type: '',
|
|
|
- name: '',
|
|
|
- noteType: 1,
|
|
|
- noteNum: 1,
|
|
|
- note: 'A',
|
|
|
- mark: '.',
|
|
|
- versionNumber: '1',
|
|
|
- versionNum: 1,
|
|
|
- changeType: 1,
|
|
|
- },
|
|
|
-
|
|
|
- }
|
|
|
- },
|
|
|
- computed: {
|
|
|
- getExample() {
|
|
|
- let value = this.form.note || (this.form.noteType == 1 ? 'A' : '1')
|
|
|
- return value + this.form.mark + this.form.versionNumber
|
|
|
- },
|
|
|
- rules() {
|
|
|
+ data() {
|
|
|
return {
|
|
|
- type: [{required: true, message: '请选择', trigger: 'change'}],
|
|
|
- name: [{required: true, message: '请输入', trigger: 'blur'}],
|
|
|
- noteType: [{required: true, message: '请选择', trigger: 'change'}],
|
|
|
- noteNum: [{required: true, message: '请选择', trigger: 'change'}],
|
|
|
- mark: [
|
|
|
- {required: true, message: '请输入', trigger: 'blur'},
|
|
|
- {validator: this.markValidate, trigger: ['blur']},
|
|
|
- ],
|
|
|
- note: [{required: false, validator: this.noteValidate, trigger: 'blur'}],
|
|
|
- versionNum: [
|
|
|
- {required: true, message: '请输入', trigger: ['blur', 'change']},
|
|
|
-
|
|
|
- ],
|
|
|
- versionNumber: [
|
|
|
- {required: true, message: '请输入', trigger: 'blur'},
|
|
|
- {validator: this.versionNumValidate, trigger: ['blur', 'change']},
|
|
|
- ],
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- methods: {
|
|
|
- handleNoteType(val) {
|
|
|
- this.form.note = val == 1 ? 'A' : '1'
|
|
|
- },
|
|
|
- noteValidate(rule, value, callback) {
|
|
|
- if (!value) callback()
|
|
|
- let regex = this.form.noteType == 1 ? `[A-Z]` : `[0-9]`
|
|
|
- let regexA = new RegExp(`^${regex}{${this.form.noteNum}}$`)
|
|
|
- if (!regexA.test(value)) {
|
|
|
- callback(new Error('输入格式错误'))
|
|
|
- }
|
|
|
- callback()
|
|
|
- },
|
|
|
- versionNumValidate(rule, value, callback) {
|
|
|
- if (!value) callback('请输入')
|
|
|
- let regex = `[0-9]`
|
|
|
- let regexA = new RegExp(`^${regex}{${this.form.versionNum}}$`)
|
|
|
- if (!regexA.test(value)) {
|
|
|
- callback(new Error('输入格式错误'))
|
|
|
- }
|
|
|
- callback()
|
|
|
+ title: '',
|
|
|
+ type: '',
|
|
|
+ form: {
|
|
|
+ id: '',
|
|
|
+ type: '',
|
|
|
+ name: '',
|
|
|
+ bigVersionType: 1,
|
|
|
+ bigVersionNum: 1,
|
|
|
+ bigVersion: 'A',
|
|
|
+ mark: '.',
|
|
|
+ smallVersion: '1',
|
|
|
+ smallVersionNum: 1,
|
|
|
+ changeType: 1
|
|
|
+ }
|
|
|
+ };
|
|
|
},
|
|
|
- markValidate(rule, value, callback) {
|
|
|
- if (!value) callback('请输入')
|
|
|
- const regex = /^[~*_\-:;,./]+$/;
|
|
|
- if (!regex.test(value)) {
|
|
|
- callback(new Error('输入格式错误,可选连接符(~ * _ \ - : ; , . /)'))
|
|
|
+ computed: {
|
|
|
+ getExample() {
|
|
|
+ let value =
|
|
|
+ this.form.bigVersion || (this.form.bigVersionType == 1 ? 'A' : '1');
|
|
|
+ return value + this.form.mark + this.form.smallVersion;
|
|
|
+ },
|
|
|
+ rules() {
|
|
|
+ return {
|
|
|
+ type: [{ required: true, message: '请选择', trigger: 'change' }],
|
|
|
+ name: [{ required: true, message: '请输入', trigger: 'blur' }],
|
|
|
+ bigVersionType: [
|
|
|
+ { required: true, message: '请选择', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ bigVersionNum: [
|
|
|
+ { required: true, message: '请选择', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ mark: [
|
|
|
+ { required: true, message: '请输入', trigger: 'blur' },
|
|
|
+ { validator: this.markValidate, trigger: ['blur'] }
|
|
|
+ ],
|
|
|
+ bigVersion: [
|
|
|
+ { required: false, validator: this.noteValidate, trigger: 'blur' }
|
|
|
+ ],
|
|
|
+ smallVersionNum: [
|
|
|
+ { required: true, message: '请输入', trigger: ['blur', 'change'] }
|
|
|
+ ],
|
|
|
+ smallVersion: [
|
|
|
+ { required: true, message: '请输入', trigger: 'blur' },
|
|
|
+ { validator: this.versionNumValidate, trigger: ['blur', 'change'] }
|
|
|
+ ]
|
|
|
+ };
|
|
|
}
|
|
|
- callback()
|
|
|
},
|
|
|
- //页面初始化
|
|
|
- init(type, row = {}) {
|
|
|
- this.title = type == 'add' ? '新增' : type == 'edit' ? '修改' : '详情'
|
|
|
- this.type = type
|
|
|
- if (type !== 'add') {
|
|
|
- this.getDetail(row.id)
|
|
|
+ methods: {
|
|
|
+ handleNoteType(val) {
|
|
|
+ this.form.bigVersion = val == 1 ? 'A' : '1';
|
|
|
+ },
|
|
|
+ noteValidate(rule, value, callback) {
|
|
|
+ if (!value) callback();
|
|
|
+ let regex = this.form.bigVersionType == 1 ? `[A-Z]` : `[0-9]`;
|
|
|
+ let regexA = new RegExp(`^${regex}{${this.form.bigVersionNum}}$`);
|
|
|
+ if (!regexA.test(value)) {
|
|
|
+ callback(new Error('输入格式错误'));
|
|
|
+ }
|
|
|
+ callback();
|
|
|
+ },
|
|
|
+ versionNumValidate(rule, value, callback) {
|
|
|
+ if (!value) callback('请输入');
|
|
|
+ let regex = `[0-9]`;
|
|
|
+ let regexA = new RegExp(`^${regex}{${this.form.smallVersionNum}}$`);
|
|
|
+ if (!regexA.test(value)) {
|
|
|
+ callback(new Error('输入格式错误'));
|
|
|
+ }
|
|
|
+ callback();
|
|
|
+ },
|
|
|
+ markValidate(rule, value, callback) {
|
|
|
+ if (!value) callback('请输入');
|
|
|
+ const regex = /^[~*_\-:;,./]+$/;
|
|
|
+ if (!regex.test(value)) {
|
|
|
+ callback(new Error('输入格式错误,可选连接符(~ * _ \ - : ; , . /)'));
|
|
|
+ }
|
|
|
+ callback();
|
|
|
+ },
|
|
|
+ //页面初始化
|
|
|
+ init(type, row = {}) {
|
|
|
+ this.title = type == 'add' ? '新增' : type == 'edit' ? '修改' : '详情';
|
|
|
+ this.type = type;
|
|
|
+ if (type !== 'add') {
|
|
|
+ this.getDetail(row.id);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async getDetail(id) {
|
|
|
+ this.loading = true;
|
|
|
+ this.form = await getDetailsByIdAPI(id);
|
|
|
+ this.form.type = this.form.type + '';
|
|
|
+ this.loading = false;
|
|
|
+ },
|
|
|
+ handleSave() {
|
|
|
+ this.$refs.form.validate(async (valid) => {
|
|
|
+ if (!valid) return;
|
|
|
+ console.log('this.type', this.type);
|
|
|
+ const API =
|
|
|
+ this.type == 'add' ? versionManageSaveAPI : versionManageUpdateAPI;
|
|
|
+ if (this.type == 'add') {
|
|
|
+ this.form.id = null;
|
|
|
+ }
|
|
|
+ await API(this.form);
|
|
|
+ this.$message.success('操作成功');
|
|
|
+ this.cancel();
|
|
|
+ this.$emit('reload');
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //关闭弹窗
|
|
|
+ cancel() {
|
|
|
+ this.$emit('update:addOrEditDialogFlag', false);
|
|
|
}
|
|
|
- },
|
|
|
- async getDetail(id) {
|
|
|
- this.loading = true;
|
|
|
- this.form = await getDetailsByIdAPI(id);
|
|
|
- this.loading = false;
|
|
|
- },
|
|
|
- handleSave() {
|
|
|
- this.$refs.form.validate(async valid => {
|
|
|
- if (!valid) return
|
|
|
- const API = this.type == 'add' ? versionManageSaveAPI : versionManageUpdateAPI
|
|
|
- await API(this.form)
|
|
|
- this.$message.success('操作成功')
|
|
|
- this.cancel()
|
|
|
- this.$emit('reload')
|
|
|
- })
|
|
|
-
|
|
|
- },
|
|
|
- //关闭弹窗
|
|
|
- cancel() {
|
|
|
- this.$emit('update:addOrEditDialogFlag', false)
|
|
|
- },
|
|
|
- }
|
|
|
-}
|
|
|
+ }
|
|
|
+ };
|
|
|
</script>
|
|
|
|
|
|
-
|
|
|
-<style scoped lang="scss">
|
|
|
-
|
|
|
-</style>
|
|
|
+<style scoped lang="scss"></style>
|