{"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\\flow\\FlowFormAuth.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\flow\\FlowFormAuth.vue","mtime":1675071991803},{"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\r\nimport flow from \"@/api/flow.js\";\r\nimport req from \"@/request.js\";\r\nimport { mapState, mapActions } from \"vuex\";\r\n\r\nconst eipAuthDialog = () => import(\"@/components/dialog/EipAuthDialog.vue\");\r\nconst flowFormSubRowAuth = () => import(\"@/components/flow/FlowFormSubRowAuth.vue\");\r\n\r\n\r\nexport default {\r\n  props: [\"defId\", \"topDefKey\"],\r\n  components: { eipAuthDialog ,flowFormSubRowAuth},\r\n  data() {\r\n    return {\r\n      dialogVisible: false,\r\n      _oldPermission: {},\r\n      subTableList: [],\r\n      permissionList: [],\r\n      pageParams: {},\r\n      curAuthieldObj: {},\r\n      subRowAuth:{},\r\n      boTree:{}\r\n    };\r\n  },\r\n  methods: {\r\n    selectField: function(field, rightType, action) {\r\n      let data = [{ checked: true, title: \"无\", type: \"none\" }];\r\n      if (action == \"everyone\") {\r\n        data = [{ checked: true, title: \"所有人\", type: \"everyone\" }];\r\n      }\r\n      field[rightType] = data;\r\n      //当只读，编辑和必填是所有人时，将只读点击无时，自动将编辑和必填也设置为无\r\n      if(rightType=='read' && action=='none'){\r\n        field['write']=[{ checked: true, title: \"无\", type: \"none\" }];\r\n        field['required']=[{ checked: true, title: \"无\", type: \"none\" }];\r\n      }\r\n      //当编辑和必填是所有人时，将编辑点击无时，自动将必填也设置为无\r\n      if(rightType=='write' && action=='none'){\r\n        field['required']=[{ checked: true, title: \"无\", type: \"none\" }];\r\n      }\r\n    },\r\n    openSunRowAuthDailog(table){\r\n      this.$refs.flowFormSubRowAuth.showDialog(this.subRowAuth,table,this.boTree);\r\n    },\r\n    showDialog: function(param) {\r\n      this.dialogVisible = true;\r\n      let this_ = this;\r\n      this.pageParams = param;\r\n      req\r\n        .post(window.context.form + \"/form/rights/v1/getPermission\", param)\r\n        .then(response => {\r\n          let data = response.data;\r\n          data.permissionList.push({ type: \"none\", title: \"无\" });\r\n          this_._oldPermission = JSON.parse(JSON.stringify(data));\r\n          this_.handleData(data);\r\n          let permissionObj = {};\r\n          for (var i = 0, p; (p = data.permissionList[i++]); ) {\r\n            permissionObj[p.type] = p.title;\r\n          }\r\n          this_.permissionList = permissionObj;\r\n        });\r\n        req\r\n        .get(window.context.form + \"/form/form/v1/generateBoTreeData?formKey=\"+this.pageParams.formKey)\r\n        .then(response => {\r\n          let data = response.data;\r\n          if (data && data.value) {\r\n            this_.boTree = JSON.parse(data.value)\r\n          }\r\n        });\r\n    },\r\n    handleClose: function() {\r\n      this._oldPermission = {};\r\n      this.subTableList = [];\r\n      this.permissionList = [];\r\n      this.pageParams = {};\r\n      this.curAuthieldObj = {};\r\n      this.subRowAuth = {};\r\n      this.boTree = {};\r\n      this.dialogVisible = false;\r\n    },\r\n    addNewField: function() {\r\n      let this_ = this;\r\n      req\r\n        .post(\r\n          window.context.form +\r\n            \"/form/rights/v1/getDefaultByFormKey?type=1&formKey=\" +\r\n            this.pageParams.formKey,\r\n          this.pageParams\r\n        )\r\n        .then(response => {\r\n          let data = response.data;\r\n          if (this_._oldPermission) {\r\n            // 不存在的字段，添加进来\r\n            this.deepMerge(data, this_._oldPermission);\r\n          }\r\n          this_.handleData(data);\r\n        });\r\n    },\r\n    deepMerge: function(obj1, obj2) {\r\n      var key;\r\n      for (key in obj2) {\r\n        // 如果target(也就是obj1[key])存在，且是对象的话再去调用deepMerge，否则就是obj1[key]里面没这个对象，需要与obj2[key]合并\r\n        if (!obj2.hasOwnProperty(key)) continue;\r\n        obj1[key] =\r\n          obj1[key] && obj1[key].toString() === \"[object Object]\"\r\n            ? this.deepMerge(obj1[key], obj2[key])\r\n            : (obj1[key] = obj2[key]);\r\n      }\r\n      return obj1;\r\n    },\r\n    emptyAll: function() {\r\n      let this_ = this;\r\n      req\r\n        .get(\r\n          window.context.form +\r\n            \"/form/rights/v1/emptyAll?flowKey=\" +\r\n            this.pageParams.flowKey\r\n        )\r\n        .then(response => {\r\n          let data = response.data;\r\n          if (data.state) {\r\n            this_.$message.success(data.message);\r\n            this_.showDialog(this.pageParams);\r\n          } else {\r\n            this_.$message.fail(data.message);\r\n          }\r\n        });\r\n    },\r\n    getDefaultByFormKey: function() {\r\n      let this_ = this;\r\n      req\r\n        .post(\r\n          window.context.form +\r\n            \"/form/rights/v1/getDefaultByFormKey?type=1&formKey=\" +\r\n            this.pageParams.formKey,\r\n          this.pageParams\r\n        )\r\n        .then(response => {\r\n          let data = response.data;\r\n          this_.handleData(data);\r\n        });\r\n    },\r\n    hideOrShowAll: function() {\r\n      if (this.checkIsAllhide()) {\r\n        this.hiddenAll();\r\n      } else {\r\n        this.editAll();\r\n      }\r\n    },\r\n    hiddenAll: function() {\r\n      this.clickAll(\"read\", \"none\");\r\n      this.clickAll(\"write\", \"none\");\r\n      this.clickAll(\"required\", \"none\");\r\n    },\r\n    editAll: function() {\r\n      this.clickAll(\"read\", \"everyone\");\r\n      this.clickAll(\"write\", \"none\");\r\n      this.clickAll(\"required\", \"none\");\r\n    },\r\n    /**\r\n     * 批量权限选择 rightType：权限类型 只读-\"read\" 编辑-\"write\" 必填-\"required\"\r\n     */\r\n    clickAll: function(rightType, type) {\r\n      for (let index = 0; index < this.subTableList.length; index++) {\r\n        //子表\r\n        if(!this.subTableList[index].main && this.subTableList[index].ctrlType!=\"dataView\"){\r\n          if(rightType == \"write\" && type == \"none\"){\r\n            this.subTableList[index].rights.add = false;\r\n            this.subTableList[index].rights.del = false;\r\n          }else if(rightType == \"write\" && type == \"everyone\"){\r\n            this.subTableList[index].rights.add = true;\r\n            this.subTableList[index].rights.del = true;\r\n          }\r\n        }\r\n        const fields = this.subTableList[index].fields;\r\n        for (let j = 0, f; (f = fields[j++]); ) {\r\n          f[rightType] = [{ type: type }];\r\n          //当只读，编辑和必填是所有人时，将只读点击无时，自动将编辑和必填也设置为无\r\n          if(rightType=='read' && type=='none'){\r\n            f['write']=[{ checked: true, title: \"无\", type: \"none\" }];\r\n            f['required']=[{ checked: true, title: \"无\", type: \"none\" }];\r\n          }\r\n          //当编辑和必填是所有人时，将编辑点击无时，自动将必填也设置为无\r\n          if(rightType=='write' && type=='none'){\r\n            f['required']=[{ checked: true, title: \"无\", type: \"none\" }];\r\n          }\r\n        }\r\n      }\r\n    },\r\n    checkIsAllhide: function() {\r\n      for (let index = 0; index < this.subTableList.length; index++) {\r\n        const fields = this.subTableList[index].fields;\r\n        if (fields && fields.constructor == Array) {\r\n          for (var j = 0; j < fields.length; j++) {\r\n            var file = fields[j];\r\n            if (this.checkIshide(file) == \"否\") {\r\n              return true;\r\n            }\r\n          }\r\n        }\r\n      }\r\n      return false;\r\n    },\r\n    checkIshide: function(file) {\r\n      let desc = \"是\";\r\n      if (file && file.read && file.read.length > 0) {\r\n        if (file.read[0].type != \"none\") {\r\n          desc = \"否\";\r\n          return desc;\r\n        }\r\n      }\r\n      if (file && file.required && file.required.length > 0) {\r\n        if (file.required[0].type != \"none\") {\r\n          desc = \"否\";\r\n          return desc;\r\n        }\r\n      }\r\n      if (file && file.write && file.write.length > 0) {\r\n        if (file.write[0].type != \"none\") {\r\n          desc = \"否\";\r\n          return desc;\r\n        }\r\n      }\r\n      return desc;\r\n    },\r\n    hideColumn: function(field) {\r\n      if (this.checkIshide(field) == \"否\") {\r\n        field.read = [{ type: \"none\" }];\r\n        field.required = [{ type: \"none\" }];\r\n        field.write = [{ type: \"none\" }];\r\n      } else {\r\n        field.read = [{ type: \"everyone\" }];\r\n        field.required = [{ type: \"none\" }];\r\n        field.write = [{ type: \"everyone\" }];\r\n      }\r\n    },\r\n    fieldDialog: function(field, rightType) {\r\n      this.curAuthieldObj[\"f\"] = field;\r\n      this.curAuthieldObj[\"t\"] = rightType;\r\n      let tmp = JSON.parse(JSON.stringify(field[rightType]));\r\n      let conf = {\r\n        right: tmp,\r\n        permissionList: this._oldPermission.permissionList\r\n      };\r\n      this.$refs.flowFormFiledAuth.showDialog(conf);\r\n    },\r\n    filedAuthConfirm: function(conf) {\r\n      this.curAuthieldObj[\"f\"][this.curAuthieldObj[\"t\"]] = conf;\r\n    },\r\n    rightToDesc: function(right) {\r\n      let desc = \"\";\r\n      right.forEach(element => {\r\n        if (desc) {\r\n          desc += \" 和 \";\r\n        }\r\n        let str = this.permissionList[element.type];\r\n        if (element.name) {\r\n          str += \":\" + element.name;\r\n        } else if (element.id) {\r\n          str += \":\" + element.id;\r\n        }\r\n        desc += str;\r\n      });\r\n      return desc;\r\n    },\r\n    indexOf: function(data, val) {\r\n      if (data.indexOf(val) != -1) {\r\n        return true;\r\n      }\r\n      return false;\r\n    },\r\n    saveAuth: function() {\r\n      let param = JSON.parse(JSON.stringify(this.pageParams));\r\n      // 提交前拼装回json\r\n      param.permission = {};\r\n      param.permission.table = {};\r\n      var tmp = JSON.parse(JSON.stringify(this.subTableList));\r\n      for (const iterator of tmp) {\r\n        let _fields = {};\r\n        for (const f of iterator.fields) {\r\n          _fields[f.fieldName] = f;\r\n        }\r\n        iterator.fields = _fields;\r\n        param.permission.table[iterator.tableName] = iterator;\r\n      }\r\n      //如果为实例情况，清除读写权限。\r\n      if (param.type == \"2\") {\r\n        this.handPermissionData(param.permission);\r\n      }else{\r\n        param.permission.subRowAuth = this.subRowAuth;\r\n      }\r\n      param.permission = JSON.stringify(param.permission);\r\n      let this_ = this;\r\n      req\r\n        .post(window.context.form + \"/form/rights/v1/save\", param)\r\n        .then(response => {\r\n          let data = response.data;\r\n          if (data.state) {\r\n            this_.$message.success(data.message);\r\n            this_.handleClose();\r\n          } else {\r\n            this_.$message.fail(data.message);\r\n          }\r\n        });\r\n    },\r\n    handPermissionData: function(json) {\r\n      //param.permission\r\n      let tableJson = json.table;\r\n      //遍历表\r\n      for (let key in tableJson) {\r\n        //获取字段\r\n        let fields = tableJson[key].fields;\r\n        //遍历字段\r\n        for (let fieleName in fields) {\r\n          //字段信息\r\n          let field = fields[fieleName];\r\n          delete field.write;\r\n          delete field.required;\r\n        }\r\n      }\r\n      let opinions = json.opinion;\r\n      if (!opinions) return;\r\n\r\n      for (var key in opinions) {\r\n        let opinion = opinions[key];\r\n        delete opinion.write;\r\n        delete opinion.required;\r\n      }\r\n    },\r\n    handleData: function(data) {\r\n      let tableSn = data.tableSn;\r\n      data = data.json;\r\n      this.subRowAuth = data.subRowAuth || {};\r\n      this.subTableList = [];\r\n      tableSn.forEach(obj => {\r\n        let temp = data.table[obj.name_];\r\n        if (temp) {\r\n          temp.tableName = obj.name_;\r\n          temp.grade = obj.grade_;\r\n          let tempArr = [];\r\n          for (let fieldName in temp.fields) {\r\n            let fieldTemp = temp.fields[fieldName];\r\n            fieldTemp.fieldName = fieldName;\r\n            tempArr.push(fieldTemp);\r\n          }\r\n          tempArr.sort(function(a, b) {\r\n            return a.sn - b.sn;\r\n          });\r\n          temp.fields = tempArr;\r\n          this.subTableList.push(temp);\r\n        }\r\n      });\r\n    }\r\n  }\r\n};\r\n",null]}