Browse Source

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

caojunjie 3 years ago
parent
commit
b8b0ca5a43

+ 3 - 3
src/components/change-approve/main.vue

@@ -42,7 +42,7 @@
 </template>
 
 <script>
-import { getList } from "@/api/system/user";
+import { userList } from "@/api/system/user";
 import { changeApprove } from "@/api/approval/processConfig"
 
 export default {
@@ -70,8 +70,8 @@ export default {
     }
   },
   created() {
-    getList().then(res => {
-      this.userOption = res.data.data.records;
+    userList().then(res => {
+      this.userOption = res.data.data;
     })
   },
   methods: {

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

@@ -451,6 +451,18 @@ const columnName = [{
   {
     code: 120,
     name: '工资查询列表'
+  },
+  {
+    code: 121,
+    name: '经销商产品调拨列表'
+  },
+  {
+    code: 122,
+    name: '经销商产品调拨明细'
+  },
+  {
+    code: 123,
+    name: '经销商产品调拨商品弹窗'
   }
 ]
 export const getColumnName = (key) => {

+ 14 - 6
src/views/businessManagement/salesOrder/configuration/optionPolicy.json

@@ -59,10 +59,18 @@
           "trigger": "blur"
         }
       ]
+    },
+    {
+      "label": "订货数量",
+      "prop": "orderQuantity",
+      "slot": true,
+      "overHidden": true,
+      "width": 120,
+      "index": 3
     },{
       "label": "规格",
       "prop": "typeno",
-      "index": 3,
+      "index": 4,
       "width":100,
       "cell": true,
       "rules": [
@@ -75,7 +83,7 @@
     },{
       "label": "采购价(元)",
       "prop": "purchasePrice",
-      "index": 4,
+      "index": 5,
       "width":100,
       "cell": true,
       "rules": [
@@ -88,7 +96,7 @@
     },{
       "label": "销售价(元)",
       "prop": "salesPrice",
-      "index": 5,
+      "index": 6,
       "width":100,
       "cell": true,
       "rules": [
@@ -101,7 +109,7 @@
     },{
       "label": "特价",
       "prop": "specialOffer",
-      "index": 6,
+      "index": 7,
       "width":100,
       "cell": true,
       "rules": [
@@ -114,7 +122,7 @@
     },{
       "label": "操作员",
       "prop": "updateUserName",
-      "index": 6,
+      "index": 8,
       "width":100,
       "cell": true,
       "rules": [
@@ -127,7 +135,7 @@
     },{
       "label": "最后更新时间",
       "prop": "updateTime",
-      "index": 6,
+      "index": 9,
       "width":100,
       "cell": true,
       "rules": [

+ 16 - 2
src/views/businessManagement/salesOrder/detailsPageEdit.vue

@@ -555,6 +555,16 @@
                        ref="crud"
                        @selection-change="selectionChangePolicy"
                        :page.sync="pagePolicy">
+              <template slot="orderQuantity" slot-scope="{row}">
+                <el-input-number
+                  v-model="row.orderQuantity"
+                  size="small"
+                  :controls="false"
+                  :precision="0"
+                  style="width: 100%"
+                  placeholder="请输入"
+                />
+              </template>
             </avue-crud>
           </basic-container>
           <containerTitle title="买赠促销"></containerTitle>
@@ -570,7 +580,11 @@
       </el-row>
       <span slot="footer" class="dialog-footer">
           <el-button @click="policyDialog = false">取 消</el-button>
-          <el-button type="primary" @click="importPolicy">导入</el-button>
+          <el-button
+            type="primary"
+            @click="importPolicy"
+            :disabled="this.policyData.length == 0 && this.policyDataTwo.length == 0"
+            :loading="saveLoading">导入</el-button>
         </span>
     </el-dialog>
 
@@ -2623,7 +2637,7 @@ export default {
 
           this.$set(list[item], 'itemType',  list[item].typeno)
           this.$set(list[item], 'actualQuantity', 0)
-          this.$set(list[item], 'orderQuantity', 0)
+          this.$set(list[item], 'orderQuantity', list[item].orderQuantity? list[item].orderQuantity: 0)
           this.$set(list[item], 'amount', 0)
           this.$set(list[item], 'priceCategory', list[item].productCategory)
           this.$set(list[item], 'priceType', this.policyForm.cname)

+ 80 - 0
src/views/dealer/allocation/config/commodity.json

@@ -0,0 +1,80 @@
+{
+  "stripe": true,
+  "border": true,
+  "searchMenuSpan": 16,
+  "searchIcon": true,
+  "searchIndex": 2,
+  "index": true,
+  "viewBtn": false,
+  "editBtn": false,
+  "delBtn": false,
+  "addBtn": false,
+  "menu": true,
+  "align": "center",
+  "menuWidth": "180",
+  "selection": true,
+  "tip": false,
+  "column": [{
+      "label": "商品编号",
+      "prop": "code",
+      "index": 1,
+      "width": 120,
+      "search": true,
+      "searchSpan": 8,
+      "overHidden": true
+    },
+    {
+      "label": "商品名称",
+      "search": true,
+      "searchSpan": 8,
+      "prop": "cname",
+      "index": 2,
+      "width": 120,
+      "overHidden": true
+    },
+    {
+      "label": "商品类别",
+      "prop": "goodsTypeName",
+      "index": 3,
+      "width": 120,
+      "search": true,
+      "searchSpan": 8,
+      "overHidden": true
+    },
+    {
+      "label": "规格尺寸",
+      "prop": "typeno",
+      "index": 4,
+      "width": 120,
+      "overHidden": true
+    },
+    {
+      "label": "花纹",
+      "prop": "brandItem",
+      "index": 5,
+      "width": 120,
+      "overHidden": true
+    },
+    {
+      "label": "负荷指数",
+      "prop": "specsOne",
+      "index": 6,
+      "width": 120,
+      "overHidden": true
+    },
+    {
+      "label": "速级",
+      "prop": "specsTwo",
+      "index": 7,
+      "width": 120,
+      "overHidden": true
+    },
+    {
+      "label": "加强型",
+      "prop": "level",
+      "index": 8,
+      "width": 120,
+      "overHidden": true
+    }
+  ]
+}

+ 106 - 0
src/views/dealer/allocation/config/customerContact.json

@@ -0,0 +1,106 @@
+{
+  "stripe": true,
+  "searchShow": true,
+  "border": true,
+  "index": true,
+  "viewBtn": false,
+  "editBtn": false,
+  "addBtn": false,
+  "delBtn": false,
+  "align": "center",
+  "menuWidth": 120,
+  "refreshBtn": false,
+  "indexSlot": true,
+  "showSummary": true,
+  "summaryText": "合计",
+  "sumColumnList": [
+    {
+      "name": "orderQuantity",
+      "type": "sum",
+      "decimals": 0
+    },
+    {
+      "name": "amount",
+      "type": "sum"
+    }
+  ],
+  "column": [
+    {
+      "label": "产品编码",
+      "prop": "code",
+      "index": 1,
+      "width": 200,
+      "overHidden": true
+    },
+    {
+      "label": "商品名称",
+      "prop": "cname",
+      "index": 2,
+      "width": 200,
+      "overHidden": true
+    },
+    {
+      "label": "规格",
+      "prop": "typeno",
+      "index": 3,
+      "width": 100,
+      "overHidden": true
+    },
+    {
+      "label": "花纹",
+      "prop": "brandItem",
+      "index": 4,
+      "width": 100,
+      "overHidden": true
+    },
+    {
+      "label": "负荷指数",
+      "prop": "specsOne",
+      "index": 5,
+      "width": 100,
+      "overHidden": true
+    },
+    {
+      "label": "速度级别",
+      "prop": "specsTwo",
+      "index": 6,
+      "width": 100,
+      "overHidden": true
+    },
+    {
+      "label": "单位",
+      "prop": "unit",
+      "index": 7,
+      "width": 100,
+      "overHidden": true
+    },
+    {
+      "label": "结余库存",
+      "prop": "balance",
+      "index": 8,
+      "width": 140,
+      "overHidden": true
+    },
+    {
+      "label": "调拨件数",
+      "prop": "orderQuantity",
+      "index": 9,
+      "width": 140,
+      "overHidden": true
+    },
+    {
+      "label": "金额",
+      "prop": "amount",
+      "index": 10,
+      "width": 100,
+      "overHidden": true
+    },
+    {
+      "label": "备注",
+      "prop": "remarks",
+      "index": 11,
+      "width": 100,
+      "overHidden": true
+    }
+  ]
+}

+ 102 - 0
src/views/dealer/allocation/config/mainList.json

@@ -0,0 +1,102 @@
+{
+  "stripe": true,
+  "height": "auto",
+  "searchShow": true,
+  "border": true,
+  "index": true,
+  "viewBtn": false,
+  "editBtn": false,
+  "delBtn": false,
+  "addBtn": false,
+  "align": "center",
+  "menuWidth": "70",
+  "searchIcon": true,
+  "searchIndex": 2,
+  "selection": true,
+  "tip": false,
+  "searchSpan": 8,
+  "showSummary": true,
+  "summaryText": "合计",
+  "sumColumnList": [],
+  "column": [
+    {
+      "label": "系统编号",
+      "prop": "sysNo",
+      "overHidden": true,
+      "minWidth": 120,
+      "search": true
+    },
+    {
+      "label": "原仓库",
+      "prop": "origWarehouse",
+      "overHidden": true,
+      "minWidth": 120,
+      "search": true
+    },
+    {
+      "label": "仓库",
+      "prop": "warehouse",
+      "overHidden": true,
+      "minWidth": 120,
+      "search": true
+    },
+    {
+      "label": "数量",
+      "prop": "quantity",
+      "overHidden": true,
+      "minWidth": 120,
+      "search": false
+    },
+    {
+      "label": "金额",
+      "prop": "amount",
+      "overHidden": true,
+      "minWidth": 120,
+      "search": false
+    },
+    {
+      "label": "业务日期",
+      "prop": "businessDate",
+      "type": "date",
+      "overHidden": true,
+      "minWidth": 200,
+      "format": "yyyy-MM-dd",
+      "valueFormat": "yyyy-MM-dd",
+      "unlinkPanels": true,
+      "searchRange": true,
+      "search": true
+    },
+    {
+      "label": "仓管员",
+      "prop": "keeper",
+      "overHidden": true,
+      "minWidth": 120,
+      "search": false
+    },
+    {
+      "label": "备注",
+      "prop": "remark",
+      "overHidden": true,
+      "minWidth": 120,
+      "search": false
+    },
+    {
+      "label": "制单人",
+      "prop": "createName",
+      "overHidden": true,
+      "minWidth": 120,
+      "search": false
+    },
+    {
+      "label": "制单日期",
+      "prop": "createTime",
+      "overHidden": true,
+      "minWidth": 200,
+      "search": false,
+      "format": "yyyy-MM-dd",
+      "valueFormat": "yyyy-MM-dd",
+      "unlinkPanels": true,
+      "searchRange": true
+    }
+  ]
+}

+ 1066 - 0
src/views/dealer/allocation/detail.vue

@@ -0,0 +1,1066 @@
+<template>
+  <div class="borderless" v-loading="pageLoading">
+    <div class="customer-head">
+      <div class="customer-back">
+        <el-button
+          type="danger"
+          style="border: none;background: none;color: red"
+          icon="el-icon-arrow-left"
+          @click="backToList"
+          :loading="btnLoading"
+        >返回列表</el-button>
+      </div>
+      <div class="add-customer-btn">
+        <el-button
+          type="primary"
+          size="small"
+          class="el-button--small-yh"
+          @click.stop="openEdit"
+          v-if="disabled"
+        >编 辑</el-button>
+        <el-button
+          v-if="checker && form.status != 3"
+          type="primary"
+          size="small"
+          class="el-button--small-yh"
+          @click.stop="openCheckDialog">
+          审批
+        </el-button>
+        <el-button
+          v-if="form.status > 0"
+          @click.native="checkScheduleDialog = true,checkId=form.id"
+          type="primary"
+          size="small"
+        >审核进度</el-button>
+<!--        <el-button-->
+<!--          type="primary"-->
+<!--          v-if="!checkDisabled"-->
+<!--          :disabled="!form.id || disabled"-->
+<!--          size="small"-->
+<!--          @click="pleaseCheck"-->
+<!--          :loading="btnLoading"-->
+<!--        >请核</el-button>-->
+        <el-button
+          type="success"
+          :disabled="!form.id"
+          size="small"
+          @click="copyDoc"
+          :loading="btnLoading"
+          v-if="false"
+        >复制单据</el-button>
+        <el-button
+          type="primary"
+          @click="editCustomer"
+          size="small"
+          :loading="btnLoading"
+        >保存数据</el-button>
+      </div>
+    </div>
+    <div class="customer-main">
+      <containerTitle title="基础信息"/>
+      <basic-container :showBtn="true">
+        <avue-form
+          ref="form"
+          class="trading-form"
+          v-model="form"
+          :option="option"
+        >
+          <template slot="createUser">
+            <el-select
+              v-model="form.createUser"
+              filterable
+              clearable
+              size="small"
+              placeholder="请选择"
+              @change="userHandle"
+              @clear="form.userName == null"
+              disabled
+            >
+              <el-option
+                v-for="(item,index) in userList"
+                :key="index"
+                :label="item.realName"
+                :value="item.id"
+              ></el-option>
+            </el-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=""
+            ></avue-input-tree>
+          </template>
+          <template slot="origWarehouse">
+            <warehouse-select
+              v-model="form.origWarehouse"
+              :configuration="configurationWarehouse"/>
+          </template>
+          <template slot="warehouse">
+            <warehouse-select
+              v-model="form.warehouse"
+              :configuration="configurationWarehouse"/>
+          </template>
+        </avue-form>
+      </basic-container>
+      <containerTitle title="商品信息"/>
+      <basic-container>
+        <avue-crud
+          ref="crud"
+          :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>
+            <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>
+            <el-button
+              size="small"
+              icon="el-icon-delete"
+              type="text"
+              @click="rowDel(row, index)"
+              :disabled="disabled || checkDisabled"
+            >删除</el-button>
+          </template>
+          <template slot="code" slot-scope="{ row, index }">
+            <span v-if="row.$cellEdit" style="display:flex">
+              <el-select
+                v-model="row.code"
+                placeholder="请选择"
+                filterable
+                size="small"
+                style="width:60%"
+                @change="codeChange(row, index)"
+              >
+                <el-option
+                  v-for="item in goodsoptions"
+                  :key="item.id"
+                  :label="item.code"
+                  :value="item.code"
+                >
+                </el-option>
+              </el-select>
+              <el-button
+                icon="el-icon-search"
+                size="small"
+                @click="rePick(row, index)"
+              ></el-button>
+            </span>
+            <span v-else> {{ row.code }}</span>
+          </template>
+          <template slot="cname" slot-scope="{ row, index }">
+            <span v-if="row.$cellEdit" style="display:flex">
+              <el-select
+                v-model="row.itemId"
+                placeholder="请选择"
+                size="small"
+                filterable
+                style="width:60%"
+                @change="cnameChange(row, index)"
+              >
+                <el-option
+                  v-for="item in goodsoptions"
+                  :key="item.id"
+                  :label="item.cname"
+                  :value="item.id"
+                >
+                </el-option>
+              </el-select>
+              <el-button
+                icon="el-icon-search"
+                size="small"
+                @click="rePick(row, index)"
+              ></el-button>
+            </span>
+            <span v-else> {{ row.cname }}</span>
+          </template>
+          <template slot="orderQuantity" slot-scope="{ row, index }">
+            <el-input-number
+              v-if="row.$cellEdit"
+              v-model="row.orderQuantity"
+              size="small"
+              :controls="false"
+              :precision="0"
+              style="width: 100%"
+            />
+            <span v-else>{{ row.orderQuantity | IntegerFormat }}</span>
+          </template>
+        </avue-crud>
+      </basic-container>
+    </div>
+
+    <el-dialog
+      append-to-body
+      title="审批"
+      class="el-dialogDeep"
+      :visible.sync="checkDialog"
+      width="50%"
+      :close-on-click-modal="false"
+      :destroy-on-close="true"
+      :close-on-press-escape="false"
+      v-dialog-drag
+    >
+      <check
+        :checkData="checkData"
+        :checkDetail="false"
+        :idList="[]"
+        @choceCheckFun="choceCheckFun"
+      >
+      </check>
+    </el-dialog>
+    <el-dialog
+      append-to-body
+      title="审批进度"
+      class="el-dialogDeep"
+      :visible.sync="checkScheduleDialog"
+      width="40%"
+      :close-on-click-modal="false"
+      :destroy-on-close="true"
+      :close-on-press-escape="false"
+      v-dialog-drag
+    >
+      <check-schedule
+        :checkId="checkId"
+        :batchNo="batchNo"
+        @choceScheduleFun="choceScheduleFun"
+      >
+      </check-schedule>
+    </el-dialog>
+    <!--    报表-->
+    <report-dialog
+      :switchDialog="switchDialog"
+      :reportId="form.id"
+      reportName="事务-报销单"
+      @onClose="onClose()"
+    />
+    <!--    商品弹窗-->
+    <el-dialog
+      title="导入商品"
+      append-to-body
+      class="el-dialogDeep"
+      :visible.sync="dialogVisible"
+      width="80%"
+      :close-on-click-modal="false"
+      :destroy-on-close="true"
+      :close-on-press-escape="false"
+      @close="closeGoods"
+      top="5vh"
+      v-dialog-drag
+    >
+      <span>
+        <el-row>
+          <el-col :span="4">
+            <div>
+              <el-scrollbar>
+                <basic-container>
+                  <avue-tree
+                    :option="treeOption"
+                    @node-click="nodeClick"
+                    :style="treeStyle"
+                  />
+                </basic-container>
+              </el-scrollbar>
+            </div>
+          </el-col>
+          <el-col :span="20">
+            <avue-crud
+              :option="goodsOption"
+              :table-loading="loading"
+              :data="goodsListShow"
+              ref="goodsCrud"
+              :search.sync="search"
+              @search-change="searchChange"
+              @selection-change="selectionChange"
+              @row-click="rowClick"
+              :page.sync="page"
+              @on-load="onLoad"
+              @saveColumn="saveGoodsColumn"
+              @resetColumn="resetGoodsColumn"
+              :cell-style="cellStyle"
+            >
+              <template slot="menuLeft">
+                <el-tabs v-model="activeName" @tab-click="tabHandle">
+                  <el-tab-pane label="查询结果" name="searchList"></el-tab-pane>
+                  <el-tab-pane label="已选定数据" name="importStaging"></el-tab-pane>
+                </el-tabs>
+              </template>
+              <template slot-scope="scope" slot="menu">
+                <el-button
+                  type="text"
+                  icon="el-icon-edit"
+                  size="small"
+                  @click.stop="importStagList(scope.row,scope.index)"
+                  v-if="activeName=='searchList'"
+                  :disabled="goodsListSave.findIndex(item => item.id == scope.row.id) !== -1"
+                >选择
+                </el-button>
+                <el-button
+                  type="text"
+                  icon="el-icon-delete"
+                  size="small"
+                  @click.stop="removeStagList(scope.row,scope.index)"
+                  v-else
+                >移除
+                </el-button>
+              </template>
+            </avue-crud>
+          </el-col>
+        </el-row>
+      </span>
+
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button
+          type="primary"
+          @click="importGoods"
+          :disabled="selectionList.length == 0 && goodsListSave.length == 0"
+        >导入</el-button
+        >
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import tableOption from "./config/customerContact.json";
+import goodsOption from "./config/commodity.json";
+import {
+  isDiscount,
+  isPercentage,
+  micrometerFormat,
+  IntegerFormat
+} from "@/util/validate";
+import { gainUser } from "@/api/basicData/customerInquiry";
+import {getUserInfo} from "@/api/system/user";
+import {getDeptTree} from "@/api/system/dept";
+import { getCurrentDate } from "@/util/date";
+import {dataDetail, typeSave, removeGoods, pleaseCheck} from "@/api/standAlone/reimbursement";
+import { contrastObj, contrastList } from "@/util/contrastData";
+import check from "@/components/check/check";
+import checkSchedule from "@/components/check/checkSchedule";
+import reportDialog from "@/components/report-dialog/main";
+import {getDeptLazyTree,
+  getGoods,} from "@/api/basicData/customerInquiry";
+
+
+export default {
+  name: "detail",
+  props: {
+    detailData: {
+      type: Object
+    }
+  },
+  components: {
+    check,
+    checkSchedule,
+    reportDialog
+  },
+  data() {
+    return {
+      disabled: false,
+      pageLoading: false,
+      btnLoading: false,
+      form: {},
+      option: {
+        menuBtn: false,
+        labelWidth: 100,
+        column: [
+          {
+            label: "原仓库",
+            prop: "origWarehouse",
+            rules: [
+              {
+                required: true,
+                message: " ",
+                trigger: "change"
+              }
+            ],
+            span: 8,
+            slot: true,
+          },
+          {
+            label: "仓库",
+            prop: "warehouse",
+            rules: [
+              {
+                required: true,
+                message: " ",
+                trigger: "change"
+              }
+            ],
+            span: 8,
+            slot: true,
+          },
+          {
+            label: "业务日期",
+            prop: "businessDate",
+            span: 8,
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd 00:00:00",
+            rules: [
+              {
+                required: true,
+                message: " ",
+                trigger: "blur"
+              }
+            ]
+          },
+          {
+            label: "仓管员",
+            prop: "keeper",
+            rules: [
+              {
+                required: true,
+                message: " ",
+                trigger: "blur"
+              }
+            ],
+            span: 8,
+            slot: true,
+          },
+          {
+            label: "制单人",
+            prop: "createUser",
+            span: 8,
+            slot: true,
+            disabled: true
+          },
+          {
+            label: "制单部门",
+            prop: "deptId",
+            span: 8,
+            slot: true,
+            disabled: true
+          },
+          {
+            label: "制单日期",
+            prop: "createTime",
+            type: "date",
+            format: "yyyy-MM-dd HH:mm:ss",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+            span: 8,
+            slot: true,
+            disabled: true
+          },
+          {
+            label: "系统编号",
+            prop: "sysNo",
+            span: 8,
+            slot: true,
+            disabled: true,
+          },
+          {
+            label: "备注",
+            prop: "remarks",
+            type: "textarea",
+            minRows: 2,
+            span: 24,
+          },
+        ],
+      },
+      dataList: [],
+      tableOption: {},
+      goodsoptions: [],
+      unitOption: [],
+      selectionList: [],
+      treeDeptId: null,
+      reData: null,
+      treeOption: {
+        nodeKey: "id",
+        lazy: true,
+        treeLoad: function(node, resolve) {
+          const parentId = node.level === 0 ? 0 : node.data.id;
+          getDeptLazyTree(parentId).then(res => {
+            resolve(
+              res.data.data.map(item => {
+                return {
+                  ...item,
+                  leaf: !item.hasChildren
+                };
+              })
+            );
+          });
+        },
+        addBtn: false,
+        menu: false,
+        size: "small",
+        props: {
+          label: "title",
+          value: "value",
+          children: "children"
+        }
+      },
+      search: {},
+      treeStyle: "height:" + (window.innerHeight - 315) + "px",
+      goodsOption: {},
+      loading: false,
+      switchDialog: false, // 报表弹窗控制
+      userList: [],
+      dic: [], // 部门
+      loginUser: '', // 登录人
+      // 仓库配置
+      configurationWarehouse: {
+        multipleChoices: false,
+        multiple: false,
+        collapseTags: false,
+        placeholder: "请点击右边按钮选择",
+        dicData: [],
+      },
+      oldForm: {},
+      oldDataList: [],
+      checkDisabled: false, // 审核状态
+      checker: false,
+      checkId: '',
+      batchNo:'',
+      checkDialog: false,
+      checkScheduleDialog: false,
+      checkData: {},
+      dialogVisible: false,
+      activeName: 'searchList',
+      // 商品列表数据合计
+      goodsListShow: [],
+      // 商品列表暂存
+      goodsListSave: [],
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      pageList: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+    }
+  },
+  async created() {
+    this.$set(this.form, 'businessDate', getCurrentDate()); // 默认当前日期
+    this.$set(this.form, 'createTime', getCurrentDate());
+    this.tableOption = await this.getColumnData(
+      this.getColumnName(122),
+      tableOption
+    );
+    this.goodsOption = await this.getColumnData(
+      this.getColumnName(123),
+      goodsOption
+    );
+    gainUser().then(res => {
+      this.userList = res.data.data;
+    });
+    getUserInfo().then(res => {
+      this.$set(this.form, 'createUser', res.data.data.id);
+      this.$set(this.form, 'userName', res.data.data.realName);
+      this.$set(this.form, 'deptId', res.data.data.deptId);
+      this.$set(this.form, 'deptName', res.data.data.deptName);
+      this.$set(this.form, 'postId', res.data.data.postId.split(',')[0]);
+      this.$set(this.form, 'postName', res.data.data.postName.split(',')[0]);
+      this.loginUser = res.data.data.realName;
+    })
+    getDeptTree().then(res => {
+      this.dic = res.data.data
+    })
+    getGoods(1, 10).then(res => {
+      if (res.data.data.total > 0) {
+        this.goodsoptions = res.data.data.records;
+        if (Math.ceil(res.data.data.total / 10) > 1) {
+          for (let i = 2; i <= Math.ceil(res.data.data.total / 10); i++) {
+            getGoods(i, 10).then(e => {
+              this.goodsoptions = this.goodsoptions.concat(e.data.data.records);
+            });
+          }
+        }
+      }
+    });
+    this.getWorkDicts('unit').then(res => {
+      this.unitOption = res.data.data;
+    })
+    if (this.detailData.query) {
+      this.disabled = true;
+      this.option.column.map(e => {
+        this.$set(e, 'disabled', true)
+      })
+      this.queryData(this.detailData.id);
+    } else if (this.detailData.auditId) {
+      this.checker = true;
+      this.batchNo = this.detailData.check.batchNo
+      this.queryData(this.detailData.id);
+    }
+  },
+  filters: {
+    IntegerFormat(num) {
+      return IntegerFormat(num);
+    },
+    decimalFormat(num) {
+      return num ? Number(num).toFixed(2) : "0.00";
+    }
+  },
+  methods: {
+    // 查询
+    queryData(id) {
+      this.pageLoading = true;
+      dataDetail({id: id}).then(res => {
+        this.form = res.data.data;
+        this.dataList = this.form.itemList? this.form.itemList: [];
+        this.oldForm = {...this.form};
+        this.oldDataList = [...this.dataList];
+        delete this.form.itemList;
+        this.checkDisabled = this.form.status > 0? true: false;
+        if (this.form.status > 0) {
+          this.option.column.map(e => {
+            this.$set(e, 'disabled', true)
+          })
+        }
+      }).finally(() => {
+        this.pageLoading = false;
+      })
+    },
+    //返回列表
+    backToList() {
+      this.$emit("goBack");
+    },
+    // 编辑按钮触发
+    openEdit() {
+      this.disabled = false;
+      this.option.column.map(e => {
+        if (this.checkDisabled) {
+          this.$set(e, 'disabled', true)
+        } else {
+          if (e.prop != 'serialNo') {
+            this.$set(e, 'disabled', false)
+          }
+        }
+      })
+    },
+    // 复制
+    copyDoc() {
+      this.$emit("copyOrder", this.form.id);
+    },
+    //修改提交触发
+    editCustomer(status) {
+      this.$refs["form"].validate((valid, done) => {
+        done();
+        if (valid) {
+          if (this.form.origWarehouse == this.form.warehouse) {
+            return this.$message.error('原仓库与调拨仓库不能一致')
+          }
+          this.$set(this.form, 'itemList', this.dataList)
+          this.btnLoading = true;
+          typeSave(this.form).then(res => {
+            this.$message({type: "success", message: this.form.id ? "修改成功!" : "新增成功!"});
+            this.queryData(res.data.data);
+          }).finally(() => {
+            this.btnLoading = false;
+          })
+        } else {
+          return false
+        }
+      })
+    },
+    cellStyle() {
+      return "padding:0;height:40px;";
+    },
+    async saveColumn() {
+      const inSave = await this.saveColumnData(
+        this.getColumnName(122),
+        this.tableOption
+      );
+      if (inSave) {
+        this.$message.success("保存成功");
+        //关闭窗口
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout()
+        })
+      }
+    },
+    async resetColumn() {
+      this.tableOption = tableOption;
+      const inSave = await this.delColumnData(
+        this.getColumnName(122),
+        tableOption
+      );
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout()
+        })
+        this.$message.success("重置成功");
+        //关闭窗口
+        setTimeout(() => {
+          this.$refs.crud.$refs.dialogColumn.columnBox = false;
+        }, 1000);
+      }
+    },
+    //录入明细
+    newDetails() {
+      this.$refs["form"].validate((valid, done) => {
+        done()
+        if (valid) {
+          this.dialogVisible = !this.dialogVisible;
+        }
+      })
+    },
+    rowCell(row, index) {
+      if (row.$cellEdit == true) {
+        this.$set(row, "$cellEdit", false);
+      } else {
+        this.$set(row, "$cellEdit", true);
+      }
+    },
+    rowDel(row, index) {
+      this.$confirm("确定删除数据?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        if (row.id) {
+          removeGoods(row.id).then(res => {
+            this.$message({
+              type: 'success',
+              message: '删除成功!'
+            })
+            this.dataList.splice(row.$index, 1);
+          })
+        } else {
+          this.$message({
+            type: "success",
+            message: "删除成功!"
+          });
+          this.dataList.splice(row.$index, 1);
+        }
+      });
+    },
+    getKHData(row) {},
+    userHandle() {
+      this.form.userName = this.userList.find(item => item.id == this.form.createUser).realName;
+    },
+    // 验证新旧值对比
+    verification() {
+      if (contrastObj(this.form, this.oldForm) ||
+        contrastList(this.dataList, this.oldDataList)) {
+        this.$confirm("数据发生变化未有提交记录, 是否提交?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          this.editCustomer();
+        }).catch(() => {
+          return false;   //取消改动数据
+        })
+      } else {
+        return true;
+      }
+    },
+    deptClick(data) {
+      this.$set(this.form, 'deptName', data.title)
+    },
+    //打开审核
+    openCheckDialog(){
+      this.checkData  = this.detailData.check
+      this.checkDialog = true;
+    },
+    //关闭审核
+    choceCheckFun(){
+      this.checkDialog = false;
+    },
+    choceScheduleFun(){
+      this.checkScheduleDialog = false
+    },
+    // 请核
+    pleaseCheck() {
+      if (this.verification()) {
+        const data = {
+          id : this.form.id,
+          checkType: 'fybx',
+          url: '/reimbursement/index',
+          pageStatus:"this.$store.getters.reimbursementStatus",
+          pageLabel:"报销",
+          checkFlag: 1,
+        }
+        this.btnLoading = true;
+        pleaseCheck(data).then(res => {
+          this.$message.success('请核成功')
+          this.queryData(this.form.id)
+        }).catch(() => {
+          this.$message.error('请核失败')
+        }).finally(() => {
+          this.btnLoading = false;
+        })
+      }
+    },
+    // 报表
+    openReport() {
+      this.switchDialog =! this.switchDialog;
+    },
+    // 报表关闭
+    onClose(val) {
+      this.switchDialog = val;
+    },
+    rePick(row, index) {
+      this.reData = {
+        ...row,
+        index: index
+      };
+      this.newDetails();
+    },
+    codeChange(row) {
+      this.goodsoptions.forEach(async e => {
+        if (e.code == row.code) {
+          row.itemId = e.id;
+          row.storageQuantity =  e.storageQuantity;
+          row.cname = e.cname;
+          row.code = e.code;
+          row.corpId = e.corpId;
+          row.corpName = e.corpName;
+          row.brandItem = e.brandItem;
+          row.specsOne = e.specsOne;
+          row.specsTwo = e.specsTwo;
+          row.typeno = e.typeno;
+          row.unit = e.unit;
+          row.size = e.size;
+          row.arr = e.arr;
+          row.priceCategory = e.goodsTypeName;
+          row.purchaseAmount = e.purchaseAmount;
+          row.batch = e.batch;
+          row.newJob = e.newJob;
+          row.newDate = e.newDate;
+          row.price = e.price;
+        }
+      });
+    },
+    cnameChange(row) {
+      this.goodsoptions.forEach(async e => {
+        if (e.id == row.itemId) {
+          row.storageQuantity =  e.storageQuantity
+          row.cname = e.cname;
+          row.code = e.code;
+          row.corpId = e.corpId;
+          row.corpName = e.corpName;
+          row.brandItem = e.brandItem;
+          row.specsOne = e.specsOne;
+          row.specsTwo = e.specsTwo;
+          row.typeno = e.typeno;
+          row.unit = e.unit;
+          row.size = e.size;
+          row.arr = e.arr;
+          row.priceCategory = e.goodsTypeName;
+          row.purchaseAmount = e.purchaseAmount;
+          row.batch = e.batch;
+          row.newDate = e.newDate;
+          row.newJob = e.newJob;
+          row.price = e.price;
+        }
+      });
+    },
+    importGoods() {
+      if (this.reData) {
+        if (this.selectionList.length != 1) {
+          return this.$message.error("重新选择的时候只能选择一条数据");
+        } else {
+          this.selectionList.forEach(e => {
+            this.dataList.forEach(async (item, index) => {
+              if (index == this.reData.index) {
+                item.itemId = e.id;
+                item.code = e.code;
+                item.cname = e.cname;
+                item.corpId = e.corpId;
+                item.corpName = e.corpName;
+                item.brandItem = e.brandItem;
+                item.specsOne = e.specsOne;
+                item.specsTwo = e.specsTwo;
+                item.typeno = e.typeno;
+                item.unit = e.unit;
+                item.size = e.size;
+                item.priceCategory = e.goodsTypeName;
+                item.purchaseAmount = e.purchaseAmount;
+                item.batch = e.batch;
+                item.newDate = e.newDate;
+                item.newJob = e.newJob;
+                item.price = e.price;
+                item.$cellEdit = true;
+              }
+            });
+          });
+        }
+      } else {
+        if (this.goodsListSave.length > 0) { // 暂存的有数据
+          this.goodsListSave.forEach(async e => {
+            this.dataList.push({
+              itemId: e.id,
+              code: e.code,
+              cname: e.cname,
+              brandItem: e.brandItem,
+              specsOne: e.specsOne,
+              specsTwo: e.specsTwo,
+              typeno: e.typeno,
+              corpId: e.corpId,
+              corpName: e.corpName,
+              unit: e.unit,
+              size: e.size,
+              price: e.price,
+              amount: 0,
+              orderQuantity: 0,
+              storageQuantity: e.storageQuantity,
+              purchaseAmount: e.purchaseAmount,
+              batch: e.batch,
+              arr: e.arr,
+              newJob:e.newJob,
+              newDate: e.newDate,
+              $cellEdit: true
+            });
+          });
+        } else {
+          this.selectionList.forEach(async e => {
+            this.dataList.push({
+              itemId: e.id,
+              code: e.code,
+              cname: e.cname,
+              brandItem: e.brandItem,
+              specsOne: e.specsOne,
+              specsTwo: e.specsTwo,
+              typeno: e.typeno,
+              corpId: e.corpId,
+              corpName: e.corpName,
+              unit: e.unit,
+              size: e.size,
+              amount: 0,
+              orderQuantity: 0,
+              storageQuantity: e.storageQuantity,
+              purchaseAmount: e.purchaseAmount,
+              batch: e.batch,
+              arr: e.arr,
+              newJob: e.newJob,
+              newDate: e.newDate,
+              price: e.price,
+              $cellEdit: true
+            });
+          });
+        }
+      }
+      this.dialogVisible = false;
+    },
+    closeGoods() {
+      this.selectionList = [];
+      this.treeDeptId = "";
+      this.reData = null;
+      this.activeName = 'searchList';
+      this.goodsListSave = [];
+    },
+    nodeClick(data) {
+      this.treeDeptId = data.id;
+      this.page.currentPage = 1;
+      this.onLoad(this.page);
+    },
+    //商品查询
+    onLoad(page, params = {}) {
+      let obj = this.deepClone(Object.assign(params, this.search));
+      this.loading = true;
+      getGoods(page.currentPage, page.pageSize, this.treeDeptId, obj)
+        .then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.goodsList = data.records;
+          this.pageList.total = data.total;
+          this.goodsListShow = data.records;
+          if (this.page.total) {
+            this.goodsOption.height = window.innerHeight - 350;
+          }
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    searchChange(params, done) {
+      this.search = this.deepClone(params);
+      this.onLoad(this.page, params);
+      done();
+    },
+    selectionChange(list) {
+      this.selectionList = list;
+    },
+    rowClick(row) {
+      this.$refs.goodsCrud.toggleSelection([this.goodsList[row.$index]]);
+    },
+    async saveGoodsColumn() {
+      const inSave = await this.saveColumnData(
+        this.getColumnName(123),
+        this.goodsOption
+      );
+      if (inSave) {
+        this.$message.success("保存成功");
+        //关闭窗口
+        this.$refs.goodsCrud.$refs.dialogColumn.columnBox = false;
+        this.$nextTick(() => {
+          this.$refs.goodsCrud.doLayout()
+        })
+      }
+    },
+    async resetGoodsColumn() {
+      this.goodsOption = goodsOption;
+      const inSave = await this.delColumnData(
+        this.getColumnName(123),
+        goodsOption
+      );
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.goodsCrud.doLayout()
+        })
+        this.$message.success("重置成功");
+        //关闭窗口
+        setTimeout(() => {
+          this.$refs.goodsCrud.$refs.dialogColumn.columnBox = false;
+        }, 1000);
+      }
+    },
+    // 标签页切换
+    tabHandle(data) {
+      if (data.name == 'searchList') {
+        this.goodsListShow = this.goodsList;
+        this.page.total = this.pageList.total
+      } else if (data.name == 'importStaging') {
+        this.goodsListShow = this.goodsListSave;
+        this.page.total = 0
+      }
+    },
+    removeStagList(row, index) {
+      this.goodsListSave.splice(row.$index, 1)
+    },
+    importStagList(row, index) {
+      this.goodsListSave.push(row);
+    },
+  },
+}
+</script>
+
+<style scoped>
+
+</style>

