Forráskód Böngészése

Merge commit '93bb955de1e26de58ce211a60053878ef6a49809' into dev

刘恒 1 éve
szülő
commit
e1e8cef873

+ 119 - 2
src/views/FinancialManagement/ContractManagement/ContractManagement.vue

@@ -443,6 +443,7 @@
                   :label="item.accountName"
                   :label="item.accountName"
                 ></el-option>
                 ></el-option>
               </el-select>
               </el-select>
+              <el-button size="small" type="primary" @click="addAmount('1')">添加</el-button>
             </el-form-item>
             </el-form-item>
           </el-col>
           </el-col>
           <el-col :span="12">
           <el-col :span="12">
@@ -477,6 +478,8 @@
                   :label="item.accountName"
                   :label="item.accountName"
                 ></el-option>
                 ></el-option>
               </el-select>
               </el-select>
+              <el-button size="small" type="primary" @click="addAmount('2')">添加</el-button>
+
             </el-form-item>
             </el-form-item>
           </el-col>
           </el-col>
           <el-col :span="12">
           <el-col :span="12">
@@ -505,6 +508,7 @@
               "
               "
             >
             >
               <!-- <treeSelect :options="esmInsCompanyList" @getValue="getValue" /> -->
               <!-- <treeSelect :options="esmInsCompanyList" @getValue="getValue" /> -->
+              <!-- @select="handleSelect" -->
               <treeselect
               <treeselect
                 style="width: 600px"
                 style="width: 600px"
                 v-model="form.supplierIdList"
                 v-model="form.supplierIdList"
@@ -512,7 +516,7 @@
                 :options="esmInsCompanyList"
                 :options="esmInsCompanyList"
                 :normalizer="normalizer"
                 :normalizer="normalizer"
                 :multiple="true"
                 :multiple="true"
-                @select="handleSelect"
+               
                 :children-as-objects="true"
                 :children-as-objects="true"
                 flat
                 flat
               ></treeselect>
               ></treeselect>
@@ -932,7 +936,7 @@
                     :options="esmInsCompanyList"
                     :options="esmInsCompanyList"
                     :normalizer="normalizer"
                     :normalizer="normalizer"
                     :multiple="true"
                     :multiple="true"
-                    @select="handleSelect"
+                    
                     :children-as-objects="true"
                     :children-as-objects="true"
                     :disabled="true"
                     :disabled="true"
                   ></treeselect>
                   ></treeselect>
@@ -1104,6 +1108,19 @@
         >
         >
       </span>
       </span>
     </el-dialog>
     </el-dialog>
+    <expense-component
+      ref="expenseComponent"
+      :type="1"
+      :formData="accountFormData "
+      :formDataId="''"
+      :title="'新增账户信息'"
+      :dialogFormVisible="dialogFormVisible"
+      :nature_businessData="nature_businessData"
+      @resetForm="resetFormItem"
+      @submitForm="submitForm"
+      
+    ></expense-component>
+    <!-- @setDateInterval="setDateInterval" -->
   </div>
   </div>
 </template>
 </template>
 
 
@@ -1115,15 +1132,20 @@ import "@vue-office/docx/lib/index.css";
 import KtButton from "@/views/Core/KtButton";
 import KtButton from "@/views/Core/KtButton";
 
 
 import VueDocPreview from "vue-doc-preview";
 import VueDocPreview from "vue-doc-preview";
