| 1 |
- {"remainingRequest":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\front\\item\\zyAdmin\\src\\pages\\system\\codeGeneration\\components\\TableForm.vue?vue&type=style&index=0&id=1d6abee7&lang=scss&scoped=true","dependencies":[{"path":"D:\\front\\item\\zyAdmin\\src\\pages\\system\\codeGeneration\\components\\TableForm.vue","mtime":1761614939069},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\css-loader\\index.js","mtime":1761614929364},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\loaders\\stylePostLoader.js","mtime":1761614937403},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\postcss-loader\\src\\index.js","mtime":1761614935133},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\sass-loader\\dist\\cjs.js","mtime":1761614936391},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1761614927801},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js","mtime":1761614937402}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:DQouZm9ybS13aWR0aCB7DQogIHdpZHRoOiA1MDBweDsNCn0NCi5pdGVtIHsNCiAgZGlzcGxheTogZmxleDsNCiAgbWFyZ2luLWJvdHRvbTogMTBweDsNCiAgLnJvdyB7DQogICAgd2lkdGg6IDE0MHB4Ow0KICAgIG1hcmdpbi1yaWdodDogMTBweDsNCiAgfQ0KfQ0KLnRhYmxlLW9wdGlvbnMgew0KICBkaXNwbGF5OiBmbGV4Ow0KICBhbGlnbi1pdGVtczogY2VudGVyOw0KICAuY3JlYXRlIHsNCiAgICBmb250LXNpemU6IDE2cHg7DQogICAgbWFyZ2luLWxlZnQ6IDEwcHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICB9DQp9DQoub3B0aW9ucy1saXN0IHsNCiAgLml0ZW0gew0KICAgIGRpc3BsYXk6IGZsZXg7DQogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAgICAuYWRkIHsNCiAgICAgIGZvbnQtc2l6ZTogMThweDsNCiAgICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICAgIG1hcmdpbi1yaWdodDogNXB4Ow0KICAgICAgLy8gY29sb3I6ICMyZDhjZjA7DQogICAgfQ0KICAgIC5kZWxldGUgew0KICAgICAgZm9udC1zaXplOiAxOHB4Ow0KICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgICAgY29sb3I6ICNmYjAxNDQ7DQogICAgfQ0KICB9DQp9DQo6OnYtZGVlcCAuZWwtaW5wdXQtZ3JvdXBfX3ByZXBlbmQgLmVsLXNlbGVjdCB7DQogIHdpZHRoOiA4NnB4Ow0KfQ0KLmRyYWcgew0KICBkaXNwbGF5OiBmbGV4Ow0KICBhbGlnbi1pdGVtczogY2VudGVyOw0KICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsNCiAgLmhhbmRsZSB7DQogICAgd2lkdGg6IDlweDsNCiAgICBoZWlnaHQ6IDE1cHg7DQogIH0NCn0NCi5jb2RlLXRhYmxlLXNlbCA6OnYtZGVlcCAuZWwtaW5wdXRfX2lubmVyIHsNCiAgYm9yZGVyOiBub25lOw0KICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsNCn0NCjo6di1kZWVwIC5lbC1pbnB1dC1ncm91cF9fcHJlcGVuZCBkaXYuZWwtc2VsZWN0IC5lbC1pbnB1dF9faW5uZXIgew0KICBoZWlnaHQ6IDI4cHggIWltcG9ydGFudDsNCiAgbGluZS1oZWlnaHQ6IDI4cHggIWltcG9ydGFudDsNCn0NCjo6di1kZWVwIC5lbC1pbnB1dC1ncm91cF9fcHJlcGVuZCBkaXYuZWwtc2VsZWN0IC5lbC1pbnB1dC0tc21hbGwgLmVsLWlucHV0X19pY29uIHsNCiAgbGluZS1oZWlnaHQ6IDI4cHg7DQp9DQo="},{"version":3,"sources":["TableForm.vue"],"names":[],"mappings":";AAqnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"TableForm.vue","sourceRoot":"src/pages/system/codeGeneration/components","sourcesContent":["<template>\r\n <div class=\"main\">\r\n <el-alert closable class=\"mb14\">\r\n <template v-slot:title>crud生成说明</template>\r\n <template>\r\n <p>\r\n 1、字段配置中表存在生成的字段为表内列的信息,并且主键、伪删除字段不允许设置为列,主键默认展示在列表中,伪删除字段不允许展示\r\n </p>\r\n <p>2、在字段配置中新建表时,主键不需要增加列,会自动增加一行主键id</p>\r\n <p>3、在字段配置中,表单类型为不生成时创建后不会生成对应的表单项</p>\r\n <p>4、添加字段id、create_time、update_time、delete_time为不可用字段</p>\r\n </template>\r\n </el-alert>\r\n <div class=\"df mb14\">\r\n <el-button class=\"mr20\" type=\"primary\" v-db-click @click=\"addRow\">添加一行</el-button>\r\n <el-checkbox class=\"mr10\" v-model=\"isCreate\" @change=\"addCreate\">添加与修改时间</el-checkbox>\r\n <el-checkbox class=\"mr10\" v-model=\"isDelete\" @change=\"addDelete\">伪删除</el-checkbox>\r\n </div>\r\n <div>\r\n <el-table\r\n ref=\"selection\"\r\n :data=\"tableField\"\r\n empty-text=\"暂无数据\"\r\n highlight-current-row\r\n v-loading=\"loading\"\r\n max-height=\"600\"\r\n size=\"small\"\r\n >\r\n <el-table-column label=\"\" min-width=\"40\">\r\n <template slot-scope=\"scope\">\r\n <div class=\"drag\" v-if=\"!disabledInput(scope.$index)\">\r\n <img class=\"handle\" src=\"@/assets/images/drag-icon.png\" alt=\"\" />\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"表单名\" min-width=\"130\">\r\n <template slot-scope=\"scope\">\r\n <el-input\r\n v-model=\"scope.row.table_name\"\r\n :disabled=\"disabledInput(scope.$index) && scope.row.field == 'id'\"\r\n @change=\"(e) => changeComment(e, scope.$index)\"\r\n ></el-input>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"表单类型\" min-width=\"130\">\r\n <template slot-scope=\"scope\">\r\n <el-select\r\n clearable\r\n v-model=\"scope.row.from_type\"\r\n :disabled=\"disabledInput(scope.$index) && scope.row.field == 'id'\"\r\n @change=\"(e) => fromTypeChange(e, scope.$index)\"\r\n >\r\n <el-option\r\n v-for=\"item in fromTypeList\"\r\n :value=\"item.value\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n ></el-option>\r\n </el-select>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"数据字典\" min-width=\"130\">\r\n <template slot-scope=\"scope\">\r\n <div class=\"table-options\" v-if=\"['select', 'radio', 'checkbox'].includes(scope.row.from_type)\">\r\n <el-select clearable v-model=\"scope.row.dictionary_id\">\r\n <el-option\r\n v-for=\"item in dictionaryList\"\r\n :value=\"item.id\"\r\n :key=\"item.id\"\r\n :label=\"item.name\"\r\n ></el-option>\r\n </el-select>\r\n <!-- <i class=\"el-icon-edit create\" v-db-click @click=\"eidtOptions(scope.$index)\" /> -->\r\n </div>\r\n <div v-else>--</div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"必填\" width=\"50\">\r\n <template slot-scope=\"scope\">\r\n <el-checkbox\r\n v-model=\"scope.row.required\"\r\n :disabled=\"disabledInput(scope.$index) && scope.row.field == 'id'\"\r\n ></el-checkbox>\r\n </template>\r\n </el-table-column>\r\n\r\n <el-table-column label=\"查询方式\" min-width=\"130\">\r\n <template slot-scope=\"scope\">\r\n <el-select\r\n clearable\r\n v-model=\"scope.row.search\"\r\n :disabled=\"disabledInput(scope.$index)\"\r\n slot=\"prepend\"\r\n placeholder=\"请选择\"\r\n >\r\n <el-option\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n v-for=\"item in searchType\"\r\n :key=\"item.value\"\r\n ></el-option>\r\n </el-select>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"列表\" width=\"50\">\r\n <template slot-scope=\"scope\">\r\n <el-checkbox\r\n v-model=\"scope.row.is_table\"\r\n :disabled=\"disabledInput(scope.$index) && scope.row.field == 'id'\"\r\n ></el-checkbox>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"字段名称\" min-width=\"120\">\r\n <template slot-scope=\"scope\">\r\n <el-input\r\n :disabled=\"disabledInput(scope.$index)\"\r\n v-model=\"scope.row.field\"\r\n @blur=\"changeField(scope.$index)\"\r\n ></el-input>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"字段类型\" min-width=\"130\">\r\n <template slot-scope=\"scope\">\r\n <el-select\r\n v-model=\"scope.row.field_type\"\r\n :disabled=\"disabledInput(scope.$index)\"\r\n clearable\r\n @change=\"changeItemField($event, scope.$index)\"\r\n >\r\n <el-option v-for=\"item in columnTypeList\" :value=\"item\" :key=\"item\" :label=\"item\"></el-option>\r\n </el-select>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"长度\" min-width=\"80\">\r\n <template slot-scope=\"scope\">\r\n <el-input\r\n v-if=\"scope.row.field_type !== 'enum'\"\r\n v-model=\"scope.row.limit\"\r\n :disabled=\"disabledInput(scope.$index)\"\r\n ></el-input>\r\n <el-select\r\n v-else\r\n v-model=\"scope.row.limit\"\r\n multiple\r\n filterable\r\n allow-create\r\n clearable\r\n default-first-option\r\n placeholder=\"请添加\"\r\n />\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"默认值\" min-width=\"180\">\r\n <template slot-scope=\"scope\">\r\n <el-input\r\n class=\"input-with-select\"\r\n v-model=\"scope.row.default\"\r\n :disabled=\"disabledInput(scope.$index) || scope.row.default_type !== '1'\"\r\n >\r\n <el-select\r\n class=\"code-table-sel\"\r\n clearable\r\n v-model=\"scope.row.default_type\"\r\n slot=\"prepend\"\r\n :disabled=\"disabledInput(scope.$index)\"\r\n placeholder=\"请选择\"\r\n style=\"width: 100px\"\r\n >\r\n <el-option\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n v-for=\"item in defaultType\"\r\n :key=\"item.value\"\r\n ></el-option>\r\n </el-select>\r\n </el-input>\r\n <!-- <el-option v-for=\"item in options\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\"> </el-option> -->\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"字段描述\" min-width=\"130\">\r\n <template slot-scope=\"scope\">\r\n <el-input v-model=\"scope.row.comment\" :disabled=\"disabledInput(scope.$index)\"></el-input>\r\n </template>\r\n </el-table-column>\r\n\r\n <el-table-column label=\"关联表\" min-width=\"130\">\r\n <template slot-scope=\"scope\">\r\n <el-cascader\r\n clearable\r\n filterable\r\n v-model=\"scope.row.hasOne\"\r\n :disabled=\"disabledInput(scope.$index) && scope.row.field == 'id'\"\r\n :options=\"associationTable\"\r\n :props=\"props\"\r\n ></el-cascader>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"索引\" width=\"50\">\r\n <template slot-scope=\"scope\">\r\n <el-checkbox\r\n v-model=\"scope.row.index\"\r\n :disabled=\"disabledInput(scope.$index) && scope.row.field == 'id'\"\r\n ></el-checkbox>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"操作\" fixed=\"right\" width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <a v-if=\"!scope.row.primaryKey && !disabledInput(scope.$index)\" v-db-click @click=\"del(row, scope.$index)\"\r\n >删除</a\r\n >\r\n <span v-else>--</span>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </div>\r\n <el-dialog\r\n :visible.sync=\"optionsModal\"\r\n title=\"字典配置\"\r\n @close=\"beforeChange\"\r\n :close-on-click-modal=\"false\"\r\n width=\"600px\"\r\n >\r\n <div class=\"options-list\">\r\n <el-form ref=\"form\" :inline=\"true\" label-width=\"80px\">\r\n <div class=\"mb10\">\r\n <el-form-item label=\"字典名称:\">\r\n <el-input class=\"mr10\" v-model=\"dictionaryName\" placeholder=\"字典名称\" style=\"width: 310px\" />\r\n </el-form-item>\r\n </div>\r\n <div class=\"item\" v-for=\"(item, index) in optionsList\" :key=\"index\">\r\n <el-form-item label=\"数据名称:\">\r\n <el-input class=\"mr10\" v-model=\"item.label\" placeholder=\"label\" style=\"width: 150px\" />\r\n </el-form-item>\r\n <el-form-item label=\"数据值:\">\r\n <el-input class=\"mr10\" v-model=\"item.value\" placeholder=\"value\" style=\"width: 150px\" />\r\n </el-form-item>\r\n <div style=\"display: inline-block; margin-bottom: 14px\">\r\n <i\r\n v-if=\"index == optionsList.length - 1\"\r\n class=\"el-icon-circle-plus-outline add\"\r\n title=\"新增\"\r\n v-db-click\r\n @click=\"addOneOptions\"\r\n />\r\n <i\r\n v-if=\"index > 0\"\r\n class=\"el-icon-remove-outline delete\"\r\n title=\"删除\"\r\n v-db-click\r\n @click=\"delOneOptions(index)\"\r\n />\r\n </div>\r\n </div>\r\n </el-form>\r\n </div>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button v-db-click @click=\"optionsModal = false\">取 消</el-button>\r\n <el-button type=\"primary\" v-db-click @click=\"addOptions\">确 定</el-button>\r\n </span>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport {\r\n crudMenus,\r\n crudColumnType,\r\n crudDataDictionary,\r\n crudFilePath,\r\n crudAssociationTable,\r\n crudAssociationTableName,\r\n crudDataDictionaryList,\r\n saveCrudDataDictionaryList,\r\n getDataDictionaryList,\r\n} from '@/api/systemCodeGeneration';\r\nimport Sortable from 'sortablejs';\r\nexport default {\r\n name: '',\r\n props: {\r\n foundation: {\r\n type: Object,\r\n default: () => {\r\n return {};\r\n },\r\n },\r\n id: {\r\n type: String | Number,\r\n },\r\n },\r\n data() {\r\n return {\r\n foundationRules: {},\r\n menusList: [],\r\n columnTypeList: [],\r\n optionsModal: false,\r\n isCreate: false,\r\n isDelete: false,\r\n fromTypeList: [],\r\n loading: false,\r\n tableField: [],\r\n optionsList: [],\r\n index: 0,\r\n deleteField: [],\r\n searchType: [],\r\n dictionaryName: '', // 字典名称\r\n defaultType: [], // 默认类型\r\n associationTable: [], // 关联表\r\n dictionaryList: [],\r\n props: {\r\n lazy: true,\r\n options: this.associationTable,\r\n checkStrictly: true,\r\n lazyLoad(node, resolve) {\r\n const { value } = node;\r\n if (value) {\r\n crudAssociationTableName(value).then((res) => {\r\n resolve(res.data);\r\n });\r\n }\r\n // 通过调用resolve将子节点数据返回,通知组件数据加载完成\r\n },\r\n },\r\n };\r\n },\r\n created() {\r\n this.getCrudMenus();\r\n },\r\n mounted() {\r\n this.$nextTick((e) => {\r\n this.setSort();\r\n });\r\n },\r\n methods: {\r\n beforeChange() {\r\n this.getCrudDataDictionary();\r\n },\r\n setSort() {\r\n // ref一定跟table上面的ref一致\r\n const el = this.$refs.selection.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0];\r\n this.sortable = Sortable.create(el, {\r\n ghostClass: 'sortable-ghost',\r\n handle: '.handle',\r\n setData: function (dataTransfer) {\r\n dataTransfer.setData('Text', '');\r\n },\r\n // 监听拖拽事件结束时触发\r\n onEnd: (evt) => {\r\n if (evt.newIndex === 0) {\r\n setTimeout(() => {\r\n this.elChangeExForArray(evt.oldIndex, evt.newIndex, this.tableField, true);\r\n }, 100);\r\n } else {\r\n this.elChangeExForArray(evt.oldIndex, evt.newIndex, this.tableField);\r\n }\r\n },\r\n });\r\n },\r\n elChangeExForArray(index1, index2, array, init) {\r\n const arr = array;\r\n const temp = array[index1];\r\n const tempt = array[index2];\r\n if (init) {\r\n arr[index2] = tempt;\r\n arr[index1] = temp;\r\n } else {\r\n arr[index1] = tempt;\r\n arr[index2] = temp;\r\n }\r\n this.tableField = [];\r\n this.$nextTick((e) => {\r\n this.tableField = arr;\r\n });\r\n },\r\n disabledInput(index) {\r\n let fieldInfo = this.tableField[index];\r\n let res = ['addTimestamps', 'addSoftDelete'].includes(this.tableField[index].field_type);\r\n if (fieldInfo.primaryKey) {\r\n res = true;\r\n } else if (fieldInfo.field === 'delete_time' && fieldInfo.field_type === 'timestamp') {\r\n res = true;\r\n } else if (\r\n (fieldInfo.field === 'create_time' || fieldInfo.field === 'update_time') &&\r\n fieldInfo.field_type === 'timestamp'\r\n ) {\r\n res = true;\r\n }\r\n return res;\r\n },\r\n initfield() {\r\n this.tableField = [];\r\n },\r\n changeItemField(e, i) {\r\n if (e === 'addSoftDelete') {\r\n this.$set(this.tableField[i], 'comment', '伪删除');\r\n }\r\n if (e === 'addTimestamps') {\r\n this.$set(this.tableField[i], 'comment', '添加和修改时间');\r\n }\r\n },\r\n eidtOptions(i) {\r\n this.index = i;\r\n this.dictionaryId = this.tableField[i].dictionary_id || 0;\r\n this.optionsModal = true;\r\n if (this.dictionaryId) {\r\n crudDataDictionaryList(this.dictionaryId).then((res) => {\r\n this.dictionaryName = res.data.name;\r\n this.optionsList = res.data.value || [{ label: '', value: '' }];\r\n });\r\n } else {\r\n this.optionsList = [{ label: '', value: '' }];\r\n }\r\n },\r\n addOptions() {\r\n // this.$set(this.tableField[this.index], 'options', this.optionsList);\r\n let d = {\r\n name: this.dictionaryName,\r\n value: this.optionsList,\r\n };\r\n saveCrudDataDictionaryList(this.dictionaryId, d).then((res) => {\r\n this.optionsModal = false;\r\n this.getCrudDataDictionary();\r\n });\r\n },\r\n changeRadio(status) {\r\n this.tableField = [];\r\n if (status) {\r\n this.addRow();\r\n }\r\n },\r\n initTableName() {\r\n this.tableField = [];\r\n },\r\n addRow() {\r\n for (let i = 0; i < this.tableField.length; i++) {\r\n const el = this.tableField[i];\r\n if ((!el.field || !el.field_type) && !['addTimestamps', 'addSoftDelete'].includes(el.field_type)) {\r\n return this.$message.warning('请先完善上一条数据');\r\n }\r\n if (\r\n el.is_table &&\r\n !el.table_name &&\r\n !Number(el.primaryKey) &&\r\n !['addTimestamps', 'addSoftDelete'].includes(el.field_type)\r\n ) {\r\n return this.$message.warning('请输入列表名');\r\n }\r\n }\r\n let i = this.tableField.length;\r\n let spliceIndex = 0;\r\n this.tableField.map((e) => {\r\n if (e.field === 'create_time' || e.field === 'update_time') {\r\n spliceIndex++;\r\n }\r\n if (e.field === 'delete_time') {\r\n spliceIndex++;\r\n }\r\n });\r\n i = this.tableField.length - spliceIndex;\r\n this.tableField.splice(i, 0, {\r\n field: '',\r\n field_type: '',\r\n default: '',\r\n default_type: '-1',\r\n comment: '',\r\n required: false,\r\n is_table: true,\r\n table_name: '',\r\n limit: '',\r\n primaryKey: 0,\r\n from_type: '',\r\n search: '',\r\n dictionary_id: 0,\r\n hasOne: [],\r\n index: false,\r\n });\r\n // this.tableField.push();\r\n },\r\n addCreate(status) {\r\n if (status) {\r\n let haveCre = this.tableField.findIndex((e) => e.field === 'create_time');\r\n let haveUp = this.tableField.findIndex((e) => e.field === 'update_time');\r\n if (haveCre > 0 || haveUp > 0) {\r\n this.$nextTick((e) => {\r\n this.isCreate = false;\r\n });\r\n return this.$message.warning('已存在 create_time或update_time');\r\n }\r\n let data = [\r\n {\r\n field: 'create_time',\r\n field_type: 'timestamp',\r\n default: '',\r\n default_type: '-1',\r\n comment: '添加时间',\r\n required: false,\r\n is_table: false,\r\n table_name: '添加时间',\r\n limit: '',\r\n primaryKey: 0,\r\n from_type: '',\r\n search: '',\r\n dictionary_id: 0,\r\n hasOne: [],\r\n index: false,\r\n },\r\n {\r\n field: 'update_time',\r\n field_type: 'timestamp',\r\n default_type: '-1',\r\n default: '',\r\n comment: '修改时间',\r\n required: false,\r\n is_table: false,\r\n table_name: '修改时间',\r\n limit: '',\r\n primaryKey: 0,\r\n from_type: '',\r\n search: '',\r\n dictionary_id: 0,\r\n hasOne: [],\r\n index: false,\r\n },\r\n ];\r\n this.tableField = [...this.tableField, ...data];\r\n } else {\r\n let i = this.tableField.findIndex((e) => e.field === 'create_time');\r\n this.tableField.splice(i, 2);\r\n }\r\n },\r\n addDelete(status) {\r\n if (status) {\r\n let haveDel = this.tableField.findIndex((e) => e.field === 'delete_time');\r\n if (haveDel > 0) {\r\n this.isDelete = false;\r\n return this.$message.warning('已存在 delete_time');\r\n }\r\n let data = [\r\n {\r\n field: 'delete_time',\r\n field_type: 'timestamp',\r\n default: '',\r\n default_type: '-1',\r\n comment: '伪删除',\r\n required: false,\r\n is_table: false,\r\n table_name: '伪删除',\r\n limit: '',\r\n primaryKey: 0,\r\n from_type: '',\r\n search: '',\r\n dictionary_id: 0,\r\n hasOne: [],\r\n index: false,\r\n },\r\n ];\r\n this.tableField = [...this.tableField, ...data];\r\n } else {\r\n let i = this.tableField.findIndex((e) => e.field === 'delete_time');\r\n this.tableField.splice(i, 1);\r\n }\r\n },\r\n changeField(index) {\r\n if (this.tableField[index].field) {\r\n for (let i = 0; i < this.tableField.length; i++) {\r\n const e = this.tableField[i];\r\n if (['id', 'create_time', 'update_time', 'delete_time'].includes(this.tableField[index].field)) {\r\n this.$message.warning('列表中已存在该字段名称');\r\n this.tableField[index].field = '';\r\n return;\r\n }\r\n }\r\n }\r\n },\r\n changeComment(e, index) {\r\n if (!this.tableField[index].comment) this.tableField[index].comment = e;\r\n },\r\n fromTypeChange(e, index) {\r\n this.fromTypeList.map((item) => {\r\n if (item.value == e) {\r\n this.tableField[index].limit = item.limit || '';\r\n this.tableField[index].field_type = item.field_type || '';\r\n }\r\n });\r\n // if (!this.tableField[index].comment) this.tableField[index].comment = e;\r\n },\r\n getCrudMenus() {\r\n crudMenus().then((res) => {\r\n this.menusList = res.data;\r\n });\r\n crudColumnType().then((res) => {\r\n this.columnTypeList = res.data.types;\r\n this.fromTypeList = res.data.form;\r\n this.defaultType = res.data.default_type;\r\n this.searchType = res.data.search_type;\r\n });\r\n this.getCrudDataDictionary();\r\n crudAssociationTable().then((res) => {\r\n this.associationTable = res.data;\r\n });\r\n },\r\n getCrudDataDictionary() {\r\n getDataDictionaryList().then((res) => {\r\n this.dictionaryList = res.data.list;\r\n });\r\n },\r\n getCrudAssociationTableName(name) {\r\n crudAssociationTableName(name).then((res) => {\r\n console.log(res);\r\n });\r\n },\r\n del(row, index) {\r\n this.tableField.splice(index, 1);\r\n if (this.id) {\r\n this.deleteField.push(row.field);\r\n }\r\n },\r\n addOneOptions() {\r\n this.optionsList.push({\r\n label: '',\r\n value: '',\r\n });\r\n },\r\n delOneOptions(i) {\r\n this.optionsList.splice(i, 1);\r\n },\r\n },\r\n};\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n.form-width {\r\n width: 500px;\r\n}\r\n.item {\r\n display: flex;\r\n margin-bottom: 10px;\r\n .row {\r\n width: 140px;\r\n margin-right: 10px;\r\n }\r\n}\r\n.table-options {\r\n display: flex;\r\n align-items: center;\r\n .create {\r\n font-size: 16px;\r\n margin-left: 10px;\r\n cursor: pointer;\r\n }\r\n}\r\n.options-list {\r\n .item {\r\n display: flex;\r\n align-items: center;\r\n .add {\r\n font-size: 18px;\r\n cursor: pointer;\r\n margin-right: 5px;\r\n // color: #2d8cf0;\r\n }\r\n .delete {\r\n font-size: 18px;\r\n cursor: pointer;\r\n color: #fb0144;\r\n }\r\n }\r\n}\r\n::v-deep .el-input-group__prepend .el-select {\r\n width: 86px;\r\n}\r\n.drag {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n .handle {\r\n width: 9px;\r\n height: 15px;\r\n }\r\n}\r\n.code-table-sel ::v-deep .el-input__inner {\r\n border: none;\r\n border-color: transparent;\r\n background-color: transparent;\r\n}\r\n::v-deep .el-input-group__prepend div.el-select .el-input__inner {\r\n height: 28px !important;\r\n line-height: 28px !important;\r\n}\r\n::v-deep .el-input-group__prepend div.el-select .el-input--small .el-input__icon {\r\n line-height: 28px;\r\n}\r\n</style>\r\n"]}]}
|