olp-table 7.2.110 → 7.2.112
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle-report.html +3 -3
- package/olp-table.common.js +4 -4
- package/olp-table.umd.js +4 -4
- package/olp-table.umd.min.js +4 -4
- package/package.json +1 -1
package/olp-table.common.js
CHANGED
|
@@ -487,7 +487,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core
|
|
|
487
487
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
488
488
|
|
|
489
489
|
"use strict";
|
|
490
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_table_model_model_index_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/components/table/model/model-index.vue */ \"./src/components/table/model/model-index.vue\");\n/* harmony import */ var _components_ol_dialog_table_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/ol-dialog-table.vue */ \"./src/components/ol-dialog-table.vue\");\n/* harmony import */ var _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/utils/http/httpUtils */ \"./src/utils/http/httpUtils.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'olTableSelect',\n components: {\n OlDialogTable: _components_ol_dialog_table_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n ModelIndex: _components_table_model_model_index_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n props: {\n defaultValue: {\n required: false,\n default: ''\n },\n slotName: {\n required: false\n },\n uuid: {\n required: true\n },\n http: {},\n config: {},\n disabled: {\n default: false\n }\n },\n provide() {\n return {\n tableAll: this.table,\n http: this.http\n };\n },\n data() {\n return {\n selectDataList: [],\n dialogVisible: false,\n selectValue: {\n value: this.defaultValue,\n label: '',\n data: []\n },\n dialogKey: 1\n };\n },\n watch: {\n defaultValue() {\n this.selectValue.value = this.defaultValue;\n }\n },\n computed: {\n selectionMode() {\n return this.config.rowSelect ? 'none' : '';\n },\n tableInitConfig() {\n return {\n uuid: this.uuid,\n title: '选择数据',\n mode: this.selectionMode\n };\n }\n },\n methods: {\n //打开表格选择组件\n openTable() {\n if (this.disabled) {\n return;\n }\n this.dialogKey++; //每次打开对话框时,key值加1,防止对话框重复渲染\n this.dialogVisible = true; //打开对话框\n this.$refs.table.init(this.tableInitConfig);\n },\n //选中数据按钮回调\n getSelectRowChangeButClick({\n v\n }) {\n if (!v) {\n return;\n }\n let rows = v;\n if (rows.length === 0) {\n this.clearedSelectValue(); //清空下拉框的值\n this.dialogVisible = false; //关闭对话框\n return;\n }\n for (const row of rows) {\n let label = this.config.labelIsAppendCode ? `[${row[this.config.key]}]${row[this.config.label]}` : row[this.config.label];\n this.selectDataList.push({\n label: label,\n value: row[this.config.key]\n });\n }\n\n //选中第一行数据,目前暂时支持单选\n this.selectValue = {\n value: rows[0][this.config.key],\n label: rows[0][this.config.label],\n data: rows[0]\n };\n this.updateValue(); //更新下拉框的值\n this.dialogVisible = false; //关闭对话框\n this.$refs.table.cancelEvent();\n },\n //关闭选择数据按钮回调\n getSelectRowCloseButClick() {\n this.dialogVisible = false;\n },\n //更新父组件的值\n updateValue() {\n this.$emit('olTableSelectChange', this.slotName, this.selectValue);\n },\n clearedSelectValue() {\n this.selectValue = {\n value: '',\n label: '',\n data: []\n };\n this.updateValue(); //更新下拉框的值\n this.$refs.table.cancelEvent();\n },\n initDefaultValue() {\n
|
|
490
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_table_model_model_index_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/components/table/model/model-index.vue */ \"./src/components/table/model/model-index.vue\");\n/* harmony import */ var _components_ol_dialog_table_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/ol-dialog-table.vue */ \"./src/components/ol-dialog-table.vue\");\n/* harmony import */ var _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/utils/http/httpUtils */ \"./src/utils/http/httpUtils.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'olTableSelect',\n components: {\n OlDialogTable: _components_ol_dialog_table_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n ModelIndex: _components_table_model_model_index_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n props: {\n defaultValue: {\n required: false,\n default: ''\n },\n slotName: {\n required: false\n },\n uuid: {\n required: true\n },\n http: {},\n config: {},\n disabled: {\n default: false\n }\n },\n provide() {\n return {\n tableAll: this.table,\n http: this.http\n };\n },\n data() {\n return {\n selectDataList: [],\n dialogVisible: false,\n selectValue: {\n value: this.defaultValue,\n label: '',\n data: []\n },\n dialogKey: 1\n };\n },\n watch: {\n defaultValue() {\n this.selectValue.value = this.defaultValue;\n }\n },\n computed: {\n selectionMode() {\n return this.config.rowSelect ? 'none' : '';\n },\n tableInitConfig() {\n return {\n uuid: this.uuid,\n title: '选择数据',\n mode: this.selectionMode\n };\n }\n },\n methods: {\n //打开表格选择组件\n openTable() {\n if (this.disabled) {\n return;\n }\n this.dialogKey++; //每次打开对话框时,key值加1,防止对话框重复渲染\n this.dialogVisible = true; //打开对话框\n this.$refs.table.init(this.tableInitConfig);\n },\n //选中数据按钮回调\n getSelectRowChangeButClick({\n v\n }) {\n if (!v) {\n return;\n }\n let rows = v;\n if (rows.length === 0) {\n this.clearedSelectValue(); //清空下拉框的值\n this.dialogVisible = false; //关闭对话框\n return;\n }\n for (const row of rows) {\n let label = this.config.labelIsAppendCode ? `[${row[this.config.key]}]${row[this.config.label]}` : row[this.config.label];\n this.selectDataList.push({\n label: label,\n value: row[this.config.key]\n });\n }\n\n //选中第一行数据,目前暂时支持单选\n this.selectValue = {\n value: rows[0][this.config.key],\n label: rows[0][this.config.label],\n data: rows[0]\n };\n this.updateValue(); //更新下拉框的值\n this.dialogVisible = false; //关闭对话框\n this.$refs.table.cancelEvent();\n },\n //关闭选择数据按钮回调\n getSelectRowCloseButClick() {\n this.dialogVisible = false;\n },\n //更新父组件的值\n updateValue() {\n this.$emit('olTableSelectChange', this.slotName, this.selectValue);\n },\n clearedSelectValue() {\n this.selectValue = {\n value: '',\n label: '',\n data: []\n };\n this.updateValue(); //更新下拉框的值\n this.$refs.table.cancelEvent();\n },\n initDefaultValue() {\n if (!this.defaultValue?.toString().trim()) {\n return;\n }\n let params = {\n id: this.uuid,\n theme: \"t1\",\n enablePage: false,\n queryParameterListAnd: [{\n key: this.config.key,\n value: this.defaultValue\n }]\n };\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_3__.postAes)(this.http, '/online/crudAes/query', params, false, false).then(({\n data\n }) => {\n this.getSelectRowChangeButClick({\n v: data.listData\n });\n });\n }\n },\n created() {\n this.initDefaultValue();\n }\n});\n\n//# sourceURL=webpack://olp-table/./src/components/ol-table-select.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
|
|
491
491
|
|
|
492
492
|
/***/ }),
|
|
493
493
|
|
|
@@ -982,7 +982,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core
|
|
|
982
982
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
983
983
|
|
|
984
984
|
"use strict";
|
|
985
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.iterator.constructor.js */ \"./node_modules/core-js/modules/es.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_es_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.iterator.filter.js */ \"./node_modules/core-js/modules/es.iterator.filter.js\");\n/* harmony import */ var core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.iterator.for-each.js */ \"./node_modules/core-js/modules/es.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_es_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _views_table_add_or_edit_config_base_config_index_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/views/table/add-or-edit/config/base-config/index.vue */ \"./src/views/table/add-or-edit/config/base-config/index.vue\");\n/* harmony import */ var _views_table_add_or_edit_config_column_config_index_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/views/table/add-or-edit/config/column-config/index.vue */ \"./src/views/table/add-or-edit/config/column-config/index.vue\");\n/* harmony import */ var _views_table_add_or_edit_config_table_config_index_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/views/table/add-or-edit/config/table-config/index.vue */ \"./src/views/table/add-or-edit/config/table-config/index.vue\");\n/* harmony import */ var _views_table_add_or_edit_config_form_config_index_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/views/table/add-or-edit/config/form-config/index.vue */ \"./src/views/table/add-or-edit/config/form-config/index.vue\");\n/* harmony import */ var _views_table_add_or_edit_config_initFormObject_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/views/table/add-or-edit/config/initFormObject.js */ \"./src/views/table/add-or-edit/config/initFormObject.js\");\n/* harmony import */ var _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/utils/http/httpUtils */ \"./src/utils/http/httpUtils.js\");\n/* harmony import */ var _utils_message__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/utils/message */ \"./src/utils/message.js\");\n/* harmony import */ var _views_table_add_or_edit_config_card_config_index_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/views/table/add-or-edit/config/card-config/index.vue */ \"./src/views/table/add-or-edit/config/card-config/index.vue\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n __name: 'index',\n emits: [\"emits\"],\n setup(__props, {\n expose: __expose,\n emit: __emit\n }) {\n const msg = (0,_utils_message__WEBPACK_IMPORTED_MODULE_11__.useMessage)(); // 消息弹窗\n const refMap = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)({});\n const setRefMap = (el, item) => {\n if (el) {\n refMap.value[item] = el;\n }\n };\n const http = (0,vue__WEBPACK_IMPORTED_MODULE_4__.inject)(\"http\");\n const show = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)(false);\n const loading = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)(true);\n const baseConfig = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)(null);\n const tableConfig = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)(null);\n const cardConfig = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)(null);\n const columnConfig = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)(null);\n const columns = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)([]);\n const mainConfig = (0,vue__WEBPACK_IMPORTED_MODULE_4__.reactive)({\n o: {},\n uuids: '',\n v: {}\n });\n const provides = (0,vue__WEBPACK_IMPORTED_MODULE_4__.reactive)({\n loadingText: '正在获取数据...',\n form: {\n mainTable: '',\n hump: '0',\n definitionSql: '0',\n executeSql: '',\n executeWhere: '',\n parameterDefault: '',\n paging: '1',\n selectBox: '2',\n tips: '1',\n tree: '0',\n treeParentId: '',\n selectChildren: '',\n openColumn: '',\n operationBut: [],\n tableDelete: {},\n toolBut: [],\n parentId: '',\n theme: '',\n toolButOptions: [],\n operationButOptions: []\n },\n updateIndex: 0,\n tableColumn: [],\n tableOption: '{}',\n operationButConfig: [],\n toolButConfig: []\n });\n const activeName = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)('baseConfig');\n\n //列配置多选框更新\n const columnCheckBoxChange = ({\n row,\n column\n }) => {\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.nextTick)(() => {\n if (column.field == 'addDisplay' && refMap.value['add']) {\n //新增多选点击\n refMap.value['add'].updateData(row, column);\n } else if (column.field == 'editDisplay' && refMap.value['edit']) {\n refMap.value['edit'].updateData(row, column);\n }\n });\n };\n function updateShow(v) {\n if (v == 'columnConfig') {\n columnConfig.value.setShow(true);\n } else if (refMap.value[v]) {\n refMap.value[v].setShow(true);\n refMap.value[v].setUpdateKey(getDeleteKey(provides));\n }\n }\n function getDeleteKey(data) {\n return data?.form?.deleteWhere?.wheres?.split('=')[0]?.trim() || null;\n }\n\n //列配置全选框更新\n const columnCheckBoxAll = ({\n checkBoxName,\n isAll,\n list\n }) => {\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.nextTick)(() => {\n //新增全选和全不选\n if (refMap.value[checkBoxName]) {\n refMap.value[checkBoxName].setAll({\n list,\n isAll\n });\n }\n });\n };\n function setOtherProp(item) {\n let filedToOtherProp = Object.keys(item).filter(item => item.indexOf(\"ToOtherProp\") != -1);\n if (filedToOtherProp.length != 0) {\n let otherProp = {};\n if (item.otherProp) {\n try {\n otherProp = JSON.parse(item.otherProp);\n if (!otherProp) {\n otherProp = {};\n }\n } catch (e) {}\n }\n for (let filed of filedToOtherProp) {\n otherProp[filed] = item[filed];\n }\n //将展开行的表单设置为json的形式传给其他属性\n item.otherProp = JSON.stringify(otherProp);\n }\n }\n const saveClickCp = () => {\n let uuids = mainConfig.uuids.toString().split(\",\");\n if (uuids.length != 2) {\n msg.error(\"请填写格式为:uuid,theme\");\n return;\n }\n //init({o, v},uuid,theme)\n init({\n o: mainConfig.o,\n v: mainConfig.v\n }, uuids[0], uuids[1]);\n };\n //点击保存\n const saveClick = () => {\n let columnConfigData = columnConfig.value.gridOptions.data;\n baseConfig.value.parseData(provides.form);\n if ((provides.form.toolBut.indexOf(\"batchDelete\") != -1 || provides.form.operationBut.indexOf(\"delete\") != -1) && !provides.form.deleteWhere) {\n msg.error(\"您启用删除功能,请填写删除条件!\");\n return;\n }\n // let tableConfigData = provides.form.tableType === '1' ? tableConfig.value: cardConfig.value\n let tableConfigData = tableConfig.value;\n //保存列配置\n columnConfigData.forEach(item => {\n setOtherProp(item);\n item.field = item.field.toString().trim();\n //下拉值为空字符串时置为Null处理\n item.selectType = item.selectType != '' ? item.selectType : null;\n item.tableField = item.tableField ? item.tableField : item.field;\n item.fixed = item.fixed != '' ? item.fixed : null;\n item.selectDom = item.selectDom != '' ? item.selectDom : null;\n });\n provides.tableColumn = columnConfigData;\n provides.tableGroupHeader = columnConfig.value.getGroupColumnData();\n let options = tableConfigData.getOptions();\n provides.form.optionJson = JSON.stringify(options);\n if (refMap.value['add'] && refMap.value['add'].getData()) {\n try {\n JSON.parse(refMap.value['add'].getData().codeForm);\n } catch (e) {\n console.error(e);\n msg.error('解析编码设计json失败,请检查对象格式是否正确' + e);\n return;\n }\n }\n setFormList();\n if (provides.form.operationBut.includes('edit') && provides.formMainList) {\n for (const item of provides.formMainList) {\n // 基础表单 编辑时,更新条件或保存路径不能为空!\n if (item.formMain.designer == '0' && item.formMain.formType == 'edit' && item.formMain.updateKey.trim() == '' && item.formMain.saveUrl.trim() == '') {\n activeName.value = 'edit';\n msg.error(\"基础表单 编辑时,更新条件或保存路径不能为空!\");\n return;\n }\n }\n }\n saveData();\n };\n function setFormList() {\n //保存新增和编辑表单配置\n provides.formMainList = [];\n for (let key of Object.keys(refMap.value)) {\n provides.formMainList.push(getFormMain(refMap.value[key]));\n }\n }\n function getFormMain(formConfig) {\n let form = formConfig.getForm();\n let formConfigData = formConfig.getData();\n let formMain = {\n uuid: provides.form.uuid\n };\n let formJson = {};\n if (formConfigData) {\n formMain.designer = \"\" + formConfigData.designer; //表单类型 (0)基础表单 (1)自定义表单\n formMain.customForm = formConfigData.customForm;\n formJson.optionJson = formConfigData.codeForm;\n formJson.customJson = JSON.stringify(formConfigData.customJson);\n }\n for (let key of Object.keys(form)) {\n formMain[key] = form[key];\n }\n return {\n formMain,\n formJson\n };\n }\n function saveData() {\n loading.value = true;\n // baseConfig.value.setDeleteTable();\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_10__.post)(http, \"/online/tableConfig/saveJson\", (0,vue__WEBPACK_IMPORTED_MODULE_4__.toRaw)(provides), undefined, false).then(({\n code\n }) => {\n if (code == 200) {\n show.value = false;\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.nextTick)(() => {\n emits('configClose', provides.form.theme);\n });\n }\n }).finally(() => {\n loading.value = false;\n });\n }\n\n //数据配置更新数据表\n function updateTable(data) {\n columnConfig.value.updateData(data);\n loading.value = false;\n }\n const updateCurd = () => {\n columnConfig.value.setAddDisplay(\"1\");\n columnConfig.value.setEditDisplay(\"1\");\n };\n\n //配置中心更新数据\n function tableConfigChange(map) {\n columnConfig.value.updateColumnConfig(map);\n }\n const updateBtnData = (options, type) => {\n let butType = type.substr(0, type.indexOf('Options'));\n for (let i = options.length - 1; i >= 0; i--) {\n let o = options[i];\n if (provides.form[butType].indexOf(o.code) == -1) {\n provides.form[butType].push(o.code);\n }\n }\n provides.form[type] = options;\n };\n function initForm(res) {\n res.form = JSON.parse(JSON.stringify(_views_table_add_or_edit_config_initFormObject_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]));\n res.tableColumn = [];\n }\n function parseOtherProp(res) {\n if (!res.tableColumn) {\n return;\n }\n for (let column of res.tableColumn) {\n if (column.otherProp && column.otherProp != '') {\n try {\n let otherProp = JSON.parse(column.otherProp);\n for (let key of Object.keys(otherProp)) {\n column[key] = otherProp[key];\n }\n } catch (e) {}\n }\n }\n }\n function setCardToolButConfig(type) {\n if (type === '2') {\n const excludedCodes = ['upload', 'download', 'olp_fullscreen', 'olp_setting', 'olp_search'];\n provides.toolButConfig = provides.toolButConfig.filter(o => !excludedCodes.includes(o.code));\n }\n }\n function init({\n o,\n v\n }, uuid, theme) {\n show.value = true;\n loading.value = true;\n mainConfig.v = v;\n mainConfig.o = o;\n provides.loadingText = \"正在加载数据...\";\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_10__.get)(http, \"/online/tableConfig/getJson\", {\n uuid: uuid ? uuid : theme,\n theme: theme ? theme : o\n }).then(res => {\n parseOtherProp(res);\n provides.toolButConfig = res.toolButConfig;\n provides.operationButConfig = res.operationButConfig;\n if (res.newConfig && !uuid) {\n initForm(res);\n res.form.parentId = v.parentId;\n res.form.uuid = v.uuid;\n res.form.theme = o;\n }\n if (uuid) {\n res.form.parentId = v.parentId;\n res.form.uuid = v.uuid;\n res.form.theme = o;\n delete res.form.version;\n }\n res.form.tableType = v.type;\n setCardToolButConfig(v.type);\n if (res.form?.deleteWhere?.wheres && !res.form.cardKey) {\n res.form.cardKey = getDeleteKey(res);\n }\n provides.form = res.form;\n if (!res.form.optionJson) {\n res.form.optionJson = \"{}\";\n }\n // 将json解析为对象\n provides.form.optionObj = JSON.parse(res.form.optionJson);\n if (provides.form.optionObj.table) {\n provides.form.tableObj = provides.form.optionObj.table;\n } else {\n provides.form.tableObj = {};\n }\n provides.tableColumn = res.tableColumn;\n provides.groupColumns = res.groupColumns;\n columnConfig.value.setData(res.tableColumn, res.groupColumns);\n baseConfig.value.setData(res.form);\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.nextTick)(() => {\n tableConfig.value.setData(res.form);\n // if (provides.form.tableType === '1') {\n // tableConfig.value.setData(res.form)\n // } else {\n // cardConfig.value.setData(res.form)\n // }\n });\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.nextTick)(() => {\n if (res.formMainList) {\n for (let obj of provides.form.toolButOptions) {\n let data = res.formMainList[obj.code];\n if (data && refMap.value[obj.code]) {\n refMap.value[obj.code].setData(data);\n }\n }\n for (let obj of provides.form.operationButOptions) {\n let data = res.formMainList[obj.code];\n if (data && refMap.value[obj.code]) {\n refMap.value[obj.code].setData(data);\n }\n }\n }\n });\n loading.value = false;\n }).catch(() => {\n loading.value = false;\n });\n }\n function copeTheme({\n o,\n v\n }) {\n show.value = true;\n loading.value = true;\n provides.loadingText = \"正在加载数据...\";\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_10__.get)(http, \"/online/tableConfig/getJson\", {\n uuid: v.uuid,\n theme: o\n }).then(res => {\n parseOtherProp(res);\n provides.toolButConfig = res.toolButConfig;\n provides.operationButConfig = res.operationButConfig;\n if (res.newConfig) {\n initForm(res);\n res.form.parentId = v.parentId;\n res.form.uuid = v.uuid;\n res.form.theme = o;\n }\n res.form.tableType = v.type;\n setCardToolButConfig(v.type);\n if (res.form?.deleteWhere?.wheres && !res.form.cardKey) {\n res.form.cardKey = getDeleteKey(res);\n }\n provides.form = res.form;\n if (!res.form.optionJson) {\n res.form.optionJson = \"{}\";\n }\n // 将json解析为对象\n provides.form.optionObj = JSON.parse(res.form.optionJson);\n if (provides.form.optionObj.table) {\n provides.form.tableObj = provides.form.optionObj.table;\n } else {\n provides.form.tableObj = {};\n }\n provides.tableColumn = res.tableColumn;\n provides.groupColumns = res.groupColumns;\n columnConfig.value.setData(res.tableColumn, res.groupColumns);\n baseConfig.value.setData(res.form);\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.nextTick)(() => {\n tableConfig.value.setData(res.form);\n // if (provides.form.tableType === '1') {\n // tableConfig.value.setData(res.form)\n // } else {\n // cardConfig.value.setData(res.form)\n // }\n });\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.nextTick)(() => {\n if (res.formMainList) {\n for (let obj of provides.form.toolButOptions) {\n let data = res.formMainList[obj.code];\n if (data && refMap.value[obj.code]) {\n refMap.value[obj.code].setData(data);\n }\n }\n for (let obj of provides.form.operationButOptions) {\n let data = res.formMainList[obj.code];\n if (data && refMap.value[obj.code]) {\n refMap.value[obj.code].setData(data);\n }\n }\n }\n });\n loading.value = false;\n }).catch(() => {\n loading.value = false;\n });\n }\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.provide)('configData', provides);\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.provide)('updateBtnData', updateBtnData);\n const emits = (m, v) => {\n if (m == \"updateVisible\") {\n baseConfig.value.refreshColumn();\n } else {\n emit(\"emits\", {\n m: m,\n v\n });\n }\n };\n\n // 子组件调用父组件\n const emit = __emit; //声明 emits\n __expose({\n init\n });\n const __returned__ = {\n msg,\n refMap,\n setRefMap,\n http,\n show,\n loading,\n baseConfig,\n tableConfig,\n cardConfig,\n columnConfig,\n columns,\n mainConfig,\n provides,\n activeName,\n columnCheckBoxChange,\n updateShow,\n getDeleteKey,\n columnCheckBoxAll,\n setOtherProp,\n saveClickCp,\n saveClick,\n setFormList,\n getFormMain,\n saveData,\n updateTable,\n updateCurd,\n tableConfigChange,\n updateBtnData,\n initForm,\n parseOtherProp,\n setCardToolButConfig,\n init,\n copeTheme,\n emits,\n emit,\n inject: vue__WEBPACK_IMPORTED_MODULE_4__.inject,\n nextTick: vue__WEBPACK_IMPORTED_MODULE_4__.nextTick,\n provide: vue__WEBPACK_IMPORTED_MODULE_4__.provide,\n reactive: vue__WEBPACK_IMPORTED_MODULE_4__.reactive,\n ref: vue__WEBPACK_IMPORTED_MODULE_4__.ref,\n toRaw: vue__WEBPACK_IMPORTED_MODULE_4__.toRaw,\n BaseConfig: _views_table_add_or_edit_config_base_config_index_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n ColumnConfig: _views_table_add_or_edit_config_column_config_index_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n TableConfig: _views_table_add_or_edit_config_table_config_index_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n FormConfig: _views_table_add_or_edit_config_form_config_index_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n get initFormObject() {\n return _views_table_add_or_edit_config_initFormObject_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"];\n },\n get get() {\n return _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_10__.get;\n },\n get post() {\n return _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_10__.post;\n },\n get useMessage() {\n return _utils_message__WEBPACK_IMPORTED_MODULE_11__.useMessage;\n },\n CardConfig: _views_table_add_or_edit_config_card_config_index_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://olp-table/./src/views/table/add-or-edit/config/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
|
|
985
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.iterator.constructor.js */ \"./node_modules/core-js/modules/es.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_es_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.iterator.filter.js */ \"./node_modules/core-js/modules/es.iterator.filter.js\");\n/* harmony import */ var core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.iterator.for-each.js */ \"./node_modules/core-js/modules/es.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_es_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _views_table_add_or_edit_config_base_config_index_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/views/table/add-or-edit/config/base-config/index.vue */ \"./src/views/table/add-or-edit/config/base-config/index.vue\");\n/* harmony import */ var _views_table_add_or_edit_config_column_config_index_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/views/table/add-or-edit/config/column-config/index.vue */ \"./src/views/table/add-or-edit/config/column-config/index.vue\");\n/* harmony import */ var _views_table_add_or_edit_config_table_config_index_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/views/table/add-or-edit/config/table-config/index.vue */ \"./src/views/table/add-or-edit/config/table-config/index.vue\");\n/* harmony import */ var _views_table_add_or_edit_config_form_config_index_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/views/table/add-or-edit/config/form-config/index.vue */ \"./src/views/table/add-or-edit/config/form-config/index.vue\");\n/* harmony import */ var _views_table_add_or_edit_config_initFormObject_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/views/table/add-or-edit/config/initFormObject.js */ \"./src/views/table/add-or-edit/config/initFormObject.js\");\n/* harmony import */ var _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/utils/http/httpUtils */ \"./src/utils/http/httpUtils.js\");\n/* harmony import */ var _utils_message__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/utils/message */ \"./src/utils/message.js\");\n/* harmony import */ var _views_table_add_or_edit_config_card_config_index_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/views/table/add-or-edit/config/card-config/index.vue */ \"./src/views/table/add-or-edit/config/card-config/index.vue\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n __name: 'index',\n emits: [\"emits\"],\n setup(__props, {\n expose: __expose,\n emit: __emit\n }) {\n const msg = (0,_utils_message__WEBPACK_IMPORTED_MODULE_11__.useMessage)(); // 消息弹窗\n const refMap = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)({});\n const setRefMap = (el, item) => {\n if (el) {\n refMap.value[item] = el;\n }\n };\n const http = (0,vue__WEBPACK_IMPORTED_MODULE_4__.inject)(\"http\");\n const show = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)(false);\n const loading = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)(true);\n const baseConfig = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)(null);\n const tableConfig = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)(null);\n const cardConfig = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)(null);\n const columnConfig = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)(null);\n const columns = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)([]);\n const mainConfig = (0,vue__WEBPACK_IMPORTED_MODULE_4__.reactive)({\n o: {},\n uuids: '',\n v: {}\n });\n const provides = (0,vue__WEBPACK_IMPORTED_MODULE_4__.reactive)({\n loadingText: '正在获取数据...',\n form: {\n mainTable: '',\n hump: '0',\n definitionSql: '0',\n executeSql: '',\n executeWhere: '',\n parameterDefault: '',\n paging: '1',\n selectBox: '2',\n tips: '1',\n tree: '0',\n treeParentId: '',\n selectChildren: '',\n openColumn: '',\n operationBut: [],\n tableDelete: {},\n toolBut: [],\n parentId: '',\n theme: '',\n toolButOptions: [],\n operationButOptions: []\n },\n updateIndex: 0,\n tableColumn: [],\n tableOption: '{}',\n operationButConfig: [],\n toolButConfig: []\n });\n const activeName = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)('baseConfig');\n\n //列配置多选框更新\n const columnCheckBoxChange = ({\n row,\n column\n }) => {\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.nextTick)(() => {\n if (column.field == 'addDisplay' && refMap.value['add']) {\n //新增多选点击\n refMap.value['add'].updateData(row, column);\n } else if (column.field == 'editDisplay' && refMap.value['edit']) {\n refMap.value['edit'].updateData(row, column);\n }\n });\n };\n function updateShow(v) {\n if (v == 'columnConfig') {\n columnConfig.value.setShow(true);\n } else if (refMap.value[v]) {\n refMap.value[v].setShow(true);\n refMap.value[v].setUpdateKey(getDeleteKey(provides));\n }\n }\n function getDeleteKey(data) {\n return data?.form?.deleteWhere?.wheres?.split('=')[0]?.trim() || null;\n }\n\n //列配置全选框更新\n const columnCheckBoxAll = ({\n checkBoxName,\n isAll,\n list\n }) => {\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.nextTick)(() => {\n //新增全选和全不选\n if (refMap.value[checkBoxName]) {\n refMap.value[checkBoxName].setAll({\n list,\n isAll\n });\n }\n });\n };\n function setOtherProp(item) {\n let filedToOtherProp = Object.keys(item).filter(item => item.indexOf(\"ToOtherProp\") != -1);\n if (filedToOtherProp.length != 0) {\n let otherProp = {};\n if (item.otherProp) {\n try {\n otherProp = JSON.parse(item.otherProp);\n if (!otherProp) {\n otherProp = {};\n }\n } catch (e) {}\n }\n for (let filed of filedToOtherProp) {\n otherProp[filed] = item[filed];\n }\n //将展开行的表单设置为json的形式传给其他属性\n item.otherProp = JSON.stringify(otherProp);\n }\n }\n const saveClickCp = () => {\n let uuids = mainConfig.uuids.toString().split(\",\");\n if (uuids.length != 2) {\n msg.error(\"请填写格式为:uuid,theme\");\n return;\n }\n //init({o, v},uuid,theme)\n init({\n o: mainConfig.o,\n v: mainConfig.v\n }, uuids[0], uuids[1]);\n };\n //点击保存\n const saveClick = () => {\n let columnConfigData = columnConfig.value.gridOptions.data;\n baseConfig.value.parseData(provides.form);\n if ((provides.form.toolBut.indexOf(\"batchDelete\") != -1 || provides.form.operationBut.indexOf(\"delete\") != -1) && !provides.form.deleteWhere) {\n msg.error(\"您启用删除功能,请填写删除条件!\");\n return;\n }\n // let tableConfigData = provides.form.tableType === '1' ? tableConfig.value: cardConfig.value\n let tableConfigData = tableConfig.value;\n //保存列配置\n columnConfigData.forEach(item => {\n setOtherProp(item);\n item.field = item.field.toString().trim();\n //下拉值为空字符串时置为Null处理\n item.selectType = item.selectType != '' ? item.selectType : null;\n item.tableField = item.tableField ? item.tableField : item.field;\n item.fixed = item.fixed != '' ? item.fixed : null;\n item.selectDom = item.selectDom != '' ? item.selectDom : null;\n });\n provides.tableColumn = columnConfigData;\n provides.tableGroupHeader = columnConfig.value.getGroupColumnData();\n let options = tableConfigData.getOptions();\n provides.form.optionJson = JSON.stringify(options);\n if (refMap.value['add'] && refMap.value['add'].getData()) {\n try {\n JSON.parse(refMap.value['add'].getData().codeForm);\n } catch (e) {\n console.error(e);\n msg.error('解析编码设计json失败,请检查对象格式是否正确' + e);\n return;\n }\n }\n setFormList();\n if (provides.form.operationBut.includes('edit') && provides.formMainList) {\n for (const item of provides.formMainList) {\n // 基础表单 编辑时,更新条件或保存路径不能为空!\n if (item.formMain.designer == '0' && item.formMain.formType == 'edit' && item.formMain.updateKey.trim() == '' && item.formMain.saveUrl.trim() == '') {\n activeName.value = 'edit';\n msg.error(\"基础表单 编辑时,更新条件或保存路径不能为空!\");\n return;\n }\n }\n }\n saveData();\n };\n function setFormList() {\n //保存新增和编辑表单配置\n provides.formMainList = [];\n for (let key of Object.keys(refMap.value)) {\n provides.formMainList.push(getFormMain(refMap.value[key]));\n }\n }\n function getFormMain(formConfig) {\n let form = formConfig.getForm();\n let formConfigData = formConfig.getData();\n let formMain = {\n uuid: provides.form.uuid\n };\n let formJson = {};\n if (formConfigData) {\n formMain.designer = \"\" + formConfigData.designer; //表单类型 (0)基础表单 (1)自定义表单\n formMain.customForm = formConfigData.customForm;\n formJson.optionJson = formConfigData.codeForm;\n formJson.customJson = JSON.stringify(formConfigData.customJson);\n }\n for (let key of Object.keys(form)) {\n formMain[key] = form[key];\n }\n return {\n formMain,\n formJson\n };\n }\n function saveData() {\n loading.value = true;\n // baseConfig.value.setDeleteTable();\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_10__.post)(http, \"/online/tableConfig/saveJson\", (0,vue__WEBPACK_IMPORTED_MODULE_4__.toRaw)(provides), undefined, false).then(({\n code\n }) => {\n if (code == 200) {\n show.value = false;\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.nextTick)(() => {\n emits('configClose', provides.form.theme);\n });\n }\n }).finally(() => {\n loading.value = false;\n });\n }\n\n //数据配置更新数据表\n function updateTable(data) {\n columnConfig.value.updateData(data);\n loading.value = false;\n }\n const updateCurd = () => {\n columnConfig.value.setAddDisplay(\"1\");\n columnConfig.value.setEditDisplay(\"1\");\n };\n\n //配置中心更新数据\n function tableConfigChange(map) {\n columnConfig.value.updateColumnConfig(map);\n }\n const updateBtnData = (options, type) => {\n let butType = type.substr(0, type.indexOf('Options'));\n for (let i = options.length - 1; i >= 0; i--) {\n let o = options[i];\n if (provides.form[butType].indexOf(o.code) == -1) {\n provides.form[butType].push(o.code);\n }\n }\n provides.form[type] = options;\n };\n function initForm(res) {\n res.form = JSON.parse(JSON.stringify(_views_table_add_or_edit_config_initFormObject_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]));\n res.tableColumn = [];\n }\n function parseOtherProp(res) {\n if (!res.tableColumn) {\n return;\n }\n for (let column of res.tableColumn) {\n if (column.otherProp && column.otherProp != '') {\n try {\n let otherProp = JSON.parse(column.otherProp);\n for (let key of Object.keys(otherProp)) {\n column[key] = otherProp[key];\n }\n } catch (e) {}\n }\n }\n }\n function setCardToolButConfig(type) {\n if (type === '2') {\n const excludedCodes = ['upload', 'download', 'olp_fullscreen', 'olp_setting', 'olp_search'];\n provides.toolButConfig = provides.toolButConfig.filter(o => !excludedCodes.includes(o.code));\n }\n }\n function init({\n o,\n v\n }, uuid, theme) {\n show.value = true;\n loading.value = true;\n mainConfig.v = v;\n mainConfig.o = o;\n provides.loadingText = \"正在加载数据...\";\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_10__.get)(http, \"/online/tableConfig/getJson\", {\n uuid: uuid ? uuid : v.uuid,\n theme: theme ? theme : o\n }).then(res => {\n parseOtherProp(res);\n provides.toolButConfig = res.toolButConfig;\n provides.operationButConfig = res.operationButConfig;\n if (res.newConfig && !uuid) {\n initForm(res);\n res.form.parentId = v.parentId;\n res.form.uuid = v.uuid;\n res.form.theme = o;\n }\n if (uuid) {\n res.form.parentId = v.parentId;\n res.form.uuid = v.uuid;\n res.form.theme = o;\n delete res.form.version;\n }\n res.form.tableType = v.type;\n setCardToolButConfig(v.type);\n if (res.form?.deleteWhere?.wheres && !res.form.cardKey) {\n res.form.cardKey = getDeleteKey(res);\n }\n provides.form = res.form;\n if (!res.form.optionJson) {\n res.form.optionJson = \"{}\";\n }\n // 将json解析为对象\n provides.form.optionObj = JSON.parse(res.form.optionJson);\n if (provides.form.optionObj.table) {\n provides.form.tableObj = provides.form.optionObj.table;\n } else {\n provides.form.tableObj = {};\n }\n provides.tableColumn = res.tableColumn;\n provides.groupColumns = res.groupColumns;\n columnConfig.value.setData(res.tableColumn, res.groupColumns);\n baseConfig.value.setData(res.form);\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.nextTick)(() => {\n tableConfig.value.setData(res.form);\n // if (provides.form.tableType === '1') {\n // tableConfig.value.setData(res.form)\n // } else {\n // cardConfig.value.setData(res.form)\n // }\n });\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.nextTick)(() => {\n if (res.formMainList) {\n for (let obj of provides.form.toolButOptions) {\n let data = res.formMainList[obj.code];\n if (data && refMap.value[obj.code]) {\n refMap.value[obj.code].setData(data);\n }\n }\n for (let obj of provides.form.operationButOptions) {\n let data = res.formMainList[obj.code];\n if (data && refMap.value[obj.code]) {\n refMap.value[obj.code].setData(data);\n }\n }\n }\n });\n loading.value = false;\n }).catch(() => {\n loading.value = false;\n });\n }\n function copeTheme({\n o,\n v\n }) {\n show.value = true;\n loading.value = true;\n provides.loadingText = \"正在加载数据...\";\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_10__.get)(http, \"/online/tableConfig/getJson\", {\n uuid: v.uuid,\n theme: o\n }).then(res => {\n parseOtherProp(res);\n provides.toolButConfig = res.toolButConfig;\n provides.operationButConfig = res.operationButConfig;\n if (res.newConfig) {\n initForm(res);\n res.form.parentId = v.parentId;\n res.form.uuid = v.uuid;\n res.form.theme = o;\n }\n res.form.tableType = v.type;\n setCardToolButConfig(v.type);\n if (res.form?.deleteWhere?.wheres && !res.form.cardKey) {\n res.form.cardKey = getDeleteKey(res);\n }\n provides.form = res.form;\n if (!res.form.optionJson) {\n res.form.optionJson = \"{}\";\n }\n // 将json解析为对象\n provides.form.optionObj = JSON.parse(res.form.optionJson);\n if (provides.form.optionObj.table) {\n provides.form.tableObj = provides.form.optionObj.table;\n } else {\n provides.form.tableObj = {};\n }\n provides.tableColumn = res.tableColumn;\n provides.groupColumns = res.groupColumns;\n columnConfig.value.setData(res.tableColumn, res.groupColumns);\n baseConfig.value.setData(res.form);\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.nextTick)(() => {\n tableConfig.value.setData(res.form);\n // if (provides.form.tableType === '1') {\n // tableConfig.value.setData(res.form)\n // } else {\n // cardConfig.value.setData(res.form)\n // }\n });\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.nextTick)(() => {\n if (res.formMainList) {\n for (let obj of provides.form.toolButOptions) {\n let data = res.formMainList[obj.code];\n if (data && refMap.value[obj.code]) {\n refMap.value[obj.code].setData(data);\n }\n }\n for (let obj of provides.form.operationButOptions) {\n let data = res.formMainList[obj.code];\n if (data && refMap.value[obj.code]) {\n refMap.value[obj.code].setData(data);\n }\n }\n }\n });\n loading.value = false;\n }).catch(() => {\n loading.value = false;\n });\n }\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.provide)('configData', provides);\n (0,vue__WEBPACK_IMPORTED_MODULE_4__.provide)('updateBtnData', updateBtnData);\n const emits = (m, v) => {\n if (m == \"updateVisible\") {\n baseConfig.value.refreshColumn();\n } else {\n emit(\"emits\", {\n m: m,\n v\n });\n }\n };\n\n // 子组件调用父组件\n const emit = __emit; //声明 emits\n __expose({\n init\n });\n const __returned__ = {\n msg,\n refMap,\n setRefMap,\n http,\n show,\n loading,\n baseConfig,\n tableConfig,\n cardConfig,\n columnConfig,\n columns,\n mainConfig,\n provides,\n activeName,\n columnCheckBoxChange,\n updateShow,\n getDeleteKey,\n columnCheckBoxAll,\n setOtherProp,\n saveClickCp,\n saveClick,\n setFormList,\n getFormMain,\n saveData,\n updateTable,\n updateCurd,\n tableConfigChange,\n updateBtnData,\n initForm,\n parseOtherProp,\n setCardToolButConfig,\n init,\n copeTheme,\n emits,\n emit,\n inject: vue__WEBPACK_IMPORTED_MODULE_4__.inject,\n nextTick: vue__WEBPACK_IMPORTED_MODULE_4__.nextTick,\n provide: vue__WEBPACK_IMPORTED_MODULE_4__.provide,\n reactive: vue__WEBPACK_IMPORTED_MODULE_4__.reactive,\n ref: vue__WEBPACK_IMPORTED_MODULE_4__.ref,\n toRaw: vue__WEBPACK_IMPORTED_MODULE_4__.toRaw,\n BaseConfig: _views_table_add_or_edit_config_base_config_index_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n ColumnConfig: _views_table_add_or_edit_config_column_config_index_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n TableConfig: _views_table_add_or_edit_config_table_config_index_vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n FormConfig: _views_table_add_or_edit_config_form_config_index_vue__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n get initFormObject() {\n return _views_table_add_or_edit_config_initFormObject_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"];\n },\n get get() {\n return _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_10__.get;\n },\n get post() {\n return _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_10__.post;\n },\n get useMessage() {\n return _utils_message__WEBPACK_IMPORTED_MODULE_11__.useMessage;\n },\n CardConfig: _views_table_add_or_edit_config_card_config_index_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://olp-table/./src/views/table/add-or-edit/config/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
|
|
986
986
|
|
|
987
987
|
/***/ }),
|
|
988
988
|
|
|
@@ -12839,7 +12839,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
12839
12839
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
12840
12840
|
|
|
12841
12841
|
"use strict";
|
|
12842
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ OForm: function() { return /* binding */ OForm; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.iterator.constructor.js */ \"./node_modules/core-js/modules/es.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_es_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.iterator.filter.js */ \"./node_modules/core-js/modules/es.iterator.filter.js\");\n/* harmony import */ var core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.iterator.find.js */ \"./node_modules/core-js/modules/es.iterator.find.js\");\n/* harmony import */ var core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.iterator.for-each.js */ \"./node_modules/core-js/modules/es.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_es_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_iterator_map_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.iterator.map.js */ \"./node_modules/core-js/modules/es.iterator.map.js\");\n/* harmony import */ var core_js_modules_es_iterator_map_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_map_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _utils_columnProp__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/utils/columnProp */ \"./src/utils/columnProp.js\");\n/* harmony import */ var _utils_message__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/utils/message */ \"./src/utils/message.js\");\n/* harmony import */ var _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/utils/http/httpUtils */ \"./src/utils/http/httpUtils.js\");\n/* harmony import */ var _utils_tree__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/utils/tree */ \"./src/utils/tree.js\");\n/* harmony import */ var _utils_formUtils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/utils/formUtils */ \"./src/utils/formUtils.js\");\n/* harmony import */ var _api_dist__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/api/dist */ \"./src/api/dist.js\");\n/* harmony import */ var _store_dict__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/store/dict */ \"./src/store/dict.js\");\n/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/utils/object */ \"./src/utils/object.js\");\n/* harmony import */ var _components_FileUpload_index_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/components/FileUpload/index.vue */ \"./src/components/FileUpload/index.vue\");\n/* harmony import */ var _components_Icon__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/components/Icon */ \"./src/components/Icon/index.js\");\n/* harmony import */ var _components_ol_table_select_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/components/ol-table-select.vue */ \"./src/components/ol-table-select.vue\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst dict = (0,_store_dict__WEBPACK_IMPORTED_MODULE_12__.storeDict)();\nfunction replaceDollarBraces(str) {\n return str.toString().replace(/\\$\\{{?([^{}]+)\\}}?/g, function (match, innerContent) {\n return innerContent ? `'${innerContent}'` : match;\n });\n}\nconst OForm = {\n name: 'OForm',\n components: {\n FileUpload: _components_FileUpload_index_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n IconSelect: _components_Icon__WEBPACK_IMPORTED_MODULE_15__.IconSelect,\n OlTableSelect: _components_ol_table_select_vue__WEBPACK_IMPORTED_MODULE_16__[\"default\"]\n },\n inject: ['http'],\n props: {\n isDialog: {\n type: Boolean,\n default: true\n }\n },\n data() {\n return {\n js: undefined,\n formData: {},\n optionData: {},\n initOkTabs: [],\n form: {\n column: []\n },\n initOk: false,\n dynamicSlotsTable: [],\n dynamicSlotsField: {},\n dynamicSlotsOtherResult: {},\n show: true,\n state: {\n deleteId: '',\n uuid: '',\n foreignKey: '',\n exBtnDisabled: undefined,\n isDialog: true,\n loading: false,\n fullscreen: false,\n dialogVisible: false,\n title: \"\",\n width: '28%',\n comCommit: true,\n maxHeight: '400px',\n type: '0',\n edit: false,\n saveUrl: '',\n requestType: 'post',\n updateKey: '',\n theme: 't1',\n tableConfigId: '',\n dbName: '',\n tableName: '',\n otherProp: {}\n },\n elCascaderProps: {\n expandTrigger: 'hover',\n emitPath: false,\n checkStrictly: true\n }\n };\n },\n methods: {\n getCascaderOptions(slotName) {\n // console.info('getCascaderOptions',this.form.column)\n return this.form.column.find(item => item.prop === slotName).dicData;\n },\n getCascaderColumn(slotName) {\n // console.info('getCascaderOptions',this.form.column)\n return this.form.column.find(item => item.prop === slotName);\n },\n hideColumn(prop) {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_13__.setArrayObjectKeyValue)(this.form.column, 'display', false, prop);\n },\n showColumn(prop) {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_13__.setArrayObjectKeyValue)(this.form.column, 'display', true, prop);\n },\n setOtherProp(params) {\n if (this.state.otherProp) {\n if (this.state.otherProp.createBy && this.state.otherProp.createBy.trim()) {\n params.createBy = this.state.otherProp.createBy.trim();\n }\n if (this.state.otherProp.updateBy && this.state.otherProp.updateBy.trim()) {\n params.updateBy = this.state.otherProp.updateBy.trim();\n }\n }\n },\n /**\r\n * 根据列配置获取数据库表更新数据\r\n * @param column\r\n * @param formData\r\n * @returns {{}}\r\n */\n getTableUpdateValue(column, formData) {\n let columnAndValueMap = {};\n for (let {\n prop,\n tableField,\n tableSaveToOtherProp,\n seqValue\n } of column) {\n if (tableField && tableField == '1' || tableSaveToOtherProp == '1') {\n continue;\n }\n let value = formData[prop];\n if (value != undefined && value != '') {\n if (value instanceof String) {\n value = value.trim();\n }\n if (value instanceof Array) {\n columnAndValueMap[prop] = value.join(',');\n } else {\n columnAndValueMap[prop] = value;\n }\n } else if (seqValue) {\n columnAndValueMap[prop] = seqValue;\n }\n }\n return columnAndValueMap;\n },\n /**\r\n * 封装主表单校验逻辑\r\n * @returns {Promise<*>}\r\n */\n async validateMainForm() {\n return new Promise(resolve => {\n const validator = this.state.type !== '0' ? this.$refs.formRef.getNativeForm().validate : (valid, done, msg) => this.$refs.formRef.validate(valid, done, msg);\n validator((valid, ...args) => {\n const [msg, done] = this.state.type === '0' ? [args[1], args[0]] : [args[0]];\n if (!valid) {\n const keys = Object.keys(msg);\n const domRef = this.state.type !== '0' ? this.$refs.formRef.getWidgetRef(keys[0])?.$el : this.$refs.formRef.getPropRef(keys[0])?.$el;\n domRef?.scrollIntoView({\n block: \"center\",\n behavior: \"smooth\"\n });\n (0,_utils_message__WEBPACK_IMPORTED_MODULE_7__.useMessage)().error(`主表单还有${keys.length}项未填写`);\n resolve(false);\n } else {\n resolve(true);\n }\n if (this.state.type === '0') done?.();\n });\n });\n },\n /**\r\n * 封装子表校验逻辑\r\n * @returns {Promise<FlatArray<Awaited<*>[], 1>[]>}\r\n */\n async validateSubTables() {\n // 1. 获取所有子表引用\n const subTablesRefs = this.$refs.subTable?.getTableRefs()?.getTabRefAll() || [];\n\n // 2. 并行执行全量校验(包含新增/修改/删除的数据)\n const validationPromises = subTablesRefs.map(subTable =>\n // 传入 true 校验所有数据(包括未修改的)\n subTable.$table.validate(true));\n\n // 3. 等待所有子表校验结果\n const results = await Promise.all(validationPromises);\n return results.flat().filter(Boolean);\n },\n /**\r\n * 错误定位工具函数\r\n * @param error\r\n */\n focusFirstError(error) {\n const targetEl = error.getElement?.();\n if (targetEl) {\n targetEl.scrollIntoView({\n block: \"center\",\n behavior: \"smooth\"\n });\n } else {\n console.warn(\"无法定位错误元素:\", error.field);\n }\n },\n async doMainSubSave() {\n try {\n // ====================== 1. 主表单校验 ======================\n const mainFormValid = await this.validateMainForm();\n if (!mainFormValid) return;\n\n // ====================== 2. 子表并行校验 ======================\n const subTableErrors = await this.validateSubTables();\n if (subTableErrors.length > 0) {\n this.focusFirstError(subTableErrors[0]);\n (0,_utils_message__WEBPACK_IMPORTED_MODULE_7__.useMessage)().error(`子表存在${subTableErrors.length}处错误,请修正后提交`);\n return;\n }\n\n // ====================== 3. 全部通过后保存 ======================\n this.save();\n } catch (error) {\n console.error(\"保存过程中发生异常:\", error);\n (0,_utils_message__WEBPACK_IMPORTED_MODULE_7__.useMessage)().error(\"系统异常,请稍后重试\");\n }\n },\n async doSave() {\n let dom;\n let keys;\n if (this.state.type != '0') {\n await this.$refs.formRef.getNativeForm().validate((valid, msg) => {\n if (!valid) {\n keys = Object.keys(msg);\n dom = this.$refs.formRef.getWidgetRef(keys[0]);\n dom.$el.scrollIntoView({\n block: \"center\",\n behavior: \"smooth\"\n });\n (0,_utils_message__WEBPACK_IMPORTED_MODULE_7__.useMessage)().error(\"您还有\" + keys.length + \"项信息未填写,请填写后再操作!\");\n } else {\n this.save();\n }\n });\n } else {\n await this.$refs.formRef.validate((valid, done, msg) => {\n if (!valid) {\n keys = Object.keys(msg);\n dom = this.$refs.formRef.getPropRef(keys[0]);\n dom.$el.scrollIntoView({\n block: \"center\",\n behavior: \"smooth\"\n });\n (0,_utils_message__WEBPACK_IMPORTED_MODULE_7__.useMessage)().error(\"您还有\" + keys.length + \"项信息未填写,请填写后再操作!\");\n } else {\n this.save();\n }\n done();\n });\n }\n },\n saveOk(status) {\n this.state.loading = false;\n this.initOkTabs = [];\n if (status) {\n this.close();\n this.$emit('query');\n }\n if (this.state.otherProp && this.state.otherProp.afterSave) {\n try {\n eval(this.state.otherProp.afterSave);\n } catch (e) {\n console.log(e);\n }\n }\n },\n close() {\n this.state.dialogVisible = false;\n this.$emit('emits', {});\n },\n async save() {\n if (this.js) {\n let param = {\n js: this.js,\n v: this.formData\n };\n this.state.dialogVisible = false;\n this.$emit('emits', param);\n return;\n }\n let params = this.getParams();\n if (this.state.otherProp && this.state.otherProp.beforeSave) {\n try {\n let next = eval(\"(params)=>{\" + this.state.otherProp.beforeSave + \"}\");\n if (next(params) === false) {\n return;\n }\n } catch (e) {\n console.log(e);\n return;\n }\n }\n this.state.loading = true;\n try {\n let url = this.state.saveUrl ? this.state.saveUrl : this.state.edit ? '/online/crudAes/modify' : '/online/crudAes/save';\n if (this.state.requestType.toLowerCase() == \"put\") {\n await (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_8__.put)(this.http, url, params).then(status => {\n this.saveOk(status);\n });\n } else if (!this.state.saveUrl || this.state.saveUrl.indexOf(\"/online/crudAes/\") != -1) {\n await (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_8__.postAes)(this.http, url, params).then(status => {\n this.saveOk(status);\n });\n } else {\n await (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_8__.post)(this.http, url, params).then(status => {\n this.saveOk(status);\n });\n }\n } catch (e) {\n console.error(e);\n } finally {\n this.state.loading = false;\n }\n },\n getChineseMonth(monthIndex) {\n const monthNames = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];\n return monthNames[monthIndex] || `${monthIndex + 1}月`;\n },\n setDepRoleDefault(column) {\n //人员岗位\n if (column.selectDom === '25' || column.selectDom === '26' || column.selectDom === '27' || column.selectDom === '24') {\n let dic = {\n \"24\": 'olp_cloud,system_dept,name,id',\n \"25\": 'olp_cloud,system_role,name,id',\n \"26\": 'olp_cloud,system_post,name,id',\n \"27\": 'olp_cloud,system_users,nickname,id'\n };\n column.dictTable = dic[column.selectDom];\n column.type = 'select';\n }\n },\n async initFormColumn(data) {\n for (let column of this.form.column) {\n if (data.disabled || column.disabled == 1) {\n column.disabled = true;\n }\n if (this.formData[column.prop] == undefined || this.formData[column.prop] == '') {\n let value = await (0,_utils_columnProp__WEBPACK_IMPORTED_MODULE_6__.getDefaultValue)(this.http, column);\n if (value != undefined) {\n this.formData[column.prop] = value;\n }\n }\n this.setDepRoleDefault(column);\n if (column.selectDom === '11') {\n let slotObj = {\n slotName: column.prop,\n type: column.type,\n format: column.format,\n valueFormat: column.valueFormat,\n placeholder: '请选择 ' + column?.showName || 0\n };\n this.dynamicSlotsField[column.prop] = column; //收集继续动态改变值的字段信息,以便动态改变值时更新表单数据\n this.dynamicSlotsTable.push(slotObj); //收集需要的动态插槽字段信息\n } else if (column.selectDom === '20') {\n let slotObj = {\n slotName: column.prop,\n type: column.selectDom\n };\n this.dynamicSlotsField[column.prop] = column; //收集继续动态改变值的字段信息,以便动态改变值时更新表单数据\n this.dynamicSlotsTable.push(slotObj); //收集需要的动态插槽字段信息\n } else if (column.selectDom === '21') {\n let slotObj = {\n slotName: column.prop,\n type: column.selectDom\n };\n this.dynamicSlotsField[column.prop] = column; //收集继续动态改变值的字段信息,以便动态改变值时更新表单数据\n this.dynamicSlotsTable.push(slotObj); //收集需要的动态插槽字段信息\n } else if (column.selectDom === '22') {\n //表格选取\n let slotObj = {\n slotName: column.prop,\n type: column.selectDom,\n config: JSON.parse(column.attrs).olTableSelect\n };\n this.dynamicSlotsField[column.prop] = column; //收集继续动态改变值的字段信息,以便动态改变值时更新表单数据\n this.dynamicSlotsTable.push(slotObj); //收集需要的动态插槽字段信息\n const otherResult = slotObj.config.otherResult; //返回额外参数字段配置\n if (otherResult !== null && otherResult !== undefined && otherResult !== '') {\n let otherResultArray = [];\n otherResult.split(\",\").forEach(m => {\n let k = m.split(\":\");\n // otherResultArray.push({targetField: k[[k.length - 1]], sourceField: k[0]})\n otherResultArray.push({\n targetField: k[0],\n sourceField: k[[k.length - 1]]\n });\n });\n this.dynamicSlotsOtherResult[column.prop] = otherResultArray;\n }\n } else {\n this.initDict(column);\n }\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_13__.parseJson)(column);\n for (let event of ['change']) {\n if (column[event] && !(column[event] instanceof Function)) {\n try {\n column[event] = eval(\"(params)=>{this.$nextTick(()=>{\" + \"let formData = this.formData;\" + \"let {value} = params;\" + replaceDollarBraces(column[event]) + \"})\" + \"}\");\n } catch (e) {\n console.error(e);\n }\n }\n }\n }\n },\n async doInit(data) {\n this.beforeInit();\n this.show = !data.disabled;\n this.initOkTabs = [];\n if (data.saveUrl) {\n this.state.saveUrl = data.saveUrl.trim();\n if (data.requestType) {\n this.state.requestType = data.requestType;\n }\n } else {\n this.state.saveUrl = undefined;\n }\n this.state.edit = data['code'] == 'edit' == true;\n this.state.title = data.title ? data.title : this.state.edit ? '编辑' : '新增';\n if (data.form.title) {\n this.state.title = data.form.title;\n }\n this.formData = data.formData;\n this.form = data.form;\n this.state.dialogVisible = true;\n for (let key of Object.keys(this.state)) {\n if (data[key]) {\n this.state[key] = data[key];\n }\n }\n if (this.state.type == 0) {\n if (data.form.span) {\n if (data.form.span < 12) {\n this.state.width = \"90%\";\n } else if (data.form.span < 18) {\n this.state.width = \"50%\";\n } else {\n this.state.width = '28%';\n }\n }\n await this.initFormColumn(data);\n } else {\n let {\n width,\n height\n } = this.form.formConfig;\n //赋值弹窗宽度和高度\n this.state.width = width;\n this.state.maxHeight = height + 'px';\n for (let widgetListElement of this.form.widgetList) {\n this.setDict(widgetListElement);\n }\n }\n setTimeout(() => {\n this.afterInit();\n }, 350);\n },\n setDict(column) {\n if (column && column.dict) {\n column.dictCode = column.dict;\n this.initDict(column);\n }\n if (column.cols instanceof Array) {\n for (let col of column.cols) {\n this.setDict(col);\n }\n }\n },\n init(data, js) {\n try {\n this.js = js;\n this.doInit(data);\n } catch (e) {\n console.error(e);\n }\n },\n /**\r\n * 初始化后回调\r\n */\n afterInit() {\n if (this.state.otherProp) {\n try {\n this.state.otherProp = JSON.parse(this.state.otherProp);\n if (this.state.otherProp.afterInit) {\n eval(this.state.otherProp.afterInit);\n }\n } catch (e) {\n console.log(e);\n }\n }\n },\n /**\r\n * 初始化前回调\r\n */\n beforeInit() {\n if (this.state.otherProp && this.state.otherProp.beforeInit) {\n try {\n eval(this.state.otherProp.beforeInit);\n } catch (e) {\n console.log(e);\n }\n }\n },\n initDict(column) {\n if (column.dictCode) {\n column.dicData = dict.val(column.dictCode);\n if (column.dict && column.options) {\n column.options.optionItems = column.dicData;\n }\n if (column.selectDom == 1 || !column.type) {\n column.type = \"select\";\n }\n //”number”、”string”、”boolean”、”object”、”function” 和 “undefined”\n let dataType = typeof this.formData[column.prop];\n if ([\"number\", \"boolean\"].indexOf(dataType) != -1) {\n this.formData[column.prop] = String(this.formData[column.prop]);\n column.value = this.formData[column.prop];\n }\n if (this.state.edit) {\n return;\n }\n if (this.formData[column.prop] != undefined) {\n this.formData[column.prop] = String(this.formData[column.prop]);\n column.value = this.formData[column.prop];\n } else if (column.value != undefined) {\n this.formData[column.prop] = String(column.value);\n } else {\n // 数据字典与值类型不一致\n if (this.formData[column.prop] == undefined) {\n setTimeout(() => {\n if (column.dicData) {\n for (let dicDatum of column.dicData) {\n if (dicDatum.isDefault == 1) {\n this.formData[column.prop] = dicDatum.value;\n column.value = this.formData[column.prop];\n }\n }\n }\n }, 100);\n }\n }\n } else if (column.dictTable || column.dictUrl) {\n if (column.selectDom == 1 || !column.type) {\n column.type = \"select\";\n }\n column.filterable = true;\n column.dicData = [];\n setTimeout(() => {\n this.setDictTable(column, undefined);\n }, 10);\n if (column.type == 'tree') {\n column.filterable = column.filterable == undefined ? true : column.clearable;\n column.clearable = column.clearable == undefined ? true : column.clearable;\n let slotObj = {\n slotName: column.prop,\n type: 'tree'\n };\n if (column.attrs) {\n const attrs = JSON.parse(column.attrs);\n this.elCascaderProps = {\n ...this.elCascaderProps,\n ...attrs\n };\n }\n this.dynamicSlotsField[column.prop] = column; //收集继续动态改变值的字段信息,以便动态改变值时更新表单数据\n this.dynamicSlotsTable.push(slotObj); //收集需要的动态插槽字段信息\n } else {\n column.filterMethod = e => {\n this.$nextTick(() => {\n this.setDictTable(column, e);\n });\n };\n }\n }\n },\n setDictUrl(column, like) {\n let dictUrl = column.dictUrl.split(\",\");\n let url;\n let label = 'label';\n let value = 'value';\n let parentId = 'parentId';\n // get,url,label,value,parent_id\n let doGet = true;\n if (dictUrl.length > 1) {\n if (dictUrl[0].toString().toLowerCase() == 'post') {\n doGet = false;\n }\n url = dictUrl[1];\n label = dictUrl[2];\n value = dictUrl[3];\n parentId = dictUrl[4];\n } else {\n url = dictUrl[0];\n }\n if (doGet) {\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_8__.get)(this.http, url + \"?label=\" + like).then(data => {\n column.dicData.length = 0;\n if (column.type == 'tree') {\n for (let da of data) {\n da['label'] = da[label];\n da['value'] = da[value];\n }\n column.dicData = (0,_utils_tree__WEBPACK_IMPORTED_MODULE_9__.handleTree)(data, value, parentId);\n } else {\n data.forEach(d => {\n column.dicData.push(d);\n });\n }\n });\n } else {\n let params = {};\n if (like) {\n params['label'] = like;\n }\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_8__.post)(this.http, column.dictUrl, params, false).then(({\n data\n }) => {\n column.dicData.length = 0;\n if (column.type == 'tree') {\n for (let da of data) {\n da['label'] = da[label];\n da['value'] = da[value];\n }\n column.dicData = (0,_utils_tree__WEBPACK_IMPORTED_MODULE_9__.handleTree)(data, value, parentId);\n } else {\n data.forEach(da => {\n da['label'] = da[label];\n da['value'] = da[value];\n column.dicData.push(da);\n });\n }\n });\n }\n },\n setDictTable(column, like) {\n if (column.dictTable && column.dictTable.toString().trim() != '') {\n this.doSetDictTable(column, like);\n } else if (column.dictUrl) {\n this.setDictUrl(column, like);\n }\n },\n doSetDictTable(column, like) {\n let value = this.formData[column.prop];\n /*String tableName;\r\n String dbName;\r\n String label;\r\n String value;\r\n Map<String, Object> where;*/\n // olp-vue-pro,system_users,nickname,id,parentId\n let params = {};\n // let dictTable = column.dictTable;\n try {\n // 使用Function构造函数比eval更安全\n params = new Function('return ' + column.dictTable)();\n } catch (e) {\n // 2. 业务调用侧(清晰的使用逻辑)\n params = (0,_utils_formUtils__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(column.dictTable);\n }\n if (like || value) {\n if (!params.where) {\n params.where = {};\n }\n }\n if (!params[\"parentValue\"]) {\n if (like) {\n params.where['_like_' + params[\"label\"]] = like;\n }\n if (value instanceof Array) {\n let val = '';\n for (let valueElement of value) {\n if (val.length > 0) {\n val += \",\";\n }\n val = val + \"'\" + valueElement + \"'\";\n }\n if (val) {\n params.where['_in_' + params[\"label\"]] = val;\n }\n //params.defaultValue = value;\n } else {\n params.defaultValue = value;\n }\n }\n (0,_api_dist__WEBPACK_IMPORTED_MODULE_11__.initDictTable)(this.http, params).then(data => {\n column.dicData.length = 0;\n if (params[\"parentValue\"]) {\n column.dicData = (0,_utils_tree__WEBPACK_IMPORTED_MODULE_9__.handleTree)(data, 'dictValue', 'parentValue');\n } else {\n data.forEach(d => {\n d.value = d.value + '';\n d.dictValue = d.dictValue + '';\n column.dicData.push(d);\n });\n }\n });\n },\n /**\r\n * 表格选择器回调函数\r\n * @param data\r\n */\n olTableSelectChange(slotName, data) {\n // console.info('插槽名称', slotName, '表格回传的数据', data)\n // console.info('表格', this.form.column)\n this.formData[slotName] = data.value; //修改表单数据,以便后续提交\n if (typeof this.dynamicSlotsField[slotName].change === 'function') {\n this.dynamicSlotsField[slotName].change(data.value); //字段数据更新回调\n }\n //给其他字段赋值\n this.dynamicSlotsOtherResult[slotName]?.forEach(item => {\n this.formData[item.targetField] = data.data[item.sourceField];\n });\n },\n onDateChange(val, field) {\n if (typeof this.dynamicSlotsField[field].change === 'function') {\n this.dynamicSlotsField[field].change(val); //字段数据更新回调\n }\n },\n uploadChange(slotName, data) {\n console.info('回调', slotName, data);\n this.formData[slotName] = data; //修改表单数据,以便后续提交\n if (typeof this.dynamicSlotsField[slotName].change === 'function') {\n this.dynamicSlotsField[slotName].change(data); //字段数据更新回调\n }\n },\n handleEmits({\n m,\n v,\n d,\n js\n }, key) {\n if (typeof js === 'string') {\n eval(js);\n } else if (m && this[m]) {\n this[m](v);\n }\n if (d != false) {\n this.customUrl = undefined;\n }\n this.formData[key] = v;\n console.log('emits:', this.formData);\n }\n },\n mounted() {\n this.$nextTick(() => {\n (0,_store_dict__WEBPACK_IMPORTED_MODULE_12__.storeDict)().init(this.http);\n });\n }\n};\n\n//# sourceURL=webpack://olp-table/./src/mixins/VTMixin/OForm.js?");
|
|
12842
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ OForm: function() { return /* binding */ OForm; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.iterator.constructor.js */ \"./node_modules/core-js/modules/es.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_es_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.iterator.filter.js */ \"./node_modules/core-js/modules/es.iterator.filter.js\");\n/* harmony import */ var core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.iterator.find.js */ \"./node_modules/core-js/modules/es.iterator.find.js\");\n/* harmony import */ var core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.iterator.for-each.js */ \"./node_modules/core-js/modules/es.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_es_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es_iterator_map_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.iterator.map.js */ \"./node_modules/core-js/modules/es.iterator.map.js\");\n/* harmony import */ var core_js_modules_es_iterator_map_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_map_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _utils_columnProp__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/utils/columnProp */ \"./src/utils/columnProp.js\");\n/* harmony import */ var _utils_message__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/utils/message */ \"./src/utils/message.js\");\n/* harmony import */ var _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/utils/http/httpUtils */ \"./src/utils/http/httpUtils.js\");\n/* harmony import */ var _utils_tree__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/utils/tree */ \"./src/utils/tree.js\");\n/* harmony import */ var _utils_formUtils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/utils/formUtils */ \"./src/utils/formUtils.js\");\n/* harmony import */ var _api_dist__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/api/dist */ \"./src/api/dist.js\");\n/* harmony import */ var _store_dict__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/store/dict */ \"./src/store/dict.js\");\n/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/utils/object */ \"./src/utils/object.js\");\n/* harmony import */ var _components_FileUpload_index_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @/components/FileUpload/index.vue */ \"./src/components/FileUpload/index.vue\");\n/* harmony import */ var _components_Icon__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @/components/Icon */ \"./src/components/Icon/index.js\");\n/* harmony import */ var _components_ol_table_select_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/components/ol-table-select.vue */ \"./src/components/ol-table-select.vue\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst dict = (0,_store_dict__WEBPACK_IMPORTED_MODULE_12__.storeDict)();\nfunction replaceDollarBraces(str) {\n return str.toString().replace(/\\$\\{{?([^{}]+)\\}}?/g, function (match, innerContent) {\n return innerContent ? `'${innerContent}'` : match;\n });\n}\nconst OForm = {\n name: 'OForm',\n components: {\n FileUpload: _components_FileUpload_index_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n IconSelect: _components_Icon__WEBPACK_IMPORTED_MODULE_15__.IconSelect,\n OlTableSelect: _components_ol_table_select_vue__WEBPACK_IMPORTED_MODULE_16__[\"default\"]\n },\n inject: ['http'],\n props: {\n isDialog: {\n type: Boolean,\n default: true\n }\n },\n data() {\n return {\n js: undefined,\n formData: {},\n optionData: {},\n initOkTabs: [],\n form: {\n column: []\n },\n initOk: false,\n dynamicSlotsTable: [],\n dynamicSlotsField: {},\n dynamicSlotsOtherResult: {},\n show: true,\n state: {\n deleteId: '',\n uuid: '',\n foreignKey: '',\n exBtnDisabled: undefined,\n isDialog: true,\n loading: false,\n fullscreen: false,\n dialogVisible: false,\n title: \"\",\n width: '28%',\n comCommit: true,\n maxHeight: '400px',\n type: '0',\n edit: false,\n saveUrl: '',\n requestType: 'post',\n updateKey: '',\n theme: 't1',\n tableConfigId: '',\n dbName: '',\n tableName: '',\n otherProp: {}\n },\n elCascaderProps: {\n expandTrigger: 'hover',\n emitPath: false,\n checkStrictly: true\n }\n };\n },\n methods: {\n getCascaderOptions(slotName) {\n // console.info('getCascaderOptions',this.form.column)\n return this.form.column.find(item => item.prop === slotName).dicData;\n },\n getCascaderColumn(slotName) {\n // console.info('getCascaderOptions',this.form.column)\n return this.form.column.find(item => item.prop === slotName);\n },\n hideColumn(prop) {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_13__.setArrayObjectKeyValue)(this.form.column, 'display', false, prop);\n },\n showColumn(prop) {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_13__.setArrayObjectKeyValue)(this.form.column, 'display', true, prop);\n },\n setOtherProp(params) {\n if (this.state.otherProp) {\n if (this.state.otherProp.createBy && this.state.otherProp.createBy.trim()) {\n params.createBy = this.state.otherProp.createBy.trim();\n }\n if (this.state.otherProp.updateBy && this.state.otherProp.updateBy.trim()) {\n params.updateBy = this.state.otherProp.updateBy.trim();\n }\n }\n },\n /**\r\n * 根据列配置获取数据库表更新数据\r\n * @param column\r\n * @param formData\r\n * @returns {{}}\r\n */\n getTableUpdateValue(column, formData) {\n let columnAndValueMap = {};\n for (let {\n prop,\n tableField,\n tableSaveToOtherProp,\n seqValue\n } of column) {\n if (tableField && tableField == '1' || tableSaveToOtherProp == '1') {\n continue;\n }\n let value = formData[prop];\n if (value != undefined && value != '') {\n if (value instanceof String) {\n value = value.trim();\n }\n if (value instanceof Array) {\n columnAndValueMap[prop] = value.join(',');\n } else {\n columnAndValueMap[prop] = value;\n }\n } else if (seqValue) {\n columnAndValueMap[prop] = seqValue;\n }\n }\n return columnAndValueMap;\n },\n /**\r\n * 封装主表单校验逻辑\r\n * @returns {Promise<*>}\r\n */\n async validateMainForm() {\n return new Promise(resolve => {\n const validator = this.state.type !== '0' ? this.$refs.formRef.getNativeForm().validate : (valid, done, msg) => this.$refs.formRef.validate(valid, done, msg);\n validator((valid, ...args) => {\n const [msg, done] = this.state.type === '0' ? [args[1], args[0]] : [args[0]];\n if (!valid) {\n const keys = Object.keys(msg);\n const domRef = this.state.type !== '0' ? this.$refs.formRef.getWidgetRef(keys[0])?.$el : this.$refs.formRef.getPropRef(keys[0])?.$el;\n domRef?.scrollIntoView({\n block: \"center\",\n behavior: \"smooth\"\n });\n (0,_utils_message__WEBPACK_IMPORTED_MODULE_7__.useMessage)().error(`主表单还有${keys.length}项未填写`);\n resolve(false);\n } else {\n resolve(true);\n }\n if (this.state.type === '0') done?.();\n });\n });\n },\n /**\r\n * 封装子表校验逻辑\r\n * @returns {Promise<FlatArray<Awaited<*>[], 1>[]>}\r\n */\n async validateSubTables() {\n // 1. 获取所有子表引用\n const subTablesRefs = this.$refs.subTable?.getTableRefs()?.getTabRefAll() || [];\n\n // 2. 并行执行全量校验(包含新增/修改/删除的数据)\n const validationPromises = subTablesRefs.map(subTable =>\n // 传入 true 校验所有数据(包括未修改的)\n subTable.$table.validate(true));\n\n // 3. 等待所有子表校验结果\n const results = await Promise.all(validationPromises);\n return results.flat().filter(Boolean);\n },\n /**\r\n * 错误定位工具函数\r\n * @param error\r\n */\n focusFirstError(error) {\n const targetEl = error.getElement?.();\n if (targetEl) {\n targetEl.scrollIntoView({\n block: \"center\",\n behavior: \"smooth\"\n });\n } else {\n console.warn(\"无法定位错误元素:\", error.field);\n }\n },\n async doMainSubSave() {\n try {\n // ====================== 1. 主表单校验 ======================\n const mainFormValid = await this.validateMainForm();\n if (!mainFormValid) return;\n\n // ====================== 2. 子表并行校验 ======================\n const subTableErrors = await this.validateSubTables();\n if (subTableErrors.length > 0) {\n this.focusFirstError(subTableErrors[0]);\n (0,_utils_message__WEBPACK_IMPORTED_MODULE_7__.useMessage)().error(`子表存在${subTableErrors.length}处错误,请修正后提交`);\n return;\n }\n\n // ====================== 3. 全部通过后保存 ======================\n this.save();\n } catch (error) {\n console.error(\"保存过程中发生异常:\", error);\n (0,_utils_message__WEBPACK_IMPORTED_MODULE_7__.useMessage)().error(\"系统异常,请稍后重试\");\n }\n },\n async doSave() {\n let dom;\n let keys;\n if (this.state.type != '0') {\n await this.$refs.formRef.getNativeForm().validate((valid, msg) => {\n if (!valid) {\n keys = Object.keys(msg);\n dom = this.$refs.formRef.getWidgetRef(keys[0]);\n dom.$el.scrollIntoView({\n block: \"center\",\n behavior: \"smooth\"\n });\n (0,_utils_message__WEBPACK_IMPORTED_MODULE_7__.useMessage)().error(\"您还有\" + keys.length + \"项信息未填写,请填写后再操作!\");\n } else {\n this.save();\n }\n });\n } else {\n await this.$refs.formRef.validate((valid, done, msg) => {\n if (!valid) {\n keys = Object.keys(msg);\n dom = this.$refs.formRef.getPropRef(keys[0]);\n dom.$el.scrollIntoView({\n block: \"center\",\n behavior: \"smooth\"\n });\n (0,_utils_message__WEBPACK_IMPORTED_MODULE_7__.useMessage)().error(\"您还有\" + keys.length + \"项信息未填写,请填写后再操作!\");\n } else {\n this.save();\n }\n done();\n });\n }\n },\n saveOk(status) {\n this.state.loading = false;\n this.initOkTabs = [];\n if (status) {\n this.close();\n this.$emit('query');\n }\n if (this.state.otherProp && this.state.otherProp.afterSave) {\n try {\n eval(this.state.otherProp.afterSave);\n } catch (e) {\n console.log(e);\n }\n }\n },\n close() {\n this.state.dialogVisible = false;\n this.$emit('emits', {});\n },\n async save() {\n if (this.js) {\n let param = {\n js: this.js,\n v: this.formData\n };\n this.state.dialogVisible = false;\n this.$emit('emits', param);\n return;\n }\n let params = this.getParams();\n if (this.state.otherProp && this.state.otherProp.beforeSave) {\n try {\n let next = eval(\"(params)=>{\" + this.state.otherProp.beforeSave + \"}\");\n if (next(params) === false) {\n return;\n }\n } catch (e) {\n console.log(e);\n return;\n }\n }\n this.state.loading = true;\n try {\n let url = this.state.saveUrl ? this.state.saveUrl : this.state.edit ? '/online/crudAes/modify' : '/online/crudAes/save';\n if (this.state.requestType.toLowerCase() == \"put\") {\n await (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_8__.put)(this.http, url, params).then(status => {\n this.saveOk(status);\n });\n } else if (!this.state.saveUrl || this.state.saveUrl.indexOf(\"/online/crudAes/\") != -1) {\n await (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_8__.postAes)(this.http, url, params).then(status => {\n this.saveOk(status);\n });\n } else {\n await (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_8__.post)(this.http, url, params).then(status => {\n this.saveOk(status);\n });\n }\n } catch (e) {\n console.error(e);\n } finally {\n this.state.loading = false;\n }\n },\n getChineseMonth(monthIndex) {\n const monthNames = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];\n return monthNames[monthIndex] || `${monthIndex + 1}月`;\n },\n setDepRoleDefault(column) {\n //人员岗位\n if (column.selectDom === '25' || column.selectDom === '26' || column.selectDom === '27' || column.selectDom === '24') {\n let dic = {\n \"24\": 'olp_cloud,system_dept,name,id',\n \"25\": 'olp_cloud,system_role,name,id',\n \"26\": 'olp_cloud,system_post,name,id',\n \"27\": 'olp_cloud,system_users,nickname,id'\n };\n column.dictTable = dic[column.selectDom];\n column.type = 'select';\n }\n },\n async initFormColumn(data) {\n for (let column of this.form.column) {\n console.log(column);\n if (data.disabled || column.disabled == 1) {\n column.disabled = true;\n }\n if (this.formData[column.prop] == undefined || this.formData[column.prop] == '') {\n let value = await (0,_utils_columnProp__WEBPACK_IMPORTED_MODULE_6__.getDefaultValue)(this.http, column);\n if (value != undefined) {\n this.formData[column.prop] = value;\n }\n }\n this.setDepRoleDefault(column);\n if (column.selectDom === '11') {\n let slotObj = {\n slotName: column.prop,\n type: column.type,\n format: column.format,\n valueFormat: column.valueFormat,\n placeholder: '请选择 ' + column?.showName || 0\n };\n this.dynamicSlotsField[column.prop] = column; //收集继续动态改变值的字段信息,以便动态改变值时更新表单数据\n this.dynamicSlotsTable.push(slotObj); //收集需要的动态插槽字段信息\n } else if (column.selectDom === '20') {\n let slotObj = {\n slotName: column.prop,\n type: column.selectDom\n };\n this.dynamicSlotsField[column.prop] = column; //收集继续动态改变值的字段信息,以便动态改变值时更新表单数据\n this.dynamicSlotsTable.push(slotObj); //收集需要的动态插槽字段信息\n } else if (column.selectDom === '21') {\n let slotObj = {\n slotName: column.prop,\n type: column.selectDom\n };\n this.dynamicSlotsField[column.prop] = column; //收集继续动态改变值的字段信息,以便动态改变值时更新表单数据\n this.dynamicSlotsTable.push(slotObj); //收集需要的动态插槽字段信息\n } else if (column.selectDom === '22') {\n //表格选取\n let slotObj = {\n slotName: column.prop,\n type: column.selectDom,\n config: JSON.parse(column.attrs).olTableSelect\n };\n this.dynamicSlotsField[column.prop] = column; //收集继续动态改变值的字段信息,以便动态改变值时更新表单数据\n this.dynamicSlotsTable.push(slotObj); //收集需要的动态插槽字段信息\n const otherResult = slotObj.config.otherResult; //返回额外参数字段配置\n if (otherResult !== null && otherResult !== undefined && otherResult !== '') {\n let otherResultArray = [];\n otherResult.split(\",\").forEach(m => {\n let k = m.split(\":\");\n // otherResultArray.push({targetField: k[[k.length - 1]], sourceField: k[0]})\n otherResultArray.push({\n targetField: k[0],\n sourceField: k[[k.length - 1]]\n });\n });\n this.dynamicSlotsOtherResult[column.prop] = otherResultArray;\n }\n } else {\n this.initDict(column);\n }\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_13__.parseJson)(column);\n for (let event of ['change']) {\n if (column[event] && !(column[event] instanceof Function)) {\n try {\n column[event] = eval(\"(params)=>{this.$nextTick(()=>{\" + \"let formData = this.formData;\" + \"let {value} = params;\" + replaceDollarBraces(column[event]) + \"})\" + \"}\");\n } catch (e) {\n console.error(e);\n }\n }\n }\n }\n },\n async doInit(data) {\n this.beforeInit();\n this.show = !data.disabled;\n this.initOkTabs = [];\n if (data.saveUrl) {\n this.state.saveUrl = data.saveUrl.trim();\n if (data.requestType) {\n this.state.requestType = data.requestType;\n }\n } else {\n this.state.saveUrl = undefined;\n }\n this.state.edit = data['code'] == 'edit' == true;\n this.state.title = data.title ? data.title : this.state.edit ? '编辑' : '新增';\n if (data.form.title) {\n this.state.title = data.form.title;\n }\n this.formData = data.formData;\n this.form = data.form;\n this.state.dialogVisible = true;\n for (let key of Object.keys(this.state)) {\n if (data[key]) {\n this.state[key] = data[key];\n }\n }\n if (this.state.type == 0) {\n if (data.form.span) {\n if (data.form.span < 12) {\n this.state.width = \"90%\";\n } else if (data.form.span < 18) {\n this.state.width = \"50%\";\n } else {\n this.state.width = '28%';\n }\n }\n await this.initFormColumn(data);\n } else {\n let {\n width,\n height\n } = this.form.formConfig;\n //赋值弹窗宽度和高度\n this.state.width = width;\n this.state.maxHeight = height + 'px';\n for (let widgetListElement of this.form.widgetList) {\n this.setDict(widgetListElement);\n }\n }\n setTimeout(() => {\n this.afterInit();\n }, 350);\n },\n setDict(column) {\n if (column && column.dict) {\n column.dictCode = column.dict;\n this.initDict(column);\n }\n if (column.cols instanceof Array) {\n for (let col of column.cols) {\n this.setDict(col);\n }\n }\n },\n init(data, js) {\n try {\n this.js = js;\n this.doInit(data);\n } catch (e) {\n console.error(e);\n }\n },\n /**\r\n * 初始化后回调\r\n */\n afterInit() {\n if (this.state.otherProp) {\n try {\n this.state.otherProp = JSON.parse(this.state.otherProp);\n if (this.state.otherProp.afterInit) {\n eval(this.state.otherProp.afterInit);\n }\n } catch (e) {\n console.log(e);\n }\n }\n },\n /**\r\n * 初始化前回调\r\n */\n beforeInit() {\n if (this.state.otherProp && this.state.otherProp.beforeInit) {\n try {\n eval(this.state.otherProp.beforeInit);\n } catch (e) {\n console.log(e);\n }\n }\n },\n initDict(column) {\n if (column.dictCode) {\n column.dicData = dict.val(column.dictCode);\n if (column.dict && column.options) {\n column.options.optionItems = column.dicData;\n }\n if (column.selectDom == 1 || !column.type) {\n column.type = \"select\";\n }\n //”number”、”string”、”boolean”、”object”、”function” 和 “undefined”\n let dataType = typeof this.formData[column.prop];\n if ([\"number\", \"boolean\"].indexOf(dataType) != -1) {\n this.formData[column.prop] = String(this.formData[column.prop]);\n column.value = this.formData[column.prop];\n }\n if (this.state.edit) {\n return;\n }\n if (this.formData[column.prop] != undefined) {\n this.formData[column.prop] = String(this.formData[column.prop]);\n column.value = this.formData[column.prop];\n } else if (column.value != undefined) {\n this.formData[column.prop] = String(column.value);\n } else {\n // 数据字典与值类型不一致\n if (this.formData[column.prop] == undefined) {\n setTimeout(() => {\n if (column.dicData) {\n for (let dicDatum of column.dicData) {\n if (dicDatum.isDefault == 1) {\n this.formData[column.prop] = dicDatum.value;\n column.value = this.formData[column.prop];\n }\n }\n }\n }, 100);\n }\n }\n } else if (column.dictTable || column.dictUrl) {\n if (column.selectDom == 1 || !column.type) {\n column.type = \"select\";\n }\n column.filterable = true;\n column.dicData = [];\n setTimeout(() => {\n this.setDictTable(column, undefined);\n }, 10);\n if (column.type == 'tree') {\n column.filterable = column.filterable == undefined ? true : column.clearable;\n column.clearable = column.clearable == undefined ? true : column.clearable;\n let slotObj = {\n slotName: column.prop,\n type: 'tree'\n };\n if (column.attrs) {\n const attrs = JSON.parse(column.attrs);\n this.elCascaderProps = {\n ...this.elCascaderProps,\n ...attrs\n };\n }\n this.dynamicSlotsField[column.prop] = column; //收集继续动态改变值的字段信息,以便动态改变值时更新表单数据\n this.dynamicSlotsTable.push(slotObj); //收集需要的动态插槽字段信息\n } else {\n column.filterMethod = e => {\n this.$nextTick(() => {\n this.setDictTable(column, e);\n });\n };\n }\n }\n },\n setDictUrl(column, like) {\n let dictUrl = column.dictUrl.split(\",\");\n let url;\n let label = 'label';\n let value = 'value';\n let parentId = 'parentId';\n // get,url,label,value,parent_id\n let doGet = true;\n if (dictUrl.length > 1) {\n if (dictUrl[0].toString().toLowerCase() == 'post') {\n doGet = false;\n }\n url = dictUrl[1];\n label = dictUrl[2];\n value = dictUrl[3];\n parentId = dictUrl[4];\n } else {\n url = dictUrl[0];\n }\n if (doGet) {\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_8__.get)(this.http, url + \"?label=\" + like).then(data => {\n column.dicData.length = 0;\n if (column.type == 'tree') {\n for (let da of data) {\n da['label'] = da[label];\n da['value'] = da[value];\n }\n column.dicData = (0,_utils_tree__WEBPACK_IMPORTED_MODULE_9__.handleTree)(data, value, parentId);\n } else {\n data.forEach(d => {\n column.dicData.push(d);\n });\n }\n });\n } else {\n let params = {};\n if (like) {\n params['label'] = like;\n }\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_8__.post)(this.http, column.dictUrl, params, false).then(({\n data\n }) => {\n column.dicData.length = 0;\n if (column.type == 'tree') {\n for (let da of data) {\n da['label'] = da[label];\n da['value'] = da[value];\n }\n column.dicData = (0,_utils_tree__WEBPACK_IMPORTED_MODULE_9__.handleTree)(data, value, parentId);\n } else {\n data.forEach(da => {\n da['label'] = da[label];\n da['value'] = da[value];\n column.dicData.push(da);\n });\n }\n });\n }\n },\n setDictTable(column, like) {\n if (column.dictTable && column.dictTable.toString().trim() != '') {\n this.doSetDictTable(column, like);\n } else if (column.dictUrl) {\n this.setDictUrl(column, like);\n }\n },\n doSetDictTable(column, like) {\n let value = this.formData[column.prop];\n /*String tableName;\r\n String dbName;\r\n String label;\r\n String value;\r\n Map<String, Object> where;*/\n // olp-vue-pro,system_users,nickname,id,parentId\n let params = {};\n // let dictTable = column.dictTable;\n try {\n // 使用Function构造函数比eval更安全\n params = new Function('return ' + column.dictTable)();\n } catch (e) {\n // 2. 业务调用侧(清晰的使用逻辑)\n params = (0,_utils_formUtils__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(column.dictTable);\n }\n if (like || value) {\n if (!params.where) {\n params.where = {};\n }\n }\n if (!params[\"parentValue\"]) {\n if (like) {\n params.where['_like_' + params[\"label\"]] = like;\n }\n if (value instanceof Array) {\n let val = '';\n for (let valueElement of value) {\n if (val.length > 0) {\n val += \",\";\n }\n val = val + \"'\" + valueElement + \"'\";\n }\n if (val) {\n params.where['_in_' + params[\"label\"]] = val;\n }\n //params.defaultValue = value;\n } else {\n params.defaultValue = value;\n }\n }\n (0,_api_dist__WEBPACK_IMPORTED_MODULE_11__.initDictTable)(this.http, params).then(data => {\n column.dicData.length = 0;\n if (params[\"parentValue\"]) {\n column.dicData = (0,_utils_tree__WEBPACK_IMPORTED_MODULE_9__.handleTree)(data, 'dictValue', 'parentValue');\n } else {\n data.forEach(d => {\n d.value = d.value + '';\n d.dictValue = d.dictValue + '';\n column.dicData.push(d);\n });\n }\n });\n },\n /**\r\n * 表格选择器回调函数\r\n * @param data\r\n */\n olTableSelectChange(slotName, data) {\n // console.info('插槽名称', slotName, '表格回传的数据', data)\n // console.info('表格', this.form.column)\n this.formData[slotName] = data.value; //修改表单数据,以便后续提交\n if (typeof this.dynamicSlotsField[slotName].change === 'function') {\n this.dynamicSlotsField[slotName].change(data.value); //字段数据更新回调\n }\n //给其他字段赋值\n this.dynamicSlotsOtherResult[slotName]?.forEach(item => {\n this.formData[item.targetField] = data.data[item.sourceField];\n });\n },\n onDateChange(val, field) {\n if (typeof this.dynamicSlotsField[field].change === 'function') {\n this.dynamicSlotsField[field].change(val); //字段数据更新回调\n }\n },\n uploadChange(slotName, data) {\n console.info('回调', slotName, data);\n this.formData[slotName] = data; //修改表单数据,以便后续提交\n if (typeof this.dynamicSlotsField[slotName].change === 'function') {\n this.dynamicSlotsField[slotName].change(data); //字段数据更新回调\n }\n },\n handleEmits({\n m,\n v,\n d,\n js\n }, key) {\n if (typeof js === 'string') {\n eval(js);\n } else if (m && this[m]) {\n this[m](v);\n }\n if (d != false) {\n this.customUrl = undefined;\n }\n this.formData[key] = v;\n console.log('emits:', this.formData);\n }\n },\n mounted() {\n this.$nextTick(() => {\n (0,_store_dict__WEBPACK_IMPORTED_MODULE_12__.storeDict)().init(this.http);\n });\n }\n};\n\n//# sourceURL=webpack://olp-table/./src/mixins/VTMixin/OForm.js?");
|
|
12843
12843
|
|
|
12844
12844
|
/***/ }),
|
|
12845
12845
|
|
|
@@ -13097,7 +13097,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
13097
13097
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
13098
13098
|
|
|
13099
13099
|
"use strict";
|
|
13100
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getFiledName; },\n/* harmony export */ getDefaultValue: function() { return /* binding */ getDefaultValue; }\n/* harmony export */ });\n/* harmony import */ var _utils_DateUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/utils/DateUtils */ \"./src/utils/DateUtils.js\");\n\nfunction getFiledName(column) {\n return column['property'];\n}\nasync function getDefaultValue(http, column) {\n const {\n value,\n selectDom\n } = column;\n // 1. 处理模板字符串(含$符号)\n if (/\\$\\{[^}]+\\}/.test(value)) {\n column.seqValue = '$_OLP_$' + value;\n column.placeholder = '如不填,系统自动生成';\n return undefined;\n }\n\n // 3. 处理时间默认值\n if (value && ['3', '6'].includes(selectDom)) {\n return handleDateTimeValue(value);\n }\n return value;\n}\nfunction handleDateTimeValue(value) {\n if (value.includes('#{')) {\n return (0,_utils_DateUtils__WEBPACK_IMPORTED_MODULE_0__.replaceDateByExpression)(value);\n }\n if (value.includes('{{')) {\n return safelyEvaluateExpression(value);\n }\n return value;\n}\nfunction safelyEvaluateExpression(expr) {\n try {\n const sanitizedExpr = expr.replace(/{+|}+/g, '');\n return Function(`\"use strict\"; return (${sanitizedExpr})`)();\n } catch (e) {\n console.error('表达式执行失败', e);\n return new Date().toISOString(); // 安全后备值\n }\n}\n\n//# sourceURL=webpack://olp-table/./src/utils/columnProp.js?");
|
|
13100
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ getFiledName; },\n/* harmony export */ getDefaultValue: function() { return /* binding */ getDefaultValue; }\n/* harmony export */ });\n/* harmony import */ var _utils_DateUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/utils/DateUtils */ \"./src/utils/DateUtils.js\");\n\nfunction getFiledName(column) {\n return column['property'];\n}\nasync function getDefaultValue(http, column) {\n const {\n value,\n selectDom\n } = column;\n // 1. 处理模板字符串(含$符号)\n if (/\\$\\{[^}]+\\}/.test(value)) {\n column.seqValue = '$_OLP_$' + value;\n column.placeholder = '如不填,系统自动生成';\n column.value = undefined;\n return undefined;\n }\n\n // 3. 处理时间默认值\n if (value && ['3', '6'].includes(selectDom)) {\n return handleDateTimeValue(value);\n }\n return value;\n}\nfunction handleDateTimeValue(value) {\n if (value.includes('#{')) {\n return (0,_utils_DateUtils__WEBPACK_IMPORTED_MODULE_0__.replaceDateByExpression)(value);\n }\n if (value.includes('{{')) {\n return safelyEvaluateExpression(value);\n }\n return value;\n}\nfunction safelyEvaluateExpression(expr) {\n try {\n const sanitizedExpr = expr.replace(/{+|}+/g, '');\n return Function(`\"use strict\"; return (${sanitizedExpr})`)();\n } catch (e) {\n console.error('表达式执行失败', e);\n return new Date().toISOString(); // 安全后备值\n }\n}\n\n//# sourceURL=webpack://olp-table/./src/utils/columnProp.js?");
|
|
13101
13101
|
|
|
13102
13102
|
/***/ }),
|
|
13103
13103
|
|