You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
963 lines
32 KiB
963 lines
32 KiB
<script>
|
|
import {
|
|
searchCodeItemDefs,
|
|
removeBatchCodeItemDef,
|
|
saveBatchCodeItemDef,
|
|
editBatchCodeItemDef, searchCodeItemDefsSeq, searchCodeSeqGenerate, saveCodeSeqGenerate
|
|
} from "../../../api/code/codeItemDef"
|
|
import ItemValue from "./item/itemValue.vue";
|
|
|
|
const columnList = [
|
|
{
|
|
functionId: 9009004,
|
|
serialNumber: '9009004Table1ItemNo',
|
|
tableId: '9009004Table1',
|
|
tableName: '编码组成元素',
|
|
columnProp: 'itemNo',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '序号',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 60
|
|
},
|
|
{
|
|
functionId: 9009004,
|
|
serialNumber: '9009004Table1ItemDesc',
|
|
tableId: '9009004Table1',
|
|
tableName: '编码组成元素',
|
|
columnProp: 'itemDesc',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '描述',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
functionId: 9009004,
|
|
serialNumber: '9009004Table1SeqNo',
|
|
tableId: '9009004Table1',
|
|
tableName: '编码组成元素',
|
|
columnProp: 'seqNo',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '排列次序号',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
functionId: 9009004,
|
|
serialNumber: '9009004Table1Postfix',
|
|
tableId: '9009004Table1',
|
|
tableName: '编码组成元素',
|
|
columnProp: 'postfix',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '前面是否增加分割号',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
functionId: 9009004,
|
|
serialNumber: '9009004Table1Bits',
|
|
tableId: '9009004Table1',
|
|
tableName: '编码组成元素',
|
|
columnProp: 'bits',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '编码位数',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
functionId: 9009004,
|
|
serialNumber: '9009004Table1ItemByCondition',
|
|
tableId: '9009004Table1',
|
|
tableName: '编码组成元素',
|
|
columnProp: 'itemByCondition',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '可选值随元素变化而变化',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 180
|
|
},{
|
|
functionId: 9009004,
|
|
serialNumber: '9009004Table1ItemType',
|
|
tableId: '9009004Table1',
|
|
tableName: '编码组成元素',
|
|
columnProp: 'itemType',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '元素输入类型',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
functionId: 9009004,
|
|
serialNumber: '9009004Table1SeqNoBits',
|
|
tableId: '9009004Table1',
|
|
tableName: '编码组成元素',
|
|
columnProp: 'seqNoBits',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '流水号位数',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
functionId: 9009004,
|
|
serialNumber: '9009004Table1SeqNoType',
|
|
tableId: '9009004Table1',
|
|
tableName: '编码组成元素',
|
|
columnProp: 'seqNoType',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '流水号产生规则',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
functionId: 9009004,
|
|
serialNumber: '9009004Table1VirtualItem',
|
|
tableId: '9009004Table1',
|
|
tableName: '编码组成元素',
|
|
columnProp: 'virtualItem',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '不参与编码',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},
|
|
// {
|
|
// functionId: 9009004,
|
|
// serialNumber: '9009004Table1ValueSeqNo',
|
|
// tableId: '9009004Table1',
|
|
// tableName: '编码组成元素',
|
|
// columnProp: 'valueSeqNo',
|
|
// headerAlign: 'center',
|
|
// align: 'right',
|
|
// columnLabel: '值顺序号',
|
|
// columnHidden: false,
|
|
// columnImage: false,
|
|
// columnSortable: false,
|
|
// sortLv: 0,
|
|
// status: true,
|
|
// fixed: '',
|
|
// columnWidth: 120
|
|
// },{
|
|
// functionId: 9009004,
|
|
// serialNumber: '9009004Table1FixedValueFlag',
|
|
// tableId: '9009004Table1',
|
|
// tableName: '编码组成元素',
|
|
// columnProp: 'fixedValueFlag',
|
|
// headerAlign: 'center',
|
|
// align: 'right',
|
|
// columnLabel: '固定值',
|
|
// columnHidden: false,
|
|
// columnImage: false,
|
|
// columnSortable: false,
|
|
// sortLv: 0,
|
|
// status: true,
|
|
// fixed: '',
|
|
// columnWidth: 120
|
|
// },
|
|
];
|
|
const descColumnList = [
|
|
{
|
|
functionId: 9009004,
|
|
serialNumber: '9009004Table1ItemNo',
|
|
tableId: '9009004Table1',
|
|
tableName: '编码组成元素',
|
|
columnProp: 'itemNo',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '序号',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 60
|
|
},
|
|
{
|
|
functionId: 9009004,
|
|
serialNumber: '9009004Table1ItemDesc',
|
|
tableId: '9009004Table1',
|
|
tableName: '编码组成元素',
|
|
columnProp: 'itemDesc',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '描述',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
functionId: 9009004,
|
|
serialNumber: '9009004Table1SeqNo',
|
|
tableId: '9009004Table1',
|
|
tableName: '编码组成元素',
|
|
columnProp: 'seqNo',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '排列次序号',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 80
|
|
},{
|
|
functionId: 9009004,
|
|
serialNumber: '9009004Table1ShowInDesc',
|
|
tableId: '9009004Table1',
|
|
tableName: '编码组成元素',
|
|
columnProp: 'showInDesc',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '在描述中显示',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},{
|
|
functionId: 9009004,
|
|
serialNumber: '9009004Table1ShowItemDescInDesc',
|
|
tableId: '9009004Table1',
|
|
tableName: '编码组成元素',
|
|
columnProp: 'showItemDescInDesc',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '在描述显示元素名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 140
|
|
},{
|
|
functionId: 9009004,
|
|
serialNumber: '9009004Table1ShowInRemark',
|
|
tableId: '9009004Table1',
|
|
tableName: '编码组成元素',
|
|
columnProp: 'showInRemark',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '在备注中显示',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100
|
|
},{
|
|
functionId: 9009004,
|
|
serialNumber: '9009004Table1ShowItemDescInRemark',
|
|
tableId: '9009004Table1',
|
|
tableName: '编码组成元素',
|
|
columnProp: 'showItemDescInRemark',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '在备注中显示元素名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 140
|
|
}
|
|
];
|
|
const dataList = {
|
|
itemNo:undefined,
|
|
itemDesc:undefined,
|
|
seqNo:undefined,
|
|
postfix:undefined,
|
|
bits:undefined,
|
|
itemByCondition:undefined,
|
|
seqFlag:undefined,
|
|
itemType:undefined,
|
|
seqNoBits:undefined,
|
|
seqNoType:undefined,
|
|
virtualItem:undefined,
|
|
valueSeqNo:undefined,
|
|
fixedValueFlag:undefined,
|
|
showInDesc:undefined,
|
|
showItemDescInDesc:undefined,
|
|
showInRemark:undefined,
|
|
showItemDescInRemark:undefined,
|
|
};
|
|
|
|
const dataLabels = {
|
|
itemNo:"元素序号",
|
|
itemDesc:"元素描述",
|
|
seqNo:"排列次序号",
|
|
postfix:"前面是否增加分割号",
|
|
bits:"编码位数",
|
|
itemByCondition:"可选值随元素变化而变化",
|
|
seqFlag:"流水号标识",
|
|
itemType:"元素输入类型",
|
|
seqNoBits:"流水号位数",
|
|
seqNoType:"流水号产生规则",
|
|
virtualItem:"不参与编码",
|
|
valueSeqNo:"值顺序号",
|
|
fixedValueFlag:"固定值",
|
|
showInDesc:"在描述中显示",
|
|
showItemDescInDesc:"在描述显示元素名称",
|
|
showInRemark:"在备注中显示",
|
|
showItemDescInRemark:"在备注中显示元素名称",
|
|
};
|
|
const dataRules = {};
|
|
Object.keys(dataList).forEach(key => {
|
|
dataRules[key] = [
|
|
{
|
|
required: true,
|
|
message: `${dataLabels[key]}不能为空`,
|
|
trigger: ['blur','input','change']
|
|
}
|
|
];
|
|
});
|
|
export default {
|
|
name: "CodeItem",
|
|
components: {ItemValue},
|
|
data(){
|
|
return{
|
|
currentRow:{},
|
|
saveOrEditIndex:undefined,
|
|
loading:false,
|
|
defineOptionalValueFlag:false,
|
|
visible: false,
|
|
codeItemDefs: [],
|
|
copyCodeItemDefs:[],
|
|
columnList: columnList.map(item => {return {...item,userId:this.$store.state.user.id}}),
|
|
descColumnList: descColumnList.map(item => {return {...item,userId:this.$store.state.user.id}}),
|
|
searchCodeItemDef: {...dataList},
|
|
selectionAllList: [],
|
|
saveCodeItemDef:{...dataList},
|
|
rules: dataRules,
|
|
descOrRemarkDialog:false,
|
|
codeItemSeqList:[],
|
|
seqNoGenerateDialog:false,
|
|
seqNoGenerateList:[],
|
|
}
|
|
},
|
|
computed: {
|
|
itemType(){
|
|
return this.saveCodeItemDef.itemType;
|
|
},
|
|
sortCodeItemDefs(){
|
|
let arr = JSON.parse(JSON.stringify(this.copyCodeItemDefs));
|
|
return arr.sort((a,b) => a.seqNo - b.seqNo);
|
|
},
|
|
descDialog:{
|
|
get(){
|
|
return this.descOrRemarkDialog
|
|
},
|
|
set(val){
|
|
if (this.saveOrEditIndex !== undefined){
|
|
this.$confirm('存在信息正在编辑, 是否继续?', '提示', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning'
|
|
}).then(() => {
|
|
this.descOrRemarkDialog = val
|
|
this.saveOrEditIndex = undefined
|
|
}).catch(() => {
|
|
|
|
});
|
|
}else {
|
|
this.descOrRemarkDialog = val
|
|
}
|
|
}
|
|
}
|
|
},
|
|
watch:{
|
|
itemType(val,oldVal){
|
|
if (val && !val.includes('流水号')){
|
|
this.saveCodeItemDef.seqNoType = '*';
|
|
this.saveCodeItemDef.seqNoBits = 0;
|
|
}
|
|
},
|
|
},
|
|
methods: {
|
|
searchCodeItemDefs(){
|
|
let params = {
|
|
...this.searchCodeItemDef,
|
|
site: this.$store.state.user.site,
|
|
}
|
|
this.loading = true;
|
|
searchCodeItemDefs(params).then(({data}) => {
|
|
if (data && data.code === 0){
|
|
this.codeItemDefs = data.rows;
|
|
this.copyCodeItemDefs = data.rows;
|
|
if (!this.currentRow.itemNo && this.codeItemDefs.length > 0){
|
|
this.currentRow = {...this.codeItemDefs[0]};
|
|
}
|
|
}else {
|
|
this.$message.error(data.msg)
|
|
}
|
|
this.loading = false
|
|
}).catch(err => {
|
|
console.log(err)
|
|
this.loading = false
|
|
})
|
|
},
|
|
removeBatchCodeItemDef(){
|
|
if (this.selectionAllList.length === 0){
|
|
this.$message.warning("请选择要删除的项")
|
|
return
|
|
}
|
|
this.$confirm(`确定要删除组成元素${this.selectionAllList[0].itemDesc}以及所有该元素的有关信息吗?`, '提示', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning'
|
|
}).then(() => {
|
|
removeBatchCodeItemDef(this.selectionAllList).then(({data}) => {
|
|
if (data && data.code === 0){
|
|
this.$message.success(data.msg);
|
|
this.currentRow = {};
|
|
this.searchCodeItemDefs()
|
|
}else {
|
|
this.$message.error(data.msg)
|
|
}
|
|
}).catch(err => {
|
|
console.log(err)
|
|
})
|
|
}).catch(() => {
|
|
|
|
});
|
|
},
|
|
saveBatchCodeItemDef(params){
|
|
saveBatchCodeItemDef(params).then(({data}) => {
|
|
if (data && data.code === 0){
|
|
this.$message.success(data.msg)
|
|
this.visible = false;
|
|
this.searchCodeItemDefs();
|
|
}else {
|
|
this.$message.error(data.msg)
|
|
}
|
|
}).catch(err => {
|
|
console.log(err)
|
|
})
|
|
},
|
|
editBatchCodeItemDef(params){
|
|
editBatchCodeItemDef(params).then(({data}) => {
|
|
if (data && data.code === 0){
|
|
this.$message.success(data.msg)
|
|
this.visible = false;
|
|
this.currentRow = {};
|
|
this.saveOrEditIndex = undefined
|
|
this.searchCodeItemDefs()
|
|
}else {
|
|
this.$message.error(data.msg)
|
|
}
|
|
}).catch(err => {
|
|
console.log(err)
|
|
})
|
|
},
|
|
closeDialog(){
|
|
this.resetData(this.saveCodeItemDef);
|
|
this.$refs.saveCodeItemDefForm.resetFields();
|
|
},
|
|
resetData(data){
|
|
Object.keys(data).forEach(key => {data[key] = undefined;});
|
|
},
|
|
clickEdit(row) {
|
|
this.saveCodeItemDef = {...row};
|
|
this.visible = true;
|
|
},
|
|
clickSave(){
|
|
this.resetData(this.saveCodeItemDef);
|
|
this.$nextTick(()=>{
|
|
this.saveCodeItemDef.postfix = 'N';
|
|
this.saveCodeItemDef.bits = 1;
|
|
this.saveCodeItemDef.itemByCondition = 'N';
|
|
this.saveCodeItemDef.seqNoBits = 0;
|
|
this.saveCodeItemDef.virtualItem = 'N';
|
|
this.saveCodeItemDef.seqNoType = '*';
|
|
this.saveCodeItemDef.showInDesc = 'Y';
|
|
this.saveCodeItemDef.showItemDescInDesc = 'Y';
|
|
this.saveCodeItemDef.showInRemark = 'Y';
|
|
this.saveCodeItemDef.showItemDescInRemark = 'Y';
|
|
if (this.codeItemDefs.length === 0){
|
|
this.saveCodeItemDef.seqNo = 1;
|
|
this.saveCodeItemDef.valueSeqNo = 1;
|
|
}else {
|
|
this.saveCodeItemDef.seqNo = this.sortCodeItemDefs[this.codeItemDefs.length-1].seqNo + 1;
|
|
let arr = this.sortCodeItemDefs.map(item=>item.valueSeqNo)
|
|
this.saveCodeItemDef.valueSeqNo = Math.max(...arr) + 1;
|
|
}
|
|
})
|
|
this.visible = true;
|
|
},
|
|
clickSaveCodeItemDef(){
|
|
this.$refs.saveCodeItemDefForm.validate((valid,obj) => {
|
|
if (valid) {
|
|
if (this.saveCodeItemDef.itemType && this.saveCodeItemDef.itemType.includes('流水号') && this.saveCodeItemDef.seqNoBits <= 0){
|
|
this.$message.warning("流水号位数不能小于等于0");
|
|
return
|
|
}
|
|
if (this.saveCodeItemDef.itemType &&this.saveCodeItemDef.itemType.includes('流水号') && this.saveCodeItemDef.seqNoType === '*'){
|
|
this.$message.warning("流水号产生规则不能为*");
|
|
return
|
|
}
|
|
let arr = [];
|
|
arr.push(this.saveCodeItemDef)
|
|
if (this.saveCodeItemDef.itemNo){
|
|
this.editBatchCodeItemDef(arr)
|
|
}else {
|
|
this.saveCodeItemDef.site = this.$store.state.user.site;
|
|
this.saveBatchCodeItemDef(arr)
|
|
}
|
|
}else {
|
|
Object.keys(obj).forEach(key => {
|
|
this.$message.error(obj[key][0].message);
|
|
return
|
|
})
|
|
}
|
|
})
|
|
},
|
|
clickCopy(row){
|
|
this.saveCodeItemDef = {...row};
|
|
this.visible = true;
|
|
this.saveCodeItemDef.itemNo = undefined;
|
|
},
|
|
saveDesc(row){
|
|
let arr = [];
|
|
arr.push(row)
|
|
this.editBatchCodeItemDef(arr)
|
|
},
|
|
clickEditDesc(index){
|
|
if (this.saveOrEditIndex !== undefined){
|
|
this.$confirm('存在信息正在编辑, 是否继续?', '提示', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning'
|
|
}).then(() => {
|
|
this.clickSettingDesc();
|
|
this.saveOrEditIndex = index;
|
|
}).catch(() => {
|
|
|
|
});
|
|
}else {
|
|
this.saveOrEditIndex = index;
|
|
}
|
|
},
|
|
clickSettingDesc(){
|
|
this.copyCodeItemDefs = JSON.parse(JSON.stringify(this.codeItemDefs));
|
|
this.descOrRemarkDialog = true;
|
|
},
|
|
clickRest(){
|
|
this.clickSettingDesc();
|
|
this.saveOrEditIndex = undefined;
|
|
},
|
|
rowStyle({row}){
|
|
if (row){
|
|
if (row.itemNo === this.currentRow.itemNo){
|
|
return {'background-color': '#E8F7F6', cursor: 'pointer'};
|
|
}
|
|
}
|
|
},
|
|
quotationClickRow(row, column, event){
|
|
this.currentRow = {...row};
|
|
},
|
|
defineOptionalValues(){
|
|
if (!this.currentRow.itemNo){
|
|
this.$message.warning("请先选择要定义可选值的元素");
|
|
return
|
|
}
|
|
this.defineOptionalValueFlag = true;
|
|
},
|
|
removeCodeItemDef(row){
|
|
this.selectionAllList = [row];
|
|
this.removeBatchCodeItemDef();
|
|
},
|
|
searchCodeItemDefsSeq(){
|
|
searchCodeItemDefsSeq(this.currentRow).then(({data}) => {
|
|
if (data && data.code === 0){
|
|
this.codeItemSeqList = data.rows;
|
|
}else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
}).catch((error) => {
|
|
this.$message.error(error)
|
|
})
|
|
},
|
|
searchCodeSeqGenerate(){
|
|
searchCodeSeqGenerate(this.currentRow).then(({data})=>{
|
|
if (data && data.code === 0){
|
|
this.seqNoGenerateList = data.rows.map(item=>item.relatedItemNo);
|
|
this.searchCodeItemDefsSeq();
|
|
}else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
}).catch((error) => {
|
|
this.$message.error(error)
|
|
})
|
|
},
|
|
clickSeqNoGenerateBtn(){
|
|
this.searchCodeSeqGenerate();
|
|
this.seqNoGenerateDialog = true;
|
|
},
|
|
closeSeqNoGenerate(){
|
|
this.seqNoGenerateList = [];
|
|
this.codeItemSeqList = [];
|
|
},
|
|
saveSeqNoGenerate(){
|
|
let arr = this.seqNoGenerateList.map(item=>{
|
|
return {
|
|
site:this.currentRow.site,
|
|
relatedItemNo:item,
|
|
itemNo:this.currentRow.itemNo,
|
|
}
|
|
})
|
|
let params = {...this.currentRow}
|
|
params.seqNoGenerateRules = arr;
|
|
saveCodeSeqGenerate(params).then(({data}) => {
|
|
if (data && data.code === 0){
|
|
this.$message.success(data.msg)
|
|
this.seqNoGenerateDialog = false;
|
|
}else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
}).catch((error) => {
|
|
this.$message.error(error)
|
|
})
|
|
}
|
|
},
|
|
created() {
|
|
this.searchCodeItemDefs()
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<div>
|
|
<!-- 搜索条件 -->
|
|
<el-form :model="searchCodeItemDef" :inline="true" label-position="top">
|
|
<el-form-item label="描述">
|
|
<el-input v-model="searchCodeItemDef.itemDesc"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label=" ">
|
|
<el-button type="primary" icon="el-icon-search" @click="searchCodeItemDefs">搜索</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
<!-- 操作按钮 -->
|
|
<el-form :inline="true" label-position="top">
|
|
<el-form-item label=" ">
|
|
<el-button type="primary" @click="clickSave">新增</el-button>
|
|
</el-form-item>
|
|
<el-form-item label=" " v-if="false">
|
|
<el-button type="primary" icon="el-icon-delete" @click="removeBatchCodeItemDef">删除</el-button>
|
|
</el-form-item>
|
|
<el-form-item label=" ">
|
|
<el-button :type="`${currentRow.itemType && currentRow.itemType.includes('选择')?'primary':'info'}`" :disabled="currentRow.itemType && !currentRow.itemType.includes('选择')" @click="defineOptionalValues" plain>定义可选值</el-button>
|
|
</el-form-item>
|
|
<el-form-item label=" ">
|
|
<el-button type="primary" :type="`${currentRow.itemType && currentRow.itemType.includes('流水号') && currentRow.seqNoType === '指定元素'?'primary':'info'}`" :disabled="!currentRow.itemType || !currentRow.itemType.includes('流水号') || currentRow.seqNoType !== '指定元素'" @click="clickSeqNoGenerateBtn" plain>流水号产生规则</el-button>
|
|
</el-form-item>
|
|
<el-form-item label=" ">
|
|
<el-button type="primary" @click="clickSettingDesc" plain>设置描述/备注产生规则</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
<!-- 表格 -->
|
|
<el-table :data="codeItemDefs"
|
|
v-loading="loading"
|
|
element-loading-text="拼命加载中"
|
|
height="80vh"
|
|
border
|
|
@row-click="quotationClickRow"
|
|
:row-style="rowStyle"
|
|
style="width: 100%;margin-top: 5px;min-height: 200px">
|
|
<el-table-column
|
|
v-for="(item,index) in columnList" :key="index"
|
|
:sortable="item.columnSortable"
|
|
:prop="item.columnProp"
|
|
:header-align="item.headerAlign"
|
|
:show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align"
|
|
:fixed="item.fixed === ''?false:item.fixed"
|
|
:min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
</el-table-column>
|
|
<el-table-column label="操作" align="center" fixed="left" header-align="center" width="150">
|
|
<template slot-scope="{row,$index}">
|
|
<el-link style="cursor:pointer;" @click="clickEdit(row)">编辑</el-link>
|
|
<el-link style="cursor:pointer;" @click="clickCopy(row)">复制</el-link>
|
|
<el-link style="cursor:pointer;" @click="removeCodeItemDef(row)">删除</el-link>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
|
|
<!--可选值-->
|
|
<el-dialog :visible.sync="defineOptionalValueFlag" v-drag title="可选值定义" top="10vh">
|
|
<item-value v-if="defineOptionalValueFlag" @close="defineOptionalValueFlag=false" :item-value="currentRow"></item-value>
|
|
</el-dialog>
|
|
|
|
<!--新增/修改弹框-->
|
|
<el-dialog :visible.sync="visible" @close="closeDialog" width="500px" v-drag :title="`${saveCodeItemDef.itemNo? '修改编码组成元素' : '新增编码组成元素'}`">
|
|
<el-form :model="saveCodeItemDef" :rules="rules" ref="saveCodeItemDefForm" label-position="top">
|
|
<el-row :gutter="10">
|
|
<el-col :span="16">
|
|
<el-form-item label="描述" prop="itemDesc" :show-message="false">
|
|
<el-input v-model="saveCodeItemDef.itemDesc"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="排列次序号" prop="seqNo" :show-message="false">
|
|
<el-input-number v-model="saveCodeItemDef.seqNo" :min="1" style="line-height: 1.5;width: 100%;" :controls="false"></el-input-number>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="前面是否增加分割号" prop="postfix" :show-message="false">
|
|
<el-select v-model="saveCodeItemDef.postfix" style="width: 100%;" placeholder="请选择">
|
|
<el-option label="Y" value="Y"></el-option>
|
|
<el-option label="N" value="N"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="编码位数" prop="bits" :show-message="false">
|
|
<el-input-number v-model="saveCodeItemDef.bits" :min="1" style="line-height: 1.5;width: 100%;" :controls="false"></el-input-number>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="可选值随元素变化而变化" prop="itemByCondition" :show-message="false">
|
|
<el-select v-model="saveCodeItemDef.itemByCondition" style="width: 100%;" placeholder="请选择">
|
|
<el-option label="Y" value="Y"></el-option>
|
|
<el-option label="N" value="N"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="元素输入类型" prop="itemType" :show-message="false">
|
|
<el-select v-model="saveCodeItemDef.itemType" style="width: 100%;" placeholder="请选择">
|
|
<el-option label="选择" value="选择"></el-option>
|
|
<el-option label="手工" value="手工"></el-option>
|
|
<el-option label="流水号" value="流水号"></el-option>
|
|
<el-option label="选择或手工" value="选择或手工"></el-option>
|
|
<el-option label="选择或流水号" value="选择或流水号"></el-option>
|
|
<el-option label="手工或流水号" value="手工或流水号"></el-option>
|
|
<el-option label="选择或手工或流水号" value="选择或手工或流水号"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="流水号参数规则" prop="seqNoType" :show-message="false">
|
|
<el-select v-model="saveCodeItemDef.seqNoType" :disabled="!saveCodeItemDef.itemType || !saveCodeItemDef.itemType.includes('流水号')" style="width: 100%;" placeholder="请选择">
|
|
<el-option label="*" value="*"></el-option>
|
|
<el-option label="所有元素" value="所有元素"></el-option>
|
|
<el-option label="指定元素" value="指定元素"></el-option>
|
|
<el-option label="全局" value="全局"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="流水号位数" prop="seqNoBits" :show-message="false">
|
|
<el-input-number v-model="saveCodeItemDef.seqNoBits" :disabled="!saveCodeItemDef.itemType || !saveCodeItemDef.itemType.includes('流水号')" :min="0" style="line-height: 1.5;width: 100%;" :controls="false"></el-input-number>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="不参与编码" prop="virtualItem" :show-message="false">
|
|
<el-select v-model="saveCodeItemDef.virtualItem" style="width: 100%;" placeholder="请选择">
|
|
<el-option label="Y" value="Y"></el-option>
|
|
<el-option label="N" value="N"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8" v-if="false">
|
|
<el-form-item label="值顺序号" prop="valueSeqNo" :show-message="false">
|
|
<el-input-number v-model="saveCodeItemDef.valueSeqNo" :min="1" style="line-height: 1.5;width: 100%;" :controls="false"></el-input-number>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8" v-if="false">
|
|
<el-form-item label="固定值" :show-message="false">
|
|
<el-input v-model="saveCodeItemDef.fixedValueFlag"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
<el-footer style="height:30px;text-align:center;margin-top: 8px">
|
|
<el-button type="primary" @click="clickSaveCodeItemDef">保存</el-button>
|
|
<el-button type="primary" @click="visible = false">关闭</el-button>
|
|
</el-footer>
|
|
</el-dialog>
|
|
|
|
<!--设置描述/备注产生规则-->
|
|
<el-dialog ref="dialog" :visible.sync="descDialog" width="60%" v-drag title="设置描述/备注产生规则">
|
|
<div>
|
|
<el-button type="primary" :disabled="saveOrEditIndex >= 0" icon="el-icon-refresh" @click="()=>{
|
|
this.searchCodeItemDef.itemDesc = undefined;
|
|
this.searchCodeItemDefs();
|
|
}">刷新</el-button>
|
|
<el-button type="primary" @click="descDialog = false">关闭</el-button>
|
|
</div>
|
|
<el-table :data="sortCodeItemDefs"
|
|
height="400px"
|
|
border stripe
|
|
style="width: 100%;margin-top: 5px;min-height: 200px">
|
|
<el-table-column
|
|
v-for="(item,index) in descColumnList" :key="index"
|
|
:sortable="item.columnSortable"
|
|
:prop="item.columnProp"
|
|
:header-align="item.headerAlign"
|
|
:show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align"
|
|
:fixed="item.fixed === ''?false:item.fixed"
|
|
:min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="{row,$index}">
|
|
<div v-if="saveOrEditIndex === $index && ['showInDesc','showItemDescInDesc','showInRemark','showItemDescInRemark'].includes(item.columnProp)">
|
|
<el-select v-if="item.columnProp === 'showInDesc'" v-model="row.showInDesc" style="width: 100%;" placeholder="请选择">
|
|
<el-option label="Y" value="Y"></el-option>
|
|
<el-option label="N" value="N" :disabled="row.showItemDescInDesc === 'Y'"></el-option>
|
|
</el-select>
|
|
<el-select v-if="item.columnProp === 'showItemDescInDesc'" @change="()=>{
|
|
if (row.showItemDescInDesc === 'Y'){
|
|
row.showInDesc = 'Y';
|
|
}
|
|
}" v-model="row.showItemDescInDesc" style="width: 100%;" placeholder="请选择">
|
|
<el-option label="Y" value="Y"></el-option>
|
|
<el-option label="N" value="N"></el-option>
|
|
</el-select>
|
|
<el-select v-if="item.columnProp === 'showInRemark'" v-model="row.showInRemark" style="width: 100%;" placeholder="请选择">
|
|
<el-option label="Y" value="Y"></el-option>
|
|
<el-option label="N" value="N" :disabled="row.showItemDescInRemark === 'Y'"></el-option>
|
|
</el-select>
|
|
<el-select v-if="item.columnProp === 'showItemDescInRemark'" @change="()=>{
|
|
if (row.showItemDescInRemark === 'Y'){
|
|
row.showInRemark = 'Y';
|
|
}
|
|
}" v-model="row.showItemDescInRemark" style="width: 100%;" placeholder="请选择">
|
|
<el-option label="Y" value="Y"></el-option>
|
|
<el-option label="N" value="N"></el-option>
|
|
</el-select>
|
|
</div>
|
|
<div v-else>
|
|
{{row[item.columnProp]}}
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="操作" align="center" header-align="center" width="150">
|
|
<template slot-scope="{row,$index}">
|
|
<el-button v-if="saveOrEditIndex !== $index" @click="clickEditDesc($index)" type="text" style="cursor:pointer;" icon="el-icon-edit-outline">编辑</el-button>
|
|
<div v-else>
|
|
<el-button @click="saveDesc(row)" type="text" style="cursor:pointer;" icon="el-icon-edit-outline">保存</el-button>
|
|
<el-button @click="clickRest" type="text" style="cursor:pointer;" icon="el-icon-circle-close">取消</el-button>
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-dialog>
|
|
|
|
<el-dialog title="流水号产生规则" v-drag @close="closeSeqNoGenerate" :visible.sync="seqNoGenerateDialog" width="520px">
|
|
<el-form :inline="true" label-position="top" :model="currentRow">
|
|
<el-form-item :label="'序号'">
|
|
<el-input v-model="currentRow.itemNo" readonly style="width: 120px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item :label="'描述'">
|
|
<el-input v-model="currentRow.itemDesc" readonly style="width: 120px"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-transfer class="rq" :props="{key: 'itemNo',label: 'itemDesc' }"
|
|
filterable v-model="seqNoGenerateList"
|
|
:data="codeItemSeqList" :titles="['元素列表', '已关联元素列表']">
|
|
<span slot-scope="{option}">{{option.itemNo}} / {{option.itemDesc}}</span>
|
|
</el-transfer>
|
|
<el-footer style="height:40px;margin-top: 10px;text-align:center">
|
|
<el-button type="primary" @click="saveSeqNoGenerate">确定</el-button>
|
|
<el-button type="primary" @click="seqNoGenerateDialog = false">关闭</el-button>
|
|
</el-footer>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
|
|
<style scoped>
|
|
.el-table /deep/ .cell{
|
|
height: auto;
|
|
line-height: 1.5;
|
|
}
|
|
.el-input-number /deep/ .el-input__inner{
|
|
text-align: right;
|
|
padding-right: 15px !important;
|
|
padding-left: 0px !important;
|
|
}
|
|
/deep/ .el-button{
|
|
line-height: 13px;
|
|
height: 21px;
|
|
}
|
|
|
|
.rq /deep/ .el-transfer-panel .el-transfer-panel__header {
|
|
height: 35px;
|
|
line-height: 35px;
|
|
}
|
|
|
|
.rq /deep/ .el-transfer-panel .el-transfer-panel__header .el-checkbox {
|
|
line-height: 35px;
|
|
}
|
|
|
|
.rq /deep/ .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label {
|
|
color: #fff
|
|
}
|
|
|
|
.rq /deep/ .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span {
|
|
color: #3c3c3e;
|
|
}
|
|
|
|
.rq /deep/ .el-transfer-panel .el-checkbox__inner::after {
|
|
height: 8px;
|
|
width: 4px;
|
|
}
|
|
</style>
|