olp-table 7.1.4 → 7.1.6

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.
@@ -828,7 +828,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core
828
828
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
829
829
 
830
830
  "use strict";
831
- 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_find_js__WEBPACK_IMPORTED_MODULE_2__ = __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_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/utils/http/httpUtils */ \"./src/utils/http/httpUtils.js\");\n/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/utils/object */ \"./src/utils/object.js\");\n/* harmony import */ var _store_dict__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/store/dict */ \"./src/store/dict.js\");\n/* harmony import */ var element_plus__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! element-plus */ \"element-plus\");\n/* harmony import */ var element_plus__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(element_plus__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var sql_formatter__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! sql-formatter */ \"./node_modules/sql-formatter/lib/sqlFormatter.js\");\n/* harmony import */ var sql_formatter__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(sql_formatter__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _views_table_add_or_edit_config_field_config_index_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/views/table/add-or-edit/config/field-config/index.vue */ \"./src/views/table/add-or-edit/config/field-config/index.vue\");\n/* harmony import */ var _components_lazy_load_select_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/components/lazy-load-select.vue */ \"./src/components/lazy-load-select.vue\");\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n __name: 'index',\n emits: [\"emits\", 'updateTab'],\n setup(__props, {\n expose: __expose,\n emit: __emit\n }) {\n const http = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('http');\n const addOrEditRootData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('addOrEditRootData');\n const dict = (0,_store_dict__WEBPACK_IMPORTED_MODULE_6__.storeDict)();\n const dicData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n joinFiledDicData: [{\n label: '内连接',\n value: 'join'\n }, {\n label: '左连接',\n value: 'left join'\n }, {\n label: '右连接',\n value: 'right join'\n }],\n joinTableDicData: []\n });\n const form = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n form: {\n table: [{\n index: \"t1\",\n type: \"主表\",\n joinTable: \"\",\n joinFiled: \"/\",\n deleteWhere: 'id=${id}'\n }],\n executeSql: '',\n executeWhere: '',\n orderBy: ''\n }\n });\n const option = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n submitBtn: false,\n emptyBtn: false,\n column: [\n /* {\r\n label: '转换驼峰', prop: 'hump', border: true, type: 'radio', value: '0', span: 7, dicData: [{\r\n label: '不转换', value: '0'\r\n }, {\r\n label: '转换', value: '1'\r\n },{\r\n label: '请求转换', value: '2'\r\n }],\r\n dictCode: 'converting_hump'\r\n },*/\n {\n label: '数据源类型',\n type: 'radio',\n span: 7,\n prop: 'definitionSql',\n border: true,\n value: '0',\n onChange: ({\n value\n }) => {\n if (value == '0') {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"executeSql,where,table,orderBy\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"api,requestType\");\n } else if (value == '1') {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"executeSql,where,orderBy\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"api,table,requestType\");\n } else {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"api,requestType\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"executeSql,where,table,orderBy\");\n }\n },\n dicData: [{\n label: '自动SQL',\n value: '0'\n }, {\n label: '手动SQL',\n value: '1'\n }, {\n label: 'API',\n value: '2'\n }],\n dictCode: 'tree_data_type'\n }, {\n label: '查询表格',\n prop: 'table',\n type: 'dynamic',\n span: 24,\n children: {\n align: 'center',\n minHeight: 100,\n maxHeight: 170,\n size: \"small\",\n headerAlign: 'center',\n rowAdd: done => {\n let obj = {\n index: \"t\" + (form.form.table.length + 1),\n type: \"join\",\n joinTable: \"\",\n joinFiled: \"t\" + form.form.table.length + \".=t\" + (form.form.table.length + 1) + \".\"\n };\n done(obj);\n },\n rowDel: row => {\n if (row.$index != 0) {\n setSql(row.$index);\n } else {\n element_plus__WEBPACK_IMPORTED_MODULE_7__.ElMessage.error(\"主表不能删除!\");\n }\n },\n column: [{\n width: 60,\n prop: \"index\",\n label: '序号'\n }, {\n label: '类型',\n prop: \"type\",\n width: 120,\n disabled: true,\n type: 'select'\n }, {\n label: '数据表',\n prop: \"joinTable\",\n type: 'select',\n dicData: []\n }, {\n label: 'on',\n prop: \"joinFiled\",\n type: 'input'\n }, {\n label: '删除条件',\n prop: \"deleteWhere\",\n width: 200,\n type: 'input'\n }]\n }\n }, {\n label: '执行SQL',\n display: true,\n type: 'textarea',\n maxRows: 7,\n span: 24,\n prop: 'executeSql'\n }, {\n label: 'where条件',\n display: true,\n type: 'input',\n span: 24,\n prop: 'executeWhere'\n }, {\n label: '排序',\n display: true,\n type: 'input',\n span: 24,\n prop: 'orderBy'\n }, {\n label: '默认参数',\n type: 'input',\n span: 24,\n prop: 'parameterDefault'\n }, {\n label: 'API',\n display: true,\n type: 'input',\n span: 24,\n prop: 'api'\n }, {\n label: '请求类型',\n prop: 'requestType',\n border: true,\n type: 'radio',\n value: '0',\n span: 6,\n dicData: [],\n dictCode: 'request_type'\n }]\n });\n const configData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('configData');\n function parseData(data) {\n if (form.form.definitionSql == '1') {\n data.mainTable = form.form.mainTable;\n } else {\n data.mainTable = form.form.table[0].joinTable;\n }\n data.definitionSql = form.form.definitionSql;\n data.executeSql = form.form.executeSql;\n data.orderBy = form.form.orderBy;\n data.groupBy = form.form.groupBy;\n data.executeWhere = form.form.executeWhere;\n data.parameterDefault = form.form.parameterDefault;\n data.hump = form.form.hump;\n data.api = form.form.api;\n data.requestType = form.form.requestType;\n if (form.form.definitionSql == 0) {\n if (form.form.table[0].deleteWhere) {\n data.deleteWhere = {\n wheres: form.form.table[0].deleteWhere.trim(),\n tableName: form.form.table[0].joinTable\n };\n } else {\n delete data.deleteWhere;\n }\n }\n }\n function setData(f) {\n form.form.definitionSql = f;\n form.form.hump = f.hump;\n form.form.mainTable = f.mainTable;\n form.form.executeSql = f.executeSql;\n form.form.orderBy = f.orderBy;\n form.form.api = f.api;\n form.form.requestType = f.requestType;\n form.form.executeWhere = f.executeWhere;\n form.form.parameterDefault = f.parameterDefault;\n form.form.definitionSql = f.definitionSql;\n if (form.form.definitionSql == 0) {\n sqlParseTable(f.deleteWhere);\n }\n }\n function setTable() {\n let promise = [];\n for (let i = 0; i < form.form.table.length; i++) {\n promise.push((0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get)(http, \"/online/getDBTableColumnList/\" + addOrEditRootData.form.dbName, {\n tableName: form.form.table[i].joinTable\n }));\n }\n Promise.all(promise).then(result => {\n for (let i = 0; i < result.length; i++) {\n form.form.table[i]['columnList'] = result[i];\n }\n setSql();\n });\n }\n function setSql(index, seq) {\n if (seq != undefined && seq != 0) {\n let arr = form.form.table.find(item => {\n return item.index == seq;\n });\n if (!arr || !arr.joinTable) {\n return;\n }\n }\n if (index != undefined && index != 0) {\n form.form.table.splice(index, 1);\n }\n let sqlTableOn = form.form.table[0].joinTable + \" t1 \";\n let sqlFiled = \"\";\n let tableColumns = [];\n let sort = 0;\n let mapFiled = {};\n for (let i = 0; i < form.form.table.length; i++) {\n if (i === index) {\n continue;\n }\n let obj = form.form.table[i];\n for (let j = 0; j < obj.columnList.length; j++) {\n let column = obj.columnList[j];\n if (column.checked == 0) {\n continue;\n }\n if (sqlFiled.length != 0) {\n sqlFiled += \",\";\n }\n if (mapFiled[column.column_name] !== undefined) {\n mapFiled[column.column_name]++;\n } else {\n mapFiled[column.column_name] = 0;\n }\n sort++;\n let asName = mapFiled[column.column_name] === 0 ? column.column_name : obj.index + \"_\" + column.column_name;\n sqlFiled += obj.index + \".\" + column.column_name + \" AS \" + asName;\n let column_name = column.column_name;\n let column_comment = column.column_comment ? column.column_comment : column_name;\n tableColumns.push({\n sort: sort,\n tableField: column_name,\n field: column_name,\n title: column_comment,\n label: column_comment,\n visible: column.visible,\n display: 1,\n asName: asName\n });\n }\n if (i != 0) {\n sqlTableOn += \" \" + obj.type + \" \" + obj.joinTable + \" \" + obj.index + \" on \" + obj.joinFiled;\n }\n }\n for (let tableColumn of tableColumns) {\n let add = true;\n for (let c of configData.tableColumn) {\n if (c.field == tableColumn.field) {\n add = false;\n }\n }\n if (add) {\n configData.tableColumn.push(tableColumn);\n }\n }\n for (let i = 0; i < configData.tableColumn.length; i++) {\n let remove = true;\n for (let tableColumn of tableColumns) {\n if (configData.tableColumn[i].field == tableColumn.field) {\n remove = false;\n }\n }\n if (remove) {\n configData.tableColumn.splice(i, 1);\n }\n }\n form.form.executeSql = \"select \" + sqlFiled + \" from \" + sqlTableOn;\n }\n const isSyncCurd = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)(false);\n const sync = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)(false);\n function syncTable() {\n emit('loading', true);\n configData.form.executeSql = form.form.executeSql;\n configData.form.executeWhere = form.form.where;\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableFiled\", {\n sql: form.form.executeSql,\n where: form.form.where,\n definitionSql: form.form.definitionSql,\n dbName: addOrEditRootData.form.dbName,\n uuid: configData.form.uuid\n }, undefined, false).then(data => {\n emit(\"updateTable\", data.data);\n isSyncCurd.value = form.form?.definitionSql == 0 && form.form?.table?.length == 1;\n if (isSyncCurd.value && sync.value) {\n emit(\"updateCurd\");\n }\n setFieldConfig();\n }).finally(() => {\n emit('loading', false);\n });\n }\n const filedConfig = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)();\n function setFieldConfig(filedConf) {\n if (form.form.definitionSql != 0) {\n return;\n }\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableSetFiled\", {\n sql: form.form.executeSql,\n where: form.form.where,\n dbName: addOrEditRootData.form.dbName,\n definitionSql: form.form.definitionSql,\n uuid: configData.form.uuid\n }, false, false).then(({\n data\n }) => {\n setFormTable(data);\n if (filedConf) {\n filedConfig.value.init(form.form.table);\n }\n });\n }\n function getTableNamesByFormSql() {\n let formSql = form.form.executeSql.substring(form.form.executeSql.indexOf('from') + 4);\n let tableNames = [];\n for (const join of formSql.split('join')) {\n tableNames.push(join);\n }\n return tableNames;\n }\n function getTableComment(key) {\n for (const item of dicData.joinTableDicData) {\n if (item.value == key) return item.label;\n }\n }\n function setFormTable(data) {\n let tableNames = getTableNamesByFormSql();\n let tables = [];\n for (const key of Object.keys(data)) {\n let table = {\n index: 't1',\n type: '主表',\n joinTable: key,\n joinFiled: '/',\n deleteWhere: '',\n columnList: [],\n tableComment: getTableComment(key)\n };\n table.columnList = Object.values(data[key]);\n tables.push(table);\n }\n form.form.table = [];\n for (let i = 0; i < tableNames.length; i++) {\n const tableName = tableNames[i];\n for (const table of tables) {\n if (tableName.includes(table.joinTable)) {\n if (i == 0) {\n table.deleteWhere = 'id=${id}';\n table.mainTable = table.joinTable;\n }\n if (i != 0) {\n table.index = 't' + (i + 1);\n table.type = 'join';\n let joinFiled = tableName.substring(tableName.indexOf('on') + 2).replace(/[\\n\\t\\s]+/g, '');\n if (tableNames[i - 1].includes('left')) {\n table.type = 'left join';\n joinFiled = joinFiled.replace('left', '');\n }\n if (tableNames[i - 1].includes('right')) {\n table.type = 'right join';\n joinFiled = joinFiled.replace('right', '');\n }\n table.joinFiled = joinFiled;\n }\n form.form.table.push(table);\n break;\n }\n }\n }\n }\n function updateExecuteSql(v) {\n if (v === 0) {\n form.form.executeSql = sql_formatter__WEBPACK_IMPORTED_MODULE_8___default().format(form.form.executeSql, {\n language: 'sql',\n keywordCase: 'upper',\n indentStyle: 'tabularLeft'\n });\n } else {\n form.form.executeSql = form.form.executeSql.replace(/\\s+/g, \" \");\n }\n }\n function filedConfigClose(data) {\n if (!data) return;\n for (let j = 0; j < form.form.table.length; j++) {\n let obj = form.form.table[j];\n if (Object.keys(data).includes(obj.index)) {\n form.form.table[j].columnList = data[obj.index];\n }\n }\n setSql();\n }\n function setFieldEvent(row) {\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableSetFiled\", {\n sql: form.form.executeSql,\n definitionSql: form.form.definitionSql,\n dbName: addOrEditRootData.form.dbName,\n where: form.form.where,\n uuid: configData.form.uuid\n }, undefined, false).then(data => {\n row.columnList = Object.values(data.data[row.joinTable]);\n filedConfig.value.init(row);\n });\n }\n\n /**\r\n * 一键同步CURD\r\n */\n const syncCurd = () => {\n sync.value = true;\n syncTable();\n };\n function parseSqlToTables(sql) {\n // 标准化SQL,去除多余空格和换行\n let normalizedSql = sql.replace(/[\\n\\r\\s]+/g, ' ').trim();\n\n // 分割FROM后面的部分\n let fromPart = normalizedSql.split(/from/i)[1];\n if (!fromPart) return [];\n let result = [];\n let currentIndex = 0;\n\n // 分割所有JOIN(包括LEFT JOIN, RIGHT JOIN等)\n let parts = fromPart.split(/\\s+(?:left\\s+)?(?:right\\s+)?(?:inner\\s+)?join\\s+/i);\n\n // 处理主表\n let mainTablePart = parts[0].trim();\n let mainTableName = mainTablePart.split(/\\s+/)[0];\n result.push({\n index: 't' + (currentIndex + 1),\n type: '主表',\n joinTable: mainTableName,\n joinFiled: '/'\n });\n\n // 处理关联表\n for (let i = 1; i < parts.length; i++) {\n currentIndex++;\n let joinPart = parts[i].trim();\n\n // 获取JOIN类型\n let joinType = 'left';\n if (normalizedSql.toLowerCase().includes('right join')) {\n joinType = 'right';\n } else if (normalizedSql.toLowerCase().includes('inner join')) {\n joinType = 'inner';\n }\n\n // 分割ON条件\n let onPart = joinPart.split(/\\s+on\\s+/i);\n let joinTableName = onPart[0].trim().split(/\\s+/)[0];\n let joinFields = onPart[1] ? onPart[1].trim() : '';\n result.push({\n index: 't' + (currentIndex + 1),\n type: joinType,\n joinTable: joinTableName,\n joinFiled: joinFields\n });\n }\n return result;\n }\n const sqlParseTable = o => {\n if (configData.form.executeSql && configData.form.executeSql.toLowerCase().indexOf(\"from\") === -1) {\n return;\n }\n let tableData = parseSqlToTables(configData.form.executeSql);\n if (o) {\n tableData[0].deleteWhere = o.wheres;\n }\n form.form.table = tableData;\n };\n function remoteMethod() {\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get)(http, \"/online/getDBTableList\", {\n dbName: addOrEditRootData.form.dbName\n }).then(data => {\n dicData.joinTableDicData = data;\n });\n }\n function initDict() {\n for (const column of option.column) {\n if (column.dictCode) {\n column.dicData = dict.val(column.dictCode);\n }\n }\n }\n const emit = __emit; //声明 emits\n (0,vue__WEBPACK_IMPORTED_MODULE_3__.onMounted)(() => {\n remoteMethod();\n initDict();\n });\n __expose({\n setData,\n parseData,\n form\n });\n const __returned__ = {\n http,\n addOrEditRootData,\n dict,\n dicData,\n form,\n option,\n configData,\n parseData,\n setData,\n setTable,\n setSql,\n isSyncCurd,\n sync,\n syncTable,\n filedConfig,\n setFieldConfig,\n getTableNamesByFormSql,\n getTableComment,\n setFormTable,\n updateExecuteSql,\n filedConfigClose,\n setFieldEvent,\n syncCurd,\n parseSqlToTables,\n sqlParseTable,\n remoteMethod,\n initDict,\n emit,\n inject: vue__WEBPACK_IMPORTED_MODULE_3__.inject,\n reactive: vue__WEBPACK_IMPORTED_MODULE_3__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_3__.onMounted,\n ref: vue__WEBPACK_IMPORTED_MODULE_3__.ref,\n get get() {\n return _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get;\n },\n get post() {\n return _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post;\n },\n get setArrayObjectKeyValue() {\n return _utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue;\n },\n get storeDict() {\n return _store_dict__WEBPACK_IMPORTED_MODULE_6__.storeDict;\n },\n get ElMessage() {\n return element_plus__WEBPACK_IMPORTED_MODULE_7__.ElMessage;\n },\n get sqlFormatter() {\n return (sql_formatter__WEBPACK_IMPORTED_MODULE_8___default());\n },\n FieldConfig: _views_table_add_or_edit_config_field_config_index_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n LazyLoadSelect: _components_lazy_load_select_vue__WEBPACK_IMPORTED_MODULE_10__[\"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/base-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");
831
+ 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_find_js__WEBPACK_IMPORTED_MODULE_2__ = __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_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/utils/http/httpUtils */ \"./src/utils/http/httpUtils.js\");\n/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/utils/object */ \"./src/utils/object.js\");\n/* harmony import */ var _store_dict__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/store/dict */ \"./src/store/dict.js\");\n/* harmony import */ var element_plus__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! element-plus */ \"element-plus\");\n/* harmony import */ var element_plus__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(element_plus__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var sql_formatter__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! sql-formatter */ \"./node_modules/sql-formatter/lib/sqlFormatter.js\");\n/* harmony import */ var sql_formatter__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(sql_formatter__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _views_table_add_or_edit_config_field_config_index_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/views/table/add-or-edit/config/field-config/index.vue */ \"./src/views/table/add-or-edit/config/field-config/index.vue\");\n/* harmony import */ var _components_lazy_load_select_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/components/lazy-load-select.vue */ \"./src/components/lazy-load-select.vue\");\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n __name: 'index',\n emits: [\"emits\", 'updateTab'],\n setup(__props, {\n expose: __expose,\n emit: __emit\n }) {\n const http = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('http');\n const addOrEditRootData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('addOrEditRootData');\n const dict = (0,_store_dict__WEBPACK_IMPORTED_MODULE_6__.storeDict)();\n const dicData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n joinFiledDicData: [{\n label: '内连接',\n value: 'join'\n }, {\n label: '左连接',\n value: 'left join'\n }, {\n label: '右连接',\n value: 'right join'\n }],\n joinTableDicData: []\n });\n const form = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n form: {\n table: [{\n index: \"t1\",\n type: \"主表\",\n joinTable: \"\",\n joinFiled: \"/\",\n deleteWhere: 'id=${id}'\n }],\n executeSql: '',\n executeWhere: '',\n orderBy: ''\n }\n });\n const option = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n submitBtn: false,\n emptyBtn: false,\n column: [\n /* {\r\n label: '转换驼峰', prop: 'hump', border: true, type: 'radio', value: '0', span: 7, dicData: [{\r\n label: '不转换', value: '0'\r\n }, {\r\n label: '转换', value: '1'\r\n },{\r\n label: '请求转换', value: '2'\r\n }],\r\n dictCode: 'converting_hump'\r\n },*/\n {\n label: '数据源类型',\n type: 'radio',\n span: 7,\n prop: 'definitionSql',\n border: true,\n value: '0',\n onChange: ({\n value\n }) => {\n if (value == '0') {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"executeSql,where,table,orderBy\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"api,requestType\");\n } else if (value == '1') {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"executeSql,where,orderBy\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"api,table,requestType\");\n } else {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"api,requestType\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"executeSql,where,table,orderBy\");\n }\n },\n dicData: [{\n label: '自动SQL',\n value: '0'\n }, {\n label: '手动SQL',\n value: '1'\n }, {\n label: 'API',\n value: '2'\n }],\n dictCode: 'tree_data_type'\n }, {\n label: '查询表格',\n prop: 'table',\n type: 'dynamic',\n span: 24,\n children: {\n align: 'center',\n minHeight: 100,\n maxHeight: 170,\n size: \"small\",\n headerAlign: 'center',\n rowAdd: done => {\n let obj = {\n index: \"t\" + (form.form.table.length + 1),\n type: \"join\",\n joinTable: \"\",\n joinFiled: \"t\" + form.form.table.length + \".=t\" + (form.form.table.length + 1) + \".\"\n };\n done(obj);\n },\n rowDel: row => {\n if (row.$index != 0) {\n setSql(row.$index);\n } else {\n element_plus__WEBPACK_IMPORTED_MODULE_7__.ElMessage.error(\"主表不能删除!\");\n }\n },\n column: [{\n width: 60,\n prop: \"index\",\n label: '序号'\n }, {\n label: '类型',\n prop: \"type\",\n width: 120,\n disabled: true,\n type: 'select'\n }, {\n label: '数据表',\n prop: \"joinTable\",\n type: 'select',\n dicData: []\n }, {\n label: 'on',\n prop: \"joinFiled\",\n type: 'input'\n }, {\n label: '删除条件',\n prop: \"deleteWhere\",\n width: 200,\n type: 'input'\n }]\n }\n }, {\n label: '执行SQL',\n display: true,\n type: 'textarea',\n maxRows: 7,\n span: 24,\n prop: 'executeSql'\n }, {\n label: 'where条件',\n display: true,\n type: 'input',\n span: 24,\n prop: 'executeWhere'\n }, {\n label: '排序',\n display: true,\n type: 'input',\n span: 24,\n prop: 'orderBy'\n }, {\n label: '默认参数',\n type: 'input',\n span: 24,\n prop: 'parameterDefault'\n }, {\n label: 'API',\n display: true,\n type: 'input',\n span: 24,\n prop: 'api'\n }, {\n label: '请求类型',\n prop: 'requestType',\n border: true,\n type: 'radio',\n value: '0',\n span: 6,\n dicData: [],\n dictCode: 'request_type'\n }]\n });\n const configData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('configData');\n function parseData(data) {\n if (form.form.definitionSql == '1') {\n data.mainTable = form.form.mainTable;\n } else {\n data.mainTable = form.form.table[0].joinTable;\n }\n data.definitionSql = form.form.definitionSql;\n data.executeSql = form.form.executeSql;\n data.orderBy = form.form.orderBy;\n data.groupBy = form.form.groupBy;\n data.executeWhere = form.form.executeWhere;\n data.parameterDefault = form.form.parameterDefault;\n data.hump = form.form.hump;\n data.api = form.form.api;\n data.requestType = form.form.requestType;\n if (form.form.definitionSql == 0) {\n if (form.form.table[0].deleteWhere) {\n data.deleteWhere = {\n wheres: form.form.table[0].deleteWhere.trim(),\n tableName: form.form.table[0].joinTable\n };\n } else {\n delete data.deleteWhere;\n }\n }\n }\n function setData(f) {\n form.form.definitionSql = f;\n form.form.hump = f.hump;\n form.form.mainTable = f.mainTable;\n form.form.executeSql = f.executeSql;\n form.form.orderBy = f.orderBy;\n form.form.api = f.api;\n form.form.requestType = f.requestType;\n form.form.executeWhere = f.executeWhere;\n form.form.parameterDefault = f.parameterDefault;\n form.form.definitionSql = f.definitionSql;\n if (form.form.definitionSql == 0) {\n sqlParseTable(f.deleteWhere);\n }\n }\n function setTable() {\n let promise = [];\n for (let i = 0; i < form.form.table.length; i++) {\n promise.push((0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get)(http, \"/online/getDBTableColumnList/\" + addOrEditRootData.form.dbName, {\n tableName: form.form.table[i].joinTable\n }));\n }\n Promise.all(promise).then(result => {\n for (let i = 0; i < result.length; i++) {\n form.form.table[i]['columnList'] = result[i];\n }\n setSql();\n });\n }\n function setSql(index, seq) {\n if (seq != undefined && seq != 0) {\n let arr = form.form.table.find(item => {\n return item.index == seq;\n });\n if (!arr || !arr.joinTable) {\n return;\n }\n }\n if (index != undefined && index != 0) {\n form.form.table.splice(index, 1);\n }\n let sqlTableOn = form.form.table[0].joinTable + \" t1 \";\n let sqlFiled = \"\";\n let tableColumns = [];\n let sort = 0;\n let mapFiled = {};\n for (let i = 0; i < form.form.table.length; i++) {\n if (i === index) {\n continue;\n }\n let obj = form.form.table[i];\n for (let j = 0; j < obj.columnList.length; j++) {\n let column = obj.columnList[j];\n if (column.checked == 0) {\n continue;\n }\n if (sqlFiled.length != 0) {\n sqlFiled += \",\";\n }\n if (mapFiled[column.column_name] !== undefined) {\n mapFiled[column.column_name]++;\n } else {\n mapFiled[column.column_name] = 0;\n }\n sort++;\n let asName = mapFiled[column.column_name] === 0 ? column.column_name : obj.index + \"_\" + column.column_name;\n sqlFiled += obj.index + \".\" + column.column_name + \" AS \" + asName;\n let column_name = column.column_name;\n let column_comment = column.column_comment ? column.column_comment : column_name;\n tableColumns.push({\n sort: sort,\n tableField: column_name,\n field: column_name,\n title: column_comment,\n label: column_comment,\n visible: column.visible,\n display: 1,\n asName: asName\n });\n }\n if (i != 0) {\n sqlTableOn += \" \" + obj.type + \" \" + obj.joinTable + \" \" + obj.index + \" on \" + obj.joinFiled;\n }\n }\n for (let tableColumn of tableColumns) {\n let add = true;\n for (let c of configData.tableColumn) {\n if (c.field == tableColumn.field) {\n add = false;\n }\n }\n if (add) {\n configData.tableColumn.push(tableColumn);\n }\n }\n for (let i = 0; i < configData.tableColumn.length; i++) {\n let remove = true;\n for (let tableColumn of tableColumns) {\n if (configData.tableColumn[i].field == tableColumn.field) {\n remove = false;\n }\n }\n if (remove) {\n configData.tableColumn.splice(i, 1);\n }\n }\n form.form.executeSql = \"select \" + sqlFiled + \" from \" + sqlTableOn;\n }\n const isSyncCurd = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)(false);\n const sync = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)(false);\n function syncTable() {\n emit('loading', true);\n configData.form.executeSql = form.form.executeSql;\n configData.form.executeWhere = form.form.where;\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableFiled\", {\n sql: form.form.executeSql,\n where: form.form.where,\n definitionSql: form.form.definitionSql,\n dbName: addOrEditRootData.form.dbName,\n uuid: configData.form.uuid\n }, undefined, false).then(data => {\n emit(\"updateTable\", data.data);\n isSyncCurd.value = form.form?.definitionSql == 0 && form.form?.table?.length == 1;\n if (isSyncCurd.value && sync.value) {\n emit(\"updateCurd\");\n }\n setFieldConfig();\n }).finally(() => {\n emit('loading', false);\n });\n }\n const filedConfig = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)();\n function setFieldConfig(filedConf) {\n if (form.form.definitionSql != 0) {\n return;\n }\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableSetFiled\", {\n sql: form.form.executeSql,\n where: form.form.where,\n dbName: addOrEditRootData.form.dbName,\n definitionSql: form.form.definitionSql,\n uuid: configData.form.uuid\n }, false, false).then(({\n data\n }) => {\n setFormTable(data);\n if (filedConf) {\n filedConfig.value.init(form.form.table);\n }\n });\n }\n function getTableNamesByFormSql() {\n let formSql = form.form.executeSql.substring(form.form.executeSql.indexOf('from') + 4);\n let tableNames = [];\n for (const join of formSql.split('join')) {\n tableNames.push(join);\n }\n return tableNames;\n }\n function getTableComment(key) {\n for (const item of dicData.joinTableDicData) {\n if (item.value == key) return item.label;\n }\n }\n function setFormTable(data) {\n let tableNames = getTableNamesByFormSql();\n let tables = [];\n for (const key of Object.keys(data)) {\n let table = {\n index: 't1',\n type: '主表',\n joinTable: key,\n joinFiled: '/',\n deleteWhere: '',\n columnList: [],\n tableComment: getTableComment(key)\n };\n table.columnList = Object.values(data[key]);\n tables.push(table);\n }\n form.form.table = [];\n for (let i = 0; i < tableNames.length; i++) {\n const tableName = tableNames[i];\n for (const table of tables) {\n if (tableName.includes(table.joinTable)) {\n if (i == 0) {\n table.deleteWhere = 'id=${id}';\n table.mainTable = table.joinTable;\n }\n if (i != 0) {\n table.index = 't' + (i + 1);\n table.type = 'join';\n let joinFiled = tableName.substring(tableName.indexOf('on') + 2).replace(/[\\n\\t\\s]+/g, '');\n if (tableNames[i - 1].includes('left')) {\n table.type = 'left join';\n joinFiled = joinFiled.replace('left', '');\n }\n if (tableNames[i - 1].includes('right')) {\n table.type = 'right join';\n joinFiled = joinFiled.replace('right', '');\n }\n table.joinFiled = joinFiled;\n }\n form.form.table.push(table);\n break;\n }\n }\n }\n }\n function updateExecuteSql(v) {\n if (v === 0) {\n form.form.executeSql = sql_formatter__WEBPACK_IMPORTED_MODULE_8___default().format(form.form.executeSql, {\n language: 'sql',\n keywordCase: 'upper',\n indentStyle: 'tabularLeft'\n });\n } else {\n form.form.executeSql = form.form.executeSql.replace(/\\s+/g, \" \");\n }\n }\n function filedConfigClose(data) {\n if (!data) return;\n for (let j = 0; j < form.form.table.length; j++) {\n let obj = form.form.table[j];\n if (Object.keys(data).includes(obj.index)) {\n form.form.table[j].columnList = data[obj.index];\n }\n }\n setSql();\n }\n function setFieldEvent(row) {\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableSetFiled\", {\n sql: form.form.executeSql,\n definitionSql: form.form.definitionSql,\n dbName: addOrEditRootData.form.dbName,\n where: form.form.where,\n uuid: configData.form.uuid\n }, undefined, false).then(data => {\n row.columnList = Object.values(data.data[row.joinTable]);\n filedConfig.value.init(row);\n });\n }\n\n /**\r\n * 一键同步CURD\r\n */\n const syncCurd = () => {\n sync.value = true;\n syncTable();\n };\n function parseSqlToTables(sql) {\n // 标准化SQL,去除多余空格和换行\n let normalizedSql = sql.replace(/[\\n\\r\\s]+/g, ' ').trim();\n\n // 分割FROM后面的部分\n let fromPart = normalizedSql.split(/from/i)[1];\n let result = [{\n index: 't1',\n type: '主表',\n joinTable: '',\n joinFiled: '/'\n }];\n if (!fromPart) return result;\n let currentIndex = 1;\n\n // 分割所有JOIN(包括LEFT JOIN, RIGHT JOIN等)\n let parts = fromPart.split(/\\s+(?:left\\s+)?(?:right\\s+)?(?:inner\\s+)?join\\s+/i);\n\n // 处理主表\n let mainTablePart = parts[0].trim();\n let mainTableName = mainTablePart.split(/\\s+/)[0];\n result[0].joinTable = mainTableName;\n\n // 处理关联表\n for (let i = 1; i < parts.length; i++) {\n currentIndex++;\n let joinPart = parts[i].trim();\n\n // 获取JOIN类型\n let joinType = 'left';\n if (normalizedSql.toLowerCase().includes('right join')) {\n joinType = 'right';\n } else if (normalizedSql.toLowerCase().includes('inner join')) {\n joinType = 'inner';\n }\n\n // 分割ON条件\n let onPart = joinPart.split(/\\s+on\\s+/i);\n let joinTableName = onPart[0].trim().split(/\\s+/)[0];\n let joinFields = onPart[1] ? onPart[1].trim() : '';\n result.push({\n index: 't' + (currentIndex + 1),\n type: joinType,\n joinTable: joinTableName,\n joinFiled: joinFields\n });\n }\n return result;\n }\n const sqlParseTable = o => {\n if (configData.form.executeSql && configData.form.executeSql.toLowerCase().indexOf(\"from\") === -1) {\n return;\n }\n let tableData = parseSqlToTables(configData.form.executeSql);\n if (o) {\n tableData[0].deleteWhere = o.wheres;\n }\n form.form.table = tableData;\n };\n function remoteMethod() {\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get)(http, \"/online/getDBTableList\", {\n dbName: addOrEditRootData.form.dbName\n }).then(data => {\n dicData.joinTableDicData = data;\n });\n }\n function initDict() {\n for (const column of option.column) {\n if (column.dictCode) {\n column.dicData = dict.val(column.dictCode);\n }\n }\n }\n const emit = __emit; //声明 emits\n (0,vue__WEBPACK_IMPORTED_MODULE_3__.onMounted)(() => {\n remoteMethod();\n initDict();\n });\n __expose({\n setData,\n parseData,\n form\n });\n const __returned__ = {\n http,\n addOrEditRootData,\n dict,\n dicData,\n form,\n option,\n configData,\n parseData,\n setData,\n setTable,\n setSql,\n isSyncCurd,\n sync,\n syncTable,\n filedConfig,\n setFieldConfig,\n getTableNamesByFormSql,\n getTableComment,\n setFormTable,\n updateExecuteSql,\n filedConfigClose,\n setFieldEvent,\n syncCurd,\n parseSqlToTables,\n sqlParseTable,\n remoteMethod,\n initDict,\n emit,\n inject: vue__WEBPACK_IMPORTED_MODULE_3__.inject,\n reactive: vue__WEBPACK_IMPORTED_MODULE_3__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_3__.onMounted,\n ref: vue__WEBPACK_IMPORTED_MODULE_3__.ref,\n get get() {\n return _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get;\n },\n get post() {\n return _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post;\n },\n get setArrayObjectKeyValue() {\n return _utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue;\n },\n get storeDict() {\n return _store_dict__WEBPACK_IMPORTED_MODULE_6__.storeDict;\n },\n get ElMessage() {\n return element_plus__WEBPACK_IMPORTED_MODULE_7__.ElMessage;\n },\n get sqlFormatter() {\n return (sql_formatter__WEBPACK_IMPORTED_MODULE_8___default());\n },\n FieldConfig: _views_table_add_or_edit_config_field_config_index_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n LazyLoadSelect: _components_lazy_load_select_vue__WEBPACK_IMPORTED_MODULE_10__[\"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/base-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");
832
832
 