+ 272 - 0
src/views/dealer/allocation/index.vue

@@ -0,0 +1,272 @@
+<template>
+  <div>
+    <basic-container v-show="show" class="page-crad">
+      <avue-crud
+        ref="crud"
+        :option="option"
+        :data="dataList"
+        v-model="form"
+        :page.sync="page"
+        :search.sync="search"
+        :table-loading="loading"
+        :cell-style="cellStyle"
+        @selection-change="selectionChange"
+        @search-change="searchChange"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
+        @on-load="onLoad"
+        @search-criteria-switch="searchCriteriaSwitch"
+        @saveColumn="saveColumn"
+        @resetColumn="resetColumn"
+      >
+        <template slot="menuLeft">
+          <el-button
+            type="primary"
+            icon="el-icon-plus"
+            size="small"
+            @click.stop="newAdd()"
+          >创建单据</el-button>
+          <el-button
+            type="success"
+            size="small"
+            icon="el-icon-plus"
+            @click.stop="copyDoc()"
+            :disabled="selection.length != 1"
+            v-if="false"
+          >复制单据</el-button>
+        </template>
+        <template slot-scope="scope" slot="menu">
+          <el-button
+            type="text"
+            icon="el-icon-delete"
+            size="small"
+            @click.stop="rowDel(scope.row, scope.index)"
+            :disabled="scope.row.status == 3"
+          >删除
+          </el-button>
+        </template>
+        <template slot-scope="scope" slot="sysNo">
+          <span style="color: #409EFF;cursor: pointer" @click.stop="beforeOpenPage(scope.row,scope.index)">{{ scope.row.sysNo }}</span>
+        </template>
+      </avue-crud>
+    </basic-container>
+    <detail-page
+      @goBack="goBack"
+      @copyOrder="copyOrder"
+      :detailData="detailData"
+      v-if="!show"
+    />
+  </div>
+</template>
+
+<script>
+import option from "./config/mainList.json";
+import detailPage from "./detail";
+import { gainUser } from "@/api/basicData/customerInquiry";
+import {getList, deleteList} from "@/api/standAlone/reimbursement";
+
+export default {
+  name: "index",
+  components: {
+    detailPage,
+  },
+  data() {
+    return {
+      option: {},
+      dataList: [],
+      form: {},
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0,
+        pageSizes: [10, 50, 100, 200, 300, 400, 500]
+      },
+      search: {},
+      show: true,
+      loading: false,
+      selection: [],
+      detailData: {},
+      userOption: [],
+    }
+  },
+  async created() {
+    this.option = await this.getColumnData(this.getColumnName(121), option);
+    gainUser().then(res => {
+      this.userOption = res.data.data;
+    })
+    let i = 0;
+    this.option.column.forEach(item => {
+      if (item.search) i++
+    })
+    if (i % 3 !== 0){
+      const num = 3 - Number(i % 3)
+      this.option.searchMenuSpan = num * 8;
+      this.option.searchMenuPosition = "right";
+    }
+  },
+  activated() {
+    if (this.$route.query.check) {
+      this.show = true
+      this.detailData = {
+        id: this.$route.query.check.billId,
+        check: this.$route.query.check,
+        auditId: this.$route.query.check.id,
+      };
+      this.show = false;
+      this.$store.commit("BX_IN_DETAIL");
+    }
+    if (this.$route.query.params) {
+      this.show = true;
+      this.detailData = {
+        id: this.$route.query.params,
+      };
+      this.show = false;
+      this.$store.commit("BX_IN_DETAIL");
+    }
+  },
+  methods: {
+    searchCriteriaSwitch(type) {
+      if (type){
+        this.option.height =  this.option.height - 90
+      }else {
+        this.option.height =  this.option.height + 90
+      }
+      this.$refs.crud.getTableHeight()
+    },
+    newAdd() {
+      this.show = false;
+      this.$store.commit("BX_IN_DETAIL");
+    },
+    onLoad(page, params) {
+      // 重置掉展开
+      this.dataList.forEach(item => {
+        this.$refs.crud.toggleRowExpansion(item, false)
+      })
+      let queryParams = Object.assign({}, params, {
+        size: page.pageSize,
+        current: page.currentPage,
+      })
+      if (queryParams.claimDate && queryParams.claimDate.length > 0) {
+        queryParams = {
+          ...queryParams,
+          beginClaimDate: queryParams.claimDate[0] + ' 00:00:00',
+          endClaimDate: queryParams.claimDate[1] + ' 23:59:59',
+        }
+      }
+      delete queryParams.claimDate;
+      this.loading = true;
+      getList(queryParams).then(res => {
+        this.dataList = res.data.data.records;
+        this.page.total = res.data.data.total;
+        this.option.height = window.innerHeight - 240;
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout()
+        })
+      }).finally(() => {
+        this.loading = false;
+      })
+    },
+    async saveColumn() {
+      const inSave = await this.saveColumnData(
+        this.getColumnName(121),
+        this.option
+      );
+      if (inSave) {
+        this.$message.success("保存成功");
+        //关闭窗口
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout()
+        })
+      }
+    },
+    async resetColumn() {
+      this.option = option;
+      const inSave = await this.delColumnData(this.getColumnName(121), option);
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout()
+        })
+        this.$message.success("重置成功");
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+      }
+    },
+    //点击搜索按钮触发
+    searchChange(params, done) {
+      this.onLoad(this.page, params);
+      done();
+    },
+    currentChange(val) {
+      this.page.currentPage = val;
+    },
+    sizeChange(val) {
+      this.page.currentPage = 1;
+      this.page.pageSize = val;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.search);
+    },
+    cellStyle() {
+      return "padding:0;height:40px;";
+    },
+    copyDoc() {},
+    selectionChange(list) {
+      this.selection = list;
+    },
+    goBack() {
+      if (this.$route.query.check || this.$route.query.params) {
+        this.$router.$avueRouter.closeTag(this.$route.fullPath);
+        this.$router.push({
+          path: "/reimbursement/index"
+        });
+      }
+      this.detailData = this.$options.data().detailData;
+      this.show = true;
+      this.onLoad(this.page, this.search);
+    },
+    copyOrder(id) {
+      this.show = true;
+      this.detailData = {
+        id: id,
+        status: "copy"
+      };
+      this.$nextTick(() => {
+        this.show = false;
+        this.$store.commit("BX_IN_DETAIL");
+      });
+    },
+    // 详情打开
+    beforeOpenPage(row, index) {
+      this.show = false;
+      this.detailData = {
+        id: row.id,
+        query: true, // 表示只是查询
+      };
+      this.$store.commit("BX_IN_DETAIL");
+    },
+    //删除列表后面的删除按钮触发触发(row, index, done)
+    rowDel(row, index, done) {
+      this.$confirm("确定删除数据?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(res => {
+        return deleteList(row.id)
+      }).then(() => {
+        this.dataList.splice(row.$index, 1)
+        this.$message({
+          type: "success",
+          message: "删除成功!"
+        });
+        this.page.currentPage = 1;
+        this.onLoad(this.page)
+      })
+    },
+  },
+}
+</script>
+
+<style scoped>
+
+</style>

