Browse Source

Merge branch 'dev' of http://git.echepei.com/caojunjie/Smart_platform_ui into dev

qukaidi 2 years ago
parent
commit
24ecb6f0a4

+ 1 - 1
src/components/crop-select/main.vue

@@ -28,7 +28,7 @@
       </span>
       <el-button icon="el-icon-search" size="mini" v-if="label != 'shortName'" :disabled="disabled"
         @click="openDialog()"></el-button>
-      <el-tooltip effect="dark" content="获取最新客户资料" placement="top-start">
+      <el-tooltip effect="dark" content="获取最新资料" placement="top-start">
         <el-button icon="el-icon-refresh" size="mini" v-if="label != 'shortName'" @click="refreshData"
           style="margin-left:0px;"></el-button>
       </el-tooltip>

+ 39 - 0
src/components/upload/index.vue

@@ -388,6 +388,40 @@ export default {
           }
         ]
       },
+      originalOptionsThree: {
+        dialogDrag: true,
+        index: true,
+        refreshBtn: false,
+        cellBtn: false,
+        cancelBtn: false,
+        delBtn: false,
+        editBtn: false,
+        addBtn: false,
+        align: "center",
+        column: [
+          {
+            label: "文件名称",
+            prop: "fileName",
+            index: 1,
+            width: 140,
+            cell: true,
+            overHidden: true
+          },
+          {
+            label: "文件地址",
+            prop: "url",
+            index: 2,
+            overHidden: true
+          },
+          {
+            label: "备注",
+            prop: "remarks",
+            index: 4,
+            cell: true,
+            overHidden: true
+          }
+        ]
+      },
       uploadCount: 0
     };
   },