833
833
  /***/ }),
834
834
 
@@ -1598,7 +1598,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1598
1598
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1599
1599
 
1600
1600
  "use strict";
1601
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_vxe_button = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"vxe-button\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"left\", {}, undefined, true), _ctx.$attrs.value !== undefined ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(_ctx.$attrs.value, obj => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)(((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_vxe_button, {\n class: \"table-right-operation-but\",\n type: \"text\",\n status: obj['status'],\n loading: $setup.bindLoading(obj, $setup.props.row),\n disabled: obj['disabled'] || $setup.getCallBack('disabledCallBack', obj, $setup.props.row, false),\n onClick: $event => _ctx.$emit('handleOperationClick', {\n row: $setup.props.row,\n obj: obj,\n setLoading: $setup.setLoading\n })\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"status\", \"loading\", \"disabled\", \"onClick\"])), [[vue__WEBPACK_IMPORTED_MODULE_0__.vShow, $setup.getCallBack('showCallBack', obj, $setup.props.row, true)]]);\n }), 256 /* UNKEYED_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"right\", {}, undefined, true)], 64 /* STABLE_FRAGMENT */);\n}\n\n//# sourceURL=webpack://olp-table/./src/components/table/ol-table-operate/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
1601
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"el-button\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"left\", {}, undefined, true), _ctx.$attrs.value !== undefined ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(_ctx.$attrs.value, obj => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)(((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_el_button, {\n class: \"table-right-operation-but\",\n link: \"\",\n status: obj['status'],\n type: obj['status'],\n loading: $setup.bindLoading(obj, $setup.props.row),\n disabled: obj['disabled'] || $setup.getCallBack('disabledCallBack', obj, $setup.props.row, false),\n onClick: $event => _ctx.$emit('handleOperationClick', {\n row: $setup.props.row,\n obj: obj,\n setLoading: $setup.setLoading\n })\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"status\", \"type\", \"loading\", \"disabled\", \"onClick\"])), [[vue__WEBPACK_IMPORTED_MODULE_0__.vShow, $setup.getCallBack('showCallBack', obj, $setup.props.row, true)]]);\n }), 256 /* UNKEYED_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"right\", {}, undefined, true)], 64 /* STABLE_FRAGMENT */);\n}\n\n//# sourceURL=webpack://olp-table/./src/components/table/ol-table-operate/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
1602
1602
 
1603
1603
  /***/ }),
1604
1604
 
@@ -1620,7 +1620,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1620
1620
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1621
1621
 
1622
1622
  "use strict";
1623
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\nconst _hoisted_1 = [\"title\"];\nconst _hoisted_2 = {\n key: 1\n};\nconst _hoisted_3 = {\n key: 2\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_vxe_button = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"vxe-button\");\n const _directive_hasPermi = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveDirective)(\"hasPermi\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"left\", {}, undefined, true), _ctx.$attrs.value !== undefined ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(_ctx.$attrs.value, obj => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)(((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_vxe_button, {\n key: obj.code,\n status: obj['status'],\n disabled: obj['disabled'],\n circle: obj.alignMode === 'right' && !obj['status'],\n loading: $data.loading[obj.code],\n onClick: $event => $options.handleToolbarBtnClick(obj.code)\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [obj.alignMode === 'right' && !obj['status'] ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", {\n key: 0,\n title: obj.name\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */)], 8 /* PROPS */, _hoisted_1)) : obj.code === 'sortable' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n style: {\n \"color\": \"#1677FF\"\n },\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj.values ? 'vxe-icon-checkbox-checked' : 'vxe-icon-checkbox-unchecked')\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)])) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)]))]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"status\", \"disabled\", \"circle\", \"loading\", \"onClick\"])), [[_directive_hasPermi, [$props.currentPermi + obj.code]], [vue__WEBPACK_IMPORTED_MODULE_0__.vShow, obj['show']]]);\n }), 128 /* KEYED_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"right\", {}, undefined, true)]);\n}\n\n//# sourceURL=webpack://olp-table/./src/components/table/ol-table-tool-btn/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
1623
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\nconst _hoisted_1 = [\"title\"];\nconst _hoisted_2 = {\n key: 1\n};\nconst _hoisted_3 = {\n key: 2\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"el-button\");\n const _directive_hasPermi = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveDirective)(\"hasPermi\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"left\", {}, undefined, true), _ctx.$attrs.value !== undefined ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(_ctx.$attrs.value, obj => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)(((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_el_button, {\n key: obj.code,\n status: obj['status'],\n type: obj['status'],\n disabled: obj['disabled'],\n circle: obj.alignMode === 'right' && !obj['status'],\n loading: $data.loading[obj.code],\n onClick: $event => $options.handleToolbarBtnClick(obj.code)\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [obj.alignMode === 'right' && !obj['status'] ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", {\n key: 0,\n title: obj.name\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */)], 8 /* PROPS */, _hoisted_1)) : obj.code === 'sortable' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n style: {\n \"color\": \"#1677FF\"\n },\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj.values ? 'vxe-icon-checkbox-checked' : 'vxe-icon-checkbox-unchecked')\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)])) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)]))]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"status\", \"type\", \"disabled\", \"circle\", \"loading\", \"onClick\"])), [[_directive_hasPermi, [$props.currentPermi + obj.code]], [vue__WEBPACK_IMPORTED_MODULE_0__.vShow, obj['show']]]);\n }), 128 /* KEYED_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"right\", {}, undefined, true)]);\n}\n\n//# sourceURL=webpack://olp-table/./src/components/table/ol-table-tool-btn/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
1624
1624
 
1625
1625
  /***/ }),
1626
1626
 
@@ -10761,7 +10761,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
10761
10761
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
10762
10762
 
10763
10763
  "use strict";
