| | |
| | | <template>
|
| | | <el-dialog
|
| | | :visible.sync="dialogVisible"
|
| | | v-dialogDrag
|
| | | top="0vh"
|
| | | title="提示"
|
| | | class="avue-dialog avue-dialog--top"
|
| | | :width="dialogOptions.width"
|
| | | append-to-body
|
| | | >
|
| | | <avue-form :option="option" v-loading="loading" ref="form">
|
| | | <template :slot="item.prop + 'Label'" v-for="item in option.column"">
|
| | | <div>
|
| | | <span>{{ item.label }}</span>
|
| | | <el-tooltip
|
| | | v-if="item.keyAttr"
|
| | | class="item"
|
| | | effect="dark"
|
| | | content="关键属性"
|
| | | placement="top-start"
|
| | | >
|
| | | <i class="el-icon-star-on key_attr_icon"></i>
|
| | | </el-tooltip>
|
| | | </div>
|
| | | </template>
|
| | | </avue-form>
|
| | | <div class="avue-dialog__footer">
|
| | | <el-button @click="close()">取 消</el-button>
|
| | | <el-button @click="close()" type="primary">确 定</el-button>
|
| | | </div>
|
| | | </el-dialog>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import { getFormTemplate } from "../../api/common";
|
| | | export default {
|
| | | name: "FormTemplate",
|
| | | props: {
|
| | | visible: {
|
| | | type: Boolean,
|
| | | default: false,
|
| | | },
|
| | | },
|
| | | data() {
|
| | | return {
|
| | | loading: false,
|
| | | dialogOptions: {
|
| | | width: "60%",
|
| | | },
|
| | | option: {
|
| | | emptyBtn: false,
|
| | | submitBtn: false,
|
| | | labelWidth: "120",
|
| | | column: [],
|
| | | },
|
| | | templateData: {},
|
| | | columnType: {
|
| | | text: "input",
|
| | | combox: "select",
|
| | | truefalse: "switch",
|
| | | number: "number",
|
| | | datetime: "datetime",
|
| | | },
|
| | | testItems: [
|
| | | {
|
| | | comboxKey: null,
|
| | | customClass: null,
|
| | | data: null,
|
| | | dateFormate: "",
|
| | | defaultValue: "",
|
| | | displayExtension: null,
|
| | | extendAttrMap: null,
|
| | | extendAttrString: null,
|
| | | field: "id",
|
| | | hidden: true,
|
| | | keyAttr: false,
|
| | | prefix: "",
|
| | | readOnly: false,
|
| | | referConfig: null,
|
| | | required: false,
|
| | | selectLibFlag: "",
|
| | | showField: null,
|
| | | suffix: "",
|
| | | text: "代号",
|
| | | tooltips: "",
|
| | | type: "text",
|
| | | unique: false,
|
| | | verify: "",
|
| | | },
|
| | | {
|
| | | comboxKey: "wupin${lcstatus}",
|
| | | customClass: null,
|
| | | data: null,
|
| | | dateFormate: "",
|
| | | defaultValue: "",
|
| | | displayExtension: null,
|
| | | extendAttrMap: null,
|
| | | extendAttrString: null,
|
| | | field: "lcstatus",
|
| | | hidden: false,
|
| | | keyAttr: false,
|
| | | prefix: "",
|
| | | readOnly: false,
|
| | | referConfig: null,
|
| | | required: false,
|
| | | selectLibFlag: "",
|
| | | showField: null,
|
| | | suffix: "",
|
| | | text: "状态",
|
| | | tooltips: "",
|
| | | type: "combox",
|
| | | unique: false,
|
| | | verify: "",
|
| | | },
|
| | | {
|
| | | comboxKey: null,
|
| | | customClass: null,
|
| | | data: null,
|
| | | dateFormate: "",
|
| | | defaultValue: "",
|
| | | displayExtension: null,
|
| | | extendAttrMap: null,
|
| | | extendAttrString: null,
|
| | | field: "oldcode",
|
| | | hidden: false,
|
| | | keyAttr: false,
|
| | | prefix: "el-icon-search",
|
| | | readOnly: false,
|
| | | referConfig: null,
|
| | | required: false,
|
| | | selectLibFlag: "",
|
| | | showField: null,
|
| | | suffix: "文本后缀测试",
|
| | | text: "前后缀",
|
| | | tooltips: "",
|
| | | type: "text",
|
| | | unique: false,
|
| | | verify: "",
|
| | | },
|
| | | {
|
| | | comboxKey: null,
|
| | | customClass: null,
|
| | | data: null,
|
| | | dateFormate: "",
|
| | | defaultValue: "",
|
| | | displayExtension: null,
|
| | | extendAttrMap: null,
|
| | | extendAttrString: null,
|
| | | field: "materialname",
|
| | | hidden: false,
|
| | | keyAttr: false,
|
| | | prefix: "",
|
| | | readOnly: false,
|
| | | referConfig: null,
|
| | | required: true,
|
| | | selectLibFlag: "",
|
| | | showField: null,
|
| | | suffix: "",
|
| | | text: "正则校验",
|
| | | tooltips: "请输入数字",
|
| | | type: "text",
|
| | | unique: false,
|
| | | verify: "/[0-9]/",
|
| | | },
|
| | | {
|
| | | comboxKey: "materialclassify_data",
|
| | | customClass: null,
|
| | | data: [
|
| | | {
|
| | | attributes: {},
|
| | | key: "model_type",
|
| | | value: "模型",
|
| | | },
|
| | | {
|
| | | attributes: {},
|
| | | key: "part_type",
|
| | | value: "零件",
|
| | | },
|
| | | ],
|
| | | dateFormate: "",
|
| | | defaultValue: "",
|
| | | displayExtension: null,
|
| | | extendAttrMap: null,
|
| | | extendAttrString: null,
|
| | | field: "materialclassify",
|
| | | hidden: false,
|
| | | keyAttr: false,
|
| | | prefix: "",
|
| | | readOnly: false,
|
| | | referConfig: null,
|
| | | required: false,
|
| | | selectLibFlag: "",
|
| | | showField: null,
|
| | | suffix: "",
|
| | | text: "物料分类",
|
| | | tooltips: "",
|
| | | type: "combox",
|
| | | unique: false,
|
| | | verify: "",
|
| | | },
|
| | | {
|
| | | comboxKey: null,
|
| | | customClass: null,
|
| | | data: null,
|
| | | dateFormate: "",
|
| | | defaultValue: "",
|
| | | displayExtension: null,
|
| | | extendAttrMap: null,
|
| | | extendAttrString: null,
|
| | | field: "firstfl",
|
| | | hidden: false,
|
| | | keyAttr: false,
|
| | | prefix: "",
|
| | | readOnly: false,
|
| | | referConfig: null,
|
| | | required: false,
|
| | | selectLibFlag: "",
|
| | | showField: null,
|
| | | suffix: "",
|
| | | text: "数字输入框",
|
| | | tooltips: "",
|
| | | type: "number",
|
| | | unique: false,
|
| | | verify: "",
|
| | | },
|
| | | {
|
| | | comboxKey: null,
|
| | | customClass: null,
|
| | | data: null,
|
| | | dateFormate: "yyyy-MM-dd HH:mm:ss",
|
| | | defaultValue: "",
|
| | | displayExtension: null,
|
| | | extendAttrMap: null,
|
| | | extendAttrString: null,
|
| | | field: "secondfl",
|
| | | hidden: false,
|
| | | keyAttr: false,
|
| | | prefix: "",
|
| | | readOnly: false,
|
| | | referConfig: null,
|
| | | required: false,
|
| | | selectLibFlag: "",
|
| | | showField: null,
|
| | | suffix: "",
|
| | | text: "时间选择器",
|
| | | tooltips: "",
|
| | | type: "datetime",
|
| | | unique: false,
|
| | | verify: "",
|
| | | },
|
| | | {
|
| | | comboxKey: null,
|
| | | customClass: null,
|
| | | data: null,
|
| | | dateFormate: "",
|
| | | defaultValue: "",
|
| | | displayExtension: null,
|
| | | extendAttrMap: null,
|
| | | extendAttrString: null,
|
| | | field: "thrifl",
|
| | | hidden: false,
|
| | | keyAttr: true,
|
| | | prefix: "",
|
| | | readOnly: false,
|
| | | referConfig: null,
|
| | | required: false,
|
| | | selectLibFlag: "",
|
| | | showField: null,
|
| | | suffix: "",
|
| | | text: "关键属性",
|
| | | tooltips: "",
|
| | | type: "text",
|
| | | unique: false,
|
| | | verify: "",
|
| | | },
|
| | | {
|
| | | comboxKey: null,
|
| | | customClass: null,
|
| | | data: null,
|
| | | dateFormate: "",
|
| | | defaultValue: "false",
|
| | | displayExtension: null,
|
| | | extendAttrMap: null,
|
| | | extendAttrString: null,
|
| | | field: "xiaoshouwl",
|
| | | hidden: false,
|
| | | keyAttr: false,
|
| | | prefix: "",
|
| | | readOnly: false,
|
| | | referConfig: null,
|
| | | required: false,
|
| | | selectLibFlag: "",
|
| | | showField: null,
|
| | | suffix: "",
|
| | | text: "销售物料",
|
| | | tooltips: "",
|
| | | type: "truefalse",
|
| | | unique: false,
|
| | | verify: "",
|
| | | },
|
| | | {
|
| | | comboxKey: null,
|
| | | customClass: null,
|
| | | data: null,
|
| | | dateFormate: "",
|
| | | defaultValue: "",
|
| | | displayExtension: null,
|
| | | extendAttrMap: null,
|
| | | extendAttrString: null,
|
| | | field: "tuhao",
|
| | | hidden: false,
|
| | | keyAttr: false,
|
| | | prefix: "",
|
| | | readOnly: false,
|
| | | referConfig: null,
|
| | | required: false,
|
| | | selectLibFlag: "",
|
| | | showField: null,
|
| | | suffix: "",
|
| | | text: "图号",
|
| | | tooltips: "提示",
|
| | | type: "text",
|
| | | unique: false,
|
| | | verify: "",
|
| | | },
|
| | | {
|
| | | comboxKey: null,
|
| | | customClass: null,
|
| | | data: null,
|
| | | dateFormate: "",
|
| | | defaultValue: "",
|
| | | displayExtension: null,
|
| | | extendAttrMap: null,
|
| | | extendAttrString: null,
|
| | | field: "xinghaoguige",
|
| | | hidden: false,
|
| | | keyAttr: false,
|
| | | prefix: "",
|
| | | readOnly: false,
|
| | | referConfig: null,
|
| | | required: false,
|
| | | selectLibFlag: "",
|
| | | showField: null,
|
| | | suffix: "",
|
| | | text: "规格型号(CAPP)",
|
| | | tooltips: "",
|
| | | type: "text",
|
| | | unique: false,
|
| | | verify: "",
|
| | | },
|
| | | {
|
| | | comboxKey: null,
|
| | | customClass: null,
|
| | | data: null,
|
| | | dateFormate: "",
|
| | | defaultValue: "",
|
| | | displayExtension: null,
|
| | | extendAttrMap: null,
|
| | | extendAttrString: null,
|
| | | field: "jiliangdw",
|
| | | hidden: false,
|
| | | keyAttr: false,
|
| | | prefix: "",
|
| | | readOnly: false,
|
| | | referConfig: {
|
| | | backPath: "",
|
| | | displayTable: null,
|
| | | height: null,
|
| | | initSort: null,
|
| | | loadType: "all",
|
| | | mapFields: "",
|
| | | method: "GET",
|
| | | muti: false,
|
| | | onlyLeaf: false,
|
| | | paramForFormKey: "",
|
| | | parentFieldName: null,
|
| | | parentUsedField: null,
|
| | | parentValue: null,
|
| | | referContent: null,
|
| | | referType: "appendix",
|
| | | remoteSort: false,
|
| | | tableConfig: {
|
| | | cols: [
|
| | | {
|
| | | align: "left",
|
| | | colspan: 1,
|
| | | comboxKey: null,
|
| | | data: [],
|
| | | dateFormate: null,
|
| | | edit: null,
|
| | | editConfig: null,
|
| | | event: null,
|
| | | field: "id",
|
| | | fieldType: "text",
|
| | | fixed: null,
|
| | | hidden: false,
|
| | | minWidth: null,
|
| | | optionButtons: null,
|
| | | optionField: false,
|
| | | optionJsMap: null,
|
| | | queryField: null,
|
| | | referConfig: null,
|
| | | rowspan: 1,
|
| | | showField: null,
|
| | | sort: true,
|
| | | sortField: "id",
|
| | | style: null,
|
| | | templet: null,
|
| | | title: "编号",
|
| | | unresize: false,
|
| | | width: 150,
|
| | | },
|
| | | {
|
| | | align: "left",
|
| | | colspan: 1,
|
| | | comboxKey: null,
|
| | | data: [],
|
| | | dateFormate: null,
|
| | | edit: null,
|
| | | editConfig: null,
|
| | | event: null,
|
| | | field: "name",
|
| | | fieldType: "text",
|
| | | fixed: null,
|
| | | hidden: false,
|
| | | minWidth: null,
|
| | | optionButtons: null,
|
| | | optionField: false,
|
| | | optionJsMap: null,
|
| | | queryField: null,
|
| | | referConfig: null,
|
| | | rowspan: 1,
|
| | | showField: null,
|
| | | sort: true,
|
| | | sortField: "name",
|
| | | style: null,
|
| | | templet: null,
|
| | | title: "名称",
|
| | | unresize: false,
|
| | | width: 180,
|
| | | },
|
| | | ],
|
| | | oid: null,
|
| | | page: {
|
| | | limit: 15,
|
| | | page: 1,
|
| | | },
|
| | | queryColumns: [
|
| | | {
|
| | | align: "left",
|
| | | colspan: 1,
|
| | | comboxKey: null,
|
| | | data: [],
|
| | | dateFormate: null,
|
| | | edit: null,
|
| | | editConfig: null,
|
| | | event: null,
|
| | | field: "id",
|
| | | fieldType: "text",
|
| | | fixed: null,
|
| | | hidden: false,
|
| | | minWidth: null,
|
| | | optionButtons: null,
|
| | | optionField: false,
|
| | | optionJsMap: null,
|
| | | queryField: null,
|
| | | referConfig: null,
|
| | | rowspan: 1,
|
| | | showField: null,
|
| | | sort: true,
|
| | | sortField: "id",
|
| | | style: null,
|
| | | templet: null,
|
| | | title: "编号",
|
| | | unresize: false,
|
| | | width: 150,
|
| | | },
|
| | | {
|
| | | align: "left",
|
| | | colspan: 1,
|
| | | comboxKey: null,
|
| | | data: [],
|
| | | dateFormate: null,
|
| | | edit: null,
|
| | | editConfig: null,
|
| | | event: null,
|
| | | field: "name",
|
| | | fieldType: "text",
|
| | | fixed: null,
|
| | | hidden: false,
|
| | | minWidth: null,
|
| | | optionButtons: null,
|
| | | optionField: false,
|
| | | optionJsMap: null,
|
| | | queryField: null,
|
| | | referConfig: null,
|
| | | rowspan: 1,
|
| | | showField: null,
|
| | | sort: true,
|
| | | sortField: "name",
|
| | | style: null,
|
| | | templet: null,
|
| | | title: "名称",
|
| | | unresize: false,
|
| | | width: 180,
|
| | | },
|
| | | ],
|
| | | },
|
| | | textField: "name",
|
| | | type: "default",
|
| | | url: "",
|
| | | useFormKey: "",
|
| | | valueField: "oid",
|
| | | where: {
|
| | | materialname: "计量单位",
|
| | | },
|
| | | },
|
| | | required: false,
|
| | | selectLibFlag: "",
|
| | | showField: "jiliangdwname",
|
| | | suffix: "",
|
| | | text: "计量单位",
|
| | | tooltips: "",
|
| | | type: "refer",
|
| | | unique: false,
|
| | | verify: "",
|
| | | },
|
| | | {
|
| | | comboxKey: null,
|
| | | customClass: null,
|
| | | data: null,
|
| | | dateFormate: "",
|
| | | defaultValue: "",
|
| | | displayExtension: null,
|
| | | extendAttrMap: null,
|
| | | extendAttrString: null,
|
| | | field: "chukufangshi",
|
| | | hidden: false,
|
| | | keyAttr: false,
|
| | | prefix: "",
|
| | | readOnly: false,
|
| | | referConfig: null,
|
| | | required: false,
|
| | | selectLibFlag: "",
|
| | | showField: null,
|
| | | suffix: "",
|
| | | text: "出库方式",
|
| | | tooltips: "",
|
| | | type: "text",
|
| | | unique: false,
|
| | | verify: "",
|
| | | },
|
| | | {
|
| | | comboxKey: null,
|
| | | customClass: null,
|
| | | data: null,
|
| | | dateFormate: "",
|
| | | defaultValue: "",
|
| | | displayExtension: null,
|
| | | extendAttrMap: null,
|
| | | extendAttrString: null,
|
| | | field: "beizhushuoming",
|
| | | hidden: false,
|
| | | keyAttr: false,
|
| | | prefix: "",
|
| | | readOnly: false,
|
| | | referConfig: null,
|
| | | required: false,
|
| | | selectLibFlag: "",
|
| | | showField: null,
|
| | | suffix: "",
|
| | | text: "备注说明",
|
| | | tooltips: "",
|
| | | type: "text",
|
| | | unique: false,
|
| | | verify: "",
|
| | | },
|
| | | {
|
| | | comboxKey: null,
|
| | | customClass: null,
|
| | | data: null,
|
| | | dateFormate: "",
|
| | | defaultValue: "",
|
| | | displayExtension: null,
|
| | | extendAttrMap: null,
|
| | | extendAttrString: null,
|
| | | field: "hesuanfenlei",
|
| | | hidden: false,
|
| | | keyAttr: false,
|
| | | prefix: "",
|
| | | readOnly: false,
|
| | | referConfig: {
|
| | | backPath: "",
|
| | | displayTable: null,
|
| | | height: null,
|
| | | initSort: null,
|
| | | loadType: "all",
|
| | | mapFields: "",
|
| | | method: "GET",
|
| | | muti: false,
|
| | | onlyLeaf: false,
|
| | | paramForFormKey: "",
|
| | | parentFieldName: "PARENTCODECLASSIFYOID",
|
| | | parentUsedField: "oid",
|
| | | parentValue:
|
| | | "\\IN(SELECT oid from PLATFORMBTM_CODECLASSIFY where id ='hesuanfenlei')",
|
| | | referContent: null,
|
| | | referType: "codeclassify",
|
| | | remoteSort: false,
|
| | | tableConfig: null,
|
| | | textField: "name",
|
| | | type: "tree",
|
| | | url: "",
|
| | | useFormKey: "",
|
| | | valueField: "oid",
|
| | | where: null,
|
| | | },
|
| | | required: false,
|
| | | selectLibFlag: "",
|
| | | showField: "hesuanfenleiname",
|
| | | suffix: "",
|
| | | text: "核算分类",
|
| | | tooltips: "",
|
| | | type: "refer",
|
| | | unique: false,
|
| | | verify: "",
|
| | | },
|
| | | {
|
| | | comboxKey: "Eummaterialtype",
|
| | | customClass: null,
|
| | | data: null,
|
| | | dateFormate: "",
|
| | | defaultValue: "1001",
|
| | | displayExtension: null,
|
| | | extendAttrMap: null,
|
| | | extendAttrString: null,
|
| | | field: "materialtype",
|
| | | hidden: false,
|
| | | keyAttr: false,
|
| | | prefix: "",
|
| | | readOnly: false,
|
| | | referConfig: null,
|
| | | required: false,
|
| | | selectLibFlag: "",
|
| | | showField: null,
|
| | | suffix: "",
|
| | | text: "物料类型",
|
| | | tooltips: "",
|
| | | type: "combox",
|
| | | unique: false,
|
| | | verify: "",
|
| | | },
|
| | | {
|
| | | comboxKey: "myDataSecret",
|
| | | customClass: null,
|
| | | data: null,
|
| | | dateFormate: "",
|
| | | defaultValue: "",
|
| | | displayExtension: null,
|
| | | extendAttrMap: null,
|
| | | extendAttrString: null,
|
| | | field: "secretgrade",
|
| | | hidden: false,
|
| | | keyAttr: false,
|
| | | prefix: "",
|
| | | readOnly: false,
|
| | | referConfig: null,
|
| | | required: false,
|
| | | selectLibFlag: "",
|
| | | showField: null,
|
| | | suffix: "",
|
| | | text: "secretGrade",
|
| | | tooltips: "",
|
| | | type: "combox",
|
| | | unique: false,
|
| | | verify: "",
|
| | | },
|
| | | ],
|
| | | };
|
| | | },
|
| | | created() {
|
| | | this.preOrSufFixShow();
|
| | | },
|
| | | computed: {
|
| | | dialogVisible: {
|
| | | get() {
|
| | | return this.visible;
|
| | | },
|
| | | set(val) {
|
| | | this.$emit("update:visible", val);
|
| | | },
|
| | | },
|
| | | },
|
| | | methods: {
|
| | | getFormTemplate() {
|
| | | this.loading = true;
|
| | | getFormTemplate({
|
| | | templateOid: "78B8C7C5-A042-0B96-FE6D-65421451782A",
|
| | | codeClassifyOid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96",
|
| | | page: 1,
|
| | | limit: 30,
|
| | | })
|
| | | .then((res) => {
|
| | | if (res.status === 200) {
|
| | | this.templateData = res.data;
|
| | | this.templateRender();
|
| | | }
|
| | | this.loading = false;
|
| | | console.log(res.data);
|
| | | })
|
| | | .catch((err) => {
|
| | | this.loading = false;
|
| | | console.log(err);
|
| | | });
|
| | | },
|
| | | templateRender() {
|
| | | const items = this.testItems;
|
| | | // const items = this.templateData.formDefineVO.items;
|
| | | items.forEach((item) => {
|
| | | // 隐藏表单元素
|
| | | if (item.hide) {
|
| | | return;
|
| | | }
|
| | | // if (item.field === 'id' || item.field === 'lcstatus') {
|
| | | // item.readOnly = true
|
| | | // }
|
| | | // 设置表单校验的规则,文本
|
| | | let message = "请选择";
|
| | | let trigger = "change";
|
| | | if (item.type === "text") {
|
| | | message = "请输入";
|
| | | trigger = "blur";
|
| | | } else if (item.type === "file") {
|
| | | message = "请上传";
|
| | | }
|
| | | let columnItem = {
|
| | | label: item.text,
|
| | | labelslot: true,
|
| | | prop: item.field,
|
| | | type: this.columnType[item.type],
|
| | | dicData: this.getDictData(item.type, item.dicData),
|
| | | disabled: item.readOnly,
|
| | | prepend: this.preOrSufFixShow("text", item.prefix),
|
| | | append: this.preOrSufFixShow("text", item.suffix),
|
| | | prefixIcon: this.preOrSufFixShow("icon", item.prefix),
|
| | | suffixIcon: this.preOrSufFixShow("icon", item.suffix),
|
| | | valueFormat: item.dateFormate,
|
| | | format: item.dateFormate,
|
| | | keyAttr: item.keyAttr,
|
| | | value: 1,
|
| | | rules: [
|
| | | {
|
| | | required: item.required,
|
| | | message: `请${message}${item.text}`,
|
| | | trigger,
|
| | | },
|
| | | {
|
| | | pattern: item.verify,
|
| | | message: item.tooltips,
|
| | | trigger,
|
| | | },
|
| | | ],
|
| | | props: {
|
| | | label: "value",
|
| | | value: "key",
|
| | | },
|
| | | };
|
| | | console.log(this.$refs.form, "form");
|
| | | this.option.column.push(columnItem);
|
| | | });
|
| | | },
|
| | | close() {
|
| | | this.dialogVisible = false;
|
| | | },
|
| | | // 前后缀
|
| | | preOrSufFixShow(type, val) {
|
| | | if (this.$utilFunc.isEmpty(val) && typeof val !== "string") return;
|
| | | const isIcon = val.slice(0, 8) === "el-icon-";
|
| | | if ((type === "text" && !isIcon) || (type === "icon" && isIcon)) {
|
| | | return val;
|
| | | }
|
| | | },
|
| | | // 获取字典数据
|
| | | getDictData(type, dicData) {
|
| | | if (type === "truefalse") {
|
| | | return [
|
| | | {
|
| | | value: "否",
|
| | | key: 0,
|
| | | },
|
| | | {
|
| | | value: "是",
|
| | | key: 1,
|
| | | },
|
| | | ];
|
| | | } else if (type === "combox") {
|
| | | return dicData;
|
| | | }
|
| | | return [];
|
| | | },
|
| | | },
|
| | | watch: {
|
| | | visible(newV) {
|
| | | if (newV) {
|
| | | this.getFormTemplate();
|
| | | }
|
| | | },
|
| | | },
|
| | | };
|
| | | </script>
|
| | |
|
| | | <style lang="scss" scoped>
|
| | | .key_attr_icon {
|
| | | font-size: 24px;
|
| | | position: relative;
|
| | | top: 2px;
|
| | | color: red;
|
| | | }
|
| | | </style>
|
| | | <template> |
| | | <el-dialog |
| | | :visible.sync="dialogVisible" |
| | | v-if="dialogVisible" |
| | | v-dialogDrag |
| | | top="-5vh" |
| | | class="avue-dialog avue-dialog--top" |
| | | :title="title" |
| | | :width="width" |
| | | append-to-body |
| | | @opened="openDialog" |
| | | > |
| | | <FormTemplate |
| | | v-bind="$attrs" |
| | | :type="type" |
| | | :rowOid="rowOid" |
| | | :templateOid="templateOid" |
| | | v-if="dialogVisible" |
| | | ref="FormTemplate" |
| | | @getFormData="getFormData" |
| | | ></FormTemplate> |
| | | <div |
| | | class="tab_box" |
| | | v-if=" |
| | | type !== 'detail' && |
| | | dialogVisible && |
| | | (showCodeApply || showResembleQuery) && |
| | | type !== 'preview' |
| | | " |
| | | > |
| | | <el-tabs v-model="activeName" type="border-card" @tab-click="handleClick"> |
| | | <el-tab-pane label="码值申请" name="codeApply" v-if="showCodeApply"> |
| | | <FormTemplate |
| | | v-bind="$attrs" |
| | | :type="type" |
| | | :selfColumnType="selfColumnType" |
| | | :selfColumnConfig="selfColumnConfig" |
| | | ref="CodeApply" |
| | | @getFormData="getCodeApplyFormData" |
| | | @referConfigDataUpdate="referConfigDataUpdate" |
| | | ></FormTemplate> |
| | | </el-tab-pane> |
| | | <el-tab-pane |
| | | label="相似项查询" |
| | | name="resembleQuery" |
| | | v-if="showResembleQuery" |
| | | > |
| | | <ResembleQuery |
| | | v-bind="$attrs" |
| | | ref="resembleQueryRef" |
| | | :hasResemble="this.hasResemble" |
| | | :column="this.resembleTableColumn" |
| | | :codeClassifyOid="codeClassifyOid" |
| | | :form="this.form" |
| | | :templateOid="templateOid" |
| | | ></ResembleQuery> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | <template #footer> |
| | | <div class="" v-if="type !== 'detail'"> |
| | | <el-button @click="close()" size="small">取 消</el-button> |
| | | <el-button |
| | | @click="submit()" |
| | | type="primary" |
| | | :loading="submitBtnLoading" |
| | | size="small" |
| | | >{{ submitText }}</el-button |
| | | > |
| | | <el-button |
| | | @click="resembleQuerySubmit" |
| | | type="primary" |
| | | size="small" |
| | | v-if="showResembleQuery" |
| | | >相似像查询</el-button |
| | | > |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getCodeRule, getFormTemplate } from "@/api/formTemplate.js"; |
| | | import FormTemplate from "./FormTemplate"; |
| | | import ResembleQuery from "./ResembleQuery"; |
| | | export default { |
| | | name: "FormTemplateDialog", |
| | | components: { ResembleQuery, FormTemplate }, |
| | | props: { |
| | | visible: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | type: { |
| | | type: String, |
| | | default: "add", |
| | | }, |
| | | title: { |
| | | type: String, |
| | | default: "编码申请", |
| | | }, |
| | | width: { |
| | | type: String, |
| | | default: "80%", |
| | | }, |
| | | rowOid: "", |
| | | codeClassifyOid: { |
| | | type: String, |
| | | default: "", |
| | | }, |
| | | templateOid: { |
| | | type: String, |
| | | default: "", |
| | | }, |
| | | submitText: { |
| | | type: String, |
| | | default: "确 定", |
| | | }, |
| | | setForm: { |
| | | type: Object, |
| | | default: () => ({}), |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | | loading: false, |
| | | submitBtnLoading: false, |
| | | hasResemble: false, |
| | | resembleTableColumn: [], |
| | | secVOList: [], |
| | | form: {}, |
| | | codeApplyForm: {}, |
| | | activeName: "codeApply", |
| | | showCodeApply: false, |
| | | showResembleQuery: false, |
| | | selfColumnType: { |
| | | codefixedsec: "combox",//固定码段 |
| | | codeclassifysec: "refer",//分类码段 |
| | | codevariablesec: "text",//可变码段 |
| | | coderefersec: "refer"//引用码段 |
| | | }, |
| | | 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", |
| | | }, |
| | | }, |
| | | }, |
| | | 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", |
| | | ], |
| | | codeRuleOid: "", |
| | | }; |
| | | }, |
| | | created() {}, |
| | | computed: { |
| | | dialogVisible: { |
| | | get() { |
| | | return this.visible; |
| | | }, |
| | | set(val) { |
| | | this.$emit("update:visible", val); |
| | | }, |
| | | }, |
| | | }, |
| | | methods: { |
| | | openDialog() { |
| | | this.getFormTemplate(); |
| | | if (this.type === "add") { |
| | | this.getCodeRule(); |
| | | } |
| | | }, |
| | | close() { |
| | | this.dialogVisible = false; |
| | | }, |
| | | // 接口获取表单数据 |
| | | getFormTemplate() { |
| | | getFormTemplate({ |
| | | templateOid: this.templateOid, |
| | | codeClassifyOid: this.codeClassifyOid, |
| | | }) |
| | | .then((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; |
| | | } |
| | | console.log(this.hasResemble, "this.hasResemblethis.hasResemble"); |
| | | this.$nextTick(() => { |
| | | this.$refs.FormTemplate.templateRender( |
| | | res.data.formDefineVO.items |
| | | ); |
| | | if (Object.keys(this.setForm).length > 0) { |
| | | this.$refs.FormTemplate.form = this.setForm; |
| | | } |
| | | }); |
| | | } |
| | | }) |
| | | .catch(() => { |
| | | this.loading = false; |
| | | }); |
| | | }, |
| | | // 获取码值申请数据 |
| | | getCodeRule() { |
| | | getCodeRule({ codeClassifyOid: this.codeClassifyOid }).then((res) => { |
| | | if (res.data && res.data.code === 200) { |
| | | this.codeRuleOid = res.data.data.oid; |
| | | const typeList = [ |
| | | //固定码段 |
| | | "codefixedsec", |
| | | //分类码段 |
| | | "codeclassifysec", |
| | | //可变码段 |
| | | "codevariablesec", |
| | | //引用码段 |
| | | "coderefersec" |
| | | ]; |
| | | this.secVOList = (res.data.data.secVOList || []).filter((item) => |
| | | typeList.includes(item.secType) |
| | | ); |
| | | if (this.secVOList.length > 0 && this.type === "add") { |
| | | this.showCodeApply = true; |
| | | this.activeName = "codeApply"; |
| | | this.$nextTick(() => { |
| | | this.$refs.CodeApply.templateRender(this.secVOList); |
| | | }); |
| | | } else { |
| | | this.showCodeApply = false; |
| | | } |
| | | } |
| | | console.log(' this.secVOList',this.secVOList) |
| | | console.log(' res.data.data.secVOList',res.data.data.secVOList) |
| | | }); |
| | | }, |
| | | getFormData(form) { |
| | | this.form = form; |
| | | }, |
| | | getCodeApplyFormData(codeApplyForm) { |
| | | this.codeApplyForm = codeApplyForm; |
| | | }, |
| | | // 参照组件数据变更 |
| | | referConfigDataUpdate(data) { |
| | | const { field } = data; |
| | | 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; |
| | | } |
| | | return item; |
| | | }); |
| | | this.$refs.CodeApply.templateRender(this.secVOList); |
| | | }, |
| | | resembleQuerySubmit() { |
| | | this.activeName = "resembleQuery"; |
| | | this.$refs.resembleQueryRef.resembleQuery(this.form); |
| | | }, |
| | | handleClick() { |
| | | if (this.activeName === "resembleQuery") { |
| | | this.resembleQuerySubmit(); |
| | | } |
| | | }, |
| | | async submit() { |
| | | // 进行表单校验 |
| | | const formValidate = await this.$refs.FormTemplate.validate(); |
| | | if (!formValidate) return; |
| | | let codeValidate = true; |
| | | // 进行码值申请校验 |
| | | // if (this.showCodeApply) { |
| | | // codeValidate = await this.$refs.CodeApply.validate(); |
| | | // if (!codeValidate) { |
| | | // this.activeName = "codeApply"; |
| | | // return false; |
| | | // } |
| | | // } |
| | | let resembleQueryList = []; |
| | | if (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); |
| | | debugger |
| | | 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); |
| | | }, |
| | | 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, |
| | | }; |
| | | }, |
| | | getType(item) { |
| | | return this.selfColumnType[item.secType]; |
| | | }, |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | 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 []; |
| | | } |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .key_attr_icon { |
| | | font-size: 24px; |
| | | position: relative; |
| | | top: 2px; |
| | | color: red; |
| | | } |
| | | // 解决swich组件不垂直居中的问题 |
| | | /deep/ .el-switch { |
| | | vertical-align: baseline; |
| | | } |
| | | </style> |