@@ -397,8 +431,13 @@ export default {
      * 已定义全局方法,直接使用,getColumnName方法用来获取枚举值,参数根据自己定义的code值获取中文名
      * 一定要执行异步操作,要等接口成功返回,才能执行下一行代码
      */
+
     if (this.enumerationValue === 160){
       this.option = await this.getColumnData(this.getColumnName(this.enumerationValue),this.originalOptionsTwo);
+    }else if (this.enumerationValue === 107.1){
+      this.option = await this.getColumnData(this.getColumnName(this.enumerationValue),this.originalOptionsTwo);
+    }else if (this.enumerationValue === 35.1){
+      this.option = await this.getColumnData(this.getColumnName(this.enumerationValue),this.originalOptionsThree);
     }else {
       this.option = await this.getColumnData(this.getColumnName(this.enumerationValue),this.originalOptions);
     }

+ 6 - 0
src/enums/column-name.js

@@ -107,6 +107,9 @@ const columnName = [{
   code: 35,
   name: '封装上传附件'
 }, {
+  code: 35.1,
+  name: '通知公告附件'
+}, {
   code: 36,
   name: '进口采购订单'
 }, {
@@ -417,6 +420,9 @@ const columnName = [{
 {
   code: 107,
   name: '报销明细'
+},{
+  code: 107.1,
+  name: '报销附件'
 },
 {
   code: 108,

+ 40 - 10
src/views/desk/notice.vue

@@ -28,7 +28,10 @@
         </el-button>
       </template>
       <template slot="fileListForm">
-        <c-upload :basic="true" :data="form.fileList"></c-upload>
+        <c-upload :basic="true"
+                  :data="fileList"
+                  deleteUrl="/api/blade-client/corpsbank/update"
+                  :enumerationValue="35.1"></c-upload>
       </template>
       <template slot-scope="{row}"
                 slot="category">
@@ -46,6 +49,7 @@ export default {
   data() {
     return {
       form: {},
+      fileList:[],
       query: {},
       loading: true,
       page: {
@@ -74,6 +78,7 @@ export default {
             span: 12,
             // row: true,
             search: true,
+            overHidden: true,
             rules: [{
               required: true,
               message: "请输入通知标题",
@@ -82,7 +87,16 @@ export default {
           }, {
             label: "发送范围",
             prop: "sendRange",
-            span: 12
+            overHidden: true,
+            dicUrl: "/api/blade-system/dept/treeUser",
+            type: 'tree',
+            span: 12,
+            props: {
+              label: "title",
+              value: "value",
+            },
+            multiple:true,
+            tags:true,
           },
           {
             label: "通知类型",
@@ -94,6 +108,7 @@ export default {
             },
             dataType: "number",
             slot: true,
+            overHidden: true,
             prop: "category",
             search: true,
             rules: [{
@@ -110,10 +125,10 @@ export default {
             valueFormat: "yyyy-MM-dd hh:mm:ss",
             searchRange: true,
             hide: true,
+            showColumn: false,
             addDisplay: false,
             editDisplay: false,
             viewDisplay: false,
-            search: true,
             rules: [{
               required: true,
               message: "请输入通知时间",
@@ -125,7 +140,13 @@ export default {
             prop: "releaseTime",
             type: "datetime",
             format: "yyyy-MM-dd hh:mm:ss",
+            overHidden: true,
             valueFormat: "yyyy-MM-dd hh:mm:ss",
+            searchRange: true,
+            addDisplay: false,
+            editDisplay: false,
+            viewDisplay: false,
+            search: true,
             rules: [{
               required: true,
               message: "请输入通知日期",
@@ -143,6 +164,7 @@ export default {
                 url: "link",
               }
             },
+            showColumn: false,
             hide: true,
             minRows: 6,
             span: 24,
@@ -178,7 +200,10 @@ export default {
   },
   methods: {
     rowSave(row, done, loading) {
-      add(row).then(() => {
+      let data = row
+      data.sendRange = data.sendRange.join(',')
+      data.fileList = this.fileList
+      add(data).then(() => {
         this.onLoad(this.page);
         this.$message({
           type: "success",
@@ -191,7 +216,9 @@ export default {
       });
     },
     rowUpdate(row, index, done, loading) {
-      update(row).then(() => {
+      let data = row
+      data.sendRange = data.sendRange.join(',')
+      update(data).then(() => {
         this.onLoad(this.page);
         this.$message({
           type: "success",
@@ -263,6 +290,9 @@ export default {
       if (["edit", "view"].includes(type)) {
         getNotice(this.form.id).then(res => {
           this.form = res.data.data;
+          this.fileList = res.data.data.fileList
+          delete this.form.fileList
+          if (this.form.sendRange) this.form.sendRange = this.form.sendRange.split(',')
         });
       }
       done();
@@ -277,18 +307,18 @@ export default {
       this.onLoad(this.page, this.query);
     },
     onLoad(page, params = {}) {
-      const {releaseTimeRange} = this.query;
+      const {releaseTime} = this.query;
       let values = {
         ...params,
       };
-      if (releaseTimeRange) {
+      if (releaseTime) {
         values = {
           ...params,
-          releaseTime_datege: releaseTimeRange[0],
-          releaseTime_datelt: releaseTimeRange[1],
+          releaseTimeStart: releaseTime[0],
+          releaseTimeEnd: releaseTime[1],
           ...this.query
         };
-        values.releaseTimeRange = null;
+        values.releaseTime = null;
       }
       this.loading = true;
       getList(page.currentPage, page.pageSize, values).then(res => {

+ 28 - 8
src/views/reimbursement/config/customerContact.json

@@ -52,25 +52,45 @@
       "index": 4,
       "width": 200,
       "overHidden": true
-    },
-    {
-      "label": "支付方式",
-      "prop": "payMethod",
+    },{
+      "label": "费用归属人",
+      "prop": "expenseOwner",
       "index": 5,
-      "width": 120,
-      "overHidden": true
+      "width": 200,
+      "overHidden": true,
+      "cell": true
+    },{
+      "label": "数量",
+      "prop": "quantity",
+      "index": 6,
+      "width": 200,
+      "overHidden": true,
+      "cell": true,
+      "type":"number",
+      "controls":false,
+      "precision":0
+    },{
+      "label": "单价",
+      "prop": "price",
+      "index": 7,
+      "width": 200,
+      "overHidden": true,
+      "cell": true,
+      "type":"number",
+      "controls":false,
+      "precision":2
     },
     {
       "label": "金额",
       "prop": "amount",
-      "index": 6,
+      "index": 8,
       "width": 140,
       "overHidden": true
     },
     {
       "label": "备注",
       "prop": "remarks",
-      "index": 6,
+      "index": 9,
       "width": 160,
       "overHidden": true,
       "cell": true

+ 109 - 0
src/views/reimbursement/config/customerContactTwo.json

@@ -0,0 +1,109 @@
+{
+  "stripe": true,
+  "searchShow": true,
+  "border": true,
+  "index": true,
+  "viewBtn": false,
+  "editBtn": false,
+  "addBtn": false,
+  "delBtn": false,
+  "align": "center",
+  "menuWidth": 120,
+  "refreshBtn": false,
+  "showSummary": true,
+  "summaryText": "合计",
+  "sumColumnList": [
+    {
+      "name": "amount",
+      "type": "sum",
+      "decimals": 2
+    },
+    {
+      "name": "quantity",
+      "type": "sum",
+      "decimals": 0
+    }
+  ],
+  "column": [
+    {
+      "label": "科目名称",
+      "prop": "subjectName",
+      "index": 1,
+      "width": 200,
+      "overHidden": true,
+      "type": "select",
+      "dicUrl": "/api/blade-system/dict-biz/dictionary?code=account_name",
+      "props": {
+        "label": "dictValue",
+        "value": "dictKey"
+      },
+      "cell": true
+    },
+    {
+      "label": "核算项目",
+      "prop": "accountingItemsName",
+      "index": 1,
+      "width": 200,
+      "overHidden": true,
+      "type": "select",
+      "dicUrl": "/api/blade-system/dict-biz/dictionary?code=accounting_items",
+      "props": {
+        "label": "dictValue",
+        "value": "dictKey"
+      },
+      "cell": true
+    },
+    {
+      "label": "摘要说明",
+      "prop": "explanation",
+      "index": 4,
+      "width": 200,
+      "overHidden": true
+    },
+    {
+      "label": "费用归属人",
+      "prop": "expenseOwner",
+      "index": 5,
+      "width": 200,
+      "overHidden": true,
+      "cell": true
+    },
+    {
+      "label": "数量",
+      "prop": "quantity",
+      "index": 6,
+      "width": 200,
+      "overHidden": true,
+      "cell": true,
+      "type":"number",
+      "controls":false,
+      "precision":0
+    },
+    {
+      "label": "单价",
+      "prop": "price",
+      "index": 7,
+      "width": 200,
+      "overHidden": true,
+      "cell": true,
+      "type":"number",
+      "controls":false,
+      "precision":2
+    },
+    {
+      "label": "金额",
+      "prop": "amount",
+      "index": 8,
+      "width": 140,
+      "overHidden": true
+    },
+    {
+      "label": "备注",
+      "prop": "remarks",
+      "index": 9,
+      "width": 160,
+      "overHidden": true,
+      "cell": true
+    }
+  ]
+}

+ 185 - 39
src/views/reimbursement/detail.vue

@@ -23,59 +23,67 @@
       </div>
     </div>
     <div class="customer-main">
-      <containerTitle title="基础信息" />
-      <basic-container :showBtn="true">
+      <trade-card title="经办人信息">
         <avue-form ref="form" class="trading-form" v-model="form" :option="option">
           <template slot="userId">
             <el-select v-model="form.userId" filterable clearable size="small" placeholder="请选择" @change="userHandle"
-              @clear="form.userName == null" :disabled="disabled || checkDisabled">
+                       @clear="form.userName == null" :disabled="disabled || checkDisabled">
               <el-option v-for="(item, index) in userList" :key="index" :label="item.realName" :value="item.id">
               </el-option>
             </el-select>
           </template>
+          <template slot="belongToCorpId">
+            <crop-select
+                v-model="form.belongToCorpId"
+                corpType="GS"
+                :disabled="disabled || checkDisabled"
+                @getCorpData="returnBack"
+                style="width: 100%"
+                ref="KHSelect"
+            ></crop-select>
+          </template>
           <template slot="deptId">
             <avue-input-tree leaf-only style="width: 100%;" size="small" :props="{ label: 'title' }"
-              v-model="form.deptId" placeholder=" " type="tree" :dic="dic" :nodeClick="deptClick"
-              :disabled="disabled || checkDisabled"></avue-input-tree>
+                             v-model="form.deptId" placeholder=" " type="tree" :dic="dic" :nodeClick="deptClick"
+                             :disabled="disabled || checkDisabled"></avue-input-tree>
           </template>
           <template slot="postId">
             <el-select v-model="form.postId" clearable filterable placeholder="请选择 岗位" @change="postHandle"
-              @clear="form.postId == null" :disabled="disabled || checkDisabled">
+                       @clear="form.postId == null" :disabled="disabled || checkDisabled">
               <el-option v-for="(item, index) in postDic" :label="item.postName" :value="item.id" :key="index" />
             </el-select>
           </template>
         </avue-form>
-      </basic-container>
-      <containerTitle title="报销明细" />
-      <basic-container>
-        <avue-crud ref="crud" :data="dataList" :option="tableOption" :cell-style="cellStyle" @saveColumn="saveColumn"
-          @resetColumn="resetColumn">
+      </trade-card>
+      <trade-card title="报销明细">
+        <avue-crud ref="crud" :key="key" :data="dataList" :option="tableOption" :cell-style="cellStyle" @saveColumn="saveColumn"
+                   @resetColumn="resetColumn">
           <template slot="menuLeft">
             <el-button type="primary" icon="el-icon-plus" size="small" @click.stop="newDetails"
-              :disabled="disabled || checkDisabled">录入明细</el-button>
+                       :disabled="disabled || checkDisabled">录入明细</el-button>
             <el-button type="info" icon="el-icon-printer" size="small" @click="openReport">报表打印</el-button>
           </template>
           <template slot="menu" slot-scope="{ row, index }">
             <el-button size="small" icon="el-icon-edit" type="text" @click="rowCell(row, index)"
-              :disabled="disabled || checkDisabled">{{ row.$cellEdit ? "保存" : "修改" }}</el-button>
+                       :disabled="disabled || checkDisabled">{{ row.$cellEdit ? "保存" : "修改" }}</el-button>
             <el-button size="small" icon="el-icon-delete" type="text" @click="rowDel(row, index)"
-              :disabled="disabled || checkDisabled">删除</el-button>
+                       :disabled="disabled || checkDisabled">删除</el-button>
           </template>
           <template slot="payDate" slot-scope="{ row, index }">
             <el-date-picker v-if="row.$cellEdit" v-model="row.payDate" type="date" placeholder="选择日期" size="small"
-              style="width: 100%" format="yyyy-MM-dd" valueFormat="yyyy-MM-dd"></el-date-picker>
+                            style="width: 100%" format="yyyy-MM-dd" valueFormat="yyyy-MM-dd"></el-date-picker>
             <span v-else>{{ row.payDate }}</span>
           </template>
           <template slot="moldId" slot-scope="{ row }">
             <avue-cascader v-if="row.$cellEdit" v-model="row.moldId" size="small" style="width: 100%;" :dic="dicArea"
-              :props="props" check-strictly :emit-path="false" :show-all-levels="false"
-              @change="moldChange($event, row, dicArea)" @clear="row.feeList = feesOption" placeholder="请选择">
+                           :props="props" check-strictly :emit-path="false" :show-all-levels="false"
+                           @change="moldChange($event, row, dicArea)" @clear="row.feeList = feesOption" placeholder="请选择">
             </avue-cascader>
             <span v-else>{{ row.mold }}</span>
           </template>
           <template slot="detailId" slot-scope="{ row }">
             <el-select v-if="row.$cellEdit" v-model="row.detailId" filterable clearable @change="detailChange(row)"
-              size="small">
+                       size="small">
               <el-option v-for="(item, index) in row.feeList" :key="index" :label="item.cname" :value="item.id">
               </el-option>
             </el-select>
@@ -88,16 +96,31 @@
           <template slot="payMethod" slot-scope="{ row, index }">
             <el-select v-model="row.payMethod" size="small" placeholder="请选择" clearable :disabled="!row.$cellEdit">
               <el-option v-for="(item, index) in paymentOption" :key="index" :label="item.dictValue"
-                :value="item.dictKey"></el-option>
+                         :value="item.dictKey"></el-option>
             </el-select>
           </template>
           <template slot="amount" slot-scope="{ row, index }">
             <el-input-number v-if="row.$cellEdit" v-model="row.amount" size="small" :controls="false" :precision="2"
-              style="width: 100%" placeholder="金额"></el-input-number> 
+                             style="width: 100%" placeholder="金额"></el-input-number>
             <span v-else>{{ row.amount }}</span>
           </template>
         </avue-crud>
-      </basic-container>
+      </trade-card>
+      <trade-card title="上传附件">
+        <c-upload :basic="true"
+                  :enumerationValue="107.1"
+                  :data="[]"></c-upload>
+      </trade-card>
+      <trade-card title="付款信息">
+        <avue-form :option="optionTwo" v-model="form">
+          <template slot="paymentMethodName" slot-scope="{ row, index }">
+            <el-select v-model="form.paymentMethodName" size="small" placeholder="请选择" clearable>
+              <el-option v-for="(item, index) in paymentOption" :key="index" :label="item.dictValue"
+                         :value="item.dictKey"></el-option>
+            </el-select>
+          </template>
+        </avue-form>
+      </trade-card>
     </div>
 
     <el-dialog append-to-body title="审批" class="el-dialogDeep" :visible.sync="checkDialog" width="50%"
@@ -117,13 +140,14 @@
 
 <script>
 import tableOption from "./config/customerContact.json";
+import tableOptionTwo from "./config/customerContactTwo.json";
 import {
   isDiscount,
   isPercentage,
   micrometerFormat,
   IntegerFormat
 } from "@/util/validate";
-import { gainUser } from "@/api/basicData/customerInquiry";
+import {gainUser, getCharge} from "@/api/basicData/customerInquiry";
 import { getUserInfo } from "@/api/system/user";
 import { getDeptTree } from "@/api/system/dept";
 import { getCurrentDate } from "@/util/date";
@@ -134,6 +158,11 @@ import check from "@/components/check/check";
 import checkSchedule from "@/components/check/checkSchedule";
 import reportDialog from "@/components/report-dialog/main";
 import { getDeptTree as getFeesId, getFeesList } from "@/api/basicData/basicFeesDesc";
+import {customerList as getKHList, detail as khDetail} from "@/api/basicData/customerInformation";
+import {getCorpDetail} from "@/api/maintenance/overpayment";
+import {integralDetail} from "@/api/maintenance/integral";
+import {getlistBankBy, getProfit} from "@/api/basicData/configuration";
+import da from "element-ui/src/locale/lang/da";
 
 export default {
   name: "detail",
@@ -158,7 +187,20 @@ export default {
         labelWidth: 100,
         column: [
           {
-            label: "日期",
+            label: "申请报销人",
+            prop: "userId",
+            rules: [
+              {
+                required: true,
+                message: " ",
+                trigger: "change"
+              }
+            ],
+            span: 8,
+            slot: true,
+          },
+          {
+            label: "提交时间",
             prop: "claimDate",
             span: 8,
             type: "date",
@@ -173,16 +215,17 @@ export default {
             ]
           },
           {
-            label: "报销人",
-            prop: "userId",
-            rules: [
-              {
-                required: true,
-                message: " ",
-                trigger: "change"
-              }
-            ],
+            label: "要求支付日期",
+            prop: "requiredPaymentTime",
             span: 8,
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd HH:mm:ss"
+          },
+          {
+            label: "所属公司",
+            prop: "belongToCorpId",
+            span: 16,
             slot: true,
           },
           {
@@ -199,6 +242,58 @@ export default {
             slot: true,
           },
           {
+            label: "所属公司编码",
+            prop: "belongToCorpCode",
+            span: 8,
+            slot: true,
+          },
+          {
+            label: "报销人银行户头",
+            prop: "accountReimbursement",
+            type: 'select',
+            dicData:[],
+            props: {
+              label: "accountName",
+              value: "accountName"
+            },
+            change:(data)=>{
+              let list = this.findObject(this.option.column, "accountReimbursement").dicData
+              for (let item of list){
+                if (data.value == item.accountName){
+                  this.form.accountReimbursement = data.value
+                  this.form.reimbursementAccountNo = item.accountBank
+                  this.form.bankOfDeposit = item.accountNo
+                }
+              }
+            },
+            span: 8,
+            slot: true,
+          },
+          {
+            label: "报销人账号",
+            prop: "reimbursementAccountNo",
+            span: 8,
+            slot: true,
+          },
+          {
+            label: "报销人开户行",
+            prop: "bankOfDeposit",
+            span: 8,
+            slot: true,
+          },
+          {
+            label: "系统编号",
+            prop: "serialNo",
+            span: 8,
+            slot: true,
+          },
+          {
+            label: "单据数量",
+            prop: "billQuantity",
+            span: 8,
+            slot: true,
+          },
+          {
             label: "备注",
             prop: "remarks",
             type: "textarea",
@@ -207,6 +302,46 @@ export default {
           },
         ],
       },
+      optionTwo: {
+        menuBtn: false,
+        labelWidth: 100,
+        column: [
+          {
+            label: "支付时间",
+            prop: "paymentTime",
+            span: 8,
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd HH:mm:ss"
+          },
+          {
+            label: "支付方式",
+            prop: "paymentMethodName",
+            span: 8,
+            slot: true,
+          },{
+            label: "实际付款金额",
+            prop: "paymentAmount",
+            span: 8,
+            slot: true,
+          },{
+            label: "给付人",
+            prop: "dans",
+            span: 8,
+            slot: true,
+          },{
+            label: "财务出纳",
+            prop: "financialCashier",
+            span: 8,
+            slot: true,
+          },{
+            label: "科目编码",
+            prop: "subjectCode",
+            span: 8,
+            slot: true,
+          },
+        ]
+      },
       dataList: [],
       tableOption: {},
       goodsoptions: [],
@@ -247,14 +382,20 @@ export default {
         label: 'title',
       },
       feesOption: [],
+      tableOptionBack:{},
+      key:0,
+      tenantId:JSON.parse(localStorage.getItem("saber-userInfo")).content.tenant_id
     }
   },
   async created() {
+    if (this.tenantId !== '681169'){
+      this.tableOptionBack = tableOptionTwo
+    }else {
+      this.tableOptionBack = tableOption
+    }
     this.$set(this.form, 'claimDate', getCurrentDate()); // 默认当前日期
-    this.tableOption = await this.getColumnData(
-      this.getColumnName(107),
-      tableOption
-    );
+    this.tableOption = await this.getColumnData(this.getColumnName(107),this.tableOptionBack);
+    this.key++
     gainUser().then(res => {
       this.userList = res.data.data;
     });
@@ -315,6 +456,12 @@ export default {
     }
   },
   methods: {
+    returnBack(row) {
+      getlistBankBy(row.id).then(res =>{
+        this.form.belongToCorpCode = row.code
+        this.findObject(this.option.column, "accountReimbursement").dicData = res.data
+      })
+    },
     // 查询
     queryData(id) {
       this.pageLoading = true;
@@ -402,10 +549,9 @@ export default {
       }
     },
     async resetColumn() {
-      this.tableOption = tableOption;
+      this.tableOption = this.tableOptionBack;
       const inSave = await this.delColumnData(
-        this.getColumnName(107),
-        tableOption
+        this.getColumnName(107),this.tableOptionBack
       );
       if (inSave) {
         this.$nextTick(() => {