10764
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ OTMixinColumnMethod: function() { return /* binding */ OTMixinColumnMethod; }\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_some_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.iterator.some.js */ \"./node_modules/core-js/modules/es.iterator.some.js\");\n/* harmony import */ var core_js_modules_es_iterator_some_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_some_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils_columnProp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/utils/columnProp */ \"./src/utils/columnProp.js\");\n\n\n\n\nfunction setColumnParams(column, key, value) {\n if (value === undefined) {\n return;\n }\n if (!column['params']) {\n column['params'] = {};\n }\n column['params'][key] = value;\n}\nconst OTMixinColumnMethod = {\n methods: {\n setColumnCssClass(o) {\n if (o.dictCode) {\n let vals = this.dictVal(o.dictCode);\n let cssClass = {};\n if (vals) {\n let dictValueLabel = {};\n for (let obj of vals) {\n dictValueLabel[obj.dictValue] = obj.dictLabel;\n if (obj.cssClass) {\n let css = obj.cssClass.trim();\n try {\n css = css.replace(/([a-zA-Z_]\\w*):/g, '\"$1\":').replace(/'/g, '\"');\n css = JSON.parse(css);\n if (Array.isArray(css)) {\n let data = {};\n if (css[0]) {\n data['backgroundColor'] = css[0];\n }\n if (css[1]) {\n data['color'] = css[1];\n }\n cssClass[obj.dictValue] = data;\n } else {\n cssClass[obj.dictValue] = css;\n }\n } catch (e) {\n console.error(\"列名:\", o.title, \"数据字典:\", obj.dictLabel, \"样式异常:\", css);\n }\n }\n }\n setColumnParams(o, 'dictValueLabel', dictValueLabel);\n }\n if (Object.keys(cssClass).length != 0) {\n setColumnParams(o, 'cssClass', cssClass);\n }\n }\n },\n initColumn(columns, tableConfig) {\n this.table.mergeFields = [];\n let items = [];\n columns = columns.sort(({\n sort: a\n }, {\n sort: b\n }) => a - b);\n for (let column of columns) {\n this.toParseOtherProp(column);\n }\n this.table.columnSource = JSON.parse(JSON.stringify(columns));\n let {\n optionJson,\n seq\n } = tableConfig;\n if (optionJson) {\n optionJson = JSON.parse(optionJson);\n }\n for (let o of columns) {\n this.setColumnCssClass(o);\n this.initFormatter(o);\n this.initSlots(o);\n this.setTreeOpenColumn(o, tableConfig);\n this.setMergeField(o);\n this.setColumnShowOverFlow(o, optionJson);\n this.setProp(o);\n this.setColumnHide(o);\n this.setFixed(o);\n this.setShowFooter(o);\n this.getVNode(o, items);\n // 可编辑配置\n if (this.hasEditConfig()) {\n this.setEditConfig(o);\n }\n }\n items.sort(({\n searchSort: a\n }, {\n searchSort: b\n }) => a - b);\n this.setSearchArea(items);\n columns = this.initBodyLeftColumn(columns, seq);\n if (this.table['show-footer']) {\n if (!columns[0].width || columns[0].width < 55) {\n columns[0].width = 55;\n }\n }\n this.table.columns = columns;\n //暂时不合并,启用虚拟滚动\n this.initMergeCells();\n },\n hasEditConfig() {\n return this.table.editConfig && (this.table.editConfig.enabled === true || typeof this.table.editConfig.enabled === 'string' && this.table.editConfig.enabled.toLowerCase() === 'true');\n },\n setEditConfig(o) {\n if (o.tableSaveToOtherProp && o.tableSaveToOtherProp == '1') {\n return;\n }\n if (o.selectDom == '1') {\n o.editRender = {\n name: '$input',\n props: {\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 文本域\n if (o.selectDom == '10') {\n o.editRender = {\n name: 'textarea',\n props: {\n type: 'textarea',\n // 指定为多行文本框\n placeholder: '请输入' + o.title,\n rows: 3,\n // 默认显示行数\n autosize: {\n minRows: 2,\n maxRows: 6\n },\n // 自动调整高度\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 数字\n if (o.selectDom == '7') {\n o.editRender = {\n name: '$input',\n props: {\n type: this.getType(o.selectDom),\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 时间\n if (o.selectDom == '3' || o.selectDom == '6') {\n o.editRender = {\n name: 'VxeInput',\n props: {\n type: this.getType(o.selectDom),\n valueFormat: 'yyyy-MM-dd HH:mm:ss'\n }\n };\n }\n // 下拉框\n if (o.selectDom == '2' || o.selectDom == '8') {\n o.editRender = {\n name: 'VxeSelect',\n options: this.dictVal(o.dictCode),\n props: {\n placeholder: '请选择' + o.title\n }\n };\n }\n },\n getType(selectDom) {\n if (selectDom == '3') {\n return 'datetime';\n }\n if (selectDom == '6') {\n return 'date';\n }\n if (selectDom == '7') {\n return 'number';\n }\n },\n /**\r\n * 初始化列左边\r\n * @param columns\r\n * @param type\r\n * @returns {*}\r\n */\n initBodyLeftColumn(columns, type) {\n const hasSeqColumn = columns.some(col => ['seq', 'sequence', '序号'].includes(col.field || col.prop || col.type));\n if (type == 1 && !hasSeqColumn) {\n columns.unshift({\n type: 'seq',\n width: 55,\n title: '序号',\n fixed: 'left'\n });\n }\n const hasCheckboxColumn = columns.some(col => ['checkbox'].includes(col.type));\n const hasRadioColumn = columns.some(col => ['radio'].includes(col.type));\n if (this.selectBox == 2 && !hasCheckboxColumn) {\n columns.unshift({\n type: 'checkbox',\n width: 45,\n showOverflow: false,\n fixed: 'left'\n });\n } else if (this.selectBox == 1 && !hasRadioColumn) {\n columns.unshift({\n type: 'radio',\n width: 45,\n showOverflow: false,\n fixed: 'left'\n });\n }\n return columns;\n },\n setTreeOpenColumn(o, tableConfig) {\n if (tableConfig.tree == 1 && o.field == tableConfig.openColumn) {\n o.treeNode = true;\n if (!o.align) {\n o.align = 'left';\n }\n }\n },\n setMergeField(column) {\n if (column.mergeFlag == '1') {\n this.table.mergeFields.push(column.field);\n }\n },\n setColumnHide(o) {\n //隐藏\n if (o.visible == \"0\") {\n o.visible = false;\n }\n },\n initFormatter(o) {\n try {\n if (o.formatter) {\n o.formatter = eval(\"({cellValue, row, column})=>{\" + o.formatter + \"}\");\n } else if (o.dictCode) {\n o.formatter = eval(\"\" + \"({cellValue, row, column})=>{if(column.params && column.params.dictValueLabel){ let dictValueLabelElement = column.params.dictValueLabel[cellValue];if(dictValueLabelElement){return dictValueLabelElement;} }return cellValue}\");\n }\n } catch (e) {\n console.log(o.title, \"formatter异常:\", o.formatter);\n this.$message.error(o.title + \"formatter异常!\");\n }\n },\n initSlots(o) {\n if (o.selectDom == 20) {\n o.slotsName = 'img_default';\n o.slots = {\n default: 'img_default'\n };\n }\n if (o.selectDom == '21') {\n o.slotsName = 'icon_default';\n o.slots = {\n default: 'icon_default'\n };\n }\n },\n setFixed(item) {\n //修改固定字段的值\n if (item.fixed === '1') {\n item.fixed = 'left';\n } else if (item.fixed === '2') {\n item.fixed = 'right';\n }\n if (item.align === '1') {\n item.align = 'left';\n } else if (item.align === '2') {\n item.align = 'right';\n } else if (item.align === '0') {\n item.align = 'center';\n }\n },\n setProp(item) {\n item.resizable = undefined;\n if (item.sortable != undefined && item.sortable != \"\") {\n let order = item.field + (item.sortable == 0 ? \" ASC \" : \" DESC \");\n this.orderByColumns.push(order);\n }\n ////时间类型\n if (!item.width && (item.selectDom == 3 || item.selectDom == 6)) {\n item.minWidth = 150;\n } else if (!item.width && item.title) {\n item.minWidth = item.title.length * 30;\n }\n },\n setShowFooter(item) {\n if (item['totalToOtherProp']) {\n this.table['show-footer'] = true;\n }\n },\n toParseOtherProp(item) {\n //其他属性赋值\n try {\n let otherProp = JSON.parse(item.otherProp);\n item.otherProp = otherProp;\n for (let key of Object.keys(otherProp)) {\n item[key] = otherProp[key];\n }\n } catch (e) {\n if (item.otherProp) {\n console.error(item.field + \"其他属性无法解析:\" + item.otherProp);\n }\n item.otherProp = {};\n }\n if (item['totalToOtherProp'] === undefined) {\n item['totalToOtherProp'] = '';\n }\n },\n /**\r\n * 设置搜索\r\n * @param items\r\n */\n setSearchArea(items) {\n if (items.length != 0) {\n items.push({\n itemRender: {\n name: '$buttons',\n children: [{\n props: {\n type: 'submit',\n content: '查询',\n status: 'primary'\n },\n events: {\n click: this.query\n }\n }, {\n props: {\n type: 'button',\n content: '重置'\n },\n events: {\n click: this.resetQuery\n }\n }]\n }\n });\n this.table.formConfig.size = this.table.size;\n }\n this.table.formConfig.items = items;\n },\n getVNode(o, items) {\n if (o.selectType == undefined) {\n return;\n }\n //99是范围查询\n if (o.selectType == 99) {\n let itemStart = this.initFormConfig(o, 5);\n let itemEnd = this.initFormConfig(o, 6);\n //时间范围查询\n if (o.selectDom == 3 || o.selectDom == 6) {\n let placeholder = o.selectDom == 3 ? '时间' : '';\n itemStart.placeholder = '请选择开始日期' + placeholder;\n delete itemStart.itemRender;\n itemEnd.placeholder = '请选择结束日期' + placeholder;\n }\n items.push(itemStart);\n items.push(itemEnd);\n } else {\n items.push(this.initFormConfig(o));\n }\n },\n initFormConfig(o, type) {\n let key = o.tableField;\n if (o.tableNameSEARCHToOtherProp != undefined && o.tableNameSEARCHToOtherProp != '') {\n key = o.tableNameSEARCHToOtherProp + '.' + key;\n }\n let item = {\n align: 'left',\n field: key,\n span: 6,\n searchSort: o.searchSort,\n title: o.titleSEARCHToOtherProp != undefined ? o.titleSEARCHToOtherProp : o.title,\n key: key,\n type: o.selectType,\n selectDom: o.selectDom,\n tableName: o.tableNameSEARCHToOtherProp,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true,\n toDate: o.toDateSEARCHToOtherProp,\n itemRender: {\n name: '$input',\n props: {\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n }\n };\n // if(this.table.editConfig && (\n // this.table.editConfig.enabled === true ||\n // (typeof this.table.editConfig.enabled === 'string' &&\n // this.table.editConfig.enabled.toLowerCase() === 'true')\n // )){\n // o.editRender = {\n // name:'$input',\n // props: {\n // placeholder: '请输入' + o.title,\n // clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n // }\n // }\n // }\n try {\n this.table.formConfig.data[item.key] = eval(o.valueSEARCHToOtherProp);\n } catch (e) {}\n if (type == 5) {\n item.title = o.title + \"开始\";\n item.type = 5;\n item.field = \"$\" + o.tableField;\n item.key = \"$\" + o.tableField;\n } else if (type == 6) {\n item.field = o.tableField + \"$\";\n item.type = 6;\n item.key = o.tableField + \"$\";\n item.title = o.title + \"结束\";\n }\n if ((item.type == 6 || item.type == 5) && o.selectDom == undefined) {\n o.selectDom = 7;\n }\n this.getItemRender(o, item, type);\n if (item.title && item.title.length > 6) {\n item.titleWidth = 20 * (item.title.length - 2);\n } else if (item.title.toString().trim().length == 0) {\n item.titleWidth = 0;\n }\n if (o.spanSEARCHToOtherProp != undefined) {\n item.span = 6;\n }\n return item;\n },\n getItemRender(o, item, type) {\n if (o.dictCode) {\n delete item.itemRender;\n item.slots = {\n default: o.selectDom + item.field\n };\n item.slotsName = o.selectDom + item.field;\n item.options = this.dictVal(o.dictCode);\n item.placeholder = '请选择' + o.title;\n item.clearable = o.clearableSEARCHToOtherProp == '1';\n item.multiple = o.selectDom == '8';\n } else if (o.selectDom == 7) {\n item.itemRender.props.type = 'integer';\n } else if (o.selectDom == 10) {\n item.itemRender.name = 'textarea';\n } else if (o.selectDom == 3 || o.selectDom == 6) {\n delete item.itemRender;\n item.domDate = true;\n if (o.selectType == 98 && item.selectDom == 6) {\n item.span = 7;\n item.domType = 'daterange';\n } else {\n item.domType = item.selectDom == 3 ? 'datetime' : 'date';\n }\n //这里跟element plus不一样\n item.domFormat = item.selectDom == 3 ? 'yyyy-MM-dd HH:mm:ss' : 'yyyy-MM-dd';\n item.slots = {\n default: o.selectDom + item.field + \"_time\"\n };\n item.slotsName = o.selectDom + item.field + \"_time\";\n item.placeholder = '请选择';\n if (type == 5) {\n item.placeholder += \"开始\";\n } else if (type == 6) {\n item.placeholder += \"结束\";\n }\n if (o.selectDom == 3) {\n item.placeholder += \"时间\";\n }\n }\n },\n setColumnShowOverFlow(column, optionObj) {\n if (optionObj) {\n if (optionObj.table && optionObj.table.columnConfig && optionObj.table.columnConfig.showOverflow) {\n if (column.type != 'seq' || column.type != 'checkbox') {\n column.showOverflow = optionObj.table.columnConfig.showOverflow;\n }\n }\n }\n },\n initMergeCells() {\n if (this.table.mergeCells) {\n this.table.mergeCells = JSON.parse(this.table.mergeCells);\n return;\n }\n if (this.table.mergeFields && this.table.mergeFields.length != 0) {\n this.table.spanMethod = this.mergeRowMethod;\n }\n },\n // 通用行合并函数(将相同多列数据合并为一行)\n mergeRowMethod({\n row,\n _rowIndex,\n column,\n visibleData\n }) {\n const cellValue = row[column.field];\n if (cellValue && this.table.mergeFields.includes(column.field)) {\n const prevRow = visibleData[_rowIndex - 1];\n let nextRow = visibleData[_rowIndex + 1];\n if (prevRow && prevRow[column.field] === cellValue) {\n return {\n rowspan: 0,\n colspan: 0\n };\n } else {\n let countRowspan = 1;\n while (nextRow && nextRow[column.field] === cellValue) {\n nextRow = visibleData[++countRowspan + _rowIndex];\n }\n if (countRowspan > 1) {\n return {\n rowspan: countRowspan,\n colspan: 1\n };\n }\n }\n }\n },\n setDictCellStyle({\n row,\n rowIndex,\n $rowIndex,\n column,\n columnIndex,\n $columnIndex\n }) {\n if (column.params && column.params.cssClass) {\n return column.params.cssClass[row[column[(0,_utils_columnProp__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(column)]]];\n }\n },\n setTableStyle(option) {\n if (option['cell-style'] === undefined) {\n option['cell-style'] = {\n flag: \"flag##function#\",\n isFunction: true\n };\n }\n option['cell-style']['code'] = \"let OTMixinColumnMethod_setDictCellStyle = this.setDictCellStyle(params); if(OTMixinColumnMethod_setDictCellStyle){ return OTMixinColumnMethod_setDictCellStyle;}\\n\" + option['cell-style']['code'];\n }\n }\n};\n\n//# sourceURL=webpack://olp-table/./src/mixins/VTMixin/OTMixinColumnMethod.js?");
10764
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ OTMixinColumnMethod: function() { return /* binding */ OTMixinColumnMethod; }\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_some_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.iterator.some.js */ \"./node_modules/core-js/modules/es.iterator.some.js\");\n/* harmony import */ var core_js_modules_es_iterator_some_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_some_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils_columnProp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/utils/columnProp */ \"./src/utils/columnProp.js\");\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\n\n\n\n\nfunction setColumnParams(column, key, value) {\n if (value === undefined) {\n return;\n }\n if (!column['params']) {\n column['params'] = {};\n }\n column['params'][key] = value;\n}\nconst OTMixinColumnMethod = {\n methods: {\n setColumnCssClass(o) {\n if (o.dictCode) {\n let vals = this.dictVal(o.dictCode);\n let cssClass = {};\n if (vals) {\n let dictValueLabel = {};\n for (let obj of vals) {\n dictValueLabel[obj.dictValue] = obj.dictLabel;\n if (obj.cssClass) {\n let css = obj.cssClass.trim();\n try {\n css = css.replace(/([a-zA-Z_]\\w*):/g, '\"$1\":').replace(/'/g, '\"');\n css = JSON.parse(css);\n if (Array.isArray(css)) {\n let data = {};\n if (css[0]) {\n data['backgroundColor'] = css[0];\n }\n if (css[1]) {\n data['color'] = css[1];\n }\n cssClass[obj.dictValue] = data;\n } else {\n cssClass[obj.dictValue] = css;\n }\n } catch (e) {\n console.error(\"列名:\", o.title, \"数据字典:\", obj.dictLabel, \"样式异常:\", css);\n }\n }\n }\n setColumnParams(o, 'dictValueLabel', dictValueLabel);\n }\n if (Object.keys(cssClass).length != 0) {\n setColumnParams(o, 'cssClass', cssClass);\n }\n }\n },\n initColumn(columns, tableConfig) {\n this.table.mergeFields = [];\n let items = [];\n columns = columns.sort(({\n sort: a\n }, {\n sort: b\n }) => a - b);\n for (let column of columns) {\n this.toParseOtherProp(column);\n }\n this.table.columnSource = JSON.parse(JSON.stringify(columns));\n let {\n optionJson,\n seq\n } = tableConfig;\n if (optionJson) {\n optionJson = JSON.parse(optionJson);\n }\n for (let o of columns) {\n this.setColumnCssClass(o);\n this.initFormatter(o);\n this.initSlots(o);\n this.setTreeOpenColumn(o, tableConfig);\n this.setMergeField(o);\n this.setColumnShowOverFlow(o, optionJson);\n this.setProp(o);\n this.setColumnHide(o);\n this.setFixed(o);\n this.setShowFooter(o);\n this.getVNode(o, items);\n // 可编辑配置\n if (this.hasEditConfig()) {\n this.setEditConfig(o);\n }\n }\n items.sort(({\n searchSort: a\n }, {\n searchSort: b\n }) => a - b);\n this.setSearchArea(items);\n columns = this.initBodyLeftColumn(columns, seq);\n if (this.table['show-footer']) {\n if (!columns[0].width || columns[0].width < 55) {\n columns[0].width = 55;\n }\n }\n this.table.columns = columns;\n //暂时不合并,启用虚拟滚动\n this.initMergeCells();\n },\n hasEditConfig() {\n return this.table.editConfig && (this.table.editConfig.enabled === true || typeof this.table.editConfig.enabled === 'string' && this.table.editConfig.enabled.toLowerCase() === 'true');\n },\n setEditConfig(o) {\n if (o.tableSaveToOtherProp && o.tableSaveToOtherProp == '1') {\n return;\n }\n if (o.selectDom == '1') {\n o.editRender = {\n name: '$input',\n props: {\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 文本域\n if (o.selectDom == '10') {\n o.editRender = {\n name: 'textarea',\n props: {\n type: 'textarea',\n // 指定为多行文本框\n placeholder: '请输入' + o.title,\n rows: 3,\n // 默认显示行数\n autosize: {\n minRows: 2,\n maxRows: 6\n },\n // 自动调整高度\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 数字\n if (o.selectDom == '7') {\n o.editRender = {\n name: '$input',\n props: {\n type: this.getType(o.selectDom),\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 时间\n if (o.selectDom == '3' || o.selectDom == '6') {\n o.editRender = {\n name: 'VxeInput',\n props: {\n type: this.getType(o.selectDom),\n valueFormat: 'yyyy-MM-dd HH:mm:ss'\n }\n };\n }\n // 下拉框\n if (o.selectDom == '2' || o.selectDom == '8') {\n o.editRender = {\n name: 'VxeSelect',\n options: this.dictVal(o.dictCode),\n props: {\n placeholder: '请选择' + o.title\n }\n };\n }\n },\n getType(selectDom) {\n if (selectDom == '3') {\n return 'datetime';\n }\n if (selectDom == '6') {\n return 'date';\n }\n if (selectDom == '7') {\n return 'number';\n }\n },\n /**\r\n * 初始化列左边\r\n * @param columns\r\n * @param type\r\n * @returns {*}\r\n */\n initBodyLeftColumn(columns, type) {\n const hasSeqColumn = columns.some(col => ['seq', 'sequence', '序号'].includes(col.field || col.prop || col.type));\n if (type == 1 && !hasSeqColumn) {\n columns.unshift({\n type: 'seq',\n width: 55,\n title: '序号',\n fixed: 'left'\n });\n }\n const hasCheckboxColumn = columns.some(col => ['checkbox'].includes(col.type));\n const hasRadioColumn = columns.some(col => ['radio'].includes(col.type));\n if (this.selectBox == 2 && !hasCheckboxColumn) {\n columns.unshift({\n type: 'checkbox',\n width: 45,\n showOverflow: false,\n fixed: 'left'\n });\n } else if (this.selectBox == 1 && !hasRadioColumn) {\n columns.unshift({\n type: 'radio',\n width: 45,\n showOverflow: false,\n fixed: 'left'\n });\n }\n return columns;\n },\n setTreeOpenColumn(o, tableConfig) {\n if (tableConfig.tree == 1 && o.field == tableConfig.openColumn) {\n o.treeNode = true;\n if (!o.align) {\n o.align = 'left';\n }\n }\n },\n setMergeField(column) {\n if (column.mergeFlag == '1') {\n this.table.mergeFields.push(column.field);\n }\n },\n setColumnHide(o) {\n //隐藏\n if (o.visible == \"0\") {\n o.visible = false;\n }\n },\n initFormatter(o) {\n try {\n if (o.formatter) {\n o.formatter = eval(\"({cellValue, row, column})=>{\" + o.formatter + \"}\");\n } else if (o.dictCode) {\n o.formatter = eval(\"\" + \"({cellValue, row, column})=>{if(column.params && column.params.dictValueLabel){ let dictValueLabelElement = column.params.dictValueLabel[cellValue];if(dictValueLabelElement){return dictValueLabelElement;} }return cellValue}\");\n }\n } catch (e) {\n console.log(o.title, \"formatter异常:\", o.formatter);\n this.$message.error(o.title + \"formatter异常!\");\n }\n },\n initSlots(o) {\n if (o.selectDom == 20) {\n o.slotsName = 'img_default';\n o.slots = {\n default: 'img_default'\n };\n }\n if (o.selectDom == '21') {\n o.slotsName = 'icon_default';\n o.slots = {\n default: 'icon_default'\n };\n }\n },\n setFixed(item) {\n //修改固定字段的值\n if (item.fixed === '1') {\n item.fixed = 'left';\n } else if (item.fixed === '2') {\n item.fixed = 'right';\n }\n if (item.align === '1') {\n item.align = 'left';\n } else if (item.align === '2') {\n item.align = 'right';\n } else if (item.align === '0') {\n item.align = 'center';\n }\n },\n setProp(item) {\n item.resizable = undefined;\n if (item.sortable != undefined && item.sortable != \"\") {\n let order = item.field + (item.sortable == 0 ? \" ASC \" : \" DESC \");\n this.orderByColumns.push(order);\n }\n ////时间类型\n if (!item.width && (item.selectDom == 3 || item.selectDom == 6)) {\n item.minWidth = 150;\n } else if (!item.width && item.title) {\n item.minWidth = item.title.length * 30;\n }\n },\n setShowFooter(item) {\n if (item['totalToOtherProp']) {\n this.table['show-footer'] = true;\n }\n },\n toParseOtherProp(item) {\n //其他属性赋值\n try {\n let otherProp = JSON.parse(item.otherProp);\n item.otherProp = otherProp;\n for (let key of Object.keys(otherProp)) {\n item[key] = otherProp[key];\n }\n } catch (e) {\n if (item.otherProp) {\n console.error(item.field + \"其他属性无法解析:\" + item.otherProp);\n }\n item.otherProp = {};\n }\n if (item['totalToOtherProp'] === undefined) {\n item['totalToOtherProp'] = '';\n }\n },\n /**\r\n * 设置搜索\r\n * @param items\r\n */\n setSearchArea(items) {\n if (items.length != 0) {\n items.push({\n itemRender: {\n name: '$buttons',\n children: [{\n props: {\n type: 'submit',\n content: '查询',\n status: 'primary'\n },\n events: {\n click: this.query\n }\n }, {\n props: {\n type: 'button',\n content: '重置'\n },\n events: {\n click: this.resetQuery\n }\n }]\n }\n });\n this.table.formConfig.size = this.table.size;\n }\n this.table.formConfig.items = items;\n },\n getVNode(o, items) {\n if (o.selectType == undefined) {\n return;\n }\n //99是范围查询\n if (o.selectType == 99) {\n let itemStart = this.initFormConfig(o, 5);\n let itemEnd = this.initFormConfig(o, 6);\n //时间范围查询\n if (o.selectDom == 3 || o.selectDom == 6) {\n let placeholder = o.selectDom == 3 ? '时间' : '';\n itemStart.placeholder = '请选择开始日期' + placeholder;\n delete itemStart.itemRender;\n itemEnd.placeholder = '请选择结束日期' + placeholder;\n }\n items.push(itemStart);\n items.push(itemEnd);\n } else {\n items.push(this.initFormConfig(o));\n }\n },\n initFormConfig(o, type) {\n let key = o.tableField;\n if (o.tableNameSEARCHToOtherProp != undefined && o.tableNameSEARCHToOtherProp != '') {\n key = o.tableNameSEARCHToOtherProp + '.' + key;\n }\n let item = {\n align: 'left',\n field: key,\n span: 6,\n searchSort: o.searchSort,\n title: o.titleSEARCHToOtherProp != undefined ? o.titleSEARCHToOtherProp : o.title,\n key: key,\n type: o.selectType,\n selectDom: o.selectDom,\n tableName: o.tableNameSEARCHToOtherProp,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true,\n toDate: o.toDateSEARCHToOtherProp,\n itemRender: {\n name: '$input',\n props: {\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n }\n };\n // if(this.table.editConfig && (\n // this.table.editConfig.enabled === true ||\n // (typeof this.table.editConfig.enabled === 'string' &&\n // this.table.editConfig.enabled.toLowerCase() === 'true')\n // )){\n // o.editRender = {\n // name:'$input',\n // props: {\n // placeholder: '请输入' + o.title,\n // clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n // }\n // }\n // }\n try {\n this.table.formConfig.data[item.key] = eval(o.valueSEARCHToOtherProp);\n } catch (e) {}\n if (type == 5) {\n item.title = o.title + \"开始\";\n item.type = 5;\n item.field = \"$\" + o.tableField;\n item.key = \"$\" + o.tableField;\n } else if (type == 6) {\n item.field = o.tableField + \"$\";\n item.type = 6;\n item.key = o.tableField + \"$\";\n item.title = o.title + \"结束\";\n }\n if ((item.type == 6 || item.type == 5) && o.selectDom == undefined) {\n o.selectDom = 7;\n }\n this.getItemRender(o, item, type);\n if (item.title && item.title.length > 6) {\n item.titleWidth = 20 * (item.title.length - 2);\n } else if (item.title.toString().trim().length == 0) {\n item.titleWidth = 0;\n }\n if (o.spanSEARCHToOtherProp != undefined) {\n item.span = 6;\n }\n return item;\n },\n getItemRender(o, item, type) {\n if (o.dictCode) {\n delete item.itemRender;\n item.slots = {\n default: o.selectDom + item.field\n };\n item.slotsName = o.selectDom + item.field;\n item.options = this.dictVal(o.dictCode);\n item.placeholder = '请选择' + o.title;\n item.clearable = o.clearableSEARCHToOtherProp == '1';\n item.multiple = o.selectDom == '8';\n } else if (o.selectDom == 7) {\n item.itemRender.props.type = 'integer';\n } else if (o.selectDom == 10) {\n item.itemRender.name = 'textarea';\n } else if (o.selectDom == 3 || o.selectDom == 6) {\n delete item.itemRender;\n item.domDate = true;\n if (o.selectType == 98 && item.selectDom == 6) {\n item.span = 7;\n item.domType = 'daterange';\n } else {\n item.domType = item.selectDom == 3 ? 'datetime' : 'date';\n }\n //这里跟element plus不一样\n item.domFormat = vue__WEBPACK_IMPORTED_MODULE_4__.version.split('.')[0] == 2 ? 'yyyy-MM-dd' : 'YYYY-MM-DD';\n if (item.selectDom == 3) {\n item.domFormat = item.domFormat + ' HH:mm:ss';\n }\n item.slots = {\n default: o.selectDom + item.field + \"_time\"\n };\n item.slotsName = o.selectDom + item.field + \"_time\";\n item.placeholder = '请选择';\n if (type == 5) {\n item.placeholder += \"开始\";\n } else if (type == 6) {\n item.placeholder += \"结束\";\n }\n if (o.selectDom == 3) {\n item.placeholder += \"时间\";\n }\n }\n },\n setColumnShowOverFlow(column, optionObj) {\n if (optionObj) {\n if (optionObj.table && optionObj.table.columnConfig && optionObj.table.columnConfig.showOverflow) {\n if (column.type != 'seq' || column.type != 'checkbox') {\n column.showOverflow = optionObj.table.columnConfig.showOverflow;\n }\n }\n }\n },\n initMergeCells() {\n if (this.table.mergeCells) {\n this.table.mergeCells = JSON.parse(this.table.mergeCells);\n return;\n }\n if (this.table.mergeFields && this.table.mergeFields.length != 0) {\n this.table.spanMethod = this.mergeRowMethod;\n }\n },\n // 通用行合并函数(将相同多列数据合并为一行)\n mergeRowMethod({\n row,\n _rowIndex,\n column,\n visibleData\n }) {\n const cellValue = row[column.field];\n if (cellValue && this.table.mergeFields.includes(column.field)) {\n const prevRow = visibleData[_rowIndex - 1];\n let nextRow = visibleData[_rowIndex + 1];\n if (prevRow && prevRow[column.field] === cellValue) {\n return {\n rowspan: 0,\n colspan: 0\n };\n } else {\n let countRowspan = 1;\n while (nextRow && nextRow[column.field] === cellValue) {\n nextRow = visibleData[++countRowspan + _rowIndex];\n }\n if (countRowspan > 1) {\n return {\n rowspan: countRowspan,\n colspan: 1\n };\n }\n }\n }\n },\n setDictCellStyle({\n row,\n rowIndex,\n $rowIndex,\n column,\n columnIndex,\n $columnIndex\n }) {\n if (column.params && column.params.cssClass) {\n return column.params.cssClass[row[column[(0,_utils_columnProp__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(column)]]];\n }\n },\n setTableStyle(option) {\n if (option['cell-style'] === undefined) {\n option['cell-style'] = {\n flag: \"flag##function#\",\n isFunction: true\n };\n }\n option['cell-style']['code'] = \"let OTMixinColumnMethod_setDictCellStyle = this.setDictCellStyle(params); if(OTMixinColumnMethod_setDictCellStyle){ return OTMixinColumnMethod_setDictCellStyle;}\\n\" + option['cell-style']['code'];\n }\n }\n};\n\n//# sourceURL=webpack://olp-table/./src/mixins/VTMixin/OTMixinColumnMethod.js?");
10765
10765
 
10766
10766
  /***/ }),
10767
10767
 
package/olp-table.umd.js CHANGED
@@ -828,7 +828,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core
828
828
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
829
829
 
830
830
  "use strict";