+import ExpenseComponent from "../ExpenseManagement/ExpenseComponent.vue"; //新增账户信息弹框
+
 export default {
 export default {
   components: {
   components: {
     VueOfficeDocx,
     VueOfficeDocx,
     VueOfficePdf,
     VueOfficePdf,
     KtButton,
     KtButton,
     VueDocPreview,
     VueDocPreview,
+    ExpenseComponent
   },
   },
   data() {
   data() {
     return {
     return {
+      dialogFormVisible: false, //弹出框状态
+
       fileDialog: false,
       fileDialog: false,
       showFileList: [],
       showFileList: [],
       formInline: {
       formInline: {
@@ -1135,6 +1157,19 @@ export default {
         internalCompanyId: "",
         internalCompanyId: "",
         supplierIdList: [],
         supplierIdList: [],
       },
       },
+      //账户信息form
+      accountFormData: {
+        outerFlag: "0", //账户类别
+        accountName: "", //户名
+        businessQuality: "", //营业性质
+        establishTime: "", //成立日期
+        invoicingAmount: 0, //开票额度
+        juridicalPerson: "", //法人
+        owned: "", //所属地
+        biller: "", //开票员
+        tentativeEstimates: "", //暂估值
+        simpleName: "", //账户简称
+      },
       messageDialog: false,
       messageDialog: false,
       tableDialog: false,
       tableDialog: false,
       multipleSelection: [],
       multipleSelection: [],
@@ -1255,6 +1290,9 @@ export default {
       contractStatus: "",
       contractStatus: "",
       shoulDisabled: true,
       shoulDisabled: true,
       isMessage: false,
       isMessage: false,
+      nature_businessData: [], //营业性质数据字典
+      accountType:"",//1为甲方  2为乙方
+
     };
     };
   },
   },
   watch: {
   watch: {
@@ -1283,9 +1321,84 @@ export default {
     this.getEsmInsCompany();
     this.getEsmInsCompany();
     this.getContractType();
     this.getContractType();
     this.getList();
     this.getList();
+    this.business("nature_business"); //营业性质字典
     this.resetForm = { ...this.form };
     this.resetForm = { ...this.form };
   },
   },
   methods: {
   methods: {
+    //数据字典
+    business(typeName) {
+      this.$api.dict.findByLableName(typeName).then((res) => {
+        this[typeName + "Data"] = res.data;
+      
+      });
+    },
+    //新增事件
+    addAmount(type) {
+      this.accountType=type
+      this.dialogFormVisible = true;
+      // this.resetFormItem();
+      this.accountFormData= {
+        outerFlag: "0", //账户类别
+        accountName: "", //户名
+        businessQuality: "", //营业性质
+        establishTime: "", //成立日期
+        invoicingAmount: 0, //开票额度
+        juridicalPerson: "", //法人
+        owned: "", //所属地
+        biller: "", //开票员
+        tentativeEstimates: "", //暂估值
+        simpleName: "", //账户简称
+      }
+    },
+     //提交
+     async submitForm() {
+      
+        //新增修改账户信息
+        let params = JSON.parse(JSON.stringify(this.accountFormData));
+       
+          //新增
+           this.$api.expense.insertAccount(params).then((res) => {
+            if (res.code == 200) {
+              this.$message({
+                message: "添加成功",
+                type: "success",
+              });
+              console.log(res.data)
+             
+              if(res.data.accountName==this.accountFormData.accountName){
+                if(this.accountType==1){
+                  this.form.externalCompaniesId=res.data.accountId
+                  this.getInvAccountList();
+
+                  this.resetFormItem();
+
+                }else{
+                  this.form.internalCompanyId=res.data.accountId
+                  this.getInvAccountList();
+
+                  this.resetFormItem();
+                }
+              }
+              //  this.getInvAccountList();
+              // this.getEsmInsCompany();
+             
+              // this.dialogFormVisible = false;
+            } else {
+              this.$message({
+                message: `添加失败, ${res.msg}`,
+                type: "error",
+              });
+            }
+          });
+        
+      
+    },
+     //弹框取消重置
+     resetFormItem() {
+      this.dialogFormVisible = false;
+    
+      this.$refs.expenseComponent.cleanForm();
+    },
     downLoadFile(row) {
     downLoadFile(row) {
       let name = row.fileName;
       let name = row.fileName;
       fetch(`${process.env.BASE_URL}${row.url}`)
       fetch(`${process.env.BASE_URL}${row.url}`)
@@ -1653,6 +1766,7 @@ export default {
         if (res.code === 200) {
         if (res.code === 200) {
           this.esmInsCompanyList = [...res.data];
           this.esmInsCompanyList = [...res.data];
         }
         }
+        
       });
       });
     },
     },
     //甲方/乙方选择
     //甲方/乙方选择
@@ -1705,10 +1819,13 @@ export default {
         if (res.code === 200) {
         if (res.code === 200) {
           this.accountList = [...res.data];
           this.accountList = [...res.data];
           const obj = {};
           const obj = {};
+         
           res.data.forEach((v, i) => {
           res.data.forEach((v, i) => {
             obj[v.accountId] = v.outerFlag;
             obj[v.accountId] = v.outerFlag;
+            
           });
           });
           this.accountObj = { ...obj };
           this.accountObj = { ...obj };
+          this.resetFormItem();
         }
         }
       });
       });
     },
     },

