فهرست منبع

修改权限自助 + bugFix

林倩 3 سال پیش
والد
کامیت
45d13f7be0

+ 2 - 2
config/dev.env.js

@@ -34,8 +34,8 @@ module.exports = merge(prodEnv, {
     PROXY_TABLE: JSON.stringify({
         "/dcucauth": {
             // target: "http://10.11.1.237:8861"
-            target: "http://10.254.11.203:8861"
-            //  target: "http://192.168.10.2:8871"
+            // target: "http://10.254.11.203:8861"
+             target: "http://192.168.10.2:8871"
             //  target: "http://192.168.6.133:3471"
 
         }

+ 8 - 22
package-lock.json

@@ -4112,7 +4112,6 @@
       "version": "2.15.3",
       "resolved": "http://192.168.6.13:8082/repository/npm_all/element-ui/-/element-ui-2.15.3.tgz",
       "integrity": "sha1-VRCKuCo7zGRuewVwhxxIupYwBlI=",
-      "dev": true,
       "requires": {
         "async-validator": "~1.8.1",
         "babel-helper-vue-jsx-merge-props": "^2.0.0",
@@ -15174,18 +15173,18 @@
       }
     },
     "ui-component-v4": {
-      "version": "1.2.41",
-      "resolved": "http://192.168.6.13:8082/repository/npm_all/ui-component-v4/-/ui-component-v4-1.2.41.tgz",
-      "integrity": "sha512-PWyWCEMjhGIo6ErYQWUXcP49DyLxe0l9pc0kapzxODvR3+LDhhIy4a7eIkGiRNRifSENvLLbVYWttooJEyGvEQ==",
+      "version": "1.2.19",
+      "resolved": "http://192.168.6.13:8082/repository/npm_all/ui-component-v4/-/ui-component-v4-1.2.19.tgz",
+      "integrity": "sha512-H1CGe3Ug8w5NNrlq+eNaFJ1wyTADRFDTAvHXWrs5mfZJFoNCkKwmL6/3AvLapFreR2K1+crqgb7GXabWmmRXDg==",
       "requires": {
         "async-validator": "~1.8.1",
         "babel-helper-vue-jsx-merge-props": "^2.0.0",
         "dayjs": "^1.8.35",
         "deepmerge": "^1.2.0",
         "diff-match-patch": "^1.0.4",
-        "element-ui": "2.11.1",
+        "element-ui": "^2.11.1",
         "jquery": "^3.4.1",
-        "lodash": "^4.17.21",
+        "lodash": "^4.17.11",
         "mime": "^2.4.0",
         "normalize-wheel": "^1.0.1",
         "prettier": "^1.18.2",
@@ -15196,19 +15195,6 @@
         "xe-utils": "^1.9.4"
       },
       "dependencies": {
-        "element-ui": {
-          "version": "2.11.1",
-          "resolved": "http://192.168.6.13:8082/repository/npm_all/element-ui/-/element-ui-2.11.1.tgz",
-          "integrity": "sha1-K2f57uPtouaISHPBxYnL4w2anWA=",
-          "requires": {
-            "async-validator": "~1.8.1",
-            "babel-helper-vue-jsx-merge-props": "^2.0.0",
-            "deepmerge": "^1.2.0",
-            "normalize-wheel": "^1.0.1",
-            "resize-observer-polyfill": "^1.5.0",
-            "throttle-debounce": "^1.0.1"
-          }
-        },
         "mime": {
           "version": "2.5.2",
           "resolved": "http://192.168.6.13:8082/repository/npm_all/mime/-/mime-2.5.2.tgz",
@@ -15536,9 +15522,9 @@
       }
     },
     "viewerjs": {
-      "version": "1.10.0",
-      "resolved": "http://192.168.6.13:8082/repository/npm_all/viewerjs/-/viewerjs-1.10.0.tgz",
-      "integrity": "sha1-bc1pO1SN1tfINxsZMTbR6uGAYh8="
+      "version": "1.10.1",
+      "resolved": "http://192.168.6.13:8082/repository/npm_all/viewerjs/-/viewerjs-1.10.1.tgz",
+      "integrity": "sha1-B0me0EPQop4wArkPVcWyKL0adCw="
     },
     "vinyl": {
       "version": "0.5.3",

+ 1 - 1
package.json

@@ -41,7 +41,7 @@
     "postcss-salad": "^2.0.1",
     "request": "^2.88.2",
     "screenfull": "^4.0.0",
-    "ui-component-v4": "^1.2.41",
+    "ui-component-v4": "^1.2.19",
     "ui-gojs": "^2.1.9",
     "ui-jz-v4-common": "^1.2.222",
     "vue": "2.6.10",

+ 3 - 3
src/api/permission-selfhelp-manage.js

@@ -128,10 +128,10 @@ export function getFlowDefine(applyType) {
   });
 }
 // 判断应用功能菜单是否重复申请
-export function checkAppFunRepeat(data) {
+export function checkAppFunRepeat(params) {
   return request({
      url: `${baseUrl}/funApplyRepeatCheck`,
-     method: "POST",
-     data
+     method: "GET",
+     params
   })
 }

+ 0 - 6
src/pages/common/transfer-tree/mixin.js

@@ -94,26 +94,20 @@ export default {
     unselectedKeyValue() {
       // 初始化
       let _treeData = _.cloneDeep(this.dataSource);
-      console.log("allkeys", this.allKeyValue(true).length);
       let _selectedKey = _.difference(this.allKeyValue(true), this.selectedKeyValue);
-      console.log("_selectedKey", _selectedKey.length);
       let self = this;
-
       // 递归获取选中的 key 值(包含父级的)
       function getSelectedKeyValue(data, key) {
         // 初始化数据
         let _treeData = _.cloneDeep(data);
-
         _treeData.map(base => {
           // 检测子节点数据是否存在
           if (base[self.childrenName] && base[self.childrenName].length > 0) {
             // 若存在,则进行递归,获取子节点
             getSelectedKeyValue(base[self.childrenName], base[self.valueName]);
           }
-
           return base;
         });
-
         // 计算同级的数量
         let _count = 0;
         _selectedKey.forEach(item => {

+ 1 - 1
src/pages/empower-manage/institutional-quotas-manage/edit.vue

@@ -525,7 +525,7 @@ export default {
                 res.dfpNum = 0;
                 res.initNum = 0;
                 res.initNumOld = 0;
-                if (res.parent == true) {
+                if (res.parent == true || res.isParent == true) {
                     res.hasChildren = true;
                 }
                 res.id = res.id ? res.id : this.treeFirst;

+ 23 - 9
src/pages/permission-selfhelp-manage/component/app-func-form.vue

@@ -84,20 +84,16 @@ export default {
       this.$emit('close');
     },
     async handleSubmit() {
-      // 申请访问的资源,剔除已经申请过的资源
+      // 申请访问的资源,剔除已经申请过的资源,不包含父级节点
       const applyKeys = this.selectedValue.filter((item) => !this.havefunIdsOnlyChild.includes(item));
+      // 将节点转成文字
       const approveContent = this.nodeTransferLabel(applyKeys, this.$refs.transferTree.targetData);
       // 撤销的资源, 已有资源与已选资源作比对
       const cancelKeys = this.havefunIdsOnlyChild.filter((item) => !this.selectedValue.includes(item));
       const cancelContent = this.nodeTransferLabel(cancelKeys, this.data);
-      // 获取目标树所有的key,包含父节点
+      // 已选节点 = 获取目标树所有的key,包含父节点
       const allKeys = this.$refs.transferTree.allKeyValue(false, this.$refs.transferTree.targetData);
-      // 剔除该用户已经拥有的资源
-      // const validRepeatNode = resourceInfos
-      //   .filter((item) => !this.havefunIds.includes(item.funId))
-      //   .map((item) => item.funId);
-      // 实际保存的节点,剔除应用节点
-      const resourceInfos = allKeys
+      const allResourceInfo = allKeys
         .map((item) => this.$refs.transferTree.$refs['to-tree'].getNode(item).data)
         .map((item) => {
           return {
@@ -106,12 +102,30 @@ export default {
           };
         })
         .filter((item) => item.appId);
+      // 新增的节点 = 剔除该用户已经拥有的资源
+      const resourceInfos = allResourceInfo.filter((item) => !this.havefunIds.includes(item.funId));
+     
+      // 撤销的节点 = 已有节点 - (已选节点 - 新增节点 )
+      // 已有的节点去除撤销的节点,包含父节点
+      const resourceKeys = allResourceInfo.map(item => item.funId);
+      const haveFuncKeysExcludeCancel = allResourceInfo.filter(item => !resourceKeys.includes(item)).map(item => item.funId);
+     const  cancelResourceKeys = this.havefunIds.filter(item => !haveFuncKeysExcludeCancel.includes(item));
+      const cancelResourceInfos = cancelResourceKeys
+        .map((item) => this.$refs.transferTree.$refs['from-tree'].getNode(item).data)
+        .map((item) => {
+          return {
+            appId: item.appId,
+            funId: item.id
+          };
+        })
+        .filter((item) => item.appId);
+
       // 已选资源有变更,则可以直接保存,无变更,则需要至少选中一条
       // 判断有无变更的标准:resourceInfos的funId 与getSetFunIdsByUser方法返回的已选资源id作匹配
       if (applyKeys.length == 0 && cancelKeys.length == 0) {
         this.$message.warning('已选资源无变更。');
       } else {
-        this.$emit('success', approveContent, cancelContent, this.selectedValue, resourceInfos);
+        this.$emit('success', approveContent, cancelContent, this.selectedValue, resourceInfos, cancelResourceInfos );
       }
     },
 

+ 78 - 18
src/pages/permission-selfhelp-manage/component/basic-form.vue

@@ -100,7 +100,7 @@
         </dg-col>
         <dg-col :span="12" v-if="isDetail">
           <el-form-item label="创建时间:">
-            {{ sizeForm.createTime }} 
+            {{ sizeForm.createTime }}
           </el-form-item>
         </dg-col>
         <dg-col :span="12" v-if="sizeForm.applyType == 'SERVICE_AUTH'">
@@ -119,7 +119,9 @@
           <el-form-item label="审批内容:" class="self-form-item" prop="flowContent">
             <div style="display: flex" v-if="!isDetail">
               <el-input type="textarea" :autosize="{ minRows: 5 }" :value="flowContentStr" :disabled="true"></el-input>
-              <dg-button style="margin-left: 10px" @click="handleChoice" v-if="sizeForm.applyType">选择</dg-button>
+              <dg-button style="margin-left: 10px" @click="handleChoice" v-if="sizeForm.applyType && !this.repeatApply"
+                >选择</dg-button
+              >
             </div>
             <div v-else>
               {{ flowContentStr }}
@@ -201,7 +203,7 @@
                     range-separator="至"
                     start-placeholder="开始日期"
                     end-placeholder="结束日期"
-                    value-format="yyyy-MM-dd HH:mm:ss"
+                    value-format="yyyy-MM-dd"
                     v-show="sizeForm.permissionValidType !== '02'"
                     :picker-options="pickerOptions"
                     clearable
@@ -252,6 +254,19 @@
         <dg-button type="primary" @click="handleSubmit">提交</dg-button>
       </div>
     </div>
+    <!-- 重复申请提示框 -->
+    <dg-dialog title="提示" :visible.sync="visible" width="450px" :modal="false">
+      <p class="repeatContent">
+        您存在待审批的审批单,审批单号:
+        <span @click="handleOpenDetail">
+          {{ repeatApply }}
+        </span>
+        ,无法申请,请等待审批后再进行资源申请。
+      </p>
+      <span slot="footer" class="dialog-footer">
+        <dg-button @click="visible = false">关闭</dg-button>
+      </span>
+    </dg-dialog>
   </div>
 </template>
 
@@ -356,7 +371,9 @@ export default {
           cancelText: '申请撤销服务:'
         }
       },
-      needFilter: true
+      needFilter: true,
+      visible: false,
+      repeatApply: ''
     };
   },
   components: {},
@@ -379,19 +396,40 @@ export default {
   watch: {
     'sizeForm.applyType': {
       handler(val) {
-        let component;
-        if (val == 'DATA_AUTH') {
-          component = dataSourceForm;
-        } else if (val == 'SERVICE_AUTH') {
-          component = serviceSourceForm;
-        } else {
-          component = appFuncForm;
+        if (val) {
+          let component;
+          if (val == 'DATA_AUTH') {
+            component = dataSourceForm;
+          } else if (val == 'SERVICE_AUTH') {
+            component = serviceSourceForm;
+          } else {
+            component = appFuncForm;
+          }
+          this.applyContentCom = component;
         }
-        this.applyContentCom = component;
       }
     }
   },
   methods: {
+    handleOpenDetail() {
+      const layer = this.$dgLayer({
+        title: '详情',
+        props: {
+          applyOrdNo: this.repeatApply,
+          type: 'detail'
+        },
+        content: require('./detail.vue'),
+        area: ['1280px', '900px'],
+        on: {
+          success(params) {
+            layer.close(layer.dialogIndex);
+          },
+          close() {
+            layer.close(layer.dialogIndex);
+          }
+        }
+      });
+    },
     // 获取流程名称
     getProcessName(val) {
       Api.getFlowDefine(val).then((res) => {
@@ -409,8 +447,21 @@ export default {
         }
       });
     },
-    // 切换审批类型,清空审批内容
+    // 切换审批类型,判断是否存在未审批的单,清空审批内容
     handleChangeApplyType(val) {
+      const params = {
+        applyType: val,
+        applicantIdcard: this.$store.getters.user.idcard
+      };
+      // Api.checkAppFunRepeat(params).then((res) => {
+      //   const { result, msg } = res.data;
+      //   if (result == '300') {
+      //     this.repeatApply = msg;
+      //     this.visible = true;
+      //   } else {
+      //     this.repeatApply = '';
+      //   }
+      // });
       this.sizeForm.flowContent = '';
       this.sizeForm.resourceInfos = [];
       this.applySelectKeys = [];
@@ -448,11 +499,12 @@ export default {
         params['workFlow'] = otherInfo;
         api = 'savePermissionApply';
       } else {
-        const { permissionValidType, operateType, applicantPhoneNo, applyReason, startTime, endTime, flowContent } =
+        const { permissionValidType, operateType, applicantPhoneNo, applyReason, startTime, endTime, flowContent,delResourceInfos } =
           this.sizeForm;
         // 只选可编辑的字段
         params = {
           resourceInfos,
+          delResourceInfos,
           permissionValidType,
           operateType,
           applicantPhoneNo,
@@ -490,8 +542,9 @@ export default {
         content: this.applyContentCom,
         area: ['1200px', '700px'],
         on: {
-          success(visitResourceName, cancelResourceName, selectKeys, resourceInfos = []) {
+          success(visitResourceName, cancelResourceName, selectKeys, resourceInfos = [], delResourceInfos = []) {
             vm.sizeForm.resourceInfos = resourceInfos;
+             vm.sizeForm.delResourceInfos = delResourceInfos;
             vm.applySelectKeys = selectKeys;
             const visitorName =
               vm.sizeForm.applyType !== 'SERVICE_AUTH' ? vm.sizeForm.applicantName : vm.sizeForm.applyId;
@@ -549,13 +602,13 @@ export default {
         needFlowInfo: true
       };
       Api.applyDetail(params).then((res) => {
-        const { workFlow, resourceInfos, ...otherInfo } = res.data.content;
+        const { workFlow, resourceInfos, existResourceInfos , ...otherInfo } = res.data.content;
         this.sizeForm = {
           ...workFlow,
           resourceInfos,
           ...otherInfo
         };
-        this.applySelectKeys = this.sizeForm.resourceInfos.map((item) => item.funId);
+        this.applySelectKeys = [...resourceInfos, ...existResourceInfos].map((item) => item.funId);
         this.show = true;
       });
     }
@@ -581,6 +634,7 @@ export default {
         startTime: '',
         endTime: '',
         resourceInfos: [],
+        delResourceInfos: [],
         applyId: '', // 应用方
         userType: '',
         userName: '',
@@ -598,5 +652,11 @@ export default {
 };
 </script>
 <style scoped lang="scss">
-// @import './index.scss';
+.repeatContent {
+  color: rgba(0, 0, 0, 0.85);
+  span {
+    color: #1890ff;
+    cursor: pointer;
+  }
+}
 </style>

+ 1 - 2
src/pages/permission-selfhelp-manage/index.vue

@@ -49,7 +49,7 @@
             <el-tooltip content="编辑" effect="dark" placement="top-end" v-if="row.showEdit">
               <i class="el-icon-edit" @click="handleApplyPermission(row.applyOrdNo)"></i>
             </el-tooltip>
-            <el-tooltip content="撤回" effect="dark" placement="top-end" v-if="row.showRecall">
+            <el-tooltip content="撤回" effect="dark" placement="top-end" v-if="row.showBack">
               <i class="el-icon-back" @click="handleRecall(row)"></i>
             </el-tooltip>
             <el-tooltip content="删除" effect="dark" placement="top-end">
@@ -61,7 +61,6 @@
     </Table>
   </div>
 </template>
-
 <script>
 import Table from '@/pages/common/table';
 import { tableHeader } from './DataConfig';