831
- 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_find_js__WEBPACK_IMPORTED_MODULE_2__ = __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_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/utils/http/httpUtils */ \"./src/utils/http/httpUtils.js\");\n/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/utils/object */ \"./src/utils/object.js\");\n/* harmony import */ var _store_dict__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/store/dict */ \"./src/store/dict.js\");\n/* harmony import */ var element_plus__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! element-plus */ \"element-plus\");\n/* harmony import */ var element_plus__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(element_plus__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var sql_formatter__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! sql-formatter */ \"./node_modules/sql-formatter/lib/sqlFormatter.js\");\n/* harmony import */ var sql_formatter__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(sql_formatter__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _views_table_add_or_edit_config_field_config_index_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/views/table/add-or-edit/config/field-config/index.vue */ \"./src/views/table/add-or-edit/config/field-config/index.vue\");\n/* harmony import */ var _components_lazy_load_select_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/components/lazy-load-select.vue */ \"./src/components/lazy-load-select.vue\");\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n __name: 'index',\n emits: [\"emits\", 'updateTab'],\n setup(__props, {\n expose: __expose,\n emit: __emit\n }) {\n const http = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('http');\n const addOrEditRootData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('addOrEditRootData');\n const dict = (0,_store_dict__WEBPACK_IMPORTED_MODULE_6__.storeDict)();\n const dicData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n joinFiledDicData: [{\n label: '内连接',\n value: 'join'\n }, {\n label: '左连接',\n value: 'left join'\n }, {\n label: '右连接',\n value: 'right join'\n }],\n joinTableDicData: []\n });\n const form = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n form: {\n table: [{\n index: \"t1\",\n type: \"主表\",\n joinTable: \"\",\n joinFiled: \"/\",\n deleteWhere: 'id=${id}'\n }],\n executeSql: '',\n executeWhere: '',\n orderBy: ''\n }\n });\n const option = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n submitBtn: false,\n emptyBtn: false,\n column: [\n /* {\r\n label: '转换驼峰', prop: 'hump', border: true, type: 'radio', value: '0', span: 7, dicData: [{\r\n label: '不转换', value: '0'\r\n }, {\r\n label: '转换', value: '1'\r\n },{\r\n label: '请求转换', value: '2'\r\n }],\r\n dictCode: 'converting_hump'\r\n },*/\n {\n label: '数据源类型',\n type: 'radio',\n span: 7,\n prop: 'definitionSql',\n border: true,\n value: '0',\n onChange: ({\n value\n }) => {\n if (value == '0') {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"executeSql,where,table,orderBy\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"api,requestType\");\n } else if (value == '1') {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"executeSql,where,orderBy\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"api,table,requestType\");\n } else {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"api,requestType\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"executeSql,where,table,orderBy\");\n }\n },\n dicData: [{\n label: '自动SQL',\n value: '0'\n }, {\n label: '手动SQL',\n value: '1'\n }, {\n label: 'API',\n value: '2'\n }],\n dictCode: 'tree_data_type'\n }, {\n label: '查询表格',\n prop: 'table',\n type: 'dynamic',\n span: 24,\n children: {\n align: 'center',\n minHeight: 100,\n maxHeight: 170,\n size: \"small\",\n headerAlign: 'center',\n rowAdd: done => {\n let obj = {\n index: \"t\" + (form.form.table.length + 1),\n type: \"join\",\n joinTable: \"\",\n joinFiled: \"t\" + form.form.table.length + \".=t\" + (form.form.table.length + 1) + \".\"\n };\n done(obj);\n },\n rowDel: row => {\n if (row.$index != 0) {\n setSql(row.$index);\n } else {\n element_plus__WEBPACK_IMPORTED_MODULE_7__.ElMessage.error(\"主表不能删除!\");\n }\n },\n column: [{\n width: 60,\n prop: \"index\",\n label: '序号'\n }, {\n label: '类型',\n prop: \"type\",\n width: 120,\n disabled: true,\n type: 'select'\n }, {\n label: '数据表',\n prop: \"joinTable\",\n type: 'select',\n dicData: []\n }, {\n label: 'on',\n prop: \"joinFiled\",\n type: 'input'\n }, {\n label: '删除条件',\n prop: \"deleteWhere\",\n width: 200,\n type: 'input'\n }]\n }\n }, {\n label: '执行SQL',\n display: true,\n type: 'textarea',\n maxRows: 7,\n span: 24,\n prop: 'executeSql'\n }, {\n label: 'where条件',\n display: true,\n type: 'input',\n span: 24,\n prop: 'executeWhere'\n }, {\n label: '排序',\n display: true,\n type: 'input',\n span: 24,\n prop: 'orderBy'\n }, {\n label: '默认参数',\n type: 'input',\n span: 24,\n prop: 'parameterDefault'\n }, {\n label: 'API',\n display: true,\n type: 'input',\n span: 24,\n prop: 'api'\n }, {\n label: '请求类型',\n prop: 'requestType',\n border: true,\n type: 'radio',\n value: '0',\n span: 6,\n dicData: [],\n dictCode: 'request_type'\n }]\n });\n const configData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('configData');\n function parseData(data) {\n if (form.form.definitionSql == '1') {\n data.mainTable = form.form.mainTable;\n } else {\n data.mainTable = form.form.table[0].joinTable;\n }\n data.definitionSql = form.form.definitionSql;\n data.executeSql = form.form.executeSql;\n data.orderBy = form.form.orderBy;\n data.groupBy = form.form.groupBy;\n data.executeWhere = form.form.executeWhere;\n data.parameterDefault = form.form.parameterDefault;\n data.hump = form.form.hump;\n data.api = form.form.api;\n data.requestType = form.form.requestType;\n if (form.form.definitionSql == 0) {\n if (form.form.table[0].deleteWhere) {\n data.deleteWhere = {\n wheres: form.form.table[0].deleteWhere.trim(),\n tableName: form.form.table[0].joinTable\n };\n } else {\n delete data.deleteWhere;\n }\n }\n }\n function setData(f) {\n form.form.definitionSql = f;\n form.form.hump = f.hump;\n form.form.mainTable = f.mainTable;\n form.form.executeSql = f.executeSql;\n form.form.orderBy = f.orderBy;\n form.form.api = f.api;\n form.form.requestType = f.requestType;\n form.form.executeWhere = f.executeWhere;\n form.form.parameterDefault = f.parameterDefault;\n form.form.definitionSql = f.definitionSql;\n if (form.form.definitionSql == 0) {\n sqlParseTable(f.deleteWhere);\n }\n }\n function setTable() {\n let promise = [];\n for (let i = 0; i < form.form.table.length; i++) {\n promise.push((0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get)(http, \"/online/getDBTableColumnList/\" + addOrEditRootData.form.dbName, {\n tableName: form.form.table[i].joinTable\n }));\n }\n Promise.all(promise).then(result => {\n for (let i = 0; i < result.length; i++) {\n form.form.table[i]['columnList'] = result[i];\n }\n setSql();\n });\n }\n function setSql(index, seq) {\n if (seq != undefined && seq != 0) {\n let arr = form.form.table.find(item => {\n return item.index == seq;\n });\n if (!arr || !arr.joinTable) {\n return;\n }\n }\n if (index != undefined && index != 0) {\n form.form.table.splice(index, 1);\n }\n let sqlTableOn = form.form.table[0].joinTable + \" t1 \";\n let sqlFiled = \"\";\n let tableColumns = [];\n let sort = 0;\n let mapFiled = {};\n for (let i = 0; i < form.form.table.length; i++) {\n if (i === index) {\n continue;\n }\n let obj = form.form.table[i];\n for (let j = 0; j < obj.columnList.length; j++) {\n let column = obj.columnList[j];\n if (column.checked == 0) {\n continue;\n }\n if (sqlFiled.length != 0) {\n sqlFiled += \",\";\n }\n if (mapFiled[column.column_name] !== undefined) {\n mapFiled[column.column_name]++;\n } else {\n mapFiled[column.column_name] = 0;\n }\n sort++;\n let asName = mapFiled[column.column_name] === 0 ? column.column_name : obj.index + \"_\" + column.column_name;\n sqlFiled += obj.index + \".\" + column.column_name + \" AS \" + asName;\n let column_name = column.column_name;\n let column_comment = column.column_comment ? column.column_comment : column_name;\n tableColumns.push({\n sort: sort,\n tableField: column_name,\n field: column_name,\n title: column_comment,\n label: column_comment,\n visible: column.visible,\n display: 1,\n asName: asName\n });\n }\n if (i != 0) {\n sqlTableOn += \" \" + obj.type + \" \" + obj.joinTable + \" \" + obj.index + \" on \" + obj.joinFiled;\n }\n }\n for (let tableColumn of tableColumns) {\n let add = true;\n for (let c of configData.tableColumn) {\n if (c.field == tableColumn.field) {\n add = false;\n }\n }\n if (add) {\n configData.tableColumn.push(tableColumn);\n }\n }\n for (let i = 0; i < configData.tableColumn.length; i++) {\n let remove = true;\n for (let tableColumn of tableColumns) {\n if (configData.tableColumn[i].field == tableColumn.field) {\n remove = false;\n }\n }\n if (remove) {\n configData.tableColumn.splice(i, 1);\n }\n }\n form.form.executeSql = \"select \" + sqlFiled + \" from \" + sqlTableOn;\n }\n const isSyncCurd = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)(false);\n const sync = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)(false);\n function syncTable() {\n emit('loading', true);\n configData.form.executeSql = form.form.executeSql;\n configData.form.executeWhere = form.form.where;\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableFiled\", {\n sql: form.form.executeSql,\n where: form.form.where,\n definitionSql: form.form.definitionSql,\n dbName: addOrEditRootData.form.dbName,\n uuid: configData.form.uuid\n }, undefined, false).then(data => {\n emit(\"updateTable\", data.data);\n isSyncCurd.value = form.form?.definitionSql == 0 && form.form?.table?.length == 1;\n if (isSyncCurd.value && sync.value) {\n emit(\"updateCurd\");\n }\n setFieldConfig();\n }).finally(() => {\n emit('loading', false);\n });\n }\n const filedConfig = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)();\n function setFieldConfig(filedConf) {\n if (form.form.definitionSql != 0) {\n return;\n }\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableSetFiled\", {\n sql: form.form.executeSql,\n where: form.form.where,\n dbName: addOrEditRootData.form.dbName,\n definitionSql: form.form.definitionSql,\n uuid: configData.form.uuid\n }, false, false).then(({\n data\n }) => {\n setFormTable(data);\n if (filedConf) {\n filedConfig.value.init(form.form.table);\n }\n });\n }\n function getTableNamesByFormSql() {\n let formSql = form.form.executeSql.substring(form.form.executeSql.indexOf('from') + 4);\n let tableNames = [];\n for (const join of formSql.split('join')) {\n tableNames.push(join);\n }\n return tableNames;\n }\n function getTableComment(key) {\n for (const item of dicData.joinTableDicData) {\n if (item.value == key) return item.label;\n }\n }\n function setFormTable(data) {\n let tableNames = getTableNamesByFormSql();\n let tables = [];\n for (const key of Object.keys(data)) {\n let table = {\n index: 't1',\n type: '主表',\n joinTable: key,\n joinFiled: '/',\n deleteWhere: '',\n columnList: [],\n tableComment: getTableComment(key)\n };\n table.columnList = Object.values(data[key]);\n tables.push(table);\n }\n form.form.table = [];\n for (let i = 0; i < tableNames.length; i++) {\n const tableName = tableNames[i];\n for (const table of tables) {\n if (tableName.includes(table.joinTable)) {\n if (i == 0) {\n table.deleteWhere = 'id=${id}';\n table.mainTable = table.joinTable;\n }\n if (i != 0) {\n table.index = 't' + (i + 1);\n table.type = 'join';\n let joinFiled = tableName.substring(tableName.indexOf('on') + 2).replace(/[\\n\\t\\s]+/g, '');\n if (tableNames[i - 1].includes('left')) {\n table.type = 'left join';\n joinFiled = joinFiled.replace('left', '');\n }\n if (tableNames[i - 1].includes('right')) {\n table.type = 'right join';\n joinFiled = joinFiled.replace('right', '');\n }\n table.joinFiled = joinFiled;\n }\n form.form.table.push(table);\n break;\n }\n }\n }\n }\n function updateExecuteSql(v) {\n if (v === 0) {\n form.form.executeSql = sql_formatter__WEBPACK_IMPORTED_MODULE_8___default().format(form.form.executeSql, {\n language: 'sql',\n keywordCase: 'upper',\n indentStyle: 'tabularLeft'\n });\n } else {\n form.form.executeSql = form.form.executeSql.replace(/\\s+/g, \" \");\n }\n }\n function filedConfigClose(data) {\n if (!data) return;\n for (let j = 0; j < form.form.table.length; j++) {\n let obj = form.form.table[j];\n if (Object.keys(data).includes(obj.index)) {\n form.form.table[j].columnList = data[obj.index];\n }\n }\n setSql();\n }\n function setFieldEvent(row) {\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableSetFiled\", {\n sql: form.form.executeSql,\n definitionSql: form.form.definitionSql,\n dbName: addOrEditRootData.form.dbName,\n where: form.form.where,\n uuid: configData.form.uuid\n }, undefined, false).then(data => {\n row.columnList = Object.values(data.data[row.joinTable]);\n filedConfig.value.init(row);\n });\n }\n\n /**\r\n * 一键同步CURD\r\n */\n const syncCurd = () => {\n sync.value = true;\n syncTable();\n };\n function parseSqlToTables(sql) {\n // 标准化SQL,去除多余空格和换行\n let normalizedSql = sql.replace(/[\\n\\r\\s]+/g, ' ').trim();\n\n // 分割FROM后面的部分\n let fromPart = normalizedSql.split(/from/i)[1];\n if (!fromPart) return [];\n let result = [];\n let currentIndex = 0;\n\n // 分割所有JOIN(包括LEFT JOIN, RIGHT JOIN等)\n let parts = fromPart.split(/\\s+(?:left\\s+)?(?:right\\s+)?(?:inner\\s+)?join\\s+/i);\n\n // 处理主表\n let mainTablePart = parts[0].trim();\n let mainTableName = mainTablePart.split(/\\s+/)[0];\n result.push({\n index: 't' + (currentIndex + 1),\n type: '主表',\n joinTable: mainTableName,\n joinFiled: '/'\n });\n\n // 处理关联表\n for (let i = 1; i < parts.length; i++) {\n currentIndex++;\n let joinPart = parts[i].trim();\n\n // 获取JOIN类型\n let joinType = 'left';\n if (normalizedSql.toLowerCase().includes('right join')) {\n joinType = 'right';\n } else if (normalizedSql.toLowerCase().includes('inner join')) {\n joinType = 'inner';\n }\n\n // 分割ON条件\n let onPart = joinPart.split(/\\s+on\\s+/i);\n let joinTableName = onPart[0].trim().split(/\\s+/)[0];\n let joinFields = onPart[1] ? onPart[1].trim() : '';\n result.push({\n index: 't' + (currentIndex + 1),\n type: joinType,\n joinTable: joinTableName,\n joinFiled: joinFields\n });\n }\n return result;\n }\n const sqlParseTable = o => {\n if (configData.form.executeSql && configData.form.executeSql.toLowerCase().indexOf(\"from\") === -1) {\n return;\n }\n let tableData = parseSqlToTables(configData.form.executeSql);\n if (o) {\n tableData[0].deleteWhere = o.wheres;\n }\n form.form.table = tableData;\n };\n function remoteMethod() {\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get)(http, \"/online/getDBTableList\", {\n dbName: addOrEditRootData.form.dbName\n }).then(data => {\n dicData.joinTableDicData = data;\n });\n }\n function initDict() {\n for (const column of option.column) {\n if (column.dictCode) {\n column.dicData = dict.val(column.dictCode);\n }\n }\n }\n const emit = __emit; //声明 emits\n (0,vue__WEBPACK_IMPORTED_MODULE_3__.onMounted)(() => {\n remoteMethod();\n initDict();\n });\n __expose({\n setData,\n parseData,\n form\n });\n const __returned__ = {\n http,\n addOrEditRootData,\n dict,\n dicData,\n form,\n option,\n configData,\n parseData,\n setData,\n setTable,\n setSql,\n isSyncCurd,\n sync,\n syncTable,\n filedConfig,\n setFieldConfig,\n getTableNamesByFormSql,\n getTableComment,\n setFormTable,\n updateExecuteSql,\n filedConfigClose,\n setFieldEvent,\n syncCurd,\n parseSqlToTables,\n sqlParseTable,\n remoteMethod,\n initDict,\n emit,\n inject: vue__WEBPACK_IMPORTED_MODULE_3__.inject,\n reactive: vue__WEBPACK_IMPORTED_MODULE_3__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_3__.onMounted,\n ref: vue__WEBPACK_IMPORTED_MODULE_3__.ref,\n get get() {\n return _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get;\n },\n get post() {\n return _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post;\n },\n get setArrayObjectKeyValue() {\n return _utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue;\n },\n get storeDict() {\n return _store_dict__WEBPACK_IMPORTED_MODULE_6__.storeDict;\n },\n get ElMessage() {\n return element_plus__WEBPACK_IMPORTED_MODULE_7__.ElMessage;\n },\n get sqlFormatter() {\n return (sql_formatter__WEBPACK_IMPORTED_MODULE_8___default());\n },\n FieldConfig: _views_table_add_or_edit_config_field_config_index_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n LazyLoadSelect: _components_lazy_load_select_vue__WEBPACK_IMPORTED_MODULE_10__[\"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/base-config/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
831
+ 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_find_js__WEBPACK_IMPORTED_MODULE_2__ = __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_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/utils/http/httpUtils */ \"./src/utils/http/httpUtils.js\");\n/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/utils/object */ \"./src/utils/object.js\");\n/* harmony import */ var _store_dict__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/store/dict */ \"./src/store/dict.js\");\n/* harmony import */ var element_plus__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! element-plus */ \"element-plus\");\n/* harmony import */ var element_plus__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(element_plus__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var sql_formatter__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! sql-formatter */ \"./node_modules/sql-formatter/lib/sqlFormatter.js\");\n/* harmony import */ var sql_formatter__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(sql_formatter__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _views_table_add_or_edit_config_field_config_index_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/views/table/add-or-edit/config/field-config/index.vue */ \"./src/views/table/add-or-edit/config/field-config/index.vue\");\n/* harmony import */ var _components_lazy_load_select_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/components/lazy-load-select.vue */ \"./src/components/lazy-load-select.vue\");\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n __name: 'index',\n emits: [\"emits\", 'updateTab'],\n setup(__props, {\n expose: __expose,\n emit: __emit\n }) {\n const http = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('http');\n const addOrEditRootData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('addOrEditRootData');\n const dict = (0,_store_dict__WEBPACK_IMPORTED_MODULE_6__.storeDict)();\n const dicData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n joinFiledDicData: [{\n label: '内连接',\n value: 'join'\n }, {\n label: '左连接',\n value: 'left join'\n }, {\n label: '右连接',\n value: 'right join'\n }],\n joinTableDicData: []\n });\n const form = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n form: {\n table: [{\n index: \"t1\",\n type: \"主表\",\n joinTable: \"\",\n joinFiled: \"/\",\n deleteWhere: 'id=${id}'\n }],\n executeSql: '',\n executeWhere: '',\n orderBy: ''\n }\n });\n const option = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n submitBtn: false,\n emptyBtn: false,\n column: [\n /* {\r\n label: '转换驼峰', prop: 'hump', border: true, type: 'radio', value: '0', span: 7, dicData: [{\r\n label: '不转换', value: '0'\r\n }, {\r\n label: '转换', value: '1'\r\n },{\r\n label: '请求转换', value: '2'\r\n }],\r\n dictCode: 'converting_hump'\r\n },*/\n {\n label: '数据源类型',\n type: 'radio',\n span: 7,\n prop: 'definitionSql',\n border: true,\n value: '0',\n onChange: ({\n value\n }) => {\n if (value == '0') {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"executeSql,where,table,orderBy\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"api,requestType\");\n } else if (value == '1') {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"executeSql,where,orderBy\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"api,table,requestType\");\n } else {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"api,requestType\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"executeSql,where,table,orderBy\");\n }\n },\n dicData: [{\n label: '自动SQL',\n value: '0'\n }, {\n label: '手动SQL',\n value: '1'\n }, {\n label: 'API',\n value: '2'\n }],\n dictCode: 'tree_data_type'\n }, {\n label: '查询表格',\n prop: 'table',\n type: 'dynamic',\n span: 24,\n children: {\n align: 'center',\n minHeight: 100,\n maxHeight: 170,\n size: \"small\",\n headerAlign: 'center',\n rowAdd: done => {\n let obj = {\n index: \"t\" + (form.form.table.length + 1),\n type: \"join\",\n joinTable: \"\",\n joinFiled: \"t\" + form.form.table.length + \".=t\" + (form.form.table.length + 1) + \".\"\n };\n done(obj);\n },\n rowDel: row => {\n if (row.$index != 0) {\n setSql(row.$index);\n } else {\n element_plus__WEBPACK_IMPORTED_MODULE_7__.ElMessage.error(\"主表不能删除!\");\n }\n },\n column: [{\n width: 60,\n prop: \"index\",\n label: '序号'\n }, {\n label: '类型',\n prop: \"type\",\n width: 120,\n disabled: true,\n type: 'select'\n }, {\n label: '数据表',\n prop: \"joinTable\",\n type: 'select',\n dicData: []\n }, {\n label: 'on',\n prop: \"joinFiled\",\n type: 'input'\n }, {\n label: '删除条件',\n prop: \"deleteWhere\",\n width: 200,\n type: 'input'\n }]\n }\n }, {\n label: '执行SQL',\n display: true,\n type: 'textarea',\n maxRows: 7,\n span: 24,\n prop: 'executeSql'\n }, {\n label: 'where条件',\n display: true,\n type: 'input',\n span: 24,\n prop: 'executeWhere'\n }, {\n label: '排序',\n display: true,\n type: 'input',\n span: 24,\n prop: 'orderBy'\n }, {\n label: '默认参数',\n type: 'input',\n span: 24,\n prop: 'parameterDefault'\n }, {\n label: 'API',\n display: true,\n type: 'input',\n span: 24,\n prop: 'api'\n }, {\n label: '请求类型',\n prop: 'requestType',\n border: true,\n type: 'radio',\n value: '0',\n span: 6,\n dicData: [],\n dictCode: 'request_type'\n }]\n });\n const configData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('configData');\n function parseData(data) {\n if (form.form.definitionSql == '1') {\n data.mainTable = form.form.mainTable;\n } else {\n data.mainTable = form.form.table[0].joinTable;\n }\n data.definitionSql = form.form.definitionSql;\n data.executeSql = form.form.executeSql;\n data.orderBy = form.form.orderBy;\n data.groupBy = form.form.groupBy;\n data.executeWhere = form.form.executeWhere;\n data.parameterDefault = form.form.parameterDefault;\n data.hump = form.form.hump;\n data.api = form.form.api;\n data.requestType = form.form.requestType;\n if (form.form.definitionSql == 0) {\n if (form.form.table[0].deleteWhere) {\n data.deleteWhere = {\n wheres: form.form.table[0].deleteWhere.trim(),\n tableName: form.form.table[0].joinTable\n };\n } else {\n delete data.deleteWhere;\n }\n }\n }\n function setData(f) {\n form.form.definitionSql = f;\n form.form.hump = f.hump;\n form.form.mainTable = f.mainTable;\n form.form.executeSql = f.executeSql;\n form.form.orderBy = f.orderBy;\n form.form.api = f.api;\n form.form.requestType = f.requestType;\n form.form.executeWhere = f.executeWhere;\n form.form.parameterDefault = f.parameterDefault;\n form.form.definitionSql = f.definitionSql;\n if (form.form.definitionSql == 0) {\n sqlParseTable(f.deleteWhere);\n }\n }\n function setTable() {\n let promise = [];\n for (let i = 0; i < form.form.table.length; i++) {\n promise.push((0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get)(http, \"/online/getDBTableColumnList/\" + addOrEditRootData.form.dbName, {\n tableName: form.form.table[i].joinTable\n }));\n }\n Promise.all(promise).then(result => {\n for (let i = 0; i < result.length; i++) {\n form.form.table[i]['columnList'] = result[i];\n }\n setSql();\n });\n }\n function setSql(index, seq) {\n if (seq != undefined && seq != 0) {\n let arr = form.form.table.find(item => {\n return item.index == seq;\n });\n if (!arr || !arr.joinTable) {\n return;\n }\n }\n if (index != undefined && index != 0) {\n form.form.table.splice(index, 1);\n }\n let sqlTableOn = form.form.table[0].joinTable + \" t1 \";\n let sqlFiled = \"\";\n let tableColumns = [];\n let sort = 0;\n let mapFiled = {};\n for (let i = 0; i < form.form.table.length; i++) {\n if (i === index) {\n continue;\n }\n let obj = form.form.table[i];\n for (let j = 0; j < obj.columnList.length; j++) {\n let column = obj.columnList[j];\n if (column.checked == 0) {\n continue;\n }\n if (sqlFiled.length != 0) {\n sqlFiled += \",\";\n }\n if (mapFiled[column.column_name] !== undefined) {\n mapFiled[column.column_name]++;\n } else {\n mapFiled[column.column_name] = 0;\n }\n sort++;\n let asName = mapFiled[column.column_name] === 0 ? column.column_name : obj.index + \"_\" + column.column_name;\n sqlFiled += obj.index + \".\" + column.column_name + \" AS \" + asName;\n let column_name = column.column_name;\n let column_comment = column.column_comment ? column.column_comment : column_name;\n tableColumns.push({\n sort: sort,\n tableField: column_name,\n field: column_name,\n title: column_comment,\n label: column_comment,\n visible: column.visible,\n display: 1,\n asName: asName\n });\n }\n if (i != 0) {\n sqlTableOn += \" \" + obj.type + \" \" + obj.joinTable + \" \" + obj.index + \" on \" + obj.joinFiled;\n }\n }\n for (let tableColumn of tableColumns) {\n let add = true;\n for (let c of configData.tableColumn) {\n if (c.field == tableColumn.field) {\n add = false;\n }\n }\n if (add) {\n configData.tableColumn.push(tableColumn);\n }\n }\n for (let i = 0; i < configData.tableColumn.length; i++) {\n let remove = true;\n for (let tableColumn of tableColumns) {\n if (configData.tableColumn[i].field == tableColumn.field) {\n remove = false;\n }\n }\n if (remove) {\n configData.tableColumn.splice(i, 1);\n }\n }\n form.form.executeSql = \"select \" + sqlFiled + \" from \" + sqlTableOn;\n }\n const isSyncCurd = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)(false);\n const sync = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)(false);\n function syncTable() {\n emit('loading', true);\n configData.form.executeSql = form.form.executeSql;\n configData.form.executeWhere = form.form.where;\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableFiled\", {\n sql: form.form.executeSql,\n where: form.form.where,\n definitionSql: form.form.definitionSql,\n dbName: addOrEditRootData.form.dbName,\n uuid: configData.form.uuid\n }, undefined, false).then(data => {\n emit(\"updateTable\", data.data);\n isSyncCurd.value = form.form?.definitionSql == 0 && form.form?.table?.length == 1;\n if (isSyncCurd.value && sync.value) {\n emit(\"updateCurd\");\n }\n setFieldConfig();\n }).finally(() => {\n emit('loading', false);\n });\n }\n const filedConfig = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)();\n function setFieldConfig(filedConf) {\n if (form.form.definitionSql != 0) {\n return;\n }\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableSetFiled\", {\n sql: form.form.executeSql,\n where: form.form.where,\n dbName: addOrEditRootData.form.dbName,\n definitionSql: form.form.definitionSql,\n uuid: configData.form.uuid\n }, false, false).then(({\n data\n }) => {\n setFormTable(data);\n if (filedConf) {\n filedConfig.value.init(form.form.table);\n }\n });\n }\n function getTableNamesByFormSql() {\n let formSql = form.form.executeSql.substring(form.form.executeSql.indexOf('from') + 4);\n let tableNames = [];\n for (const join of formSql.split('join')) {\n tableNames.push(join);\n }\n return tableNames;\n }\n function getTableComment(key) {\n for (const item of dicData.joinTableDicData) {\n if (item.value == key) return item.label;\n }\n }\n function setFormTable(data) {\n let tableNames = getTableNamesByFormSql();\n let tables = [];\n for (const key of Object.keys(data)) {\n let table = {\n index: 't1',\n type: '主表',\n joinTable: key,\n joinFiled: '/',\n deleteWhere: '',\n columnList: [],\n tableComment: getTableComment(key)\n };\n table.columnList = Object.values(data[key]);\n tables.push(table);\n }\n form.form.table = [];\n for (let i = 0; i < tableNames.length; i++) {\n const tableName = tableNames[i];\n for (const table of tables) {\n if (tableName.includes(table.joinTable)) {\n if (i == 0) {\n table.deleteWhere = 'id=${id}';\n table.mainTable = table.joinTable;\n }\n if (i != 0) {\n table.index = 't' + (i + 1);\n table.type = 'join';\n let joinFiled = tableName.substring(tableName.indexOf('on') + 2).replace(/[\\n\\t\\s]+/g, '');\n if (tableNames[i - 1].includes('left')) {\n table.type = 'left join';\n joinFiled = joinFiled.replace('left', '');\n }\n if (tableNames[i - 1].includes('right')) {\n table.type = 'right join';\n joinFiled = joinFiled.replace('right', '');\n }\n table.joinFiled = joinFiled;\n }\n form.form.table.push(table);\n break;\n }\n }\n }\n }\n function updateExecuteSql(v) {\n if (v === 0) {\n form.form.executeSql = sql_formatter__WEBPACK_IMPORTED_MODULE_8___default().format(form.form.executeSql, {\n language: 'sql',\n keywordCase: 'upper',\n indentStyle: 'tabularLeft'\n });\n } else {\n form.form.executeSql = form.form.executeSql.replace(/\\s+/g, \" \");\n }\n }\n function filedConfigClose(data) {\n if (!data) return;\n for (let j = 0; j < form.form.table.length; j++) {\n let obj = form.form.table[j];\n if (Object.keys(data).includes(obj.index)) {\n form.form.table[j].columnList = data[obj.index];\n }\n }\n setSql();\n }\n function setFieldEvent(row) {\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableSetFiled\", {\n sql: form.form.executeSql,\n definitionSql: form.form.definitionSql,\n dbName: addOrEditRootData.form.dbName,\n where: form.form.where,\n uuid: configData.form.uuid\n }, undefined, false).then(data => {\n row.columnList = Object.values(data.data[row.joinTable]);\n filedConfig.value.init(row);\n });\n }\n\n /**\r\n * 一键同步CURD\r\n */\n const syncCurd = () => {\n sync.value = true;\n syncTable();\n };\n function parseSqlToTables(sql) {\n // 标准化SQL,去除多余空格和换行\n let normalizedSql = sql.replace(/[\\n\\r\\s]+/g, ' ').trim();\n\n // 分割FROM后面的部分\n let fromPart = normalizedSql.split(/from/i)[1];\n let result = [{\n index: 't1',\n type: '主表',\n joinTable: '',\n joinFiled: '/'\n }];\n if (!fromPart) return result;\n let currentIndex = 1;\n\n // 分割所有JOIN(包括LEFT JOIN, RIGHT JOIN等)\n let parts = fromPart.split(/\\s+(?:left\\s+)?(?:right\\s+)?(?:inner\\s+)?join\\s+/i);\n\n // 处理主表\n let mainTablePart = parts[0].trim();\n let mainTableName = mainTablePart.split(/\\s+/)[0];\n result[0].joinTable = mainTableName;\n\n // 处理关联表\n for (let i = 1; i < parts.length; i++) {\n currentIndex++;\n let joinPart = parts[i].trim();\n\n // 获取JOIN类型\n let joinType = 'left';\n if (normalizedSql.toLowerCase().includes('right join')) {\n joinType = 'right';\n } else if (normalizedSql.toLowerCase().includes('inner join')) {\n joinType = 'inner';\n }\n\n // 分割ON条件\n let onPart = joinPart.split(/\\s+on\\s+/i);\n let joinTableName = onPart[0].trim().split(/\\s+/)[0];\n let joinFields = onPart[1] ? onPart[1].trim() : '';\n result.push({\n index: 't' + (currentIndex + 1),\n type: joinType,\n joinTable: joinTableName,\n joinFiled: joinFields\n });\n }\n return result;\n }\n const sqlParseTable = o => {\n if (configData.form.executeSql && configData.form.executeSql.toLowerCase().indexOf(\"from\") === -1) {\n return;\n }\n let tableData = parseSqlToTables(configData.form.executeSql);\n if (o) {\n tableData[0].deleteWhere = o.wheres;\n }\n form.form.table = tableData;\n };\n function remoteMethod() {\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get)(http, \"/online/getDBTableList\", {\n dbName: addOrEditRootData.form.dbName\n }).then(data => {\n dicData.joinTableDicData = data;\n });\n }\n function initDict() {\n for (const column of option.column) {\n if (column.dictCode) {\n column.dicData = dict.val(column.dictCode);\n }\n }\n }\n const emit = __emit; //声明 emits\n (0,vue__WEBPACK_IMPORTED_MODULE_3__.onMounted)(() => {\n remoteMethod();\n initDict();\n });\n __expose({\n setData,\n parseData,\n form\n });\n const __returned__ = {\n http,\n addOrEditRootData,\n dict,\n dicData,\n form,\n option,\n configData,\n parseData,\n setData,\n setTable,\n setSql,\n isSyncCurd,\n sync,\n syncTable,\n filedConfig,\n setFieldConfig,\n getTableNamesByFormSql,\n getTableComment,\n setFormTable,\n updateExecuteSql,\n filedConfigClose,\n setFieldEvent,\n syncCurd,\n parseSqlToTables,\n sqlParseTable,\n remoteMethod,\n initDict,\n emit,\n inject: vue__WEBPACK_IMPORTED_MODULE_3__.inject,\n reactive: vue__WEBPACK_IMPORTED_MODULE_3__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_3__.onMounted,\n ref: vue__WEBPACK_IMPORTED_MODULE_3__.ref,\n get get() {\n return _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get;\n },\n get post() {\n return _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post;\n },\n get setArrayObjectKeyValue() {\n return _utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue;\n },\n get storeDict() {\n return _store_dict__WEBPACK_IMPORTED_MODULE_6__.storeDict;\n },\n get ElMessage() {\n return element_plus__WEBPACK_IMPORTED_MODULE_7__.ElMessage;\n },\n get sqlFormatter() {\n return (sql_formatter__WEBPACK_IMPORTED_MODULE_8___default());\n },\n FieldConfig: _views_table_add_or_edit_config_field_config_index_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n LazyLoadSelect: _components_lazy_load_select_vue__WEBPACK_IMPORTED_MODULE_10__[\"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/base-config/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
832
832
 
833
833
  /***/ }),
834
834
 
@@ -1598,7 +1598,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1598
1598
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1599
1599
 
1600
1600
  "use strict";
1601
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_vxe_button = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"vxe-button\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"left\", {}, undefined, true), _ctx.$attrs.value !== undefined ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(_ctx.$attrs.value, obj => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)(((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_vxe_button, {\n class: \"table-right-operation-but\",\n type: \"text\",\n status: obj['status'],\n loading: $setup.bindLoading(obj, $setup.props.row),\n disabled: obj['disabled'] || $setup.getCallBack('disabledCallBack', obj, $setup.props.row, false),\n onClick: $event => _ctx.$emit('handleOperationClick', {\n row: $setup.props.row,\n obj: obj,\n setLoading: $setup.setLoading\n })\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"status\", \"loading\", \"disabled\", \"onClick\"])), [[vue__WEBPACK_IMPORTED_MODULE_0__.vShow, $setup.getCallBack('showCallBack', obj, $setup.props.row, true)]]);\n }), 256 /* UNKEYED_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"right\", {}, undefined, true)], 64 /* STABLE_FRAGMENT */);\n}\n\n//# sourceURL=webpack://olp-table/./src/components/table/ol-table-operate/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
1601
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"el-button\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"left\", {}, undefined, true), _ctx.$attrs.value !== undefined ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(_ctx.$attrs.value, obj => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)(((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_el_button, {\n class: \"table-right-operation-but\",\n link: \"\",\n status: obj['status'],\n type: obj['status'],\n loading: $setup.bindLoading(obj, $setup.props.row),\n disabled: obj['disabled'] || $setup.getCallBack('disabledCallBack', obj, $setup.props.row, false),\n onClick: $event => _ctx.$emit('handleOperationClick', {\n row: $setup.props.row,\n obj: obj,\n setLoading: $setup.setLoading\n })\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"status\", \"type\", \"loading\", \"disabled\", \"onClick\"])), [[vue__WEBPACK_IMPORTED_MODULE_0__.vShow, $setup.getCallBack('showCallBack', obj, $setup.props.row, true)]]);\n }), 256 /* UNKEYED_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"right\", {}, undefined, true)], 64 /* STABLE_FRAGMENT */);\n}\n\n//# sourceURL=webpack://olp-table/./src/components/table/ol-table-operate/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
1602
1602
 
