Sfoglia il codice sorgente

快速构建,增加部门机构、角色填写、删除、数据权限

fangq 4 anni fa
parent
commit
8a20d43834

+ 9 - 0
src/api/bank/autostruct.js

@@ -22,6 +22,15 @@ export const getDetail = (id) => {
   })
 }
 
+export const getSelectAndPermissionByDept = () => {
+  return request({
+    url: '/api/bank/autostruct/getSelectAndPermissionByDept',
+    method: 'get',
+    params: {
+    }
+  })
+}
+
 export const remove = (ids) => {
   return request({
     url: '/api/bank/autostruct/remove',

+ 10 - 0
src/api/system/user.js

@@ -152,3 +152,13 @@ export const getUserList = () => {
 }
 
 
+export const getUserListDeptChild = () => {
+  return request({
+    url: '/api/blade-user/list-dept-child',
+    method: 'get',
+    params: {
+    }
+  })
+}
+
+

+ 7 - 0
src/components/common/cy-form-design.vue

@@ -119,6 +119,13 @@
     },
     methods: {
       handleSubmit(value){
+        if (!value){
+          return;
+        }
+        if (value.column.length > 30){
+          this.$message.warning("表單字段不能超過30個!");
+          return;
+        }
         let jsonStr = JSON.stringify(value, (k,v) => {
           if(typeof v === "function"){
             return v.toString();

+ 0 - 1
src/components/common/keypwd-sure.vue

@@ -204,7 +204,6 @@
 
     },
     mounted() {
-      debugger
       this.initTypeDict();
     },
     methods: {

+ 13 - 6
src/views/bank/autodata.vue

@@ -35,7 +35,7 @@
                      size="small"
                      icon="el-icon-delete"
                      plain
-                     v-if="permission.autodata_delete"
+                     v-if="deleteBatch"
                      @click="handleDelete">刪 除
           </el-button>
         </template>
@@ -47,7 +47,7 @@
 <script>
   import {getList, getDetail, add, update, remove} from "@/api/bank/autodata";
   import {mapGetters} from "vuex";
-  import {getList as getTables} from "@/api/bank/autostruct";
+  import {getSelectAndPermissionByDept} from "@/api/bank/autostruct";
   import {opStr2opObj} from "../../api/bank/autostruct";
 
   export default {
@@ -60,6 +60,7 @@
         form: {},
         query: {},
         loading: true,
+        deleteBatch: false,
         page: {
           pageSize: 10,
           currentPage: 1,
@@ -108,9 +109,9 @@
     },
     methods: {
       initTableList(){
-        getTables(1, 500, {}).then(res => {
+        getSelectAndPermissionByDept().then(res => {
           const data = res.data.data;
-          this.tableList = data.records;
+          this.tableList = data;
           if (this.tableList.length > 0){
             this.value = this.tableList[0].id;
             this.selectTable(this.value)
@@ -120,12 +121,18 @@
       selectTable(value){
         let _this = this;
         this.show = false;
-        let table = this.getItemById(value);
-        let option = opStr2opObj(table.columns);
+        let tableStruct = this.getItemById(value);
+        let option = opStr2opObj(tableStruct.columns);
+        option.addBtn = tableStruct.canWrite;
+        _this.deleteBatch = tableStruct.isManageRole;
+        option.delBtn = tableStruct.isManageRole;
+        option.excelBtn = tableStruct.isManageRole;
+        option.editBtn = tableStruct.isManageRole;
         option.viewBtn = true;
         option.searchMenuSpan = 6;
         option.column.forEach((item, index) => {
           item.search = index < 4 && item.type != 'title';
+          item.editDisabled = true;
           if (item.dicUrl){
             item.dicFormatter = (res) => {
               res.data.forEach(item => {item.disabled = item.isSealed == 1;})

+ 80 - 3
src/views/bank/autostruct.vue

@@ -51,6 +51,10 @@
   import {getList, getDetail, add, update, remove} from "@/api/bank/autostruct";
   import {mapGetters} from "vuex";
   import CyFormDesign from "../../components/common/cy-form-design";
+  import {getDeptTree, getTree} from "@/api/system/dept";
+  import {getRoleTree} from "@/api/system/role";
+  import website from '@/config/website';
+  import {opStr2opObj} from "../../api/bank/autostruct";
 
   export default {
     components: {CyFormDesign},
@@ -83,7 +87,8 @@
             {
               label: "表名",
               prop: "name",
-              span: 24,
+              search: true,
+              span: 12,
               rules: [{
                 required: true,
                 message: "請輸入表名",
@@ -93,15 +98,75 @@
             {
               label: "表單設計",
               prop: "design",
-              span: 24,
+              span: 12,
               hide: true,
               viewDisplay: false,
               formslot: true,
             },
+            {
+              label: "填寫部門",
+              prop: "deptId",
+              type: "tree",
+              multiple: true,
+              hide: true,
+              span: 12,
+              dataType: "string",
+              dicData: [],
+              props: {
+                label: "title"
+              },
+              checkStrictly: true,
+              rules: [{
+                required: true,
+                message: "請選擇填寫部門",
+                trigger: "click"
+              }]
+            },
+            {
+              label: "填寫角色",
+              prop: "roleId",
+              hide: true,
+              // search: true,
+              multiple: true,
+              span: 12,
+              type: "tree",
+              dataType: "string",
+              dicData: [],
+              props: {
+                label: "title"
+              },
+              checkStrictly: true,
+              rules: [{
+                required: false,
+                message: "請選擇填寫角色",
+                trigger: "click"
+              }]
+            },
+            {
+              label: "管理員角色",
+              prop: "manageRoleId",
+              hide: true,
+              // search: true,
+              multiple: true,
+              span: 24,
+              type: "tree",
+              dataType: "string",
+              dicData: [],
+              props: {
+                label: "title"
+              },
+              checkStrictly: true,
+              rules: [{
+                required: true,
+                message: "請選擇填寫角色",
+                trigger: "click"
+              }]
+            },
             {
               label: "列結構",
               prop: "columns",
               hide: true,
+              disabled: true,
               type: "textarea",
               span: 24,
               rules: [{
@@ -127,7 +192,7 @@
       };
     },
     computed: {
-      ...mapGetters(["permission"]),
+      ...mapGetters(["permission", "userInfo"]),
       permissionList() {
         return {
           addBtn: this.vaildData(this.permission.autostruct_add, false),
@@ -144,6 +209,18 @@
         return ids.join(",");
       }
     },
+    mounted() {
+      getDeptTree().then(res => {
+        const column = this.findObject(this.option.column, "deptId");
+        let treeData = getTree(res.data.data, this.userInfo.dept_id);
+        column.dicData = treeData;
+      });
+      getRoleTree(website.tenantId).then(res => {
+        const column = this.findObject(this.option.column, "roleId");
+        column.dicData = res.data.data;
+        this.findObject(this.option.column, "manageRoleId").dicData = res.data.data;
+      });
+    },
     methods: {
       designCallback(value){
         this.designVisible = false;

+ 4 - 4
src/views/bank/postchange.vue

@@ -343,7 +343,7 @@
   import { getCurrentDept } from "@/api/system/dept";
   import {dateFormat} from "../../util/date";
   import FlowSettings from "../../components/common/flow-settings";
-  import {getPage as getUserList} from "@/api/system/user";
+  import {getUserListDeptChild} from "@/api/system/user";
   import {getDeptTree, getTree} from "@/api/system/dept";
   import {getStandardByCode} from "@/api/bank/handoverstandard";
   import SelectDialogUser from "../../components/select-dialog/select-dialog-user";
@@ -934,8 +934,8 @@
     },
     created() {
       const _this = this;
-      getUserList(1,500, {}).then(res => {
-        const data = res.data.data.records;
+      getUserListDeptChild().then(res => {
+        const data = res.data.data;
         for (let i = 0; i < data.length; i++) {
           let item = data[i];
           item.text = item.name + '-' + item.ehr;
@@ -1313,7 +1313,7 @@
             }
           }else{
             _this.form = data;
-            if (_this.form.previousId){
+            if (_this.form.previousId && _this.form.previousId > 0){
               getDetail(_this.form.previousId).then(res => {
                 let preData = res.data.data;
                 let preholderStr = preData.holder.replace(/holder/ig, 'preholder');

+ 5 - 0
src/views/system/user.vue

@@ -201,9 +201,12 @@
   export default {
     components: {LoginTest},
     data() {
+      const pwdRule = /^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$).{6,}$/;
       const validatePass = (rule, value, callback) => {
         if (value === '') {
           callback(new Error('請輸入密碼'));
+        } else if (!pwdRule.test(value)) {
+          callback(new Error("長度至少為6,且需包含數字、英文、符號任2款組合"));
         } else {
           callback();
         }
@@ -211,6 +214,8 @@
       const validatePass2 = (rule, value, callback) => {
         if (value === '') {
           callback(new Error('請再次輸入密碼'));
+        } else if (!pwdRule.test(value)) {
+          callback(new Error("長度至少為6,且需包含數字、英文、符號任2款組合"));
         } else if (value !== this.form.password) {
           callback(new Error('兩次輸入密碼不一致!'));
         } else {