+ 9 - 0
src/views/maintenance/integral/config/mainList.json

@@ -20,6 +20,15 @@
   "expandWidth": 38,
   "column": [
     {
+      "label": "编码",
+      "prop": "code",
+      "search": true,
+      "index": 1,
+      "minWidth": 80,
+      "overHidden": true,
+      "searchSpan": 8
+    },
+    {
       "label": "客户",
       "prop": "corpId",
       "search": true,

+ 9 - 0
src/views/maintenance/overpayment/config/mainList.json

@@ -20,6 +20,15 @@
   "expandWidth": 38,
   "column": [
     {
+      "label": "编码",
+      "prop": "code",
+      "search": true,
+      "index": 1,
+      "minWidth": 80,
+      "overHidden": true,
+      "searchSpan": 8
+    },
+    {
       "label": "客户",
       "prop": "corpId",
       "search": true,

+ 9 - 0
src/views/maintenance/rebate/config/mainList.json

@@ -20,6 +20,15 @@
   "expandWidth": 38,
   "column": [
     {
+      "label": "编码",
+      "prop": "code",
+      "search": true,
+      "index": 1,
+      "minWidth": 80,
+      "overHidden": true,
+      "searchSpan": 8
+    },
+    {
       "label": "客户",
       "prop": "cname",
       "search": true,

+ 1 - 1
src/views/maintenance/salesPolicy/configuration/customerContact.json

@@ -17,7 +17,7 @@
   "border": true,
   "index": true,
   "selection": true,
-  "menuWidth": 300,
+  "menuWidth": 140,
   "dialogClickModal": false,
   "column":[
     {

+ 2 - 2
src/views/maintenance/salesPolicy/configuration/mainList.json

@@ -77,7 +77,7 @@
       "pickerOptions": {}
     },
     {
-      "label": "有效期开始时间",
+      "label": "开始时间",
       "prop": "startTime",
       "type": "date",
       "unlinkPanels": true,
@@ -91,7 +91,7 @@
       "pickerOptions": {}
     },
     {
-      "label": "有效期结束时间",
+      "label": "结束时间",
       "prop": "endTime",
       "type": "date",
       "unlinkPanels": true,

+ 16 - 8
src/views/maintenance/salesPolicy/detailsPageEdit.vue

@@ -169,16 +169,20 @@
               </el-upload>
             </template>
             <template slot-scope="{ row, index }" slot="menu">
-              <el-button type="text" size="small" @click="rowCell(row, index)"
-                >{{ row.$cellEdit ? "保存" : "修改" }}
+              <el-button
+                type="text"
+                size="small"
+                @click="rowCell(row, index)"
+                icon="el-icon-edit"
+              >{{ row.$cellEdit ? "保存" : "修改" }}
               </el-button>
               <el-button
                 size="small"
                 icon="el-icon-delete"
                 type="text"
                 @click="rowDel(row, index)"
-                >删 除</el-button
-              >
+                v-show="form.status == 1"
+              >删 除</el-button>
             </template>
           </avue-crud>
         </basic-container>
@@ -227,7 +231,11 @@
               >
             </template>
             <template slot-scope="{ row, index }" slot="menu">
-              <el-button type="text" size="small" @click="rowCellE(row, index)"
+              <el-button
+                type="text"
+                size="small"
+                @click="rowCellE(row, index)"
+                icon="el-icon-edit"
                 >{{ row.$cellEdit ? "保存" : "修改" }}
               </el-button>
               <el-button
@@ -235,6 +243,7 @@
                 icon="el-icon-delete"
                 type="text"
                 @click="rowDelBuyFree(row, index)"
+                v-show="form.status == 1"
                 >删 除</el-button
               >
             </template>
@@ -514,7 +523,6 @@ export default {
   },
   watch: {
     $route(to, from) {
-      console.log(to, from);
       if (this.detailData.id) {
       } else {
         this.form = {};
@@ -620,9 +628,9 @@ export default {
           this.page.total = data.total;
           this.goodsList = data.records;
           if (this.page.total) {
-            this.goodsOption.height = window.innerHeight - 280;
+            this.goodsOption.height = window.innerHeight - 400;
           } else {
-            this.goodsOption.height = window.innerHeight - 280;
+            this.goodsOption.height = window.innerHeight - 400;
           }
         })
         .finally(() => {

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

@@ -27,38 +27,53 @@
   "column": [
     {
       "label": "日期",
-      "prop": "expenseDate",
+      "prop": "payDate",
       "index": 1,
       "width": 200,
       "overHidden": true
     },
     {
-      "label": "费用项目",
-      "prop": "expenseId",
+      "label": "费用类别",
+      "prop": "moldId",
       "index": 2,
       "width": 200,
       "overHidden": true
     },
     {
-      "label": "摘要说明",
-      "prop": "explanation",
+      "label": "费用明细",
+      "prop": "detailId",
       "index": 3,
       "width": 200,
       "overHidden": true
     },
     {
-      "label": "单据张数",
-      "prop": "quantity",
+      "label": "摘要说明",
+      "prop": "explanation",
       "index": 4,
+      "width": 200,
+      "overHidden": true
+    },
+    {
+      "label": "支付方式",
+      "prop": "payMethod",
+      "index": 5,
       "width": 120,
       "overHidden": true
     },
     {
       "label": "金额",
       "prop": "amount",
-      "index": 5,
+      "index": 6,
       "width": 140,
       "overHidden": true
+    },
+    {
+      "label": "备注",
+      "prop": "remarks",
+      "index": 6,
+      "width": 160,
+      "overHidden": true,
+      "cell": true
     }
   ]
 }

+ 104 - 53
src/views/reimbursement/detail.vue

@@ -159,10 +159,10 @@
               :disabled="disabled || checkDisabled"
             >删除</el-button>
           </template>
-          <template slot="expenseDate" slot-scope="{ row, index }">
+          <template slot="payDate" slot-scope="{ row, index }">
             <el-date-picker
               v-if="row.$cellEdit"
-              v-model="row.expenseDate"
+              v-model="row.payDate"
               type="date"
               placeholder="选择日期"
               size="small"
@@ -170,17 +170,42 @@
               format="yyyy-MM-dd"
               valueFormat="yyyy-MM-dd"
             ></el-date-picker>
-            <span v-else>{{row.expenseDate}}</span>
+            <span v-else>{{row.payDate}}</span>
           </template>
-          <template slot="expenseId" slot-scope="{ row }">
-            <breakdown-select
+          <template slot="moldId" slot-scope="{ row }">
+            <avue-cascader
               v-if="row.$cellEdit"
-              v-model="row.expenseId"
-              @selectValue="value => selectValue(value, row)"
-              :configuration="breakConfiguration"
+              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="请选择"
+            ></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"
             >
-            </breakdown-select>
-            <span v-else>{{ row.expenseItem }}</span>
+              <el-option
+                v-for="(item, index) in row.feeList"
+                :key="index"
+                :label="item.cname"
+                :value="item.id"
+              ></el-option>
+            </el-select>
+            <span v-else>{{ row.detail }}</span>
           </template>
           <template slot="explanation" slot-scope="{ row, index }">
             <el-input
@@ -191,17 +216,21 @@
             />
             <span v-else>{{row.explanation}}</span>
           </template>
-          <template slot="quantity" slot-scope="{ row, index }">
-            <el-input-number
-              v-if="row.$cellEdit"
-              v-model="row.quantity"
+          <template slot="payMethod" slot-scope="{ row, index }">
+            <el-select
+              v-model="row.payMethod"
               size="small"
-              :controls="false"
-              :precision="0"
-              style="width: 100%"
-              placeholder="单据张数"
-            ></el-input-number>
-            <span v-else>{{ row.quantity }}</span>
+              placeholder="请选择"
+              clearable
+              :disabled="!row.$cellEdit"
+            >
+              <el-option
+                v-for="(item, index) in paymentOption"
+                :key="item.dictKey"
+                :label="item.dictValue"
+                :value="item.dictKey"
+              ></el-option>
+            </el-select>
           </template>
           <template slot="amount" slot-scope="{ row, index }">
             <el-input-number
@@ -284,6 +313,7 @@ import { contrastObj, contrastList } from "@/util/contrastData";
 import check from "@/components/check/check";
 import checkSchedule from "@/components/check/checkSchedule";
 import reportDialog from "@/components/report-dialog/main";
+import {getDeptTree as getFeesId, customerList as getFeesList} from "@/api/basicData/basicFeesDesc";
 
 export default {
   name: "detail",
@@ -349,39 +379,6 @@ export default {
             slot: true,
           },
           {
-            label: "岗位",
-            prop: "postId",
-            rules: [
-              {
-                required: true,
-                message: " ",
-                trigger: "blur"
-              }
-            ],
-            span: 8,
-            slot: true,
-          },
-          {
-            label: "职位",
-            prop: "position",
-            rules: [
-              {
-                required: true,
-                message: " ",
-                trigger: "blur"
-              }
-            ],
-            span: 8,
-            slot: true,
-          },
-          {
-            label: "No.",
-            prop: "serialNo",
-            span: 8,
-            slot: true,
-            disabled: true,
-          },
-          {
             label: "备注",
             prop: "remarks",
             type: "textarea",
@@ -394,6 +391,7 @@ export default {
       tableOption: {},
       goodsoptions: [],
       unitOption: [],
+      paymentOption: [],
       selectionList: [],
       search: {},
       treeStyle: "height:" + (window.innerHeight - 315) + "px",
@@ -423,6 +421,12 @@ export default {
       checkDialog: false,
       checkScheduleDialog: false,
       checkData: {},
+      dicArea: [],
+      props: {
+        value: 'value',
+        label: 'title',
+      },
+      feesOption: [],
     }
   },
   async created() {
@@ -458,9 +462,25 @@ export default {
         }
       }
     });
+    getFeesId().then(res => {
+      this.dicArea = res.data.data;
+    })
+    getFeesList({size: 10, current: 1}).then(res => {
+      this.feesOption = res.data.data.total > 0? res.data.data.records: [];
+      if (Math.ceil(res.data.data.total / 10) > 1) {
+        for (let i = 2; i <= Math.ceil(res.data.data.total / 10); i++) {
+          getFeesList({size: 10, current: 1}).then(e => {
+            this.feesOption = this.feesOption.concat(e.data.data.records);
+          });
+        }
+      }
+    });
     this.getWorkDicts('unit').then(res => {
       this.unitOption = res.data.data;
     })
+    this.getWorkDicts("payment_term").then(res => {
+      this.paymentOption = res.data.data;
+    })
     if (this.detailData.query) {
       this.disabled = true;
       this.option.column.map(e => {
@@ -488,6 +508,9 @@ export default {
       dataDetail({id: id}).then(res => {
         this.form = res.data.data;
         this.dataList = this.form.itemList? this.form.itemList: [];
+        this.dataList.forEach(item => {
+          this.moldChange(item.moldId, item, this.dicArea, false)
+        })
         this.oldForm = {...this.form};
         this.oldDataList = [...this.dataList];
         delete this.form.itemList;
@@ -581,6 +604,7 @@ export default {
         if (valid) {
           this.dataList.push({
             $cellEdit: true,
+            feeList: this.feesOption,
           })
         }
       })
@@ -689,6 +713,33 @@ export default {
     onClose(val) {
       this.switchDialog = val;
     },
+    moldChange(e, row, list, remove = true) {
+      if (remove && row.moldId != e) {
+        this.$set(row, 'detailId', null);
+      }
+      list.forEach(item => {
+        if (e == item.value) {
+          this.$set(row, 'mold', item.title)
+          getFeesList({size: 10, current: 1,feesTypeId: e}).then(res => {
+            this.$set(row, 'feeList', res.data.data.total > 0? res.data.data.records: []);
+            if (Math.ceil(res.data.data.total / 10) > 1) {
+              for (let i = 2; i <= Math.ceil(res.data.data.total / 10); i++) {
+                getFeesList({size: 10, current: 1,feesTypeId: e}).then(e => {
+                  row.feeList = row.feeList.concat(e.data.data.records);
+                });
+              }
+            }
+          });
+        }
+
+        if (item.hasChildren) {
+          this.moldChange(e, row, item.children, false)
+        }
+      })
+    },
+    detailChange(row) {
+      row.detail = row.feeList.find(item => item.id == row.detailId)? row.feeList.find(item => item.id == row.detailId).cname: null
+    },
   },
 }
 </script>

+ 1 - 0
src/views/reimbursement/index.vue

@@ -144,6 +144,7 @@ export default {
       this.show = true;
       this.detailData = {
         id: this.$route.query.params,
+        query: true,
       };
       this.show = false;
       this.$store.commit("BX_IN_DETAIL");

+ 1 - 0
src/views/workManagement/purchaseApply/index.vue

@@ -135,6 +135,7 @@ export default {
       this.show = true;
       this.detailData = {
         id: this.$route.query.params,
+        query: true,
       };
       this.show = false;
       this.$store.commit("OFFICEPUR_IN_DETAIL");

+ 1 - 0
src/views/workManagement/requisition/index.vue

@@ -135,6 +135,7 @@ export default {
       this.show = true;
       this.detailData = {
         id: this.$route.query.params,
+        query: true,
       };
       this.show = false;
       this.$store.commit("OFFICELY_IN_DETAIL");