1603
1603
  /***/ }),
1604
1604
 
@@ -1620,7 +1620,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1620
1620
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1621
1621
 
1622
1622
  "use strict";
1623
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\nconst _hoisted_1 = [\"title\"];\nconst _hoisted_2 = {\n key: 1\n};\nconst _hoisted_3 = {\n key: 2\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_vxe_button = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"vxe-button\");\n const _directive_hasPermi = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveDirective)(\"hasPermi\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"left\", {}, undefined, true), _ctx.$attrs.value !== undefined ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(_ctx.$attrs.value, obj => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)(((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_vxe_button, {\n key: obj.code,\n status: obj['status'],\n disabled: obj['disabled'],\n circle: obj.alignMode === 'right' && !obj['status'],\n loading: $data.loading[obj.code],\n onClick: $event => $options.handleToolbarBtnClick(obj.code)\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [obj.alignMode === 'right' && !obj['status'] ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", {\n key: 0,\n title: obj.name\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */)], 8 /* PROPS */, _hoisted_1)) : obj.code === 'sortable' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n style: {\n \"color\": \"#1677FF\"\n },\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj.values ? 'vxe-icon-checkbox-checked' : 'vxe-icon-checkbox-unchecked')\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)])) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)]))]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"status\", \"disabled\", \"circle\", \"loading\", \"onClick\"])), [[_directive_hasPermi, [$props.currentPermi + obj.code]], [vue__WEBPACK_IMPORTED_MODULE_0__.vShow, obj['show']]]);\n }), 128 /* KEYED_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"right\", {}, undefined, true)]);\n}\n\n//# sourceURL=webpack://olp-table/./src/components/table/ol-table-tool-btn/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
1623
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\nconst _hoisted_1 = [\"title\"];\nconst _hoisted_2 = {\n key: 1\n};\nconst _hoisted_3 = {\n key: 2\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"el-button\");\n const _directive_hasPermi = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveDirective)(\"hasPermi\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"left\", {}, undefined, true), _ctx.$attrs.value !== undefined ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(_ctx.$attrs.value, obj => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)(((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_el_button, {\n key: obj.code,\n status: obj['status'],\n type: obj['status'],\n disabled: obj['disabled'],\n circle: obj.alignMode === 'right' && !obj['status'],\n loading: $data.loading[obj.code],\n onClick: $event => $options.handleToolbarBtnClick(obj.code)\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [obj.alignMode === 'right' && !obj['status'] ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", {\n key: 0,\n title: obj.name\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */)], 8 /* PROPS */, _hoisted_1)) : obj.code === 'sortable' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n style: {\n \"color\": \"#1677FF\"\n },\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj.values ? 'vxe-icon-checkbox-checked' : 'vxe-icon-checkbox-unchecked')\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)])) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)]))]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"status\", \"type\", \"disabled\", \"circle\", \"loading\", \"onClick\"])), [[_directive_hasPermi, [$props.currentPermi + obj.code]], [vue__WEBPACK_IMPORTED_MODULE_0__.vShow, obj['show']]]);\n }), 128 /* KEYED_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"right\", {}, undefined, true)]);\n}\n\n//# sourceURL=webpack://olp-table/./src/components/table/ol-table-tool-btn/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
1624
1624
 
1625
1625
  /***/ }),
1626
1626
 
@@ -10761,7 +10761,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
10761
10761
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
10762
10762
 
10763
10763
  "use strict";
10764
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ OTMixinColumnMethod: function() { return /* binding */ OTMixinColumnMethod; }\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_some_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.iterator.some.js */ \"./node_modules/core-js/modules/es.iterator.some.js\");\n/* harmony import */ var core_js_modules_es_iterator_some_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_some_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils_columnProp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/utils/columnProp */ \"./src/utils/columnProp.js\");\n\n\n\n\nfunction setColumnParams(column, key, value) {\n if (value === undefined) {\n return;\n }\n if (!column['params']) {\n column['params'] = {};\n }\n column['params'][key] = value;\n}\nconst OTMixinColumnMethod = {\n methods: {\n setColumnCssClass(o) {\n if (o.dictCode) {\n let vals = this.dictVal(o.dictCode);\n let cssClass = {};\n if (vals) {\n let dictValueLabel = {};\n for (let obj of vals) {\n dictValueLabel[obj.dictValue] = obj.dictLabel;\n if (obj.cssClass) {\n let css = obj.cssClass.trim();\n try {\n css = css.replace(/([a-zA-Z_]\\w*):/g, '\"$1\":').replace(/'/g, '\"');\n css = JSON.parse(css);\n if (Array.isArray(css)) {\n let data = {};\n if (css[0]) {\n data['backgroundColor'] = css[0];\n }\n if (css[1]) {\n data['color'] = css[1];\n }\n cssClass[obj.dictValue] = data;\n } else {\n cssClass[obj.dictValue] = css;\n }\n } catch (e) {\n console.error(\"列名:\", o.title, \"数据字典:\", obj.dictLabel, \"样式异常:\", css);\n }\n }\n }\n setColumnParams(o, 'dictValueLabel', dictValueLabel);\n }\n if (Object.keys(cssClass).length != 0) {\n setColumnParams(o, 'cssClass', cssClass);\n }\n }\n },\n initColumn(columns, tableConfig) {\n this.table.mergeFields = [];\n let items = [];\n columns = columns.sort(({\n sort: a\n }, {\n sort: b\n }) => a - b);\n for (let column of columns) {\n this.toParseOtherProp(column);\n }\n this.table.columnSource = JSON.parse(JSON.stringify(columns));\n let {\n optionJson,\n seq\n } = tableConfig;\n if (optionJson) {\n optionJson = JSON.parse(optionJson);\n }\n for (let o of columns) {\n this.setColumnCssClass(o);\n this.initFormatter(o);\n this.initSlots(o);\n this.setTreeOpenColumn(o, tableConfig);\n this.setMergeField(o);\n this.setColumnShowOverFlow(o, optionJson);\n this.setProp(o);\n this.setColumnHide(o);\n this.setFixed(o);\n this.setShowFooter(o);\n this.getVNode(o, items);\n // 可编辑配置\n if (this.hasEditConfig()) {\n this.setEditConfig(o);\n }\n }\n items.sort(({\n searchSort: a\n }, {\n searchSort: b\n }) => a - b);\n this.setSearchArea(items);\n columns = this.initBodyLeftColumn(columns, seq);\n if (this.table['show-footer']) {\n if (!columns[0].width || columns[0].width < 55) {\n columns[0].width = 55;\n }\n }\n this.table.columns = columns;\n //暂时不合并,启用虚拟滚动\n this.initMergeCells();\n },\n hasEditConfig() {\n return this.table.editConfig && (this.table.editConfig.enabled === true || typeof this.table.editConfig.enabled === 'string' && this.table.editConfig.enabled.toLowerCase() === 'true');\n },\n setEditConfig(o) {\n if (o.tableSaveToOtherProp && o.tableSaveToOtherProp == '1') {\n return;\n }\n if (o.selectDom == '1') {\n o.editRender = {\n name: '$input',\n props: {\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 文本域\n if (o.selectDom == '10') {\n o.editRender = {\n name: 'textarea',\n props: {\n type: 'textarea',\n // 指定为多行文本框\n placeholder: '请输入' + o.title,\n rows: 3,\n // 默认显示行数\n autosize: {\n minRows: 2,\n maxRows: 6\n },\n // 自动调整高度\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 数字\n if (o.selectDom == '7') {\n o.editRender = {\n name: '$input',\n props: {\n type: this.getType(o.selectDom),\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 时间\n if (o.selectDom == '3' || o.selectDom == '6') {\n o.editRender = {\n name: 'VxeInput',\n props: {\n type: this.getType(o.selectDom),\n valueFormat: 'yyyy-MM-dd HH:mm:ss'\n }\n };\n }\n // 下拉框\n if (o.selectDom == '2' || o.selectDom == '8') {\n o.editRender = {\n name: 'VxeSelect',\n options: this.dictVal(o.dictCode),\n props: {\n placeholder: '请选择' + o.title\n }\n };\n }\n },\n getType(selectDom) {\n if (selectDom == '3') {\n return 'datetime';\n }\n if (selectDom == '6') {\n return 'date';\n }\n if (selectDom == '7') {\n return 'number';\n }\n },\n /**\r\n * 初始化列左边\r\n * @param columns\r\n * @param type\r\n * @returns {*}\r\n */\n initBodyLeftColumn(columns, type) {\n const hasSeqColumn = columns.some(col => ['seq', 'sequence', '序号'].includes(col.field || col.prop || col.type));\n if (type == 1 && !hasSeqColumn) {\n columns.unshift({\n type: 'seq',\n width: 55,\n title: '序号',\n fixed: 'left'\n });\n }\n const hasCheckboxColumn = columns.some(col => ['checkbox'].includes(col.type));\n const hasRadioColumn = columns.some(col => ['radio'].includes(col.type));\n if (this.selectBox == 2 && !hasCheckboxColumn) {\n columns.unshift({\n type: 'checkbox',\n width: 45,\n showOverflow: false,\n fixed: 'left'\n });\n } else if (this.selectBox == 1 && !hasRadioColumn) {\n columns.unshift({\n type: 'radio',\n width: 45,\n showOverflow: false,\n fixed: 'left'\n });\n }\n return columns;\n },\n setTreeOpenColumn(o, tableConfig) {\n if (tableConfig.tree == 1 && o.field == tableConfig.openColumn) {\n o.treeNode = true;\n if (!o.align) {\n o.align = 'left';\n }\n }\n },\n setMergeField(column) {\n if (column.mergeFlag == '1') {\n this.table.mergeFields.push(column.field);\n }\n },\n setColumnHide(o) {\n //隐藏\n if (o.visible == \"0\") {\n o.visible = false;\n }\n },\n initFormatter(o) {\n try {\n if (o.formatter) {\n o.formatter = eval(\"({cellValue, row, column})=>{\" + o.formatter + \"}\");\n } else if (o.dictCode) {\n o.formatter = eval(\"\" + \"({cellValue, row, column})=>{if(column.params && column.params.dictValueLabel){ let dictValueLabelElement = column.params.dictValueLabel[cellValue];if(dictValueLabelElement){return dictValueLabelElement;} }return cellValue}\");\n }\n } catch (e) {\n console.log(o.title, \"formatter异常:\", o.formatter);\n this.$message.error(o.title + \"formatter异常!\");\n }\n },\n initSlots(o) {\n if (o.selectDom == 20) {\n o.slotsName = 'img_default';\n o.slots = {\n default: 'img_default'\n };\n }\n if (o.selectDom == '21') {\n o.slotsName = 'icon_default';\n o.slots = {\n default: 'icon_default'\n };\n }\n },\n setFixed(item) {\n //修改固定字段的值\n if (item.fixed === '1') {\n item.fixed = 'left';\n } else if (item.fixed === '2') {\n item.fixed = 'right';\n }\n if (item.align === '1') {\n item.align = 'left';\n } else if (item.align === '2') {\n item.align = 'right';\n } else if (item.align === '0') {\n item.align = 'center';\n }\n },\n setProp(item) {\n item.resizable = undefined;\n if (item.sortable != undefined && item.sortable != \"\") {\n let order = item.field + (item.sortable == 0 ? \" ASC \" : \" DESC \");\n this.orderByColumns.push(order);\n }\n ////时间类型\n if (!item.width && (item.selectDom == 3 || item.selectDom == 6)) {\n item.minWidth = 150;\n } else if (!item.width && item.title) {\n item.minWidth = item.title.length * 30;\n }\n },\n setShowFooter(item) {\n if (item['totalToOtherProp']) {\n this.table['show-footer'] = true;\n }\n },\n toParseOtherProp(item) {\n //其他属性赋值\n try {\n let otherProp = JSON.parse(item.otherProp);\n item.otherProp = otherProp;\n for (let key of Object.keys(otherProp)) {\n item[key] = otherProp[key];\n }\n } catch (e) {\n if (item.otherProp) {\n console.error(item.field + \"其他属性无法解析:\" + item.otherProp);\n }\n item.otherProp = {};\n }\n if (item['totalToOtherProp'] === undefined) {\n item['totalToOtherProp'] = '';\n }\n },\n /**\r\n * 设置搜索\r\n * @param items\r\n */\n setSearchArea(items) {\n if (items.length != 0) {\n items.push({\n itemRender: {\n name: '$buttons',\n children: [{\n props: {\n type: 'submit',\n content: '查询',\n status: 'primary'\n },\n events: {\n click: this.query\n }\n }, {\n props: {\n type: 'button',\n content: '重置'\n },\n events: {\n click: this.resetQuery\n }\n }]\n }\n });\n this.table.formConfig.size = this.table.size;\n }\n this.table.formConfig.items = items;\n },\n getVNode(o, items) {\n if (o.selectType == undefined) {\n return;\n }\n //99是范围查询\n if (o.selectType == 99) {\n let itemStart = this.initFormConfig(o, 5);\n let itemEnd = this.initFormConfig(o, 6);\n //时间范围查询\n if (o.selectDom == 3 || o.selectDom == 6) {\n let placeholder = o.selectDom == 3 ? '时间' : '';\n itemStart.placeholder = '请选择开始日期' + placeholder;\n delete itemStart.itemRender;\n itemEnd.placeholder = '请选择结束日期' + placeholder;\n }\n items.push(itemStart);\n items.push(itemEnd);\n } else {\n items.push(this.initFormConfig(o));\n }\n },\n initFormConfig(o, type) {\n let key = o.tableField;\n if (o.tableNameSEARCHToOtherProp != undefined && o.tableNameSEARCHToOtherProp != '') {\n key = o.tableNameSEARCHToOtherProp + '.' + key;\n }\n let item = {\n align: 'left',\n field: key,\n span: 6,\n searchSort: o.searchSort,\n title: o.titleSEARCHToOtherProp != undefined ? o.titleSEARCHToOtherProp : o.title,\n key: key,\n type: o.selectType,\n selectDom: o.selectDom,\n tableName: o.tableNameSEARCHToOtherProp,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true,\n toDate: o.toDateSEARCHToOtherProp,\n itemRender: {\n name: '$input',\n props: {\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n }\n };\n // if(this.table.editConfig && (\n // this.table.editConfig.enabled === true ||\n // (typeof this.table.editConfig.enabled === 'string' &&\n // this.table.editConfig.enabled.toLowerCase() === 'true')\n // )){\n // o.editRender = {\n // name:'$input',\n // props: {\n // placeholder: '请输入' + o.title,\n // clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n // }\n // }\n // }\n try {\n this.table.formConfig.data[item.key] = eval(o.valueSEARCHToOtherProp);\n } catch (e) {}\n if (type == 5) {\n item.title = o.title + \"开始\";\n item.type = 5;\n item.field = \"$\" + o.tableField;\n item.key = \"$\" + o.tableField;\n } else if (type == 6) {\n item.field = o.tableField + \"$\";\n item.type = 6;\n item.key = o.tableField + \"$\";\n item.title = o.title + \"结束\";\n }\n if ((item.type == 6 || item.type == 5) && o.selectDom == undefined) {\n o.selectDom = 7;\n }\n this.getItemRender(o, item, type);\n if (item.title && item.title.length > 6) {\n item.titleWidth = 20 * (item.title.length - 2);\n } else if (item.title.toString().trim().length == 0) {\n item.titleWidth = 0;\n }\n if (o.spanSEARCHToOtherProp != undefined) {\n item.span = 6;\n }\n return item;\n },\n getItemRender(o, item, type) {\n if (o.dictCode) {\n delete item.itemRender;\n item.slots = {\n default: o.selectDom + item.field\n };\n item.slotsName = o.selectDom + item.field;\n item.options = this.dictVal(o.dictCode);\n item.placeholder = '请选择' + o.title;\n item.clearable = o.clearableSEARCHToOtherProp == '1';\n item.multiple = o.selectDom == '8';\n } else if (o.selectDom == 7) {\n item.itemRender.props.type = 'integer';\n } else if (o.selectDom == 10) {\n item.itemRender.name = 'textarea';\n } else if (o.selectDom == 3 || o.selectDom == 6) {\n delete item.itemRender;\n item.domDate = true;\n if (o.selectType == 98 && item.selectDom == 6) {\n item.span = 7;\n item.domType = 'daterange';\n } else {\n item.domType = item.selectDom == 3 ? 'datetime' : 'date';\n }\n //这里跟element plus不一样\n item.domFormat = item.selectDom == 3 ? 'yyyy-MM-dd HH:mm:ss' : 'yyyy-MM-dd';\n item.slots = {\n default: o.selectDom + item.field + \"_time\"\n };\n item.slotsName = o.selectDom + item.field + \"_time\";\n item.placeholder = '请选择';\n if (type == 5) {\n item.placeholder += \"开始\";\n } else if (type == 6) {\n item.placeholder += \"结束\";\n }\n if (o.selectDom == 3) {\n item.placeholder += \"时间\";\n }\n }\n },\n setColumnShowOverFlow(column, optionObj) {\n if (optionObj) {\n if (optionObj.table && optionObj.table.columnConfig && optionObj.table.columnConfig.showOverflow) {\n if (column.type != 'seq' || column.type != 'checkbox') {\n column.showOverflow = optionObj.table.columnConfig.showOverflow;\n }\n }\n }\n },\n initMergeCells() {\n if (this.table.mergeCells) {\n this.table.mergeCells = JSON.parse(this.table.mergeCells);\n return;\n }\n if (this.table.mergeFields && this.table.mergeFields.length != 0) {\n this.table.spanMethod = this.mergeRowMethod;\n }\n },\n // 通用行合并函数(将相同多列数据合并为一行)\n mergeRowMethod({\n row,\n _rowIndex,\n column,\n visibleData\n }) {\n const cellValue = row[column.field];\n if (cellValue && this.table.mergeFields.includes(column.field)) {\n const prevRow = visibleData[_rowIndex - 1];\n let nextRow = visibleData[_rowIndex + 1];\n if (prevRow && prevRow[column.field] === cellValue) {\n return {\n rowspan: 0,\n colspan: 0\n };\n } else {\n let countRowspan = 1;\n while (nextRow && nextRow[column.field] === cellValue) {\n nextRow = visibleData[++countRowspan + _rowIndex];\n }\n if (countRowspan > 1) {\n return {\n rowspan: countRowspan,\n colspan: 1\n };\n }\n }\n }\n },\n setDictCellStyle({\n row,\n rowIndex,\n $rowIndex,\n column,\n columnIndex,\n $columnIndex\n }) {\n if (column.params && column.params.cssClass) {\n return column.params.cssClass[row[column[(0,_utils_columnProp__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(column)]]];\n }\n },\n setTableStyle(option) {\n if (option['cell-style'] === undefined) {\n option['cell-style'] = {\n flag: \"flag##function#\",\n isFunction: true\n };\n }\n option['cell-style']['code'] = \"let OTMixinColumnMethod_setDictCellStyle = this.setDictCellStyle(params); if(OTMixinColumnMethod_setDictCellStyle){ return OTMixinColumnMethod_setDictCellStyle;}\\n\" + option['cell-style']['code'];\n }\n }\n};\n\n//# sourceURL=webpack://olp-table/./src/mixins/VTMixin/OTMixinColumnMethod.js?");
10764
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ OTMixinColumnMethod: function() { return /* binding */ OTMixinColumnMethod; }\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_some_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.iterator.some.js */ \"./node_modules/core-js/modules/es.iterator.some.js\");\n/* harmony import */ var core_js_modules_es_iterator_some_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_some_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils_columnProp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/utils/columnProp */ \"./src/utils/columnProp.js\");\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\n\n\n\n\nfunction setColumnParams(column, key, value) {\n if (value === undefined) {\n return;\n }\n if (!column['params']) {\n column['params'] = {};\n }\n column['params'][key] = value;\n}\nconst OTMixinColumnMethod = {\n methods: {\n setColumnCssClass(o) {\n if (o.dictCode) {\n let vals = this.dictVal(o.dictCode);\n let cssClass = {};\n if (vals) {\n let dictValueLabel = {};\n for (let obj of vals) {\n dictValueLabel[obj.dictValue] = obj.dictLabel;\n if (obj.cssClass) {\n let css = obj.cssClass.trim();\n try {\n css = css.replace(/([a-zA-Z_]\\w*):/g, '\"$1\":').replace(/'/g, '\"');\n css = JSON.parse(css);\n if (Array.isArray(css)) {\n let data = {};\n if (css[0]) {\n data['backgroundColor'] = css[0];\n }\n if (css[1]) {\n data['color'] = css[1];\n }\n cssClass[obj.dictValue] = data;\n } else {\n cssClass[obj.dictValue] = css;\n }\n } catch (e) {\n console.error(\"列名:\", o.title, \"数据字典:\", obj.dictLabel, \"样式异常:\", css);\n }\n }\n }\n setColumnParams(o, 'dictValueLabel', dictValueLabel);\n }\n if (Object.keys(cssClass).length != 0) {\n setColumnParams(o, 'cssClass', cssClass);\n }\n }\n },\n initColumn(columns, tableConfig) {\n this.table.mergeFields = [];\n let items = [];\n columns = columns.sort(({\n sort: a\n }, {\n sort: b\n }) => a - b);\n for (let column of columns) {\n this.toParseOtherProp(column);\n }\n this.table.columnSource = JSON.parse(JSON.stringify(columns));\n let {\n optionJson,\n seq\n } = tableConfig;\n if (optionJson) {\n optionJson = JSON.parse(optionJson);\n }\n for (let o of columns) {\n this.setColumnCssClass(o);\n this.initFormatter(o);\n this.initSlots(o);\n this.setTreeOpenColumn(o, tableConfig);\n this.setMergeField(o);\n this.setColumnShowOverFlow(o, optionJson);\n this.setProp(o);\n this.setColumnHide(o);\n this.setFixed(o);\n this.setShowFooter(o);\n this.getVNode(o, items);\n // 可编辑配置\n if (this.hasEditConfig()) {\n this.setEditConfig(o);\n }\n }\n items.sort(({\n searchSort: a\n }, {\n searchSort: b\n }) => a - b);\n this.setSearchArea(items);\n columns = this.initBodyLeftColumn(columns, seq);\n if (this.table['show-footer']) {\n if (!columns[0].width || columns[0].width < 55) {\n columns[0].width = 55;\n }\n }\n this.table.columns = columns;\n //暂时不合并,启用虚拟滚动\n this.initMergeCells();\n },\n hasEditConfig() {\n return this.table.editConfig && (this.table.editConfig.enabled === true || typeof this.table.editConfig.enabled === 'string' && this.table.editConfig.enabled.toLowerCase() === 'true');\n },\n setEditConfig(o) {\n if (o.tableSaveToOtherProp && o.tableSaveToOtherProp == '1') {\n return;\n }\n if (o.selectDom == '1') {\n o.editRender = {\n name: '$input',\n props: {\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 文本域\n if (o.selectDom == '10') {\n o.editRender = {\n name: 'textarea',\n props: {\n type: 'textarea',\n // 指定为多行文本框\n placeholder: '请输入' + o.title,\n rows: 3,\n // 默认显示行数\n autosize: {\n minRows: 2,\n maxRows: 6\n },\n // 自动调整高度\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 数字\n if (o.selectDom == '7') {\n o.editRender = {\n name: '$input',\n props: {\n type: this.getType(o.selectDom),\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 时间\n if (o.selectDom == '3' || o.selectDom == '6') {\n o.editRender = {\n name: 'VxeInput',\n props: {\n type: this.getType(o.selectDom),\n valueFormat: 'yyyy-MM-dd HH:mm:ss'\n }\n };\n }\n // 下拉框\n if (o.selectDom == '2' || o.selectDom == '8') {\n o.editRender = {\n name: 'VxeSelect',\n options: this.dictVal(o.dictCode),\n props: {\n placeholder: '请选择' + o.title\n }\n };\n }\n },\n getType(selectDom) {\n if (selectDom == '3') {\n return 'datetime';\n }\n if (selectDom == '6') {\n return 'date';\n }\n if (selectDom == '7') {\n return 'number';\n }\n },\n /**\r\n * 初始化列左边\r\n * @param columns\r\n * @param type\r\n * @returns {*}\r\n */\n initBodyLeftColumn(columns, type) {\n const hasSeqColumn = columns.some(col => ['seq', 'sequence', '序号'].includes(col.field || col.prop || col.type));\n if (type == 1 && !hasSeqColumn) {\n columns.unshift({\n type: 'seq',\n width: 55,\n title: '序号',\n fixed: 'left'\n });\n }\n const hasCheckboxColumn = columns.some(col => ['checkbox'].includes(col.type));\n const hasRadioColumn = columns.some(col => ['radio'].includes(col.type));\n if (this.selectBox == 2 && !hasCheckboxColumn) {\n columns.unshift({\n type: 'checkbox',\n width: 45,\n showOverflow: false,\n fixed: 'left'\n });\n } else if (this.selectBox == 1 && !hasRadioColumn) {\n columns.unshift({\n type: 'radio',\n width: 45,\n showOverflow: false,\n fixed: 'left'\n });\n }\n return columns;\n },\n setTreeOpenColumn(o, tableConfig) {\n if (tableConfig.tree == 1 && o.field == tableConfig.openColumn) {\n o.treeNode = true;\n if (!o.align) {\n o.align = 'left';\n }\n }\n },\n setMergeField(column) {\n if (column.mergeFlag == '1') {\n this.table.mergeFields.push(column.field);\n }\n },\n setColumnHide(o) {\n //隐藏\n if (o.visible == \"0\") {\n o.visible = false;\n }\n },\n initFormatter(o) {\n try {\n if (o.formatter) {\n o.formatter = eval(\"({cellValue, row, column})=>{\" + o.formatter + \"}\");\n } else if (o.dictCode) {\n o.formatter = eval(\"\" + \"({cellValue, row, column})=>{if(column.params && column.params.dictValueLabel){ let dictValueLabelElement = column.params.dictValueLabel[cellValue];if(dictValueLabelElement){return dictValueLabelElement;} }return cellValue}\");\n }\n } catch (e) {\n console.log(o.title, \"formatter异常:\", o.formatter);\n this.$message.error(o.title + \"formatter异常!\");\n }\n },\n initSlots(o) {\n if (o.selectDom == 20) {\n o.slotsName = 'img_default';\n o.slots = {\n default: 'img_default'\n };\n }\n if (o.selectDom == '21') {\n o.slotsName = 'icon_default';\n o.slots = {\n default: 'icon_default'\n };\n }\n },\n setFixed(item) {\n //修改固定字段的值\n if (item.fixed === '1') {\n item.fixed = 'left';\n } else if (item.fixed === '2') {\n item.fixed = 'right';\n }\n if (item.align === '1') {\n item.align = 'left';\n } else if (item.align === '2') {\n item.align = 'right';\n } else if (item.align === '0') {\n item.align = 'center';\n }\n },\n setProp(item) {\n item.resizable = undefined;\n if (item.sortable != undefined && item.sortable != \"\") {\n let order = item.field + (item.sortable == 0 ? \" ASC \" : \" DESC \");\n this.orderByColumns.push(order);\n }\n ////时间类型\n if (!item.width && (item.selectDom == 3 || item.selectDom == 6)) {\n item.minWidth = 150;\n } else if (!item.width && item.title) {\n item.minWidth = item.title.length * 30;\n }\n },\n setShowFooter(item) {\n if (item['totalToOtherProp']) {\n this.table['show-footer'] = true;\n }\n },\n toParseOtherProp(item) {\n //其他属性赋值\n try {\n let otherProp = JSON.parse(item.otherProp);\n item.otherProp = otherProp;\n for (let key of Object.keys(otherProp)) {\n item[key] = otherProp[key];\n }\n } catch (e) {\n if (item.otherProp) {\n console.error(item.field + \"其他属性无法解析:\" + item.otherProp);\n }\n item.otherProp = {};\n }\n if (item['totalToOtherProp'] === undefined) {\n item['totalToOtherProp'] = '';\n }\n },\n /**\r\n * 设置搜索\r\n * @param items\r\n */\n setSearchArea(items) {\n if (items.length != 0) {\n items.push({\n itemRender: {\n name: '$buttons',\n children: [{\n props: {\n type: 'submit',\n content: '查询',\n status: 'primary'\n },\n events: {\n click: this.query\n }\n }, {\n props: {\n type: 'button',\n content: '重置'\n },\n events: {\n click: this.resetQuery\n }\n }]\n }\n });\n this.table.formConfig.size = this.table.size;\n }\n this.table.formConfig.items = items;\n },\n getVNode(o, items) {\n if (o.selectType == undefined) {\n return;\n }\n //99是范围查询\n if (o.selectType == 99) {\n let itemStart = this.initFormConfig(o, 5);\n let itemEnd = this.initFormConfig(o, 6);\n //时间范围查询\n if (o.selectDom == 3 || o.selectDom == 6) {\n let placeholder = o.selectDom == 3 ? '时间' : '';\n itemStart.placeholder = '请选择开始日期' + placeholder;\n delete itemStart.itemRender;\n itemEnd.placeholder = '请选择结束日期' + placeholder;\n }\n items.push(itemStart);\n items.push(itemEnd);\n } else {\n items.push(this.initFormConfig(o));\n }\n },\n initFormConfig(o, type) {\n let key = o.tableField;\n if (o.tableNameSEARCHToOtherProp != undefined && o.tableNameSEARCHToOtherProp != '') {\n key = o.tableNameSEARCHToOtherProp + '.' + key;\n }\n let item = {\n align: 'left',\n field: key,\n span: 6,\n searchSort: o.searchSort,\n title: o.titleSEARCHToOtherProp != undefined ? o.titleSEARCHToOtherProp : o.title,\n key: key,\n type: o.selectType,\n selectDom: o.selectDom,\n tableName: o.tableNameSEARCHToOtherProp,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true,\n toDate: o.toDateSEARCHToOtherProp,\n itemRender: {\n name: '$input',\n props: {\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n }\n };\n // if(this.table.editConfig && (\n // this.table.editConfig.enabled === true ||\n // (typeof this.table.editConfig.enabled === 'string' &&\n // this.table.editConfig.enabled.toLowerCase() === 'true')\n // )){\n // o.editRender = {\n // name:'$input',\n // props: {\n // placeholder: '请输入' + o.title,\n // clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n // }\n // }\n // }\n try {\n this.table.formConfig.data[item.key] = eval(o.valueSEARCHToOtherProp);\n } catch (e) {}\n if (type == 5) {\n item.title = o.title + \"开始\";\n item.type = 5;\n item.field = \"$\" + o.tableField;\n item.key = \"$\" + o.tableField;\n } else if (type == 6) {\n item.field = o.tableField + \"$\";\n item.type = 6;\n item.key = o.tableField + \"$\";\n item.title = o.title + \"结束\";\n }\n if ((item.type == 6 || item.type == 5) && o.selectDom == undefined) {\n o.selectDom = 7;\n }\n this.getItemRender(o, item, type);\n if (item.title && item.title.length > 6) {\n item.titleWidth = 20 * (item.title.length - 2);\n } else if (item.title.toString().trim().length == 0) {\n item.titleWidth = 0;\n }\n if (o.spanSEARCHToOtherProp != undefined) {\n item.span = 6;\n }\n return item;\n },\n getItemRender(o, item, type) {\n if (o.dictCode) {\n delete item.itemRender;\n item.slots = {\n default: o.selectDom + item.field\n };\n item.slotsName = o.selectDom + item.field;\n item.options = this.dictVal(o.dictCode);\n item.placeholder = '请选择' + o.title;\n item.clearable = o.clearableSEARCHToOtherProp == '1';\n item.multiple = o.selectDom == '8';\n } else if (o.selectDom == 7) {\n item.itemRender.props.type = 'integer';\n } else if (o.selectDom == 10) {\n item.itemRender.name = 'textarea';\n } else if (o.selectDom == 3 || o.selectDom == 6) {\n delete item.itemRender;\n item.domDate = true;\n if (o.selectType == 98 && item.selectDom == 6) {\n item.span = 7;\n item.domType = 'daterange';\n } else {\n item.domType = item.selectDom == 3 ? 'datetime' : 'date';\n }\n //这里跟element plus不一样\n item.domFormat = vue__WEBPACK_IMPORTED_MODULE_4__.version.split('.')[0] == 2 ? 'yyyy-MM-dd' : 'YYYY-MM-DD';\n if (item.selectDom == 3) {\n item.domFormat = item.domFormat + ' HH:mm:ss';\n }\n item.slots = {\n default: o.selectDom + item.field + \"_time\"\n };\n item.slotsName = o.selectDom + item.field + \"_time\";\n item.placeholder = '请选择';\n if (type == 5) {\n item.placeholder += \"开始\";\n } else if (type == 6) {\n item.placeholder += \"结束\";\n }\n if (o.selectDom == 3) {\n item.placeholder += \"时间\";\n }\n }\n },\n setColumnShowOverFlow(column, optionObj) {\n if (optionObj) {\n if (optionObj.table && optionObj.table.columnConfig && optionObj.table.columnConfig.showOverflow) {\n if (column.type != 'seq' || column.type != 'checkbox') {\n column.showOverflow = optionObj.table.columnConfig.showOverflow;\n }\n }\n }\n },\n initMergeCells() {\n if (this.table.mergeCells) {\n this.table.mergeCells = JSON.parse(this.table.mergeCells);\n return;\n }\n if (this.table.mergeFields && this.table.mergeFields.length != 0) {\n this.table.spanMethod = this.mergeRowMethod;\n }\n },\n // 通用行合并函数(将相同多列数据合并为一行)\n mergeRowMethod({\n row,\n _rowIndex,\n column,\n visibleData\n }) {\n const cellValue = row[column.field];\n if (cellValue && this.table.mergeFields.includes(column.field)) {\n const prevRow = visibleData[_rowIndex - 1];\n let nextRow = visibleData[_rowIndex + 1];\n if (prevRow && prevRow[column.field] === cellValue) {\n return {\n rowspan: 0,\n colspan: 0\n };\n } else {\n let countRowspan = 1;\n while (nextRow && nextRow[column.field] === cellValue) {\n nextRow = visibleData[++countRowspan + _rowIndex];\n }\n if (countRowspan > 1) {\n return {\n rowspan: countRowspan,\n colspan: 1\n };\n }\n }\n }\n },\n setDictCellStyle({\n row,\n rowIndex,\n $rowIndex,\n column,\n columnIndex,\n $columnIndex\n }) {\n if (column.params && column.params.cssClass) {\n return column.params.cssClass[row[column[(0,_utils_columnProp__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(column)]]];\n }\n },\n setTableStyle(option) {\n if (option['cell-style'] === undefined) {\n option['cell-style'] = {\n flag: \"flag##function#\",\n isFunction: true\n };\n }\n option['cell-style']['code'] = \"let OTMixinColumnMethod_setDictCellStyle = this.setDictCellStyle(params); if(OTMixinColumnMethod_setDictCellStyle){ return OTMixinColumnMethod_setDictCellStyle;}\\n\" + option['cell-style']['code'];\n }\n }\n};\n\n//# sourceURL=webpack://olp-table/./src/mixins/VTMixin/OTMixinColumnMethod.js?");
10765
10765
 
