{"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\\DisplaySetting.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\form\\dataTemplate\\DisplaySetting.vue","mtime":1675071992131},{"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\r\nconst eipAuthDialog = () => import('@/components/dialog/EipAuthDialog.vue')\r\nconst EipDataTemplateDialog = () =>\r\n  import('@/components/dialog/EipDataTemplateDialog.vue')\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    EipDataTemplateDialog,\r\n  },\r\n  name: 'display-setting',\r\n  props: ['data'],\r\n  data() {\r\n    return {\r\n      btnType:BTN_TYPE,//移动端显示隐藏按钮\r\n      activeName: 'formatter',\r\n      reportName: '',\r\n      conditionField: [],\r\n      dataTemplate: {},\r\n      displaySettingFields: [],\r\n      displayFields: [],\r\n      permissionMap: {},\r\n      permissionList: [],\r\n      rightList: [\r\n        {key: '', value: '请选择'},\r\n        {key: 'none', value: '无'},\r\n        {key: 'everyone', value: '所有人'},\r\n      ],\r\n      tabHeight: `${document.documentElement.clientHeight}` - 245,\r\n      currentAuthRow: null,\r\n      settingVisible: false,\r\n      selectedRow: {},\r\n      proSetting2: true,\r\n      formFieldList: [],\r\n      urlParams: [],\r\n      defaultRight: '[{\"type\":\"everyone\",\"id\":\"\",\"name\":\"\",\"script\":\"\"}]',\r\n      sqlConfigDialog: false,\r\n      sql: '',\r\n      sqlConfigRow: {},\r\n      isShowRuleSettingDialog: false,\r\n      cmOptions: {\r\n        value: '        ',\r\n        mode: 'javascript',\r\n        readOnly: false,\r\n        tabSize: 3,\r\n        theme: 'base16-light',\r\n        lineNumbers: true,\r\n        line: true,\r\n      },\r\n      diyScript: '',\r\n      ruleSettingIndex: '',\r\n      dialogRuleData: '',\r\n      multipleSelection: [],\r\n      rightLab: '',\r\n    }\r\n  },\r\n  computed: {\r\n    calOptions: function () {\r\n      return [\r\n        {key: 100, value: '按100计算'},\r\n        {key: 10, value: '按10计算'},\r\n        {key: 1, value: '按1计算'},\r\n        {key: this.selectedRow.diyProRule, value: '输入统计总数'},\r\n      ]\r\n    },\r\n  },\r\n  mounted() {\r\n    if (this.data.bpmDataTemplate.displayField) {\r\n      let displayFields = JSON.parse(this.data.bpmDataTemplate.displayField)\r\n      for (let i = 0; i < displayFields.length; i++) {\r\n        if (!displayFields[i].formatterData) {\r\n          displayFields[i].formatterData = []\r\n        }\r\n        if (!displayFields[i].ruleSettings) {\r\n          displayFields[i].ruleSettings = []\r\n        }\r\n      }\r\n      this.data.bpmDataTemplate.displayField = JSON.stringify(displayFields)\r\n    }\r\n    this.dataTemplate = this.data.bpmDataTemplate\r\n    this.displaySettingFields = [...this.data.fields]\r\n    this.templates = this.data.templates\r\n    this.permissionMap = this.data.permissionList\r\n    this.initData()\r\n  },\r\n  methods: {\r\n    btnChange(row){\r\n      this.$set(row,'mpDisplay',row.mpDisplay==='1' ? '2' : '1')\r\n    },\r\n    dialogOk() {\r\n      var conditionField = this.conditionField\r\n      let isDislogClose = true\r\n      this.selectedRow.parameter = []\r\n      conditionField.forEach((item) => {\r\n        this.selectedRow.parameter.push({\r\n          property: item.key,\r\n          value: item.parameter,\r\n          group: 'main',\r\n          operation: item.qt,\r\n          relation: 'AND',\r\n        })\r\n      })\r\n      if (this.selectedRow.urlType == 'url' && this.urlParams) {\r\n        this.urlParams.forEach((param) => {\r\n          const paramText = /^[a-zA-Z][a-zA-Z0-9]+$/\r\n          if (!paramText.test(param.name)) {\r\n            isDislogClose = false\r\n            this.$message.warning('参数名称格式有误')\r\n          }\r\n        })\r\n        if (isDislogClose) {\r\n          this.selectedRow.urlParams = [...this.urlParams]\r\n          this.urlParams = []\r\n        }\r\n      }\r\n      if (isDislogClose) {\r\n        this.settingVisible = false\r\n      }\r\n    },\r\n    onDataTemplateConfirm(selectedNode) {\r\n      if (selectedNode && selectedNode.length > 0) {\r\n        this.$nextTick(() => {\r\n          this.conditionField = []\r\n          var conditionField = JSON.parse(selectedNode[0].conditionField)\r\n          conditionField.forEach((item) => {\r\n            var obj = {\r\n              key: item.colPrefix + item.name,\r\n              parameter: '',\r\n              qt: item.qt,\r\n              value: item.cm,\r\n            }\r\n            this.conditionField.push(obj)\r\n          })\r\n          this.reportName = selectedNode[0].name\r\n          this.selectedRow.reportNameConfigure = {\r\n            alias: selectedNode[0].alias,\r\n            reportName: selectedNode[0].name,\r\n            conditionField: this.conditionField,\r\n          }\r\n        })\r\n      } else {\r\n        this.reportName = ''\r\n        this.conditionField = []\r\n        this.selectedRow.reportNameConfigure = {}\r\n      }\r\n    },\r\n    //保存显示列数据\r\n    saveDisplayField() {\r\n      this.dataTemplate.displayField = this.displayFields\r\n        ? JSON.stringify(this.displayFields)\r\n        : null\r\n    },\r\n    validateDisplayField() {\r\n      for (let i = 0; i < this.displayFields.length; i++) {\r\n        if (this.displayFields[i].customColumn && !this.displayFields[i].name) {\r\n          this.$message.warning(`请完善显示字段第${i + 1}列虚拟字段的列名`)\r\n          return false\r\n        }\r\n      }\r\n      return true\r\n    },\r\n    //初始化处理\r\n    initData() {\r\n      if (this.dataTemplate.displayField) {\r\n        this.displayFields = JSON.parse(this.dataTemplate.displayField)\r\n      }\r\n      if (this.permissionMap) {\r\n        for (let key in this.permissionMap) {\r\n          this.permissionList.push({\r\n            type: key,\r\n            title: this.permissionMap[key],\r\n          })\r\n        }\r\n      }\r\n      if (this.dataTemplate.formField) {\r\n        this.formFieldList = []\r\n        const formFieldList = JSON.parse(this.dataTemplate.formField)\r\n        let fieldMap = {}\r\n        let _this = this\r\n        formFieldList.forEach((ffield) => {\r\n          if (!fieldMap[ffield.name]) {\r\n            _this.formFieldList.push(ffield)\r\n            fieldMap[ffield.name] = true\r\n          }\r\n        })\r\n      }\r\n    },\r\n    showDataTemplateDialog() {\r\n      this.$refs.dataTemplateDialog.showDialog()\r\n    },\r\n    columnFilter(type) {\r\n      return type != 'sub' && type != 'tabs'\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 = {\r\n          name: row.name,\r\n          desc: row.desc,\r\n          type: row.type,\r\n          showFlowField: row.showFlowField,\r\n          right: this.defaultRight,\r\n        }\r\n        this.displayFields.push(fileds)\r\n      }\r\n    },\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 = {\r\n            name: obj.name,\r\n            desc: obj.desc,\r\n            type: obj.type,\r\n            showFlowField: obj.showFlowField,\r\n            right: this.defaultRight,\r\n          }\r\n          this.displayFields.push(fileds)\r\n        }\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    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.displayFields[index - 1]\r\n          this.$set(this.displayFields, index - 1, this.displayFields[index])\r\n          this.$set(this.displayFields, index, temp)\r\n        }\r\n      } else {\r\n        if (index === this.displayFields.length - 1) {\r\n          this.$message({\r\n            message: '已经是列表中最后一位',\r\n            type: 'warning',\r\n          })\r\n        } else {\r\n          let i = this.displayFields[index + 1]\r\n          this.$set(this.displayFields, index + 1, this.displayFields[index])\r\n          this.$set(this.displayFields, index, i)\r\n        }\r\n      }\r\n    },\r\n\r\n    //删除显示字段\r\n    remove(index) {\r\n      this.displayFields.splice(index, 1)\r\n    },\r\n    //判断字段是否已在显示字段列表中\r\n    isInDisplayFields(name) {\r\n      let isIn = false\r\n      if (this.displayFields && this.displayFields.length > 0) {\r\n        this.displayFields.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    //显示权限信息\r\n    rightToDesc(right) {\r\n      if (right) {\r\n        right = JSON.parse(right)\r\n      } else {\r\n        return '无'\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    rightRenderHeader(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.displayFields &&\r\n                  _this.displayFields.length > 0\r\n                ) {\r\n                  _this.displayFields.forEach((field) => {\r\n                    if (field.right) {\r\n                      field.right = JSON.parse(field.right)\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    setting(row) {\r\n      this.settingVisible = true\r\n      this.selectedRow = row\r\n      if (this.selectedRow.reportNameConfigure) {\r\n        this.reportName = this.selectedRow.reportNameConfigure.reportName\r\n        this.conditionField =\r\n          this.selectedRow.reportNameConfigure.conditionField == undefined\r\n            ? []\r\n            : this.selectedRow.reportNameConfigure.conditionField\r\n      }\r\n      if (!this.selectedRow.ruleSettings) {\r\n        this.selectedRow.ruleSettings = []\r\n      }\r\n      this.selectedRow.diyProRule = 0\r\n      if (!this.selectedRow.formatterData) {\r\n        this.selectedRow.formatterData = []\r\n      }\r\n      /* this.selectedRow.ruleSetting = 100;*/\r\n      if (this.selectedRow.proSetting) {\r\n        this.proSetting2 = true\r\n      } else {\r\n        this.selectedRow.proSetting = false\r\n        this.proSetting2 = false\r\n      }\r\n      if (\r\n        this.selectedRow.urlType == 'url' &&\r\n        this.selectedRow.urlParams &&\r\n        this.selectedRow.urlParams.length > 0\r\n      ) {\r\n        this.urlParams = [...this.selectedRow.urlParams]\r\n      }\r\n    },\r\n    addSetting() {\r\n      this.selectedRow.formatterData.push({\r\n        key_: '',\r\n        value_: '',\r\n      })\r\n    },\r\n    removeSetting(index) {\r\n      this.selectedRow.formatterData.splice(index, 1)\r\n    },\r\n    removeProSetting(index) {\r\n      this.selectedRow.ruleSettings.splice(index, 1)\r\n    },\r\n    cancelSetting() {\r\n      this.settingVisible = false\r\n      this.selectedRow.formatterData = []\r\n    },\r\n    urlParamsAdd() {\r\n      this.urlParams.push({name: '', field: ''})\r\n    },\r\n    urlParamsRemove(item) {\r\n      this.urlParams.remove(item)\r\n    },\r\n    initMpDisplay(row) {\r\n      this.$set(row, 'mpDisplay', '2')\r\n    },\r\n    // 添加自定义列值\r\n    addCustomColumn() {\r\n      this.displayFields.push({\r\n        desc: '',\r\n        name: '',\r\n        right: '[{\"type\":\"everyone\",\"id\":\"\",\"name\":\"\",\"script\":\"\"}]',\r\n        showFlowField: true,\r\n        type: 'varchar',\r\n        sql: '',\r\n        customColumn: true,\r\n      })\r\n    },\r\n    delCustomColumn() {\r\n      const names = this.multipleSelection.map((item) => item.name)\r\n      this.displayFields = this.displayFields.filter(\r\n        (item) => !names.includes(item.name)\r\n      )\r\n    },\r\n    sqlDialogShow(row) {\r\n      this.sqlConfigDialog = true\r\n      this.sqlConfigRow = row\r\n      if (row.sql) {\r\n        this.sql = row.sql\r\n      }\r\n    },\r\n    sqlConfigOk() {\r\n      this.displayFields.forEach((field) => {\r\n        if (field.name == this.sqlConfigRow.name) {\r\n          field.sql = this.sql\r\n          this.sql = ''\r\n        }\r\n      })\r\n      this.sqlConfigDialog = false\r\n    },\r\n    //添加显示设置\r\n    addProSetting() {\r\n      this.selectedRow.ruleSettings.push({\r\n        proColor: '',\r\n        proRule: '',\r\n      })\r\n    },\r\n    //弹窗规则设置对话框\r\n    showRuleSettingDialog(proRule, index) {\r\n      this.ruleSettingIndex = index\r\n      this.dialogRuleData = proRule\r\n      this.isShowRuleSettingDialog = true\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('  ' + myValue + '  ', pos) //adds a new line\r\n    },\r\n    methodOk() {\r\n      this.selectedRow.ruleSettings[\r\n        this.ruleSettingIndex\r\n      ].proRule = this.dialogRuleData\r\n      this.dialogRuleData = ''\r\n      this.isShowRuleSettingDialog = false\r\n    },\r\n    proSwitchChange(data) {\r\n      this.selectedRow.proSetting = data\r\n      if (data) {\r\n        this.selectedRow.diyProRule = 0\r\n      }\r\n    },\r\n    diyProRuleChange(val) {\r\n      this.$set(this.selectedRow, 'diyProRule', val)\r\n      if (val == 1 || val == 10 || val == 100) {\r\n        this.$set(this.selectedRow, 'diyProRule', 0)\r\n      }\r\n      this.$set(this.selectedRow, 'ruleSetting', val)\r\n    },\r\n    handleSelectionChange(val) {\r\n      this.multipleSelection = val\r\n    },\r\n  },\r\n}\r\n",null]}