+ 419 - 0
src/views/Sys/RulePermissions.vue

@@ -0,0 +1,419 @@
+<template>
+    <div class="page-container">
+      <!--工具栏-->
+      <div
+        class="toolbar"
+        style="float: left; padding-top: 10px; padding-left: 50px"
+      >
+        <el-form :inline="true" :model="filters" :size="size">
+          <el-form-item>
+            <el-input v-model="filters.name" placeholder="角色名"></el-input>
+          </el-form-item>
+          <el-form-item>
+            <kt-button
+              icon="fa fa-search"
+              :label="$t('action.search')"
+              perms="sys:role:view"
+              type="primary"
+              @click="findPage(null)"
+            />
+          </el-form-item>
+          
+        </el-form>
+      </div>
+      <div class="conent-box" >
+        <!--表格内容栏-->
+        <kt-table
+          :height="500"
+          permsEdit="sys:role:edit"
+          permsDelete="sys:role:delete"
+          :highlightCurrentRow="true"
+          :stripe="false"
+          :data="pageResult"
+          :columns="columns"
+          :showBatchDelete="false"
+          @handleCurrentChange="handleRoleSelectChange"
+          @findPage="findPage"
+          @handleEdit="handleEdit"
+          @handleDelete="handleDelete"
+        >
+        </kt-table>
+       
+      
+      </div>
+     
+      <!-- </el-col> -->
+      <!--新增编辑界面-->
+      <el-dialog
+        v-dialogDrag
+        :title="operation ? '新增' : '编辑'"
+        width="40%"
+        :visible.sync="dialogVisible"
+        :close-on-click-modal="false"
+      >
+        <el-form
+          :model="dataForm"
+          label-width="80px"
+          :rules="dataFormRules"
+          ref="dataForm"
+          :size="size"
+        >
+          <el-form-item label="ID" prop="id" v-if="false">
+            <el-input
+              v-model="dataForm.id"
+              :disabled="true"
+              auto-complete="off"
+            ></el-input>
+          </el-form-item>
+          <el-form-item label="角色名" prop="name">
+            <el-input v-model="dataForm.name" auto-complete="off"></el-input>
+          </el-form-item>
+          <el-form-item label="备注 " prop="remark">
+            <el-input
+              v-model="dataForm.remark"
+              auto-complete="off"
+              type="textarea"
+            ></el-input>
+          </el-form-item>
+        </el-form>
+        <div slot="footer" class="dialog-footer">
+          <el-button :size="size" @click.native="dialogVisible = false">{{
+            $t("action.cancel")
+          }}</el-button>
+          <el-button
+            :size="size"
+            type="primary"
+            @click.native="submitForm"
+            :loading="editLoading"
+            >{{ $t("action.submit") }}</el-button
+          >
+        </div>
+      </el-dialog>
+    </div>
+  </template>
+  
+  <script>
+  import KtTable from "@/views/Core/KtTable";
+  import KtButton from "@/views/Core/KtButton";
+  import TableTreeColumn from "@/views/Core/TableTreeColumn";
+  import { format } from "@/utils/datetime";
+  export default {
+    components: {
+      KtTable,
+      KtButton,
+      TableTreeColumn,
+    },
+    data() {
+      return {
+        size: "small",
+        filters: {
+          name: "",
+        },
+        columns: [
+          { prop: "id", label: "ID", minWidth: 50 },
+          { prop: "name", label: "角色名", minWidth: 120 },
+          { prop: "remark", label: "备注", minWidth: 120 },
+          { prop: "createBy", label: "创建人", minWidth: 120 },
+          {
+            prop: "createTime",
+            label: "创建时间",
+            minWidth: 120,
+            formatter: this.dateFormat,
+          },
+          // {prop:"lastUpdateBy", label:"更新人", minWidth:100},
+          // {prop:"lastUpdateTime", label:"更新时间", minWidth:120, formatter:this.dateFormat}
+        ],
+        pageRequest: { pageNum: 1, pageSize: 10 },
+        pageResult: {},
+  
+        operation: false, // true:新增, false:编辑
+        dialogVisible: false, // 新增编辑界面是否显示
+        editLoading: false,
+        dataFormRules: {
+          name: [{ required: true, message: "请输入角色名", trigger: "blur" }],
+        },
+        // 新增编辑界面数据
+        dataForm: {
+          id: 0,
+          name: "",
+          remark: "",
+        },
+        selectRole: {},
+        menuData: [],
+        menuSelections: [],
+        menuLoading: false,
+        authLoading: false,
+        checkAll: false,
+        currentRoleMenus: [],
+        defaultProps: {
+          children: "children",
+          label: "name",
+        },
+        leveData: [],
+      };
+    },
+    created() {
+      this.getLeveData();
+    },
+    methods: {
+      getLeveData() {},
+      // 获取分页数据
+      findPage: function (data) {
+        if (data !== null) {
+          this.pageRequest = data.pageRequest;
+        }
+        this.pageRequest.columnFilters = {
+          name: { name: "name", value: this.filters.name },
+        };
+        this.$api.role
+          .findPage(this.pageRequest)
+          .then((res) => {
+            this.pageResult = res.data;
+            this.findTreeData();
+          })
+          .then(data != null ? data.callback : "");
+      },
+      // 批量删除
+      handleDelete: function (data) {
+        this.$api.role.batchDelete(data.params).then(data.callback);
+      },
+      // 显示新增界面
+      handleAdd: function () {
+        this.dialogVisible = true;
+        this.operation = true;
+        this.dataForm = {
+          id: 0,
+          name: "",
+          remark: "",
+        };
+      },
+      // 显示编辑界面
+      handleEdit: function (params) {
+        this.dialogVisible = true;
+        this.operation = false;
+        this.dataForm = Object.assign({}, params.row);
+      },
+      // 编辑
+      submitForm: function () {
+        this.$refs.dataForm.validate((valid) => {
+          if (valid) {
+            this.$confirm("确认提交吗?", "提示", {}).then(() => {
+              this.editLoading = true;
+              // let params = Object.assign({}, this.dataForm);
+              this.$api.role.save(this.dataForm).then((res) => {
+                this.editLoading = false;
+                if (res.code == 200) {
+                  this.$message({ message: "操作成功", type: "success" });
+                  this.dialogVisible = false;
+                  this.$refs["dataForm"].resetFields();
+                } else {
+                  this.$message({
+                    message: "操作失败, " + res.msg,
+                    type: "error",
+                  });
+                }
+                this.findPage(null);
+              });
+            });
+          }
+        });
+      },
+      // 获取数据
+      findTreeData: function () {
+        this.menuLoading = true;
+        this.$api.menu.findMenuTree().then((res) => {
+          this.menuData = res.data;
+          this.menuLoading = false;
+        });
+      },
+      // 角色选择改变监听
+      async handleRoleSelectChange(val) {
+        if (val == null || val.val == null) {
+          return;
+        }
+        this.selectRole = val.val;
+        if (val.val.id == 1 && val.val.name == "admin") {
+          let allMenus = [];
+          this.checkAllMenu(this.menuData, allMenus);
+          this.$refs.menuTree.setCheckedNodes(allMenus);
+          return;
+        }
+        let res = await this.$api.role.findRoleMenus({ roleId: val.val.id });
+        if (res.code == 200) {
+          this.$nextTick(() => {
+            const arr = [];
+            res.data.forEach((item) => {
+              if (
+                !this.$refs.menuTree.getNode(item.id).childNodes ||
+                !this.$refs.menuTree.getNode(item.id).childNodes.length
+              ) {
+                arr.push(item);
+              }
+            });
+            this.$refs.menuTree.setCheckedNodes(arr);
+          });
+        }
+      },
+      // 树节点选择监听
+      handleMenuCheckChange(data, check, subCheck) {
+        let checkNode = this.$refs.menuTree.getCheckedKeys();
+        console.log(checkNode.length);
+        let checked = checkNode.length;
+        if (checked !== 188) {
+          this.checkAll = false;
+        } else {
+          this.checkAll = true;
+        }
+        // this.$api.menu.findMenuTree().then((res) => {
+        //   let array = res.data;
+        //   function treeForeach(array, fun) {
+        //     array.forEach((data) => {
+        //       fun(data);
+        //       data.children && treeForeach(data.children, fun); // 遍历子树
+        //     });
+        //   }
+        //   treeForeach(array, (node) => {
+        //     console.log(node);
+        //   });
+        // });
+      },
+      // 重置选择
+      resetSelection() {
+        this.checkAll = false;
+        this.$refs.menuTree.setCheckedNodes([]);
+      },
+      // 全选操作
+      handleCheckAll() {
+        if (this.checkAll) {
+          let allMenus = [];
+          this.checkAllMenu(this.menuData, allMenus);
+          this.$refs.menuTree.setCheckedNodes(allMenus);
+        } else {
+          this.$refs.menuTree.setCheckedNodes([]);
+        }
+      },
+      // 递归全选
+      checkAllMenu(menuData, allMenus) {
+        menuData.forEach((menu) => {
+          allMenus.push(menu);
+          if (menu.children) {
+            this.checkAllMenu(menu.children, allMenus);
+          }
+        });
+      },
+      // 角色菜单授权提交
+      submitAuthForm() {
+        let roleId = this.selectRole.id;
+        if ("admin" == this.selectRole.name) {
+          this.$message({
+            message: "超级管理员拥有所有菜单权限,不允许修改!",
+            type: "error",
+          });
+          return;
+        }
+        this.authLoading = true;
+        let checkedNodes = this.$refs.menuTree.getCheckedNodes(false, true);
+        let roleMenus = [];
+        for (let i = 0, len = checkedNodes.length; i < len; i++) {
+          let roleMenu = { roleId: roleId, menuId: checkedNodes[i].id };
+          roleMenus.push(roleMenu);
+        }
+        this.$api.role.saveRoleMenus(roleMenus).then((res) => {
+          if (res.code == 200) {
+            this.$message({ message: "操作成功", type: "success" });
+          } else {
+            this.$message({ message: "操作失败, " + res.msg, type: "error" });
+          }
+          this.authLoading = false;
+        });
+      },
+      renderContent(h, { node, data, store }) {
+        return (
+          <div class="column-container">
+            <span style="text-algin:center;margin-right:80px;">{data.name}</span>
+            <span style="text-algin:center;margin-right:80px;">
+              <el-tag
+                type={data.type === 0 ? "" : data.type === 1 ? "success" : "info"}
+                size="small"
+              >
+                {data.type === 0 ? "目录" : data.type === 1 ? "菜单" : "按钮"}
+              </el-tag>
+            </span>
+            <span style="text-algin:center;margin-right:80px;">
+              {" "}
+              <i class={data.icon}></i>
+            </span>
+            <span style="text-algin:center;margin-right:80px;">
+              {data.parentName ? data.parentName : "顶级菜单"}
+            </span>
+            <span style="text-algin:center;margin-right:80px;">
+              {data.url ? data.url : "\t"}
+            </span>
+          </div>
+        );
+      },
+      // 时间格式化
+      dateFormat: function (row, column, cellValue, index) {
+        return format(row[column.property]);
+      },
+    },
+    mounted() {},
+  };
+  </script>
+  <style scoped lang="less">
+  .menu-container {
+    margin-top: 10px;
+  }
+  .menu-header {
+    padding-left: 8px;
+    padding-bottom: 5px;
+    text-align: left;
+    font-size: 16px;
+    color: rgb(20, 89, 121);
+  }
+  .conent-box{
+    width: 100%;
+    display: flex;
+    /* justify-content: space-around */
+    >div{
+        width: 100%;
+    }
+  }
+  /deep/ .el-table {
+    max-height: 500px !important;
+  }
+  .el-tree {
+    width: 800px;
+    height: 500px;
+    overflow-x: auto;
+  }
+  /deep/ .el-tree > .el-tree-node {
+    display: inline-block !important;
+  }
+  .btn-box {
+    padding-right: 100px;
+  }
+  /*定义滚动条高宽及背景
+   高宽分别对应横竖滚动条的尺寸*/
+  ::-webkit-scrollbar {
+    width: 8px;
+    height: 8px;
+    background-color: rgba(0, 0, 0, 0.2);
+  }
+  
+  /*定义滚动条轨道
+   内阴影+圆角*/
+  ::-webkit-scrollbar-track {
+    -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
+    border-radius: 10px;
+    background-color: #f5f5f5;
+  }
+  /*定义滑块
+       内阴影+圆角*/
+  ::-webkit-scrollbar-thumb {
+    border-radius: 10px;
+    -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
+    background-color: #b3b3b3;
+  }
+  </style>
+