10766
10766
  /***/ }),
10767
10767
 
@@ -828,7 +828,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core
828
828
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
829
829
 
830
830
  "use strict";
831
- 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_find_js__WEBPACK_IMPORTED_MODULE_2__ = __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_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/utils/http/httpUtils */ \"./src/utils/http/httpUtils.js\");\n/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/utils/object */ \"./src/utils/object.js\");\n/* harmony import */ var _store_dict__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/store/dict */ \"./src/store/dict.js\");\n/* harmony import */ var element_plus__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! element-plus */ \"element-plus\");\n/* harmony import */ var element_plus__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(element_plus__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var sql_formatter__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! sql-formatter */ \"./node_modules/sql-formatter/lib/sqlFormatter.js\");\n/* harmony import */ var sql_formatter__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(sql_formatter__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _views_table_add_or_edit_config_field_config_index_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/views/table/add-or-edit/config/field-config/index.vue */ \"./src/views/table/add-or-edit/config/field-config/index.vue\");\n/* harmony import */ var _components_lazy_load_select_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/components/lazy-load-select.vue */ \"./src/components/lazy-load-select.vue\");\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n __name: 'index',\n emits: [\"emits\", 'updateTab'],\n setup(__props, {\n expose: __expose,\n emit: __emit\n }) {\n const http = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('http');\n const addOrEditRootData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('addOrEditRootData');\n const dict = (0,_store_dict__WEBPACK_IMPORTED_MODULE_6__.storeDict)();\n const dicData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n joinFiledDicData: [{\n label: '内连接',\n value: 'join'\n }, {\n label: '左连接',\n value: 'left join'\n }, {\n label: '右连接',\n value: 'right join'\n }],\n joinTableDicData: []\n });\n const form = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n form: {\n table: [{\n index: \"t1\",\n type: \"主表\",\n joinTable: \"\",\n joinFiled: \"/\",\n deleteWhere: 'id=${id}'\n }],\n executeSql: '',\n executeWhere: '',\n orderBy: ''\n }\n });\n const option = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n submitBtn: false,\n emptyBtn: false,\n column: [\n /* {\r\n label: '转换驼峰', prop: 'hump', border: true, type: 'radio', value: '0', span: 7, dicData: [{\r\n label: '不转换', value: '0'\r\n }, {\r\n label: '转换', value: '1'\r\n },{\r\n label: '请求转换', value: '2'\r\n }],\r\n dictCode: 'converting_hump'\r\n },*/\n {\n label: '数据源类型',\n type: 'radio',\n span: 7,\n prop: 'definitionSql',\n border: true,\n value: '0',\n onChange: ({\n value\n }) => {\n if (value == '0') {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"executeSql,where,table,orderBy\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"api,requestType\");\n } else if (value == '1') {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"executeSql,where,orderBy\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"api,table,requestType\");\n } else {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"api,requestType\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"executeSql,where,table,orderBy\");\n }\n },\n dicData: [{\n label: '自动SQL',\n value: '0'\n }, {\n label: '手动SQL',\n value: '1'\n }, {\n label: 'API',\n value: '2'\n }],\n dictCode: 'tree_data_type'\n }, {\n label: '查询表格',\n prop: 'table',\n type: 'dynamic',\n span: 24,\n children: {\n align: 'center',\n minHeight: 100,\n maxHeight: 170,\n size: \"small\",\n headerAlign: 'center',\n rowAdd: done => {\n let obj = {\n index: \"t\" + (form.form.table.length + 1),\n type: \"join\",\n joinTable: \"\",\n joinFiled: \"t\" + form.form.table.length + \".=t\" + (form.form.table.length + 1) + \".\"\n };\n done(obj);\n },\n rowDel: row => {\n if (row.$index != 0) {\n setSql(row.$index);\n } else {\n element_plus__WEBPACK_IMPORTED_MODULE_7__.ElMessage.error(\"主表不能删除!\");\n }\n },\n column: [{\n width: 60,\n prop: \"index\",\n label: '序号'\n }, {\n label: '类型',\n prop: \"type\",\n width: 120,\n disabled: true,\n type: 'select'\n }, {\n label: '数据表',\n prop: \"joinTable\",\n type: 'select',\n dicData: []\n }, {\n label: 'on',\n prop: \"joinFiled\",\n type: 'input'\n }, {\n label: '删除条件',\n prop: \"deleteWhere\",\n width: 200,\n type: 'input'\n }]\n }\n }, {\n label: '执行SQL',\n display: true,\n type: 'textarea',\n maxRows: 7,\n span: 24,\n prop: 'executeSql'\n }, {\n label: 'where条件',\n display: true,\n type: 'input',\n span: 24,\n prop: 'executeWhere'\n }, {\n label: '排序',\n display: true,\n type: 'input',\n span: 24,\n prop: 'orderBy'\n }, {\n label: '默认参数',\n type: 'input',\n span: 24,\n prop: 'parameterDefault'\n }, {\n label: 'API',\n display: true,\n type: 'input',\n span: 24,\n prop: 'api'\n }, {\n label: '请求类型',\n prop: 'requestType',\n border: true,\n type: 'radio',\n value: '0',\n span: 6,\n dicData: [],\n dictCode: 'request_type'\n }]\n });\n const configData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('configData');\n function parseData(data) {\n if (form.form.definitionSql == '1') {\n data.mainTable = form.form.mainTable;\n } else {\n data.mainTable = form.form.table[0].joinTable;\n }\n data.definitionSql = form.form.definitionSql;\n data.executeSql = form.form.executeSql;\n data.orderBy = form.form.orderBy;\n data.groupBy = form.form.groupBy;\n data.executeWhere = form.form.executeWhere;\n data.parameterDefault = form.form.parameterDefault;\n data.hump = form.form.hump;\n data.api = form.form.api;\n data.requestType = form.form.requestType;\n if (form.form.definitionSql == 0) {\n if (form.form.table[0].deleteWhere) {\n data.deleteWhere = {\n wheres: form.form.table[0].deleteWhere.trim(),\n tableName: form.form.table[0].joinTable\n };\n } else {\n delete data.deleteWhere;\n }\n }\n }\n function setData(f) {\n form.form.definitionSql = f;\n form.form.hump = f.hump;\n form.form.mainTable = f.mainTable;\n form.form.executeSql = f.executeSql;\n form.form.orderBy = f.orderBy;\n form.form.api = f.api;\n form.form.requestType = f.requestType;\n form.form.executeWhere = f.executeWhere;\n form.form.parameterDefault = f.parameterDefault;\n form.form.definitionSql = f.definitionSql;\n if (form.form.definitionSql == 0) {\n sqlParseTable(f.deleteWhere);\n }\n }\n function setTable() {\n let promise = [];\n for (let i = 0; i < form.form.table.length; i++) {\n promise.push((0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get)(http, \"/online/getDBTableColumnList/\" + addOrEditRootData.form.dbName, {\n tableName: form.form.table[i].joinTable\n }));\n }\n Promise.all(promise).then(result => {\n for (let i = 0; i < result.length; i++) {\n form.form.table[i]['columnList'] = result[i];\n }\n setSql();\n });\n }\n function setSql(index, seq) {\n if (seq != undefined && seq != 0) {\n let arr = form.form.table.find(item => {\n return item.index == seq;\n });\n if (!arr || !arr.joinTable) {\n return;\n }\n }\n if (index != undefined && index != 0) {\n form.form.table.splice(index, 1);\n }\n let sqlTableOn = form.form.table[0].joinTable + \" t1 \";\n let sqlFiled = \"\";\n let tableColumns = [];\n let sort = 0;\n let mapFiled = {};\n for (let i = 0; i < form.form.table.length; i++) {\n if (i === index) {\n continue;\n }\n let obj = form.form.table[i];\n for (let j = 0; j < obj.columnList.length; j++) {\n let column = obj.columnList[j];\n if (column.checked == 0) {\n continue;\n }\n if (sqlFiled.length != 0) {\n sqlFiled += \",\";\n }\n if (mapFiled[column.column_name] !== undefined) {\n mapFiled[column.column_name]++;\n } else {\n mapFiled[column.column_name] = 0;\n }\n sort++;\n let asName = mapFiled[column.column_name] === 0 ? column.column_name : obj.index + \"_\" + column.column_name;\n sqlFiled += obj.index + \".\" + column.column_name + \" AS \" + asName;\n let column_name = column.column_name;\n let column_comment = column.column_comment ? column.column_comment : column_name;\n tableColumns.push({\n sort: sort,\n tableField: column_name,\n field: column_name,\n title: column_comment,\n label: column_comment,\n visible: column.visible,\n display: 1,\n asName: asName\n });\n }\n if (i != 0) {\n sqlTableOn += \" \" + obj.type + \" \" + obj.joinTable + \" \" + obj.index + \" on \" + obj.joinFiled;\n }\n }\n for (let tableColumn of tableColumns) {\n let add = true;\n for (let c of configData.tableColumn) {\n if (c.field == tableColumn.field) {\n add = false;\n }\n }\n if (add) {\n configData.tableColumn.push(tableColumn);\n }\n }\n for (let i = 0; i < configData.tableColumn.length; i++) {\n let remove = true;\n for (let tableColumn of tableColumns) {\n if (configData.tableColumn[i].field == tableColumn.field) {\n remove = false;\n }\n }\n if (remove) {\n configData.tableColumn.splice(i, 1);\n }\n }\n form.form.executeSql = \"select \" + sqlFiled + \" from \" + sqlTableOn;\n }\n const isSyncCurd = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)(false);\n const sync = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)(false);\n function syncTable() {\n emit('loading', true);\n configData.form.executeSql = form.form.executeSql;\n configData.form.executeWhere = form.form.where;\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableFiled\", {\n sql: form.form.executeSql,\n where: form.form.where,\n definitionSql: form.form.definitionSql,\n dbName: addOrEditRootData.form.dbName,\n uuid: configData.form.uuid\n }, undefined, false).then(data => {\n emit(\"updateTable\", data.data);\n isSyncCurd.value = form.form?.definitionSql == 0 && form.form?.table?.length == 1;\n if (isSyncCurd.value && sync.value) {\n emit(\"updateCurd\");\n }\n setFieldConfig();\n }).finally(() => {\n emit('loading', false);\n });\n }\n const filedConfig = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)();\n function setFieldConfig(filedConf) {\n if (form.form.definitionSql != 0) {\n return;\n }\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableSetFiled\", {\n sql: form.form.executeSql,\n where: form.form.where,\n dbName: addOrEditRootData.form.dbName,\n definitionSql: form.form.definitionSql,\n uuid: configData.form.uuid\n }, false, false).then(({\n data\n }) => {\n setFormTable(data);\n if (filedConf) {\n filedConfig.value.init(form.form.table);\n }\n });\n }\n function getTableNamesByFormSql() {\n let formSql = form.form.executeSql.substring(form.form.executeSql.indexOf('from') + 4);\n let tableNames = [];\n for (const join of formSql.split('join')) {\n tableNames.push(join);\n }\n return tableNames;\n }\n function getTableComment(key) {\n for (const item of dicData.joinTableDicData) {\n if (item.value == key) return item.label;\n }\n }\n function setFormTable(data) {\n let tableNames = getTableNamesByFormSql();\n let tables = [];\n for (const key of Object.keys(data)) {\n let table = {\n index: 't1',\n type: '主表',\n joinTable: key,\n joinFiled: '/',\n deleteWhere: '',\n columnList: [],\n tableComment: getTableComment(key)\n };\n table.columnList = Object.values(data[key]);\n tables.push(table);\n }\n form.form.table = [];\n for (let i = 0; i < tableNames.length; i++) {\n const tableName = tableNames[i];\n for (const table of tables) {\n if (tableName.includes(table.joinTable)) {\n if (i == 0) {\n table.deleteWhere = 'id=${id}';\n table.mainTable = table.joinTable;\n }\n if (i != 0) {\n table.index = 't' + (i + 1);\n table.type = 'join';\n let joinFiled = tableName.substring(tableName.indexOf('on') + 2).replace(/[\\n\\t\\s]+/g, '');\n if (tableNames[i - 1].includes('left')) {\n table.type = 'left join';\n joinFiled = joinFiled.replace('left', '');\n }\n if (tableNames[i - 1].includes('right')) {\n table.type = 'right join';\n joinFiled = joinFiled.replace('right', '');\n }\n table.joinFiled = joinFiled;\n }\n form.form.table.push(table);\n break;\n }\n }\n }\n }\n function updateExecuteSql(v) {\n if (v === 0) {\n form.form.executeSql = sql_formatter__WEBPACK_IMPORTED_MODULE_8___default().format(form.form.executeSql, {\n language: 'sql',\n keywordCase: 'upper',\n indentStyle: 'tabularLeft'\n });\n } else {\n form.form.executeSql = form.form.executeSql.replace(/\\s+/g, \" \");\n }\n }\n function filedConfigClose(data) {\n if (!data) return;\n for (let j = 0; j < form.form.table.length; j++) {\n let obj = form.form.table[j];\n if (Object.keys(data).includes(obj.index)) {\n form.form.table[j].columnList = data[obj.index];\n }\n }\n setSql();\n }\n function setFieldEvent(row) {\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableSetFiled\", {\n sql: form.form.executeSql,\n definitionSql: form.form.definitionSql,\n dbName: addOrEditRootData.form.dbName,\n where: form.form.where,\n uuid: configData.form.uuid\n }, undefined, false).then(data => {\n row.columnList = Object.values(data.data[row.joinTable]);\n filedConfig.value.init(row);\n });\n }\n\n /**\r\n * 一键同步CURD\r\n */\n const syncCurd = () => {\n sync.value = true;\n syncTable();\n };\n function parseSqlToTables(sql) {\n // 标准化SQL,去除多余空格和换行\n let normalizedSql = sql.replace(/[\\n\\r\\s]+/g, ' ').trim();\n\n // 分割FROM后面的部分\n let fromPart = normalizedSql.split(/from/i)[1];\n if (!fromPart) return [];\n let result = [];\n let currentIndex = 0;\n\n // 分割所有JOIN(包括LEFT JOIN, RIGHT JOIN等)\n let parts = fromPart.split(/\\s+(?:left\\s+)?(?:right\\s+)?(?:inner\\s+)?join\\s+/i);\n\n // 处理主表\n let mainTablePart = parts[0].trim();\n let mainTableName = mainTablePart.split(/\\s+/)[0];\n result.push({\n index: 't' + (currentIndex + 1),\n type: '主表',\n joinTable: mainTableName,\n joinFiled: '/'\n });\n\n // 处理关联表\n for (let i = 1; i < parts.length; i++) {\n currentIndex++;\n let joinPart = parts[i].trim();\n\n // 获取JOIN类型\n let joinType = 'left';\n if (normalizedSql.toLowerCase().includes('right join')) {\n joinType = 'right';\n } else if (normalizedSql.toLowerCase().includes('inner join')) {\n joinType = 'inner';\n }\n\n // 分割ON条件\n let onPart = joinPart.split(/\\s+on\\s+/i);\n let joinTableName = onPart[0].trim().split(/\\s+/)[0];\n let joinFields = onPart[1] ? onPart[1].trim() : '';\n result.push({\n index: 't' + (currentIndex + 1),\n type: joinType,\n joinTable: joinTableName,\n joinFiled: joinFields\n });\n }\n return result;\n }\n const sqlParseTable = o => {\n if (configData.form.executeSql && configData.form.executeSql.toLowerCase().indexOf(\"from\") === -1) {\n return;\n }\n let tableData = parseSqlToTables(configData.form.executeSql);\n if (o) {\n tableData[0].deleteWhere = o.wheres;\n }\n form.form.table = tableData;\n };\n function remoteMethod() {\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get)(http, \"/online/getDBTableList\", {\n dbName: addOrEditRootData.form.dbName\n }).then(data => {\n dicData.joinTableDicData = data;\n });\n }\n function initDict() {\n for (const column of option.column) {\n if (column.dictCode) {\n column.dicData = dict.val(column.dictCode);\n }\n }\n }\n const emit = __emit; //声明 emits\n (0,vue__WEBPACK_IMPORTED_MODULE_3__.onMounted)(() => {\n remoteMethod();\n initDict();\n });\n __expose({\n setData,\n parseData,\n form\n });\n const __returned__ = {\n http,\n addOrEditRootData,\n dict,\n dicData,\n form,\n option,\n configData,\n parseData,\n setData,\n setTable,\n setSql,\n isSyncCurd,\n sync,\n syncTable,\n filedConfig,\n setFieldConfig,\n getTableNamesByFormSql,\n getTableComment,\n setFormTable,\n updateExecuteSql,\n filedConfigClose,\n setFieldEvent,\n syncCurd,\n parseSqlToTables,\n sqlParseTable,\n remoteMethod,\n initDict,\n emit,\n inject: vue__WEBPACK_IMPORTED_MODULE_3__.inject,\n reactive: vue__WEBPACK_IMPORTED_MODULE_3__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_3__.onMounted,\n ref: vue__WEBPACK_IMPORTED_MODULE_3__.ref,\n get get() {\n return _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get;\n },\n get post() {\n return _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post;\n },\n get setArrayObjectKeyValue() {\n return _utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue;\n },\n get storeDict() {\n return _store_dict__WEBPACK_IMPORTED_MODULE_6__.storeDict;\n },\n get ElMessage() {\n return element_plus__WEBPACK_IMPORTED_MODULE_7__.ElMessage;\n },\n get sqlFormatter() {\n return (sql_formatter__WEBPACK_IMPORTED_MODULE_8___default());\n },\n FieldConfig: _views_table_add_or_edit_config_field_config_index_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n LazyLoadSelect: _components_lazy_load_select_vue__WEBPACK_IMPORTED_MODULE_10__[\"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/base-config/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
831
+ 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_find_js__WEBPACK_IMPORTED_MODULE_2__ = __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_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/utils/http/httpUtils */ \"./src/utils/http/httpUtils.js\");\n/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/utils/object */ \"./src/utils/object.js\");\n/* harmony import */ var _store_dict__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/store/dict */ \"./src/store/dict.js\");\n/* harmony import */ var element_plus__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! element-plus */ \"element-plus\");\n/* harmony import */ var element_plus__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(element_plus__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var sql_formatter__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! sql-formatter */ \"./node_modules/sql-formatter/lib/sqlFormatter.js\");\n/* harmony import */ var sql_formatter__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(sql_formatter__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _views_table_add_or_edit_config_field_config_index_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/views/table/add-or-edit/config/field-config/index.vue */ \"./src/views/table/add-or-edit/config/field-config/index.vue\");\n/* harmony import */ var _components_lazy_load_select_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/components/lazy-load-select.vue */ \"./src/components/lazy-load-select.vue\");\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n __name: 'index',\n emits: [\"emits\", 'updateTab'],\n setup(__props, {\n expose: __expose,\n emit: __emit\n }) {\n const http = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('http');\n const addOrEditRootData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('addOrEditRootData');\n const dict = (0,_store_dict__WEBPACK_IMPORTED_MODULE_6__.storeDict)();\n const dicData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n joinFiledDicData: [{\n label: '内连接',\n value: 'join'\n }, {\n label: '左连接',\n value: 'left join'\n }, {\n label: '右连接',\n value: 'right join'\n }],\n joinTableDicData: []\n });\n const form = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n form: {\n table: [{\n index: \"t1\",\n type: \"主表\",\n joinTable: \"\",\n joinFiled: \"/\",\n deleteWhere: 'id=${id}'\n }],\n executeSql: '',\n executeWhere: '',\n orderBy: ''\n }\n });\n const option = (0,vue__WEBPACK_IMPORTED_MODULE_3__.reactive)({\n submitBtn: false,\n emptyBtn: false,\n column: [\n /* {\r\n label: '转换驼峰', prop: 'hump', border: true, type: 'radio', value: '0', span: 7, dicData: [{\r\n label: '不转换', value: '0'\r\n }, {\r\n label: '转换', value: '1'\r\n },{\r\n label: '请求转换', value: '2'\r\n }],\r\n dictCode: 'converting_hump'\r\n },*/\n {\n label: '数据源类型',\n type: 'radio',\n span: 7,\n prop: 'definitionSql',\n border: true,\n value: '0',\n onChange: ({\n value\n }) => {\n if (value == '0') {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"executeSql,where,table,orderBy\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"api,requestType\");\n } else if (value == '1') {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"executeSql,where,orderBy\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"api,table,requestType\");\n } else {\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', true, \"api,requestType\");\n (0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue)(option.column, 'display', false, \"executeSql,where,table,orderBy\");\n }\n },\n dicData: [{\n label: '自动SQL',\n value: '0'\n }, {\n label: '手动SQL',\n value: '1'\n }, {\n label: 'API',\n value: '2'\n }],\n dictCode: 'tree_data_type'\n }, {\n label: '查询表格',\n prop: 'table',\n type: 'dynamic',\n span: 24,\n children: {\n align: 'center',\n minHeight: 100,\n maxHeight: 170,\n size: \"small\",\n headerAlign: 'center',\n rowAdd: done => {\n let obj = {\n index: \"t\" + (form.form.table.length + 1),\n type: \"join\",\n joinTable: \"\",\n joinFiled: \"t\" + form.form.table.length + \".=t\" + (form.form.table.length + 1) + \".\"\n };\n done(obj);\n },\n rowDel: row => {\n if (row.$index != 0) {\n setSql(row.$index);\n } else {\n element_plus__WEBPACK_IMPORTED_MODULE_7__.ElMessage.error(\"主表不能删除!\");\n }\n },\n column: [{\n width: 60,\n prop: \"index\",\n label: '序号'\n }, {\n label: '类型',\n prop: \"type\",\n width: 120,\n disabled: true,\n type: 'select'\n }, {\n label: '数据表',\n prop: \"joinTable\",\n type: 'select',\n dicData: []\n }, {\n label: 'on',\n prop: \"joinFiled\",\n type: 'input'\n }, {\n label: '删除条件',\n prop: \"deleteWhere\",\n width: 200,\n type: 'input'\n }]\n }\n }, {\n label: '执行SQL',\n display: true,\n type: 'textarea',\n maxRows: 7,\n span: 24,\n prop: 'executeSql'\n }, {\n label: 'where条件',\n display: true,\n type: 'input',\n span: 24,\n prop: 'executeWhere'\n }, {\n label: '排序',\n display: true,\n type: 'input',\n span: 24,\n prop: 'orderBy'\n }, {\n label: '默认参数',\n type: 'input',\n span: 24,\n prop: 'parameterDefault'\n }, {\n label: 'API',\n display: true,\n type: 'input',\n span: 24,\n prop: 'api'\n }, {\n label: '请求类型',\n prop: 'requestType',\n border: true,\n type: 'radio',\n value: '0',\n span: 6,\n dicData: [],\n dictCode: 'request_type'\n }]\n });\n const configData = (0,vue__WEBPACK_IMPORTED_MODULE_3__.inject)('configData');\n function parseData(data) {\n if (form.form.definitionSql == '1') {\n data.mainTable = form.form.mainTable;\n } else {\n data.mainTable = form.form.table[0].joinTable;\n }\n data.definitionSql = form.form.definitionSql;\n data.executeSql = form.form.executeSql;\n data.orderBy = form.form.orderBy;\n data.groupBy = form.form.groupBy;\n data.executeWhere = form.form.executeWhere;\n data.parameterDefault = form.form.parameterDefault;\n data.hump = form.form.hump;\n data.api = form.form.api;\n data.requestType = form.form.requestType;\n if (form.form.definitionSql == 0) {\n if (form.form.table[0].deleteWhere) {\n data.deleteWhere = {\n wheres: form.form.table[0].deleteWhere.trim(),\n tableName: form.form.table[0].joinTable\n };\n } else {\n delete data.deleteWhere;\n }\n }\n }\n function setData(f) {\n form.form.definitionSql = f;\n form.form.hump = f.hump;\n form.form.mainTable = f.mainTable;\n form.form.executeSql = f.executeSql;\n form.form.orderBy = f.orderBy;\n form.form.api = f.api;\n form.form.requestType = f.requestType;\n form.form.executeWhere = f.executeWhere;\n form.form.parameterDefault = f.parameterDefault;\n form.form.definitionSql = f.definitionSql;\n if (form.form.definitionSql == 0) {\n sqlParseTable(f.deleteWhere);\n }\n }\n function setTable() {\n let promise = [];\n for (let i = 0; i < form.form.table.length; i++) {\n promise.push((0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get)(http, \"/online/getDBTableColumnList/\" + addOrEditRootData.form.dbName, {\n tableName: form.form.table[i].joinTable\n }));\n }\n Promise.all(promise).then(result => {\n for (let i = 0; i < result.length; i++) {\n form.form.table[i]['columnList'] = result[i];\n }\n setSql();\n });\n }\n function setSql(index, seq) {\n if (seq != undefined && seq != 0) {\n let arr = form.form.table.find(item => {\n return item.index == seq;\n });\n if (!arr || !arr.joinTable) {\n return;\n }\n }\n if (index != undefined && index != 0) {\n form.form.table.splice(index, 1);\n }\n let sqlTableOn = form.form.table[0].joinTable + \" t1 \";\n let sqlFiled = \"\";\n let tableColumns = [];\n let sort = 0;\n let mapFiled = {};\n for (let i = 0; i < form.form.table.length; i++) {\n if (i === index) {\n continue;\n }\n let obj = form.form.table[i];\n for (let j = 0; j < obj.columnList.length; j++) {\n let column = obj.columnList[j];\n if (column.checked == 0) {\n continue;\n }\n if (sqlFiled.length != 0) {\n sqlFiled += \",\";\n }\n if (mapFiled[column.column_name] !== undefined) {\n mapFiled[column.column_name]++;\n } else {\n mapFiled[column.column_name] = 0;\n }\n sort++;\n let asName = mapFiled[column.column_name] === 0 ? column.column_name : obj.index + \"_\" + column.column_name;\n sqlFiled += obj.index + \".\" + column.column_name + \" AS \" + asName;\n let column_name = column.column_name;\n let column_comment = column.column_comment ? column.column_comment : column_name;\n tableColumns.push({\n sort: sort,\n tableField: column_name,\n field: column_name,\n title: column_comment,\n label: column_comment,\n visible: column.visible,\n display: 1,\n asName: asName\n });\n }\n if (i != 0) {\n sqlTableOn += \" \" + obj.type + \" \" + obj.joinTable + \" \" + obj.index + \" on \" + obj.joinFiled;\n }\n }\n for (let tableColumn of tableColumns) {\n let add = true;\n for (let c of configData.tableColumn) {\n if (c.field == tableColumn.field) {\n add = false;\n }\n }\n if (add) {\n configData.tableColumn.push(tableColumn);\n }\n }\n for (let i = 0; i < configData.tableColumn.length; i++) {\n let remove = true;\n for (let tableColumn of tableColumns) {\n if (configData.tableColumn[i].field == tableColumn.field) {\n remove = false;\n }\n }\n if (remove) {\n configData.tableColumn.splice(i, 1);\n }\n }\n form.form.executeSql = \"select \" + sqlFiled + \" from \" + sqlTableOn;\n }\n const isSyncCurd = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)(false);\n const sync = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)(false);\n function syncTable() {\n emit('loading', true);\n configData.form.executeSql = form.form.executeSql;\n configData.form.executeWhere = form.form.where;\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableFiled\", {\n sql: form.form.executeSql,\n where: form.form.where,\n definitionSql: form.form.definitionSql,\n dbName: addOrEditRootData.form.dbName,\n uuid: configData.form.uuid\n }, undefined, false).then(data => {\n emit(\"updateTable\", data.data);\n isSyncCurd.value = form.form?.definitionSql == 0 && form.form?.table?.length == 1;\n if (isSyncCurd.value && sync.value) {\n emit(\"updateCurd\");\n }\n setFieldConfig();\n }).finally(() => {\n emit('loading', false);\n });\n }\n const filedConfig = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)();\n function setFieldConfig(filedConf) {\n if (form.form.definitionSql != 0) {\n return;\n }\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableSetFiled\", {\n sql: form.form.executeSql,\n where: form.form.where,\n dbName: addOrEditRootData.form.dbName,\n definitionSql: form.form.definitionSql,\n uuid: configData.form.uuid\n }, false, false).then(({\n data\n }) => {\n setFormTable(data);\n if (filedConf) {\n filedConfig.value.init(form.form.table);\n }\n });\n }\n function getTableNamesByFormSql() {\n let formSql = form.form.executeSql.substring(form.form.executeSql.indexOf('from') + 4);\n let tableNames = [];\n for (const join of formSql.split('join')) {\n tableNames.push(join);\n }\n return tableNames;\n }\n function getTableComment(key) {\n for (const item of dicData.joinTableDicData) {\n if (item.value == key) return item.label;\n }\n }\n function setFormTable(data) {\n let tableNames = getTableNamesByFormSql();\n let tables = [];\n for (const key of Object.keys(data)) {\n let table = {\n index: 't1',\n type: '主表',\n joinTable: key,\n joinFiled: '/',\n deleteWhere: '',\n columnList: [],\n tableComment: getTableComment(key)\n };\n table.columnList = Object.values(data[key]);\n tables.push(table);\n }\n form.form.table = [];\n for (let i = 0; i < tableNames.length; i++) {\n const tableName = tableNames[i];\n for (const table of tables) {\n if (tableName.includes(table.joinTable)) {\n if (i == 0) {\n table.deleteWhere = 'id=${id}';\n table.mainTable = table.joinTable;\n }\n if (i != 0) {\n table.index = 't' + (i + 1);\n table.type = 'join';\n let joinFiled = tableName.substring(tableName.indexOf('on') + 2).replace(/[\\n\\t\\s]+/g, '');\n if (tableNames[i - 1].includes('left')) {\n table.type = 'left join';\n joinFiled = joinFiled.replace('left', '');\n }\n if (tableNames[i - 1].includes('right')) {\n table.type = 'right join';\n joinFiled = joinFiled.replace('right', '');\n }\n table.joinFiled = joinFiled;\n }\n form.form.table.push(table);\n break;\n }\n }\n }\n }\n function updateExecuteSql(v) {\n if (v === 0) {\n form.form.executeSql = sql_formatter__WEBPACK_IMPORTED_MODULE_8___default().format(form.form.executeSql, {\n language: 'sql',\n keywordCase: 'upper',\n indentStyle: 'tabularLeft'\n });\n } else {\n form.form.executeSql = form.form.executeSql.replace(/\\s+/g, \" \");\n }\n }\n function filedConfigClose(data) {\n if (!data) return;\n for (let j = 0; j < form.form.table.length; j++) {\n let obj = form.form.table[j];\n if (Object.keys(data).includes(obj.index)) {\n form.form.table[j].columnList = data[obj.index];\n }\n }\n setSql();\n }\n function setFieldEvent(row) {\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post)(http, \"/online/getTableSetFiled\", {\n sql: form.form.executeSql,\n definitionSql: form.form.definitionSql,\n dbName: addOrEditRootData.form.dbName,\n where: form.form.where,\n uuid: configData.form.uuid\n }, undefined, false).then(data => {\n row.columnList = Object.values(data.data[row.joinTable]);\n filedConfig.value.init(row);\n });\n }\n\n /**\r\n * 一键同步CURD\r\n */\n const syncCurd = () => {\n sync.value = true;\n syncTable();\n };\n function parseSqlToTables(sql) {\n // 标准化SQL,去除多余空格和换行\n let normalizedSql = sql.replace(/[\\n\\r\\s]+/g, ' ').trim();\n\n // 分割FROM后面的部分\n let fromPart = normalizedSql.split(/from/i)[1];\n let result = [{\n index: 't1',\n type: '主表',\n joinTable: '',\n joinFiled: '/'\n }];\n if (!fromPart) return result;\n let currentIndex = 1;\n\n // 分割所有JOIN(包括LEFT JOIN, RIGHT JOIN等)\n let parts = fromPart.split(/\\s+(?:left\\s+)?(?:right\\s+)?(?:inner\\s+)?join\\s+/i);\n\n // 处理主表\n let mainTablePart = parts[0].trim();\n let mainTableName = mainTablePart.split(/\\s+/)[0];\n result[0].joinTable = mainTableName;\n\n // 处理关联表\n for (let i = 1; i < parts.length; i++) {\n currentIndex++;\n let joinPart = parts[i].trim();\n\n // 获取JOIN类型\n let joinType = 'left';\n if (normalizedSql.toLowerCase().includes('right join')) {\n joinType = 'right';\n } else if (normalizedSql.toLowerCase().includes('inner join')) {\n joinType = 'inner';\n }\n\n // 分割ON条件\n let onPart = joinPart.split(/\\s+on\\s+/i);\n let joinTableName = onPart[0].trim().split(/\\s+/)[0];\n let joinFields = onPart[1] ? onPart[1].trim() : '';\n result.push({\n index: 't' + (currentIndex + 1),\n type: joinType,\n joinTable: joinTableName,\n joinFiled: joinFields\n });\n }\n return result;\n }\n const sqlParseTable = o => {\n if (configData.form.executeSql && configData.form.executeSql.toLowerCase().indexOf(\"from\") === -1) {\n return;\n }\n let tableData = parseSqlToTables(configData.form.executeSql);\n if (o) {\n tableData[0].deleteWhere = o.wheres;\n }\n form.form.table = tableData;\n };\n function remoteMethod() {\n (0,_utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get)(http, \"/online/getDBTableList\", {\n dbName: addOrEditRootData.form.dbName\n }).then(data => {\n dicData.joinTableDicData = data;\n });\n }\n function initDict() {\n for (const column of option.column) {\n if (column.dictCode) {\n column.dicData = dict.val(column.dictCode);\n }\n }\n }\n const emit = __emit; //声明 emits\n (0,vue__WEBPACK_IMPORTED_MODULE_3__.onMounted)(() => {\n remoteMethod();\n initDict();\n });\n __expose({\n setData,\n parseData,\n form\n });\n const __returned__ = {\n http,\n addOrEditRootData,\n dict,\n dicData,\n form,\n option,\n configData,\n parseData,\n setData,\n setTable,\n setSql,\n isSyncCurd,\n sync,\n syncTable,\n filedConfig,\n setFieldConfig,\n getTableNamesByFormSql,\n getTableComment,\n setFormTable,\n updateExecuteSql,\n filedConfigClose,\n setFieldEvent,\n syncCurd,\n parseSqlToTables,\n sqlParseTable,\n remoteMethod,\n initDict,\n emit,\n inject: vue__WEBPACK_IMPORTED_MODULE_3__.inject,\n reactive: vue__WEBPACK_IMPORTED_MODULE_3__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_3__.onMounted,\n ref: vue__WEBPACK_IMPORTED_MODULE_3__.ref,\n get get() {\n return _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.get;\n },\n get post() {\n return _utils_http_httpUtils__WEBPACK_IMPORTED_MODULE_4__.post;\n },\n get setArrayObjectKeyValue() {\n return _utils_object__WEBPACK_IMPORTED_MODULE_5__.setArrayObjectKeyValue;\n },\n get storeDict() {\n return _store_dict__WEBPACK_IMPORTED_MODULE_6__.storeDict;\n },\n get ElMessage() {\n return element_plus__WEBPACK_IMPORTED_MODULE_7__.ElMessage;\n },\n get sqlFormatter() {\n return (sql_formatter__WEBPACK_IMPORTED_MODULE_8___default());\n },\n FieldConfig: _views_table_add_or_edit_config_field_config_index_vue__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n LazyLoadSelect: _components_lazy_load_select_vue__WEBPACK_IMPORTED_MODULE_10__[\"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/base-config/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
832
832
 
