<template>
|
<el-row>
|
<el-col :span="4">
|
<basic-container>
|
<avue-tree ref="tree"
|
v-model="form"
|
:data="TreeData"
|
:option="TreeOption"
|
style="height: calc(100vh - 150px)"
|
@node-click="nodeClick">
|
</avue-tree>
|
</basic-container>
|
</el-col>
|
<el-col :span="20">
|
<basic-container>
|
<div style="height: calc(100vh - 150px)">
|
<FormTemplate
|
key="masterForm" data-key="masterForm"
|
v-bind="$attrs"
|
:type="type"
|
:LoadingStatus="status"
|
:TreeValue="TreeValue"
|
:eventList="eventList"
|
ref="FormTemplate"
|
@getFormData="getFormData"
|
></FormTemplate>
|
<el-tabs v-model="activeName" type="border-card" @tab-click="handleClick">
|
<el-tab-pane label="码值申请" name="codeApply" v-if="showCodeApply">
|
<FormTemplate
|
key="codeApplyForm" data-key="codeApplyForm"
|
secDTOListv-bind="$attrs"
|
:type="type"
|
:selfColumnType="selfColumnType"
|
:selfColumnConfig="selfColumnConfig"
|
ref="CodeApply"
|
@getFormData="getCodeApplyFormData"
|
@referConfigDataUpdate="referConfigDataUpdate"
|
></FormTemplate>
|
<el-button
|
@click="submit()"
|
type="primary"
|
size="small"
|
style="float: right"
|
>保存</el-button>
|
</el-tab-pane>
|
</el-tabs>
|
|
</div>
|
</basic-container>
|
</el-col>
|
</el-row>
|
</template>
|
|
<script>
|
import {getAuthTree,getUsedTemplateByClassifyOid,getCodeRule,addSaveCode} from '@/api/code/codeApply.js'
|
import func from '@/util/func';
|
export default {
|
name: "codeApply",
|
components: { FormTemplate: () => import('@/components/FormTemplate/FormTemplate') },
|
data() {
|
return {
|
defaultKeys: [
|
"oid",
|
"id",
|
"name",
|
"description",
|
"revisionoid",
|
"nameoid",
|
"btmname",
|
"lastr",
|
"firstr",
|
"lastv",
|
"firstv",
|
"creator",
|
"createtime",
|
"lastModifier",
|
"lastmodifytime",
|
"revisionrule",
|
"revisionseq",
|
"revisionvalue",
|
"versionrule",
|
"versionseq",
|
"versionvalue",
|
"lcstatus",
|
"ts",
|
"owner",
|
"checkinby",
|
"checkintime",
|
"checkoutby",
|
"checkouttime",
|
"copyfromversion",
|
"secretgrade",
|
],
|
codeClassifyOid:'',
|
type:'add',
|
status:'code',
|
TreeValue:'',
|
dialogVisible:true,
|
setForm:{},
|
secVOList: [],
|
codeRuleOid: "",
|
activeName: "codeApply",
|
showCodeApply: false,
|
eventList:[],
|
showResembleQuery:false,
|
hasResemble:false,
|
form: {},
|
TreeData:[],
|
TreeOption: {
|
defaultExpandAll: false,
|
addBtn: false,
|
},
|
//新增类型
|
selfColumnType: {
|
codefixedsec: "combox",//固定码段
|
codeclassifysec: "refer",//分类码段
|
codevariablesec: "text",//可变码段
|
coderefersec: "refer",//引用码段
|
codeattrsec: "text",
|
codelevelsec: "text",
|
codedatesec: "date"
|
},
|
selfColumnConfig: {
|
function: {
|
required: this.isRequired,
|
dicData: this.getOptionList,
|
type: this.getType,
|
referConfig: this.getReferConfig,
|
readOnly: this.getDisabled,
|
},
|
exchange: {
|
text: "name",
|
field: "oid",
|
prop: "oid",
|
showField: "name",
|
parentClassifySecOid: "parentClassifySecOid",
|
label: "name",
|
maxlength: "codeSecLength",
|
data: "fixedValueVOList",
|
dateFormate: "codeDateFormatStr"
|
},
|
directVoluation: {
|
search: true,
|
props: {
|
label: "id",
|
value: "id",
|
},
|
},
|
},
|
}
|
},
|
created() {
|
this.getTreeData()
|
},
|
methods:{
|
async submit() {
|
// 进行表单校验
|
const formValidate = await this.$refs.FormTemplate.validate();
|
if (!formValidate) return;
|
let resembleQueryList = [];
|
if (this.showResembleQuery && this.$refs.resembleQueryRef) {
|
// 进行相似项查询
|
resembleQueryList = await this.$refs.resembleQueryRef.resembleQuery(
|
this.form
|
);
|
}
|
if (resembleQueryList.length > 0) {
|
await this.$confirm(
|
`该物料已有${resembleQueryList.length}条相似数据,是否继续保存?`,
|
"需要您确认",
|
{
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning",
|
}
|
);
|
}
|
// 排除一些字段
|
const noData = [
|
"jiliangdwname",
|
"materialtypeText",
|
"morengongysname",
|
"$caigouwl",
|
"$xiaoshouwl",
|
"$shifoupihaoguanli",
|
"lcstatus_text",
|
"hesuanfenleiname",
|
"$kucunwl",
|
"oldcode",
|
"lastmodifier"
|
];
|
let resForm = {};
|
const { defaultValue, formValue } = this.getDefaultValueAndFormValues(
|
this.form
|
);
|
noData.forEach((item) => {
|
this.$delete(formValue, item);
|
});
|
const keys = Object.keys(formValue);
|
keys.forEach((item, index) => {
|
keys.forEach((itm, idx) => {
|
if ((item === ('$' + itm)) && idx !== index) {
|
this.$delete(formValue, keys[index]);
|
}
|
})
|
});
|
|
resForm.data = formValue;
|
resForm = Object.assign({}, resForm, defaultValue);
|
resForm.secDTOList = this.secVOList.map((item) => {
|
return {
|
secOid: item.oid,
|
secValue: this.codeApplyForm[item.oid],
|
};
|
});
|
resForm.codeClassifyOid = this.codeClassifyOid;
|
resForm.codeRuleOid = this.codeRuleOid;
|
resForm.templateOid = this.templateOid;
|
// this.$emit("submit", resForm);
|
if(func.notEmpty(resForm.ts)) {
|
resForm.ts = func.formattedDateTime(resForm.ts);
|
// resForm.ts = resForm.ts.toISOString().replace("Z", "");
|
}
|
addSaveCode(resForm).then(res => {
|
this.$nextTick(() => {
|
this.addvisible = false;
|
this.$message.success("保存成功");
|
this.onLoad()
|
})
|
})
|
// console.log(resForm)
|
},
|
getDefaultValueAndFormValues(form) {
|
let defaultValue = {};
|
let formValue = {};
|
for (const key in form) {
|
if (Object.hasOwnProperty.call(form, key)) {
|
const element = form[key];
|
if (this.defaultKeys.includes(key)) {
|
defaultValue[key] = element;
|
} else {
|
formValue[key] = element;
|
}
|
}
|
}
|
return {
|
defaultValue,
|
formValue,
|
};
|
},
|
getFormData(form) {
|
this.form = form;
|
},
|
//定义一个修改数据属性名的方法
|
ModifyProperties(obj, oldName, newName) {
|
for (let key in obj) {
|
if (key === oldName) {
|
obj[newName] = obj[key];
|
delete obj[key];
|
}
|
if (typeof obj[key] === 'object') {
|
this.ModifyProperties(obj[key], oldName, newName);
|
}
|
}
|
},
|
getTreeData(){
|
getAuthTree({
|
'library': 'XH',
|
'systemOid': '061261BF-2736-4589-12F7-0DFA79121222',
|
'systemId': '02'
|
}).then(res => {
|
// console.log(res);
|
this.TreeData=res.data;
|
this.ModifyProperties(this.TreeData, 'name', 'label');
|
// console.log( this.codeClassifyOid)
|
|
});
|
},
|
nodeClick(row){
|
console.log(row)
|
this.TreeValue=row.text.split(" ")[0].trim();
|
this.codeClassifyOid = row.oid;
|
getUsedTemplateByClassifyOid({ 'codeClassifyOid': this.codeClassifyOid,templateOid:' 97e979919a1f1dca67290e85fee22688' }).then((res) => {
|
console.log('===res',res)
|
if (res.status === 200) {
|
this.hasResemble =
|
res.data.resembleTableVO &&
|
res.data.resembleTableVO.cols &&
|
res.data.resembleTableVO.cols.length > 0;
|
this.resembleTableColumn = res.data.resembleTableVO.cols || [];
|
if (this.hasResemble) {
|
this.activeName = "resembleQuery";
|
this.showResembleQuery = true;
|
} else {
|
this.showResembleQuery = false;
|
}
|
this.$nextTick(() => {
|
this.$refs.FormTemplate.templateRender(
|
res.data.formDefineVO.items
|
);
|
this.eventList=res.data.templateVO.attributes
|
// this.$refs.FormTemplate.$emit('eventList', res.data.templateVO.attributes);
|
if (Object.keys(this.setForm).length > 0) {
|
this.$refs.FormTemplate.form = this.setForm;
|
}
|
});
|
}
|
})
|
.catch(() => {
|
this.loading = false;
|
});
|
this.getCodeRule()
|
},
|
getCodeRule() {
|
let that = this;
|
getCodeRule({codeClassifyOid: that.codeClassifyOid}).then((res) => {
|
if (res.data && res.data.code === 200) {
|
that.codeRuleOid = res.data.data.oid;
|
const typeList = [
|
//属性码段 只读
|
"codeattrsec",
|
//可变码段
|
"codevariablesec",
|
//固定码段
|
"codefixedsec",
|
//分类码段
|
"codeclassifysec",
|
//日期码段 只读
|
"codedatesec",
|
//引用码段
|
"coderefersec",
|
//层级码段 只读
|
"codelevelsec",
|
//流水码段 隐藏
|
];
|
that.secVOList = (res.data.data.secVOList || []).filter((item) =>
|
typeList.includes(item.secType)
|
);
|
if (that.secVOList.length > 0 && that.type === "add") {
|
that.showCodeApply = true;
|
that.activeName = "codeApply";
|
this.$nextTick(() => {
|
that.$refs.CodeApply.templateRender(that.secVOList, this.TreeValue);
|
});
|
} else {
|
that.showCodeApply = false;
|
}
|
}
|
});
|
},
|
getType(item) {
|
return this.selfColumnType[item.sectype];
|
},
|
isRequired(item) {
|
return item.nullableFlag != "true";
|
},
|
getOptionList(item) {
|
if (
|
Array.isArray(item.fixedValueVOList) &&
|
item.fixedValueVOList.length > 0
|
) {
|
const configAttr = {
|
key: "id",
|
value: "id",
|
};
|
const optionList = item.fixedValueVOList.map((item) => {
|
for (const key in configAttr) {
|
if (Object.hasOwnProperty.call(configAttr, key)) {
|
const element = configAttr[key];
|
item[key] = item[element];
|
}
|
}
|
return item;
|
});
|
return optionList;
|
} else {
|
return [];
|
}
|
},
|
getReferConfig(item) {
|
let params = {};
|
if (item.secType == "codeclassifysec") {
|
//分类码段
|
params = {
|
isMuti: false,
|
type: "grid",
|
tableConfig: {
|
limit: -1,
|
cols: [
|
{
|
field: "id",
|
title: "英文名称",
|
sort: true,
|
width: 150,
|
},
|
{
|
field: "name",
|
title: "中文名称",
|
sort: true,
|
width: 150,
|
},
|
{
|
field: "description",
|
title: "描述",
|
width: 250,
|
},
|
],
|
queryColumns: [
|
{
|
field: "id",
|
title: "英文名称",
|
},
|
{
|
field: "name",
|
title: "中文名称",
|
},
|
],
|
},
|
url: "api/ubcs-code/ubcs-code/mdmEngineController/listCodeClassifyValueBySecOid",
|
extraParams: {
|
classifySecOid: item.oid,
|
parentClassifyValueOid: item.parentClassifySecOid
|
? this.codeApplyForm[item.parentClassifySecOid]
|
: "",
|
},
|
};
|
} else if (item.secType == "coderefersec") {
|
//引用码段
|
params = JSON.parse(item.referValueInfo);
|
}
|
return params;
|
},
|
getDisabled(item) {
|
if (item.secType === "codeclassifysec") {
|
if (item.parentClassifySecOid) {
|
if (!this.codeApplyForm[item.parentClassifySecOid]) {
|
return true;
|
} else {
|
return false;
|
}
|
}
|
}
|
},
|
// 参照组件数据变更
|
referConfigDataUpdate(data) {
|
const { field } = data;
|
let childItems=[];
|
this.secVOList = this.secVOList.map((item) => {
|
if (item.parentClassifySecOid === field) {
|
this.$refs.CodeApply.form[item.oid] = undefined;
|
this.$refs.CodeApply.form[item.name] = undefined;
|
item.readOnly=false;
|
item.referConfig.extraParams.parentClassifyValueOid=data.value;
|
item.referConfig.reloadData = true;
|
childItems.push(item)
|
}
|
return item;
|
});
|
//this.$refs.CodeApply.templateRender(this.secVOList,this.TreeValue);
|
this.$refs.CodeApply.changeChildItem(childItems);
|
},
|
getCodeApplyFormData(codeApplyForm) {
|
this.codeApplyForm = codeApplyForm;
|
},
|
}
|
}
|
</script>
|
|
<style scoped>
|
|
</style>
|