{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\form\\dataTemplate\\ManageSetting.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\form\\dataTemplate\\ManageSetting.vue","mtime":1675071992163},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nconst eipAuthDialog = () => import('@/components/dialog/EipAuthDialog.vue')\r\nconst ImportJarSelector = () =>\r\n import('@/components/form/dataTemplate/ImportCheckJarManager.vue')\r\nconst flowFormAuth = () => import('@/components/flow/FlowFormAuth.vue')\r\nimport {mapState} from 'vuex'\r\nimport {Base64} from 'js-base64'\r\nimport utils from '@/hotent-ui-util.js'\r\nimport deepmerge from 'deepmerge'\r\nconst BTN_TYPE = {\r\n isShow: '1',\r\n notShow: '2',\r\n}\r\nexport default {\r\n components: {\r\n eipAuthDialog,\r\n ImportJarSelector,\r\n flowFormAuth,\r\n },\r\n name: 'manage-setting',\r\n props: ['data'],\r\n data() {\r\n return {\r\n btnType: BTN_TYPE,\r\n dialogVisible: false,\r\n dialogModel: {},\r\n url: {},\r\n dataTemplate: {},\r\n manageFields: [],\r\n permissionMap: {},\r\n permissionList: [],\r\n displayExportSettingFields: [],\r\n exportSettingFields: [],\r\n customQuerys: [],\r\n customDialogs: [],\r\n displayField: [],\r\n btnoptions: [],\r\n defaultBtnOptions: [\r\n {key: 'add', value: '新增', disabled: false},\r\n {key: 'edit', value: '编辑', disabled: false},\r\n {key: 'del', value: '删除', disabled: false},\r\n {key: 'detail', value: '明细', disabled: false},\r\n {key: 'record', value: '修改记录', disabled: false},\r\n {key: 'printDetail', value: '打印明细', disabled: false},\r\n {key: 'sub', value: '子表数据', disabled: false},\r\n {key: 'sun', value: '查看孙表', disabled: false},\r\n {key: 'export', value: '导出', disabled: false},\r\n {key: 'js', value: 'js按钮', disabled: false},\r\n {\r\n key: 'import',\r\n value: '导入',\r\n limit: 1000,\r\n importTemplate: [],\r\n jarId: '',\r\n jarDesc: '',\r\n disabled: false,\r\n },\r\n {key: 'produceQRCode', value: '生成二维码', disabled: false},\r\n {key: 'print', value: '打印', disabled: false},\r\n {key: 'url', value: 'URL按钮', disabled: false},\r\n {key: 'switch', value: '开关', disabled: false},\r\n {key: 'batchUpdate', value: '更新数据', disabled: false},\r\n ],\r\n tabHeight: `${document.documentElement.clientHeight}` - 280,\r\n currentAuthRow: null,\r\n dialogTitle: '',\r\n switchOn: '',\r\n switchOff: '',\r\n switchDefaultTrue: false,\r\n switchOptions: [\r\n {\r\n value: true,\r\n label: '默认为开',\r\n },\r\n {\r\n value: false,\r\n label: '默认为关',\r\n },\r\n ],\r\n switchOnLabel: '',\r\n switchOffLabel: '',\r\n files: [],\r\n curSelectIndex: 0,\r\n diyScript: '',\r\n index: 0,\r\n dialogMethodVisible: false,\r\n dialogRuleData: '',\r\n displaySettingFields: [],\r\n cmOptions: {\r\n value: '',\r\n mode: 'javascript',\r\n readOnly: false,\r\n smartIndent: true,\r\n tabSize: 1,\r\n theme: 'base16-light',\r\n lineNumbers: true,\r\n line: true,\r\n lineWiseCopyCut: true,\r\n showCursorWhenSelecting: true,\r\n },\r\n outvalueTypeList: [\r\n {key: 'input', value: '文本框'},\r\n {key: 'data', value: '日期'},\r\n {key: 'number', value: '数字'},\r\n {key: 'select', value: '下拉框'},\r\n {key: 'dialog', value: '对话框'},\r\n {key: 'user', value: '用户选择器'},\r\n {key: 'org', value: '组织选择器'},\r\n {key: 'post', value: '岗位选择器'},\r\n {key: 'job', value: '职位选择器'},\r\n {key: 'dem', value: '维度选择器'},\r\n {key: 'role', value: '角色选择器'},\r\n ],\r\n batchUpdateVisible: false,\r\n exportUpdateVisible: false,\r\n batchUpdateData: [],\r\n outConfig: {\r\n choiceType: 'static',\r\n parameter: {},\r\n selectData: [],\r\n customQuery: {alias: '', valueBind: '', labelBind: ''},\r\n dialogConfig: {name: '请选择'},\r\n },\r\n outIndex: '',\r\n outValueTypeVisible: false,\r\n filedsObj: {},\r\n refreshTime: new Date().getTime(),\r\n }\r\n },\r\n watch: {\r\n 'data.bpmDataTemplate.subject': function (newVal) {\r\n //判断是否绑定了流程,绑定了流程功能按钮可以选择发起流程按钮\r\n if (newVal) {\r\n this.btnoptions.push({\r\n key: 'startFlow',\r\n value: '发起流程',\r\n disabled: false,\r\n })\r\n this.defaultBtnOptions.push({\r\n key: 'startFlow',\r\n value: '发起流程',\r\n disabled: false,\r\n })\r\n } else {\r\n this.btnoptions = this.btnoptions.filter((b) => b.key != 'startFlow')\r\n this.defaultBtnOptions = this.btnoptions.filter(\r\n (b) => b.key != 'startFlow'\r\n )\r\n this.manageFields = this.manageFields.filter(\r\n (f) => f.name != 'startFlow'\r\n )\r\n }\r\n },\r\n deep: true,\r\n immediate: true,\r\n },\r\n computed: mapState({\r\n header: (state) => {\r\n return {Authorization: `Bearer ${state.login.currentUser.token}`}\r\n },\r\n actionUrl: function () {\r\n return window.context.portal + '/file/v1/upload'\r\n },\r\n }),\r\n mounted() {\r\n this.dataTemplate = this.data.bpmDataTemplate\r\n if (this.data.displaySettingFields) {\r\n this.displaySettingFields = JSON.parse(\r\n this.data.displaySettingFields\r\n ).filter((item) => {\r\n return item.isFlowField != true\r\n })\r\n this.displayExportSettingFields = deepmerge(\r\n {},\r\n this.displaySettingFields,\r\n {clone: true}\r\n )\r\n }\r\n //判断是否绑定了流程,绑定了流程功能按钮可以选择发起流程按钮\r\n if (this.data.bpmDataTemplate.subject) {\r\n this.btnoptions.push({\r\n key: 'startFlow',\r\n value: '发起流程',\r\n disabled: false,\r\n })\r\n this.defaultBtnOptions.push({\r\n key: 'startFlow',\r\n value: '发起流程',\r\n disabled: false,\r\n })\r\n }\r\n this.manageFields = this.dataTemplate.manageField\r\n ? JSON.parse(this.dataTemplate.manageField)\r\n : []\r\n this.displayField = this.dataTemplate.displayField\r\n ? JSON.parse(this.dataTemplate.displayField)\r\n : []\r\n\r\n this.permissionMap = this.data.permissionList\r\n if (this.permissionMap) {\r\n for (let key in this.permissionMap) {\r\n this.permissionList.push({type: key, title: this.permissionMap[key]})\r\n }\r\n this.displaySettingFields.forEach((item) => {\r\n this.filedsObj[item.name] = item.desc\r\n })\r\n }\r\n const manageFields = JSON.parse(this.dataTemplate.manageField)\r\n const alreadyAddedFields = new Map()\r\n if (manageFields) {\r\n manageFields.forEach((manageField) => {\r\n alreadyAddedFields.set(manageField.name, manageField.name)\r\n this.defaultBtnOptions.forEach((btn) => {\r\n if (\r\n manageField.name === btn.key &&\r\n !(\r\n btn.key == 'js' ||\r\n btn.key == 'url' ||\r\n btn.key == 'switch' ||\r\n btn.key == 'batchUpdate'\r\n )\r\n ) {\r\n btn.disabled = true\r\n }\r\n })\r\n })\r\n }\r\n this.btnoptions = this.defaultBtnOptions.filter(\r\n (btn) => !alreadyAddedFields.has(btn.key)\r\n )\r\n },\r\n methods: {\r\n isDisabled(row) {\r\n return row\r\n ? row.name != 'add' &&\r\n row.name != 'edit' &&\r\n row.name != 'detail' &&\r\n row.name != 'del'\r\n : false\r\n },\r\n btnChange(row) {\r\n this.$set(row, 'mpDisplay', row.mpDisplay === '1' ? '2' : '1')\r\n },\r\n diyScriptChange(myValue) {\r\n var cm = this.$refs.scriptText.codemirror\r\n var doc = cm.getDoc()\r\n var cursor = doc.getCursor() //gets the line number in the cursor position\r\n var line = doc.getLine(cursor.line) //get the line contents\r\n var pos = {\r\n line: cursor.line,\r\n ch: line.length - 1, //set the character position to the end of the line\r\n }\r\n doc.replaceRange(' ' + 'row.' + myValue + ' ', pos) //adds a new line\r\n },\r\n setButtonJs(row, index) {\r\n this.index = index\r\n if (row.jsValue) {\r\n this.dialogRuleData = Base64.decode(row.jsValue)\r\n }\r\n this.dialogMethodVisible = true\r\n },\r\n methodOk() {\r\n this.dialogMethodVisible = false\r\n this.manageFields[this.index].jsValue = Base64.encode(this.dialogRuleData)\r\n },\r\n selectJar() {\r\n this.$refs.importJarSelector && this.$refs.importJarSelector.show()\r\n },\r\n downloadTemplate() {\r\n this.$http.post(\r\n '${form}/form/dataTemplate/v1/downloadMainTempByFormKey/' +\r\n this.dataTemplate.formKey,\r\n this.dataTemplate.formKey,\r\n this.dataTemplate.formKey,\r\n 'arraybuffer'\r\n )\r\n },\r\n beforeUpload(file) {\r\n if (\r\n this.manageFields[this.curSelectIndex].importTemplate &&\r\n this.manageFields[this.curSelectIndex].importTemplate.length > 0\r\n ) {\r\n if (this.manageFields[this.curSelectIndex].importTemplate.length == 1) {\r\n return new Promise((resolve, reject) => {\r\n this.$confirm('已有模板, 是否确认覆盖?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning',\r\n })\r\n .then(() => {\r\n resolve()\r\n })\r\n .catch(() => {\r\n reject()\r\n })\r\n })\r\n } else {\r\n this.$message.waring('最多只能上传一个模板')\r\n return false\r\n }\r\n } else {\r\n return true\r\n }\r\n },\r\n handleImportClick(scope) {\r\n this.curSelectIndex = scope.$index\r\n },\r\n handleRemove(file, fileList) {\r\n if (fileList && fileList.length == 1) {\r\n return\r\n }\r\n let this_ = this\r\n setTimeout(function () {\r\n this_.manageFields[this_.curSelectIndex].importTemplate = []\r\n }, 50)\r\n },\r\n success(response, file, fileList) {\r\n this.files = []\r\n for (let i = 0; i < fileList.length; i++) {\r\n if (fileList[i].response) {\r\n let value = fileList[i].response\r\n let arrarFile = {}\r\n arrarFile.id = value.fileId\r\n arrarFile.name = value.fileName\r\n arrarFile.size = value.size\r\n this.files.push(arrarFile)\r\n }\r\n }\r\n this.manageFields[this.curSelectIndex].importTemplate = this.files\r\n },\r\n jarSelectorOnConfirm(d) {\r\n this.$set(this.manageFields[this.curSelectIndex], 'jarId', d.id)\r\n this.$set(this.manageFields[this.curSelectIndex], 'jarDesc', d.desc)\r\n },\r\n copy(index) {\r\n let obj = JSON.parse(JSON.stringify(this.manageFields[index]))\r\n this.manageFields.push(obj)\r\n },\r\n //保存按钮数据\r\n saveManageField() {\r\n //处理开关字段\r\n if (this.manageFields) {\r\n this.dataTemplate.manageField = JSON.stringify(this.manageFields)\r\n } else {\r\n this.dataTemplate.manageField = null\r\n }\r\n },\r\n validateManageField() {\r\n //开关按钮校验,开关按钮必须绑定一列,开时值和关时值必填\r\n let this_ = this\r\n let fields = this_.manageFields\r\n for (let i = 0; i < fields.length; i++) {\r\n if (fields[i].name === 'switch') {\r\n if (!fields[i].bind) {\r\n this_.$message.warning('请选择开关的绑定字段')\r\n return\r\n }\r\n if (!fields[i].switchOn || !fields[i].switchOff) {\r\n this_.$message({\r\n type: 'warning',\r\n message: '请完善开关的开时值和关时值',\r\n })\r\n return false\r\n }\r\n if (!fields[i].desc || !fields[i].name) {\r\n this_.$message({type: 'warning', message: '请完善开关信息'})\r\n return false\r\n }\r\n }\r\n }\r\n return true\r\n },\r\n //显示字段排序\r\n sort(index, type) {\r\n if ('up' == type) {\r\n if (index === 0) {\r\n this.$message({\r\n message: '已经是列表中第一位',\r\n type: 'warning',\r\n })\r\n } else {\r\n let temp = this.manageFields[index - 1]\r\n this.$set(this.manageFields, index - 1, this.manageFields[index])\r\n this.$set(this.manageFields, index, temp)\r\n }\r\n } else {\r\n if (index === this.manageFields.length - 1) {\r\n this.$message({\r\n message: '已经是列表中最后一位',\r\n type: 'warning',\r\n })\r\n } else {\r\n let i = this.manageFields[index + 1]\r\n this.$set(this.manageFields, index + 1, this.manageFields[index])\r\n this.$set(this.manageFields, index, i)\r\n }\r\n }\r\n },\r\n //删除显示字段\r\n remove(index) {\r\n const manageField = this.manageFields[index]\r\n const btn = this.defaultBtnOptions.filter(\r\n (btn) => manageField.name === btn.key\r\n )[0]\r\n this.btnoptions.push(btn)\r\n this.manageFields.splice(index, 1)\r\n this.defaultBtnOptions.forEach((button) => {\r\n if (button.key === btn.key) {\r\n button.disabled = false\r\n return\r\n }\r\n })\r\n },\r\n //添加管理按钮\r\n addManageBtns() {\r\n if (this.btnoptions.length > 0) {\r\n const btn = this.btnoptions.shift()\r\n if (\r\n btn &&\r\n (btn.key == 'js' ||\r\n btn.key == 'url' ||\r\n btn.key == 'switch' ||\r\n btn.key == 'batchUpdate')\r\n ) {\r\n this.btnoptions.unshift(btn)\r\n }\r\n this.defaultBtnOptions.forEach((button) => {\r\n if (\r\n button.key === btn.key &&\r\n !(\r\n btn.key == 'js' ||\r\n btn.key == 'url' ||\r\n btn.key == 'switch' ||\r\n btn.key == 'batchUpdate'\r\n )\r\n ) {\r\n button.disabled = true\r\n }\r\n })\r\n let manageField = {\r\n desc: btn.value,\r\n name: btn.key,\r\n type: '1',\r\n openType: 'old',\r\n QRCodePattern: false,\r\n disabled: false,\r\n }\r\n if (!this.noRights) {\r\n manageField.right = JSON.stringify([{type: 'everyone'}])\r\n }\r\n if (btn.key === 'import') {\r\n manageField.limit = 1000\r\n }\r\n this.manageFields.push(manageField)\r\n } else {\r\n this.$message({\r\n type: 'warning',\r\n message: '所有按钮都添加好了, 不能继续再添加!',\r\n })\r\n }\r\n },\r\n //处理按钮切换\r\n handleManageChange(row) {\r\n //切换按钮类型置空映射字段\r\n if (row.display) {\r\n row.display = []\r\n this.refreshTime = new Date().getTime()\r\n }\r\n this.defaultBtnOptions.forEach((btn) => {\r\n if (btn.key == row.name) {\r\n if (btn.limit) {\r\n row.limit = btn.limit\r\n }\r\n row.desc = btn.value\r\n }\r\n btn.disabled = false\r\n })\r\n\r\n const alreadyAddedFields = new Map()\r\n this.manageFields.forEach((manageField) => {\r\n alreadyAddedFields.set(manageField.name, manageField.name)\r\n this.defaultBtnOptions.forEach((btn) => {\r\n if (\r\n manageField.name === btn.key &&\r\n !(\r\n btn.key == 'js' ||\r\n btn.key == 'url' ||\r\n btn.key == 'switch' ||\r\n btn.key == 'batchUpdate'\r\n )\r\n ) {\r\n btn.disabled = true\r\n }\r\n })\r\n })\r\n this.btnoptions = this.defaultBtnOptions.filter(\r\n (btn) => !alreadyAddedFields.has(btn.key)\r\n )\r\n\r\n //如果按钮类型不是新增、编辑、明细、删除时,移动端显示\r\n if (\r\n row.name != 'add' &&\r\n row.name != 'edit' &&\r\n row.name != 'detail' &&\r\n row.name != 'del'\r\n ) {\r\n row.mpDisplay = '2'\r\n }\r\n },\r\n //打开设置权限\r\n setFieldRightDialog(row) {\r\n let conf = {\r\n right: JSON.parse(row.right),\r\n permissionList: this.permissionList,\r\n }\r\n this.currentAuthRow = row\r\n this.$refs.eipAuthDialog.showDialog(conf)\r\n },\r\n //设置权限\r\n authDialogOnConfirm(data) {\r\n if (this.currentAuthRow) {\r\n this.currentAuthRow.right = JSON.stringify(data)\r\n }\r\n },\r\n //显示权限信息\r\n rightToDesc(right) {\r\n if (right) {\r\n try {\r\n right = JSON.parse(right)\r\n } catch (error) {}\r\n }\r\n let desc = ''\r\n let _this = this\r\n right.forEach((r) => {\r\n if (desc) {\r\n desc += ' 和 '\r\n }\r\n var str = _this.permissionMap[r.type]\r\n if (r.name) {\r\n str += ':' + r.name\r\n } else if (r.id) {\r\n str += ':' + r.id\r\n }\r\n desc += str\r\n })\r\n return desc\r\n },\r\n //标题统一权限设置\r\n mrightRenderHeader(h, para) {\r\n //下拉框选项\r\n let _this = this\r\n let rights = [\r\n {key: '', value: '请选择'},\r\n {key: 'none', value: '无'},\r\n {key: 'everyone', value: '所有人'},\r\n ]\r\n let rightMap = {'': '请选择', none: '无', everyone: '所有人'}\r\n //下拉框内容包裹在一个div里面\r\n return h('div', {}, [\r\n h(\r\n 'span',\r\n {\r\n //div里面有一个文字提示:下拉框所属内容\r\n style: {},\r\n class: 'level-font-class',\r\n },\r\n para.column.label\r\n ),\r\n h(\r\n 'el-select',\r\n {\r\n //el-select实现下拉框\r\n size: 'mini',\r\n style: {\r\n width: '120px',\r\n marginLeft: '10px',\r\n },\r\n on: {\r\n input: (value) => {\r\n //随着下拉框的不同,文字框里的内容在边\r\n _this.rightLab = rightMap[value]\r\n if (\r\n value &&\r\n _this.manageFields &&\r\n _this.manageFields.length > 0\r\n ) {\r\n _this.manageFields.forEach((field) => {\r\n if (field.right) {\r\n try {\r\n field.right = JSON.parse(field.right)\r\n } catch (error) {}\r\n }\r\n if (field.right[0].hasOwnProperty('v')) {\r\n field.right[0] = {v: value}\r\n } else {\r\n field.right[0] = {type: value}\r\n }\r\n field.right = JSON.stringify(field.right)\r\n })\r\n }\r\n },\r\n },\r\n props: {\r\n value: _this.rightLab, //文字框的内容取决于这个value,如果value不存在,会报错\r\n },\r\n },\r\n [\r\n //下拉框里面填充选项,通过rights遍历map,为每一个选项赋值。\r\n rights.map((item) => {\r\n return h('el-option', {\r\n props: {\r\n value: item.key,\r\n label: item.value,\r\n },\r\n })\r\n }),\r\n ]\r\n ),\r\n ])\r\n },\r\n //URL按钮和开关按钮设置事件\r\n setButtonValue(option, row) {\r\n this.dialogVisible = true\r\n if (option === 'url') {\r\n this.dialogTitle = '设置Url地址'\r\n this.url = row.url\r\n } else if (option === 'switch') {\r\n this.dialogTitle = '设置开关值'\r\n this.switchOn = row.switchOn\r\n this.switchOff = row.switchOff\r\n this.switchOnLabel = row.switchOnLabel\r\n this.switchOffLabel = row.switchOffLabel\r\n }\r\n this.dialogModel = row\r\n },\r\n //设置URL按钮和开关后确认\r\n dialogOnconfirm() {\r\n if (this.dialogTitle === '设置开关值') {\r\n this.dialogModel.switchOn = this.switchOn\r\n this.dialogModel.switchOff = this.switchOff\r\n this.dialogModel.isActive = 'off'\r\n this.dialogModel.switchDefaultTrue = this.switchDefaultTrue\r\n this.dialogModel.switchOnLabel = this.switchOnLabel\r\n this.dialogModel.switchOffLabel = this.switchOffLabel\r\n if (!this.switchOn || !this.switchOff) {\r\n this.$message({\r\n type: 'warning',\r\n message: '开关需要设置开时值和关时值',\r\n })\r\n }\r\n } else if (this.dialogTitle === '设置Url地址') {\r\n this.dialogModel.url = this.url\r\n }\r\n this.dialogVisible = false\r\n },\r\n initMpDisplay(row) {\r\n this.$set(row, 'mpDisplay', '2')\r\n },\r\n setAuth(row) {\r\n let param = {\r\n formKey: this.dataTemplate.formKey,\r\n dataKey: this.dataTemplate.alias,\r\n type: row.name === 'add' ? 3 : row.name === 'edit' ? 4 : 5,\r\n }\r\n this.$refs.flowFormAuth.showDialog(param)\r\n },\r\n\r\n batchUpdateOk() {\r\n const me_ = this\r\n utils\r\n .validateForm(this, 'form')\r\n .then((r) => {\r\n me_.batchUpdateVisible = false\r\n me_.manageFields[me_.index].batchUpdateData = Base64.encode(\r\n JSON.stringify(me_.batchUpdateData)\r\n )\r\n me_.manageFields[me_.index].filedsObj = Base64.encode(\r\n JSON.stringify(me_.filedsObj)\r\n )\r\n })\r\n .catch((items) => {\r\n this.$message.error(`还有内容未填写。`)\r\n })\r\n },\r\n\r\n fillToDisplay(row, event, column) {\r\n let isIn = this.isInDisplayFields(row.name)\r\n if (!isIn) {\r\n let fileds = {name: row.name, desc: row.desc, type: row.type}\r\n this.exportSettingFields.push(fileds)\r\n }\r\n },\r\n isInDisplayFields(name) {\r\n let isIn = false\r\n if (this.exportSettingFields && this.exportSettingFields.length > 0) {\r\n this.exportSettingFields.forEach((obj) => {\r\n if (obj.name == name) {\r\n isIn = true\r\n return\r\n }\r\n })\r\n }\r\n return isIn\r\n },\r\n allFillToDisplay() {\r\n let selectrows = this.$refs.displaySettingTable.store.states.selection\r\n if (!selectrows || selectrows.length < 1) {\r\n this.$message({\r\n message: '请在左侧列表中选择要显示的字段',\r\n type: 'warning',\r\n })\r\n }\r\n selectrows.forEach((obj) => {\r\n if (!this.isInDisplayFields(obj.name)) {\r\n let fileds = {name: obj.name, desc: obj.desc, type: obj.type}\r\n this.exportSettingFields.push(fileds)\r\n }\r\n })\r\n },\r\n removeExport(index) {\r\n this.exportSettingFields.splice(index, 1)\r\n },\r\n setExport(row, index) {\r\n this.exportSettingFields = []\r\n if (row.exportSettingFields) {\r\n this.exportSettingFields = JSON.parse(\r\n Base64.decode(row.exportSettingFields)\r\n )\r\n }\r\n this.index = index\r\n\r\n let displayExportSettingFields = []\r\n this.displaySettingFields.forEach((obj) => {\r\n displayExportSettingFields.push({\r\n name: obj.name,\r\n desc: obj.desc,\r\n type: obj.type,\r\n })\r\n })\r\n if (this.data.displaySettingFields) {\r\n let displayField = JSON.parse(this.data.displaySettingFields)\r\n displayField.forEach((item) => {\r\n let findObj = displayExportSettingFields.find(\r\n (row) => item.name == row.name\r\n )\r\n if (findObj == undefined) {\r\n displayExportSettingFields.push({\r\n name: item.name,\r\n desc: item.desc,\r\n type: item.type,\r\n })\r\n }\r\n })\r\n }\r\n this.displayExportSettingFields = displayExportSettingFields\r\n this.exportUpdateVisible = true\r\n },\r\n exportOk() {\r\n if (this.exportSettingFields) {\r\n this.manageFields[this.index].exportSettingFields = Base64.encode(\r\n JSON.stringify(this.exportSettingFields)\r\n )\r\n } else {\r\n this.manageFields[this.index].exportSettingFields = ''\r\n }\r\n this.exportUpdateVisible = false\r\n },\r\n setButtonUpdate(row, index) {\r\n this.$set(this, 'batchUpdateData', this.$options.data().batchUpdateData)\r\n if (row.batchUpdateData) {\r\n this.batchUpdateData = JSON.parse(Base64.decode(row.batchUpdateData))\r\n }\r\n this.batchUpdateVisible = true\r\n this.index = index\r\n },\r\n resetOutConfig(row, index) {\r\n debugger\r\n if (\r\n row.outValueType &&\r\n row.outValueType != 'input' &&\r\n row.outValueType != 'data' &&\r\n row.outValueType != 'number'\r\n ) {\r\n this.outConfig = {\r\n type: row.outValueType,\r\n choiceType: 'static',\r\n parameter: {},\r\n selectData: [],\r\n customQuery: {alias: '', valueBind: '', labelBind: ''},\r\n dialogConfig: {name: '请选择'},\r\n }\r\n row.outConfig = JSON.stringify(this.outConfig)\r\n }\r\n },\r\n setOutValue(row, index) {\r\n Object.assign(this.$data.outConfig, this.$options.data().outConfig)\r\n this.outIndex = index\r\n this.outConfig.type = row.outValueType\r\n this.outConfig.bind = row.name\r\n if (row.outConfig) {\r\n this.outConfig = JSON.parse(row.outConfig)\r\n if (!this.outConfig.customQuery) {\r\n this.outConfig.customQuery = {valueBind: '', labelBind: ''}\r\n }\r\n }\r\n this.outValueTypeVisible = true\r\n },\r\n outValueOk() {\r\n this.batchUpdateData[this.outIndex].outConfig = JSON.stringify(\r\n this.outConfig\r\n )\r\n this.outValueTypeVisible = false\r\n },\r\n addBatchUpdategData() {\r\n this.batchUpdateData.push({})\r\n },\r\n afterCustomQueryLoadData(data) {\r\n this.customQuerys = data.rows\r\n },\r\n afterCustomDialogLoadData(data) {\r\n this.customDialogs = data\r\n },\r\n changeCustDialog(value) {\r\n const _this = this\r\n _this.outConfig.dialogConfig.conditions = []\r\n this.outConfig.dialogConfig.mappingConf = []\r\n this.outConfig.dialogConfig.custQueryJson = []\r\n this.outConfig.dialogConfig.selectNum = ''\r\n let obj = this.customDialogs.find((item) => item.alias == value)\r\n if (obj) {\r\n this.outConfig.dialogConfig.selectNum = obj.selectNum\r\n let treeData\r\n if (obj.style === 2) {\r\n let combineConfig = JSON.parse(obj.combinationRule)\r\n let listDialog = this.customDialogs.find(\r\n (item) => item.alias == combineConfig.rightDialog\r\n )\r\n treeData = JSON.parse(listDialog.resultfield)\r\n this.outConfig.dialogConfig.type = 'combiDialog'\r\n }\r\n if (obj.listDialog && obj.listDialog.resultfield) {\r\n treeData = eval('(' + obj.listDialog.resultfield + ')')\r\n this.outConfig.dialogConfig.type = 'combiDialog'\r\n }\r\n if (obj.resultfield && obj.resultfield !== '[]') {\r\n treeData = eval('(' + obj.resultfield + ')')\r\n this.outConfig.dialogConfig.type = 'custDialog'\r\n }\r\n for (let q = 0, f; (f = treeData[q++]); ) {\r\n f.field = f.comment\r\n }\r\n this.outConfig.dialogConfig.resultField = treeData\r\n let conditionList = eval('(' + obj.conditionfield + ')')\r\n let conditions = []\r\n //只处理类型等于1的对话框参数(defaultType:1:用户输入,2:固定值 ,3:参数传入)\r\n if (conditionList && conditionList.length > 0) {\r\n for (let j = 0, c; (c = conditionList[j++]); ) {\r\n if (c.defaultType == '3') {\r\n let has = false\r\n if (!has) conditions.push(c)\r\n }\r\n }\r\n }\r\n this.outConfig.dialogConfig.conditions = conditions\r\n }\r\n },\r\n setCurrentCustomQuery() {\r\n const _this = this\r\n _this.outConfig.customQuery.labelBind = ''\r\n _this.outConfig.customQuery.valueBind = ''\r\n _this.customQuerys.forEach((item) => {\r\n if (_this.outConfig.customQuery.alias == item.alias) {\r\n if (typeof item.conditionfield == 'string') {\r\n item.conditionfield = JSON.parse(item.conditionfield) //parseToJson(item.customQuery.conditionfield);\r\n item.resultfield = JSON.parse(item.resultfield) // parseToJson(item.customQuery.resultfield);\r\n }\r\n //把当前对象克隆一份到控件属性配置\r\n Object.assign(_this.outConfig.customQuery, item)\r\n _this.slimCustomQuery(_this.outConfig.customQuery)\r\n }\r\n })\r\n },\r\n slimCustomQuery(customQuery) {\r\n if (customQuery && customQuery.constructor == Object) {\r\n // 删除多余的属性\r\n delete customQuery['id']\r\n delete customQuery['createTime']\r\n delete customQuery['pkVal']\r\n delete customQuery['objName']\r\n delete customQuery['needPage']\r\n delete customQuery['pageSize']\r\n delete customQuery['dsalias']\r\n delete customQuery['dataParam']\r\n delete customQuery['sortfield']\r\n delete customQuery['diySql']\r\n delete customQuery['isTable']\r\n delete customQuery['sqlBuildType']\r\n // delete customQuery[\"dsType\"];\r\n delete customQuery['url']\r\n delete customQuery['header']\r\n delete customQuery['requestType']\r\n delete customQuery['pageKey']\r\n delete customQuery['pageSizeKey']\r\n delete customQuery['totalKey']\r\n delete customQuery['listKey']\r\n }\r\n },\r\n },\r\n}\r\n",null]}