833
833
  /***/ }),
834
834
 
@@ -1598,7 +1598,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1598
1598
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1599
1599
 
1600
1600
  "use strict";
1601
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_vxe_button = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"vxe-button\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"left\", {}, undefined, true), _ctx.$attrs.value !== undefined ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(_ctx.$attrs.value, obj => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)(((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_vxe_button, {\n class: \"table-right-operation-but\",\n type: \"text\",\n status: obj['status'],\n loading: $setup.bindLoading(obj, $setup.props.row),\n disabled: obj['disabled'] || $setup.getCallBack('disabledCallBack', obj, $setup.props.row, false),\n onClick: $event => _ctx.$emit('handleOperationClick', {\n row: $setup.props.row,\n obj: obj,\n setLoading: $setup.setLoading\n })\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"status\", \"loading\", \"disabled\", \"onClick\"])), [[vue__WEBPACK_IMPORTED_MODULE_0__.vShow, $setup.getCallBack('showCallBack', obj, $setup.props.row, true)]]);\n }), 256 /* UNKEYED_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"right\", {}, undefined, true)], 64 /* STABLE_FRAGMENT */);\n}\n\n//# sourceURL=webpack://olp-table/./src/components/table/ol-table-operate/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
1601
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"el-button\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"left\", {}, undefined, true), _ctx.$attrs.value !== undefined ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(_ctx.$attrs.value, obj => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)(((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_el_button, {\n class: \"table-right-operation-but\",\n link: \"\",\n status: obj['status'],\n type: obj['status'],\n loading: $setup.bindLoading(obj, $setup.props.row),\n disabled: obj['disabled'] || $setup.getCallBack('disabledCallBack', obj, $setup.props.row, false),\n onClick: $event => _ctx.$emit('handleOperationClick', {\n row: $setup.props.row,\n obj: obj,\n setLoading: $setup.setLoading\n })\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"status\", \"type\", \"loading\", \"disabled\", \"onClick\"])), [[vue__WEBPACK_IMPORTED_MODULE_0__.vShow, $setup.getCallBack('showCallBack', obj, $setup.props.row, true)]]);\n }), 256 /* UNKEYED_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"right\", {}, undefined, true)], 64 /* STABLE_FRAGMENT */);\n}\n\n//# sourceURL=webpack://olp-table/./src/components/table/ol-table-operate/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
1602
1602
 
1603
1603
  /***/ }),
1604
1604
 
@@ -1620,7 +1620,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1620
1620
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1621
1621
 
1622
1622
  "use strict";
1623
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\nconst _hoisted_1 = [\"title\"];\nconst _hoisted_2 = {\n key: 1\n};\nconst _hoisted_3 = {\n key: 2\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_vxe_button = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"vxe-button\");\n const _directive_hasPermi = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveDirective)(\"hasPermi\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"left\", {}, undefined, true), _ctx.$attrs.value !== undefined ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(_ctx.$attrs.value, obj => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)(((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_vxe_button, {\n key: obj.code,\n status: obj['status'],\n disabled: obj['disabled'],\n circle: obj.alignMode === 'right' && !obj['status'],\n loading: $data.loading[obj.code],\n onClick: $event => $options.handleToolbarBtnClick(obj.code)\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [obj.alignMode === 'right' && !obj['status'] ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", {\n key: 0,\n title: obj.name\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */)], 8 /* PROPS */, _hoisted_1)) : obj.code === 'sortable' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n style: {\n \"color\": \"#1677FF\"\n },\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj.values ? 'vxe-icon-checkbox-checked' : 'vxe-icon-checkbox-unchecked')\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)])) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)]))]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"status\", \"disabled\", \"circle\", \"loading\", \"onClick\"])), [[_directive_hasPermi, [$props.currentPermi + obj.code]], [vue__WEBPACK_IMPORTED_MODULE_0__.vShow, obj['show']]]);\n }), 128 /* KEYED_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"right\", {}, undefined, true)]);\n}\n\n//# sourceURL=webpack://olp-table/./src/components/table/ol-table-tool-btn/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
1623
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"vue\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);\n\nconst _hoisted_1 = [\"title\"];\nconst _hoisted_2 = {\n key: 1\n};\nconst _hoisted_3 = {\n key: 2\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"el-button\");\n const _directive_hasPermi = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveDirective)(\"hasPermi\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"left\", {}, undefined, true), _ctx.$attrs.value !== undefined ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(_ctx.$attrs.value, obj => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)(((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_el_button, {\n key: obj.code,\n status: obj['status'],\n type: obj['status'],\n disabled: obj['disabled'],\n circle: obj.alignMode === 'right' && !obj['status'],\n loading: $data.loading[obj.code],\n onClick: $event => $options.handleToolbarBtnClick(obj.code)\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [obj.alignMode === 'right' && !obj['status'] ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", {\n key: 0,\n title: obj.name\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */)], 8 /* PROPS */, _hoisted_1)) : obj.code === 'sortable' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n style: {\n \"color\": \"#1677FF\"\n },\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj.values ? 'vxe-icon-checkbox-checked' : 'vxe-icon-checkbox-unchecked')\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)])) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(obj['icon'])\n }, null, 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(obj['name']), 1 /* TEXT */)]))]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"status\", \"type\", \"disabled\", \"circle\", \"loading\", \"onClick\"])), [[_directive_hasPermi, [$props.currentPermi + obj.code]], [vue__WEBPACK_IMPORTED_MODULE_0__.vShow, obj['show']]]);\n }), 128 /* KEYED_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"right\", {}, undefined, true)]);\n}\n\n//# sourceURL=webpack://olp-table/./src/components/table/ol-table-tool-btn/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use%5B0%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
1624
1624
 
1625
1625
  /***/ }),
1626
1626
 
@@ -10761,7 +10761,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
10761
10761
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
10762
10762
 
10763
10763
  "use strict";
10764
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ OTMixinColumnMethod: function() { return /* binding */ OTMixinColumnMethod; }\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_some_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.iterator.some.js */ \"./node_modules/core-js/modules/es.iterator.some.js\");\n/* harmony import */ var core_js_modules_es_iterator_some_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_some_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils_columnProp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/utils/columnProp */ \"./src/utils/columnProp.js\");\n\n\n\n\nfunction setColumnParams(column, key, value) {\n if (value === undefined) {\n return;\n }\n if (!column['params']) {\n column['params'] = {};\n }\n column['params'][key] = value;\n}\nconst OTMixinColumnMethod = {\n methods: {\n setColumnCssClass(o) {\n if (o.dictCode) {\n let vals = this.dictVal(o.dictCode);\n let cssClass = {};\n if (vals) {\n let dictValueLabel = {};\n for (let obj of vals) {\n dictValueLabel[obj.dictValue] = obj.dictLabel;\n if (obj.cssClass) {\n let css = obj.cssClass.trim();\n try {\n css = css.replace(/([a-zA-Z_]\\w*):/g, '\"$1\":').replace(/'/g, '\"');\n css = JSON.parse(css);\n if (Array.isArray(css)) {\n let data = {};\n if (css[0]) {\n data['backgroundColor'] = css[0];\n }\n if (css[1]) {\n data['color'] = css[1];\n }\n cssClass[obj.dictValue] = data;\n } else {\n cssClass[obj.dictValue] = css;\n }\n } catch (e) {\n console.error(\"列名:\", o.title, \"数据字典:\", obj.dictLabel, \"样式异常:\", css);\n }\n }\n }\n setColumnParams(o, 'dictValueLabel', dictValueLabel);\n }\n if (Object.keys(cssClass).length != 0) {\n setColumnParams(o, 'cssClass', cssClass);\n }\n }\n },\n initColumn(columns, tableConfig) {\n this.table.mergeFields = [];\n let items = [];\n columns = columns.sort(({\n sort: a\n }, {\n sort: b\n }) => a - b);\n for (let column of columns) {\n this.toParseOtherProp(column);\n }\n this.table.columnSource = JSON.parse(JSON.stringify(columns));\n let {\n optionJson,\n seq\n } = tableConfig;\n if (optionJson) {\n optionJson = JSON.parse(optionJson);\n }\n for (let o of columns) {\n this.setColumnCssClass(o);\n this.initFormatter(o);\n this.initSlots(o);\n this.setTreeOpenColumn(o, tableConfig);\n this.setMergeField(o);\n this.setColumnShowOverFlow(o, optionJson);\n this.setProp(o);\n this.setColumnHide(o);\n this.setFixed(o);\n this.setShowFooter(o);\n this.getVNode(o, items);\n // 可编辑配置\n if (this.hasEditConfig()) {\n this.setEditConfig(o);\n }\n }\n items.sort(({\n searchSort: a\n }, {\n searchSort: b\n }) => a - b);\n this.setSearchArea(items);\n columns = this.initBodyLeftColumn(columns, seq);\n if (this.table['show-footer']) {\n if (!columns[0].width || columns[0].width < 55) {\n columns[0].width = 55;\n }\n }\n this.table.columns = columns;\n //暂时不合并,启用虚拟滚动\n this.initMergeCells();\n },\n hasEditConfig() {\n return this.table.editConfig && (this.table.editConfig.enabled === true || typeof this.table.editConfig.enabled === 'string' && this.table.editConfig.enabled.toLowerCase() === 'true');\n },\n setEditConfig(o) {\n if (o.tableSaveToOtherProp && o.tableSaveToOtherProp == '1') {\n return;\n }\n if (o.selectDom == '1') {\n o.editRender = {\n name: '$input',\n props: {\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 文本域\n if (o.selectDom == '10') {\n o.editRender = {\n name: 'textarea',\n props: {\n type: 'textarea',\n // 指定为多行文本框\n placeholder: '请输入' + o.title,\n rows: 3,\n // 默认显示行数\n autosize: {\n minRows: 2,\n maxRows: 6\n },\n // 自动调整高度\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 数字\n if (o.selectDom == '7') {\n o.editRender = {\n name: '$input',\n props: {\n type: this.getType(o.selectDom),\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 时间\n if (o.selectDom == '3' || o.selectDom == '6') {\n o.editRender = {\n name: 'VxeInput',\n props: {\n type: this.getType(o.selectDom),\n valueFormat: 'yyyy-MM-dd HH:mm:ss'\n }\n };\n }\n // 下拉框\n if (o.selectDom == '2' || o.selectDom == '8') {\n o.editRender = {\n name: 'VxeSelect',\n options: this.dictVal(o.dictCode),\n props: {\n placeholder: '请选择' + o.title\n }\n };\n }\n },\n getType(selectDom) {\n if (selectDom == '3') {\n return 'datetime';\n }\n if (selectDom == '6') {\n return 'date';\n }\n if (selectDom == '7') {\n return 'number';\n }\n },\n /**\r\n * 初始化列左边\r\n * @param columns\r\n * @param type\r\n * @returns {*}\r\n */\n initBodyLeftColumn(columns, type) {\n const hasSeqColumn = columns.some(col => ['seq', 'sequence', '序号'].includes(col.field || col.prop || col.type));\n if (type == 1 && !hasSeqColumn) {\n columns.unshift({\n type: 'seq',\n width: 55,\n title: '序号',\n fixed: 'left'\n });\n }\n const hasCheckboxColumn = columns.some(col => ['checkbox'].includes(col.type));\n const hasRadioColumn = columns.some(col => ['radio'].includes(col.type));\n if (this.selectBox == 2 && !hasCheckboxColumn) {\n columns.unshift({\n type: 'checkbox',\n width: 45,\n showOverflow: false,\n fixed: 'left'\n });\n } else if (this.selectBox == 1 && !hasRadioColumn) {\n columns.unshift({\n type: 'radio',\n width: 45,\n showOverflow: false,\n fixed: 'left'\n });\n }\n return columns;\n },\n setTreeOpenColumn(o, tableConfig) {\n if (tableConfig.tree == 1 && o.field == tableConfig.openColumn) {\n o.treeNode = true;\n if (!o.align) {\n o.align = 'left';\n }\n }\n },\n setMergeField(column) {\n if (column.mergeFlag == '1') {\n this.table.mergeFields.push(column.field);\n }\n },\n setColumnHide(o) {\n //隐藏\n if (o.visible == \"0\") {\n o.visible = false;\n }\n },\n initFormatter(o) {\n try {\n if (o.formatter) {\n o.formatter = eval(\"({cellValue, row, column})=>{\" + o.formatter + \"}\");\n } else if (o.dictCode) {\n o.formatter = eval(\"\" + \"({cellValue, row, column})=>{if(column.params && column.params.dictValueLabel){ let dictValueLabelElement = column.params.dictValueLabel[cellValue];if(dictValueLabelElement){return dictValueLabelElement;} }return cellValue}\");\n }\n } catch (e) {\n console.log(o.title, \"formatter异常:\", o.formatter);\n this.$message.error(o.title + \"formatter异常!\");\n }\n },\n initSlots(o) {\n if (o.selectDom == 20) {\n o.slotsName = 'img_default';\n o.slots = {\n default: 'img_default'\n };\n }\n if (o.selectDom == '21') {\n o.slotsName = 'icon_default';\n o.slots = {\n default: 'icon_default'\n };\n }\n },\n setFixed(item) {\n //修改固定字段的值\n if (item.fixed === '1') {\n item.fixed = 'left';\n } else if (item.fixed === '2') {\n item.fixed = 'right';\n }\n if (item.align === '1') {\n item.align = 'left';\n } else if (item.align === '2') {\n item.align = 'right';\n } else if (item.align === '0') {\n item.align = 'center';\n }\n },\n setProp(item) {\n item.resizable = undefined;\n if (item.sortable != undefined && item.sortable != \"\") {\n let order = item.field + (item.sortable == 0 ? \" ASC \" : \" DESC \");\n this.orderByColumns.push(order);\n }\n ////时间类型\n if (!item.width && (item.selectDom == 3 || item.selectDom == 6)) {\n item.minWidth = 150;\n } else if (!item.width && item.title) {\n item.minWidth = item.title.length * 30;\n }\n },\n setShowFooter(item) {\n if (item['totalToOtherProp']) {\n this.table['show-footer'] = true;\n }\n },\n toParseOtherProp(item) {\n //其他属性赋值\n try {\n let otherProp = JSON.parse(item.otherProp);\n item.otherProp = otherProp;\n for (let key of Object.keys(otherProp)) {\n item[key] = otherProp[key];\n }\n } catch (e) {\n if (item.otherProp) {\n console.error(item.field + \"其他属性无法解析:\" + item.otherProp);\n }\n item.otherProp = {};\n }\n if (item['totalToOtherProp'] === undefined) {\n item['totalToOtherProp'] = '';\n }\n },\n /**\r\n * 设置搜索\r\n * @param items\r\n */\n setSearchArea(items) {\n if (items.length != 0) {\n items.push({\n itemRender: {\n name: '$buttons',\n children: [{\n props: {\n type: 'submit',\n content: '查询',\n status: 'primary'\n },\n events: {\n click: this.query\n }\n }, {\n props: {\n type: 'button',\n content: '重置'\n },\n events: {\n click: this.resetQuery\n }\n }]\n }\n });\n this.table.formConfig.size = this.table.size;\n }\n this.table.formConfig.items = items;\n },\n getVNode(o, items) {\n if (o.selectType == undefined) {\n return;\n }\n //99是范围查询\n if (o.selectType == 99) {\n let itemStart = this.initFormConfig(o, 5);\n let itemEnd = this.initFormConfig(o, 6);\n //时间范围查询\n if (o.selectDom == 3 || o.selectDom == 6) {\n let placeholder = o.selectDom == 3 ? '时间' : '';\n itemStart.placeholder = '请选择开始日期' + placeholder;\n delete itemStart.itemRender;\n itemEnd.placeholder = '请选择结束日期' + placeholder;\n }\n items.push(itemStart);\n items.push(itemEnd);\n } else {\n items.push(this.initFormConfig(o));\n }\n },\n initFormConfig(o, type) {\n let key = o.tableField;\n if (o.tableNameSEARCHToOtherProp != undefined && o.tableNameSEARCHToOtherProp != '') {\n key = o.tableNameSEARCHToOtherProp + '.' + key;\n }\n let item = {\n align: 'left',\n field: key,\n span: 6,\n searchSort: o.searchSort,\n title: o.titleSEARCHToOtherProp != undefined ? o.titleSEARCHToOtherProp : o.title,\n key: key,\n type: o.selectType,\n selectDom: o.selectDom,\n tableName: o.tableNameSEARCHToOtherProp,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true,\n toDate: o.toDateSEARCHToOtherProp,\n itemRender: {\n name: '$input',\n props: {\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n }\n };\n // if(this.table.editConfig && (\n // this.table.editConfig.enabled === true ||\n // (typeof this.table.editConfig.enabled === 'string' &&\n // this.table.editConfig.enabled.toLowerCase() === 'true')\n // )){\n // o.editRender = {\n // name:'$input',\n // props: {\n // placeholder: '请输入' + o.title,\n // clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n // }\n // }\n // }\n try {\n this.table.formConfig.data[item.key] = eval(o.valueSEARCHToOtherProp);\n } catch (e) {}\n if (type == 5) {\n item.title = o.title + \"开始\";\n item.type = 5;\n item.field = \"$\" + o.tableField;\n item.key = \"$\" + o.tableField;\n } else if (type == 6) {\n item.field = o.tableField + \"$\";\n item.type = 6;\n item.key = o.tableField + \"$\";\n item.title = o.title + \"结束\";\n }\n if ((item.type == 6 || item.type == 5) && o.selectDom == undefined) {\n o.selectDom = 7;\n }\n this.getItemRender(o, item, type);\n if (item.title && item.title.length > 6) {\n item.titleWidth = 20 * (item.title.length - 2);\n } else if (item.title.toString().trim().length == 0) {\n item.titleWidth = 0;\n }\n if (o.spanSEARCHToOtherProp != undefined) {\n item.span = 6;\n }\n return item;\n },\n getItemRender(o, item, type) {\n if (o.dictCode) {\n delete item.itemRender;\n item.slots = {\n default: o.selectDom + item.field\n };\n item.slotsName = o.selectDom + item.field;\n item.options = this.dictVal(o.dictCode);\n item.placeholder = '请选择' + o.title;\n item.clearable = o.clearableSEARCHToOtherProp == '1';\n item.multiple = o.selectDom == '8';\n } else if (o.selectDom == 7) {\n item.itemRender.props.type = 'integer';\n } else if (o.selectDom == 10) {\n item.itemRender.name = 'textarea';\n } else if (o.selectDom == 3 || o.selectDom == 6) {\n delete item.itemRender;\n item.domDate = true;\n if (o.selectType == 98 && item.selectDom == 6) {\n item.span = 7;\n item.domType = 'daterange';\n } else {\n item.domType = item.selectDom == 3 ? 'datetime' : 'date';\n }\n //这里跟element plus不一样\n item.domFormat = item.selectDom == 3 ? 'yyyy-MM-dd HH:mm:ss' : 'yyyy-MM-dd';\n item.slots = {\n default: o.selectDom + item.field + \"_time\"\n };\n item.slotsName = o.selectDom + item.field + \"_time\";\n item.placeholder = '请选择';\n if (type == 5) {\n item.placeholder += \"开始\";\n } else if (type == 6) {\n item.placeholder += \"结束\";\n }\n if (o.selectDom == 3) {\n item.placeholder += \"时间\";\n }\n }\n },\n setColumnShowOverFlow(column, optionObj) {\n if (optionObj) {\n if (optionObj.table && optionObj.table.columnConfig && optionObj.table.columnConfig.showOverflow) {\n if (column.type != 'seq' || column.type != 'checkbox') {\n column.showOverflow = optionObj.table.columnConfig.showOverflow;\n }\n }\n }\n },\n initMergeCells() {\n if (this.table.mergeCells) {\n this.table.mergeCells = JSON.parse(this.table.mergeCells);\n return;\n }\n if (this.table.mergeFields && this.table.mergeFields.length != 0) {\n this.table.spanMethod = this.mergeRowMethod;\n }\n },\n // 通用行合并函数(将相同多列数据合并为一行)\n mergeRowMethod({\n row,\n _rowIndex,\n column,\n visibleData\n }) {\n const cellValue = row[column.field];\n if (cellValue && this.table.mergeFields.includes(column.field)) {\n const prevRow = visibleData[_rowIndex - 1];\n let nextRow = visibleData[_rowIndex + 1];\n if (prevRow && prevRow[column.field] === cellValue) {\n return {\n rowspan: 0,\n colspan: 0\n };\n } else {\n let countRowspan = 1;\n while (nextRow && nextRow[column.field] === cellValue) {\n nextRow = visibleData[++countRowspan + _rowIndex];\n }\n if (countRowspan > 1) {\n return {\n rowspan: countRowspan,\n colspan: 1\n };\n }\n }\n }\n },\n setDictCellStyle({\n row,\n rowIndex,\n $rowIndex,\n column,\n columnIndex,\n $columnIndex\n }) {\n if (column.params && column.params.cssClass) {\n return column.params.cssClass[row[column[(0,_utils_columnProp__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(column)]]];\n }\n },\n setTableStyle(option) {\n if (option['cell-style'] === undefined) {\n option['cell-style'] = {\n flag: \"flag##function#\",\n isFunction: true\n };\n }\n option['cell-style']['code'] = \"let OTMixinColumnMethod_setDictCellStyle = this.setDictCellStyle(params); if(OTMixinColumnMethod_setDictCellStyle){ return OTMixinColumnMethod_setDictCellStyle;}\\n\" + option['cell-style']['code'];\n }\n }\n};\n\n//# sourceURL=webpack://olp-table/./src/mixins/VTMixin/OTMixinColumnMethod.js?");
10764
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ OTMixinColumnMethod: function() { return /* binding */ OTMixinColumnMethod; }\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_some_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.iterator.some.js */ \"./node_modules/core-js/modules/es.iterator.some.js\");\n/* harmony import */ var core_js_modules_es_iterator_some_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_some_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils_columnProp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/utils/columnProp */ \"./src/utils/columnProp.js\");\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\n\n\n\n\nfunction setColumnParams(column, key, value) {\n if (value === undefined) {\n return;\n }\n if (!column['params']) {\n column['params'] = {};\n }\n column['params'][key] = value;\n}\nconst OTMixinColumnMethod = {\n methods: {\n setColumnCssClass(o) {\n if (o.dictCode) {\n let vals = this.dictVal(o.dictCode);\n let cssClass = {};\n if (vals) {\n let dictValueLabel = {};\n for (let obj of vals) {\n dictValueLabel[obj.dictValue] = obj.dictLabel;\n if (obj.cssClass) {\n let css = obj.cssClass.trim();\n try {\n css = css.replace(/([a-zA-Z_]\\w*):/g, '\"$1\":').replace(/'/g, '\"');\n css = JSON.parse(css);\n if (Array.isArray(css)) {\n let data = {};\n if (css[0]) {\n data['backgroundColor'] = css[0];\n }\n if (css[1]) {\n data['color'] = css[1];\n }\n cssClass[obj.dictValue] = data;\n } else {\n cssClass[obj.dictValue] = css;\n }\n } catch (e) {\n console.error(\"列名:\", o.title, \"数据字典:\", obj.dictLabel, \"样式异常:\", css);\n }\n }\n }\n setColumnParams(o, 'dictValueLabel', dictValueLabel);\n }\n if (Object.keys(cssClass).length != 0) {\n setColumnParams(o, 'cssClass', cssClass);\n }\n }\n },\n initColumn(columns, tableConfig) {\n this.table.mergeFields = [];\n let items = [];\n columns = columns.sort(({\n sort: a\n }, {\n sort: b\n }) => a - b);\n for (let column of columns) {\n this.toParseOtherProp(column);\n }\n this.table.columnSource = JSON.parse(JSON.stringify(columns));\n let {\n optionJson,\n seq\n } = tableConfig;\n if (optionJson) {\n optionJson = JSON.parse(optionJson);\n }\n for (let o of columns) {\n this.setColumnCssClass(o);\n this.initFormatter(o);\n this.initSlots(o);\n this.setTreeOpenColumn(o, tableConfig);\n this.setMergeField(o);\n this.setColumnShowOverFlow(o, optionJson);\n this.setProp(o);\n this.setColumnHide(o);\n this.setFixed(o);\n this.setShowFooter(o);\n this.getVNode(o, items);\n // 可编辑配置\n if (this.hasEditConfig()) {\n this.setEditConfig(o);\n }\n }\n items.sort(({\n searchSort: a\n }, {\n searchSort: b\n }) => a - b);\n this.setSearchArea(items);\n columns = this.initBodyLeftColumn(columns, seq);\n if (this.table['show-footer']) {\n if (!columns[0].width || columns[0].width < 55) {\n columns[0].width = 55;\n }\n }\n this.table.columns = columns;\n //暂时不合并,启用虚拟滚动\n this.initMergeCells();\n },\n hasEditConfig() {\n return this.table.editConfig && (this.table.editConfig.enabled === true || typeof this.table.editConfig.enabled === 'string' && this.table.editConfig.enabled.toLowerCase() === 'true');\n },\n setEditConfig(o) {\n if (o.tableSaveToOtherProp && o.tableSaveToOtherProp == '1') {\n return;\n }\n if (o.selectDom == '1') {\n o.editRender = {\n name: '$input',\n props: {\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 文本域\n if (o.selectDom == '10') {\n o.editRender = {\n name: 'textarea',\n props: {\n type: 'textarea',\n // 指定为多行文本框\n placeholder: '请输入' + o.title,\n rows: 3,\n // 默认显示行数\n autosize: {\n minRows: 2,\n maxRows: 6\n },\n // 自动调整高度\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 数字\n if (o.selectDom == '7') {\n o.editRender = {\n name: '$input',\n props: {\n type: this.getType(o.selectDom),\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n };\n }\n // 时间\n if (o.selectDom == '3' || o.selectDom == '6') {\n o.editRender = {\n name: 'VxeInput',\n props: {\n type: this.getType(o.selectDom),\n valueFormat: 'yyyy-MM-dd HH:mm:ss'\n }\n };\n }\n // 下拉框\n if (o.selectDom == '2' || o.selectDom == '8') {\n o.editRender = {\n name: 'VxeSelect',\n options: this.dictVal(o.dictCode),\n props: {\n placeholder: '请选择' + o.title\n }\n };\n }\n },\n getType(selectDom) {\n if (selectDom == '3') {\n return 'datetime';\n }\n if (selectDom == '6') {\n return 'date';\n }\n if (selectDom == '7') {\n return 'number';\n }\n },\n /**\r\n * 初始化列左边\r\n * @param columns\r\n * @param type\r\n * @returns {*}\r\n */\n initBodyLeftColumn(columns, type) {\n const hasSeqColumn = columns.some(col => ['seq', 'sequence', '序号'].includes(col.field || col.prop || col.type));\n if (type == 1 && !hasSeqColumn) {\n columns.unshift({\n type: 'seq',\n width: 55,\n title: '序号',\n fixed: 'left'\n });\n }\n const hasCheckboxColumn = columns.some(col => ['checkbox'].includes(col.type));\n const hasRadioColumn = columns.some(col => ['radio'].includes(col.type));\n if (this.selectBox == 2 && !hasCheckboxColumn) {\n columns.unshift({\n type: 'checkbox',\n width: 45,\n showOverflow: false,\n fixed: 'left'\n });\n } else if (this.selectBox == 1 && !hasRadioColumn) {\n columns.unshift({\n type: 'radio',\n width: 45,\n showOverflow: false,\n fixed: 'left'\n });\n }\n return columns;\n },\n setTreeOpenColumn(o, tableConfig) {\n if (tableConfig.tree == 1 && o.field == tableConfig.openColumn) {\n o.treeNode = true;\n if (!o.align) {\n o.align = 'left';\n }\n }\n },\n setMergeField(column) {\n if (column.mergeFlag == '1') {\n this.table.mergeFields.push(column.field);\n }\n },\n setColumnHide(o) {\n //隐藏\n if (o.visible == \"0\") {\n o.visible = false;\n }\n },\n initFormatter(o) {\n try {\n if (o.formatter) {\n o.formatter = eval(\"({cellValue, row, column})=>{\" + o.formatter + \"}\");\n } else if (o.dictCode) {\n o.formatter = eval(\"\" + \"({cellValue, row, column})=>{if(column.params && column.params.dictValueLabel){ let dictValueLabelElement = column.params.dictValueLabel[cellValue];if(dictValueLabelElement){return dictValueLabelElement;} }return cellValue}\");\n }\n } catch (e) {\n console.log(o.title, \"formatter异常:\", o.formatter);\n this.$message.error(o.title + \"formatter异常!\");\n }\n },\n initSlots(o) {\n if (o.selectDom == 20) {\n o.slotsName = 'img_default';\n o.slots = {\n default: 'img_default'\n };\n }\n if (o.selectDom == '21') {\n o.slotsName = 'icon_default';\n o.slots = {\n default: 'icon_default'\n };\n }\n },\n setFixed(item) {\n //修改固定字段的值\n if (item.fixed === '1') {\n item.fixed = 'left';\n } else if (item.fixed === '2') {\n item.fixed = 'right';\n }\n if (item.align === '1') {\n item.align = 'left';\n } else if (item.align === '2') {\n item.align = 'right';\n } else if (item.align === '0') {\n item.align = 'center';\n }\n },\n setProp(item) {\n item.resizable = undefined;\n if (item.sortable != undefined && item.sortable != \"\") {\n let order = item.field + (item.sortable == 0 ? \" ASC \" : \" DESC \");\n this.orderByColumns.push(order);\n }\n ////时间类型\n if (!item.width && (item.selectDom == 3 || item.selectDom == 6)) {\n item.minWidth = 150;\n } else if (!item.width && item.title) {\n item.minWidth = item.title.length * 30;\n }\n },\n setShowFooter(item) {\n if (item['totalToOtherProp']) {\n this.table['show-footer'] = true;\n }\n },\n toParseOtherProp(item) {\n //其他属性赋值\n try {\n let otherProp = JSON.parse(item.otherProp);\n item.otherProp = otherProp;\n for (let key of Object.keys(otherProp)) {\n item[key] = otherProp[key];\n }\n } catch (e) {\n if (item.otherProp) {\n console.error(item.field + \"其他属性无法解析:\" + item.otherProp);\n }\n item.otherProp = {};\n }\n if (item['totalToOtherProp'] === undefined) {\n item['totalToOtherProp'] = '';\n }\n },\n /**\r\n * 设置搜索\r\n * @param items\r\n */\n setSearchArea(items) {\n if (items.length != 0) {\n items.push({\n itemRender: {\n name: '$buttons',\n children: [{\n props: {\n type: 'submit',\n content: '查询',\n status: 'primary'\n },\n events: {\n click: this.query\n }\n }, {\n props: {\n type: 'button',\n content: '重置'\n },\n events: {\n click: this.resetQuery\n }\n }]\n }\n });\n this.table.formConfig.size = this.table.size;\n }\n this.table.formConfig.items = items;\n },\n getVNode(o, items) {\n if (o.selectType == undefined) {\n return;\n }\n //99是范围查询\n if (o.selectType == 99) {\n let itemStart = this.initFormConfig(o, 5);\n let itemEnd = this.initFormConfig(o, 6);\n //时间范围查询\n if (o.selectDom == 3 || o.selectDom == 6) {\n let placeholder = o.selectDom == 3 ? '时间' : '';\n itemStart.placeholder = '请选择开始日期' + placeholder;\n delete itemStart.itemRender;\n itemEnd.placeholder = '请选择结束日期' + placeholder;\n }\n items.push(itemStart);\n items.push(itemEnd);\n } else {\n items.push(this.initFormConfig(o));\n }\n },\n initFormConfig(o, type) {\n let key = o.tableField;\n if (o.tableNameSEARCHToOtherProp != undefined && o.tableNameSEARCHToOtherProp != '') {\n key = o.tableNameSEARCHToOtherProp + '.' + key;\n }\n let item = {\n align: 'left',\n field: key,\n span: 6,\n searchSort: o.searchSort,\n title: o.titleSEARCHToOtherProp != undefined ? o.titleSEARCHToOtherProp : o.title,\n key: key,\n type: o.selectType,\n selectDom: o.selectDom,\n tableName: o.tableNameSEARCHToOtherProp,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true,\n toDate: o.toDateSEARCHToOtherProp,\n itemRender: {\n name: '$input',\n props: {\n placeholder: '请输入' + o.title,\n clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n }\n }\n };\n // if(this.table.editConfig && (\n // this.table.editConfig.enabled === true ||\n // (typeof this.table.editConfig.enabled === 'string' &&\n // this.table.editConfig.enabled.toLowerCase() === 'true')\n // )){\n // o.editRender = {\n // name:'$input',\n // props: {\n // placeholder: '请输入' + o.title,\n // clearable: o.clearableSEARCHToOtherProp == '1' ? false : true\n // }\n // }\n // }\n try {\n this.table.formConfig.data[item.key] = eval(o.valueSEARCHToOtherProp);\n } catch (e) {}\n if (type == 5) {\n item.title = o.title + \"开始\";\n item.type = 5;\n item.field = \"$\" + o.tableField;\n item.key = \"$\" + o.tableField;\n } else if (type == 6) {\n item.field = o.tableField + \"$\";\n item.type = 6;\n item.key = o.tableField + \"$\";\n item.title = o.title + \"结束\";\n }\n if ((item.type == 6 || item.type == 5) && o.selectDom == undefined) {\n o.selectDom = 7;\n }\n this.getItemRender(o, item, type);\n if (item.title && item.title.length > 6) {\n item.titleWidth = 20 * (item.title.length - 2);\n } else if (item.title.toString().trim().length == 0) {\n item.titleWidth = 0;\n }\n if (o.spanSEARCHToOtherProp != undefined) {\n item.span = 6;\n }\n return item;\n },\n getItemRender(o, item, type) {\n if (o.dictCode) {\n delete item.itemRender;\n item.slots = {\n default: o.selectDom + item.field\n };\n item.slotsName = o.selectDom + item.field;\n item.options = this.dictVal(o.dictCode);\n item.placeholder = '请选择' + o.title;\n item.clearable = o.clearableSEARCHToOtherProp == '1';\n item.multiple = o.selectDom == '8';\n } else if (o.selectDom == 7) {\n item.itemRender.props.type = 'integer';\n } else if (o.selectDom == 10) {\n item.itemRender.name = 'textarea';\n } else if (o.selectDom == 3 || o.selectDom == 6) {\n delete item.itemRender;\n item.domDate = true;\n if (o.selectType == 98 && item.selectDom == 6) {\n item.span = 7;\n item.domType = 'daterange';\n } else {\n item.domType = item.selectDom == 3 ? 'datetime' : 'date';\n }\n //这里跟element plus不一样\n item.domFormat = vue__WEBPACK_IMPORTED_MODULE_4__.version.split('.')[0] == 2 ? 'yyyy-MM-dd' : 'YYYY-MM-DD';\n if (item.selectDom == 3) {\n item.domFormat = item.domFormat + ' HH:mm:ss';\n }\n item.slots = {\n default: o.selectDom + item.field + \"_time\"\n };\n item.slotsName = o.selectDom + item.field + \"_time\";\n item.placeholder = '请选择';\n if (type == 5) {\n item.placeholder += \"开始\";\n } else if (type == 6) {\n item.placeholder += \"结束\";\n }\n if (o.selectDom == 3) {\n item.placeholder += \"时间\";\n }\n }\n },\n setColumnShowOverFlow(column, optionObj) {\n if (optionObj) {\n if (optionObj.table && optionObj.table.columnConfig && optionObj.table.columnConfig.showOverflow) {\n if (column.type != 'seq' || column.type != 'checkbox') {\n column.showOverflow = optionObj.table.columnConfig.showOverflow;\n }\n }\n }\n },\n initMergeCells() {\n if (this.table.mergeCells) {\n this.table.mergeCells = JSON.parse(this.table.mergeCells);\n return;\n }\n if (this.table.mergeFields && this.table.mergeFields.length != 0) {\n this.table.spanMethod = this.mergeRowMethod;\n }\n },\n // 通用行合并函数(将相同多列数据合并为一行)\n mergeRowMethod({\n row,\n _rowIndex,\n column,\n visibleData\n }) {\n const cellValue = row[column.field];\n if (cellValue && this.table.mergeFields.includes(column.field)) {\n const prevRow = visibleData[_rowIndex - 1];\n let nextRow = visibleData[_rowIndex + 1];\n if (prevRow && prevRow[column.field] === cellValue) {\n return {\n rowspan: 0,\n colspan: 0\n };\n } else {\n let countRowspan = 1;\n while (nextRow && nextRow[column.field] === cellValue) {\n nextRow = visibleData[++countRowspan + _rowIndex];\n }\n if (countRowspan > 1) {\n return {\n rowspan: countRowspan,\n colspan: 1\n };\n }\n }\n }\n },\n setDictCellStyle({\n row,\n rowIndex,\n $rowIndex,\n column,\n columnIndex,\n $columnIndex\n }) {\n if (column.params && column.params.cssClass) {\n return column.params.cssClass[row[column[(0,_utils_columnProp__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(column)]]];\n }\n },\n setTableStyle(option) {\n if (option['cell-style'] === undefined) {\n option['cell-style'] = {\n flag: \"flag##function#\",\n isFunction: true\n };\n }\n option['cell-style']['code'] = \"let OTMixinColumnMethod_setDictCellStyle = this.setDictCellStyle(params); if(OTMixinColumnMethod_setDictCellStyle){ return OTMixinColumnMethod_setDictCellStyle;}\\n\" + option['cell-style']['code'];\n }\n }\n};\n\n//# sourceURL=webpack://olp-table/./src/mixins/VTMixin/OTMixinColumnMethod.js?");
10765
10765
 
10766
10766
  /***/ }),
10767
10767
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "olp-table",
3
- "version": "7.1.4",
3
+ "version": "7.1.6",
4
4
  "main": "olp-table.common.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"