Browse Source

修改bug

lichao 3 years ago
parent
commit
7ce0a54eef

+ 12 - 0
src/api/dealer/purchase.js

@@ -59,3 +59,15 @@ export function historyPrice(params) {
     params
   })
 }
+// 商品明细分页查询
+export function itemDetail(current, size, params) {
+  return request({
+    url: '/api/trade-purchase/purchase-order/orderItems/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size
+    }
+  })
+}

+ 12 - 0
src/api/dealer/sales.js

@@ -67,3 +67,15 @@ export function historyPrice(params) {
     params
   })
 }
+// 商品明细分页查询
+export function itemDetail(current, size, params) {
+  return request({
+    url: '/api/blade-purchase-sales/orderItems/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size
+    }
+  })
+}

+ 60 - 0
src/components/finance/config/corpOption.json

@@ -0,0 +1,60 @@
+{
+    "searchShow": true,
+    "searchMenuSpan": 8,
+    "lazy": true,
+    "align": "center",
+    "border": true,
+    "index": true,
+    "tree": true,
+    "addBtn": false,
+    "menu":false,
+    "selection":true,
+    "tip":false,
+    "column":[
+        {
+            "label": "编码",
+            "prop": "code",
+            "index": 1,
+            "width":100,
+          "overHidden": true
+        },{
+            "label": "名称",
+            "prop": "cname",
+            "search": true,
+            "searchSpan": 16,
+            "index": 2,
+            "width":180,
+        "overHidden": true
+      },{
+            "label": "区域",
+            "prop": "belongtoarea",
+            "index": 4,
+            "width":180,
+        "overHidden": true
+      },{
+            "label": "所属公司",
+            "prop": "belongtocompany",
+            "index": 5,
+            "width":100,
+        "overHidden": true
+      },{
+            "label": "联系人",
+            "prop": "attn",
+            "index": 6,
+            "width":100,
+        "overHidden": true
+      },{
+            "label": "代理品牌",
+            "prop": "goodtypes",
+            "index": 7,
+            "width":100,
+        "overHidden": true
+      },{
+            "label": "等级",
+            "prop": "creditLevel",
+            "index": 8,
+            "width":100,
+        "overHidden": true
+      }
+    ]
+}

+ 3 - 2
src/components/finance/config/option.json

@@ -14,8 +14,8 @@
   "addBtn": false,
   "viewBtn": false,
   "editBtn": false,
-  "delBtn": true,
-  "menuWidth": 80,
+  "delBtn": false,
+  "menuWidth": 120,
   "searchLabelWidth": 130,
   "showSummary": true,
   "summaryText": "合计",
@@ -65,6 +65,7 @@
       "label": "合同日期",
       "prop": "accDate",
       "type": "date",
+      "format": "yyyy-MM-dd",
       "overHidden": true,
       "index": 5,
       "cell": true,

+ 258 - 24
src/components/finance/financialAccount.vue

@@ -21,40 +21,56 @@
           </el-button>
         </template>
         <template slot-scope="{row,index}" slot="menu">
-          <!--        <el-button-->
-          <!--          type="text"-->
-          <!--          size="small"-->
-          <!--          icon="el-icon-edit"-->
-          <!--          @click="rowCell(row,index)"-->
-          <!--        >{{ row.$cellEdit ? '修改完成' : '修改' }}-->
-          <!--        </el-button>-->
+          <el-button
+            type="text"
+            size="small"
+            icon="el-icon-edit"
+            @click="rowCell(row,index)"
+          >{{ row.$cellEdit ? '保存' : '修改' }}
+          </el-button>
           <el-button
             type="text"
             icon="el-icon-delete"
             size="small"
             @click="rowDel(row,index)"
-          >删除
-          </el-button>
+          >删除</el-button>
         </template>
         <template slot-scope="{row,index}" slot="corpId">
           <span v-if="row.$cellEdit && category != 2" class="required_fields" style="float: left;line-height: 32px">*</span>
-          <crop-select
-            v-if="row.$cellEdit && category != 2"
-            v-model="corpId"
-            corpType="KG"
-            style="width: 100%"
-          ></crop-select>
+          <span v-if="row.$cellEdit && category != 2" style="display: flex">
+            <el-select
+              v-model="corpId"
+              placeholder="请选择"
+              size="small"
+              style="width:60%"
+              filterable
+            >
+              <el-option
+                v-for="item in corpOption"
+                :key="item.id"
+                :label="item.cname"
+                :value="item.id"
+              />
+            </el-select>
+            <el-button
+              icon="el-icon-search"
+              size="small"
+              @click="openDialog(row, index, 1)"
+            ></el-button>
+          </span>
+
           <span v-else>{{corpsName}}</span>
         </template>
         <template slot-scope="{row,index}" slot="costType">
-<!--          <span v-if="row.$cellEdit" class="required_fields">*</span>-->
           <breakdown-select
             v-if="row.$cellEdit"
             v-model="row.costType"
             style="width: 90%"
-            :configuration="configuration">
+            :configuration="configuration"
+            @selectValue="(value) => {getFeeValue(row, value)}"
+          >
           </breakdown-select>
-          <span v-else>{{ row.costType }}</span>
+          <span v-else>{{ row.costName }}</span>
         </template>
         <template slot-scope="{row,index}" slot="billNo">
           <el-select placeholder="请选择"
@@ -109,7 +125,7 @@
             @input="amountChange(row)"
             style="width: 100%"
           />
-          <span v-else>{{ row.price }}</span>
+          <span v-else>{{ Number(row.price).toFixed(2) }}</span>
         </template>
         <template slot-scope="{row,index}" slot="quantity">
           <el-input-number
@@ -140,6 +156,64 @@
                  @on-load="onLoad">
       </avue-crud>
     </basic-container>
+
+    <el-dialog
+      title="客户、供应商"
+      :visible.sync="corpVisible"
+      width="80%"
+      top="5vh"
+      append-to-body
+      @closed="closeCorp"
+      class="el-dialogDeep"
+      v-dialog-drag
+    >
+      <span>
+        <el-row>
+          <el-col :span="4">
+            <el-scrollbar>
+              <basic-container>
+                <avue-tree
+                  :option="corpTreeOption"
+                  :data="treeData"
+                  @node-click="corpNodeClick"
+                  :style="treeStyle"
+                />
+              </basic-container>
+            </el-scrollbar>
+          </el-col>
+          <el-col :span="20">
+            <avue-crud
+              :option="KHOption"
+              :data="corpData"
+              ref="crud"
+              :page.sync="corpPage"
+              :search.sync="corpSearch"
+              @search-change="corpSearchChange"
+              @search-reset="corpSearchReset"
+              @selection-change="selectionChange"
+              @current-change="corpCurrentChange"
+              @size-change="corpSizeChange"
+              @on-load="corpOnLoad"
+              @tree-load="corpTreeLoad"
+              @saveColumn="saveColumn"
+              @resetColumn="resetColumn"
+              @refresh-change="corpRefreshChange"
+              :table-loading="dialogLoading"
+            >
+            </avue-crud>
+          </el-col>
+        </el-row>
+      </span>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="corpVisible = false">取 消</el-button>
+        <el-button
+          type="primary"
+          @click="importCorp"
+          :disabled="selectionList.length != 1"
+        >确 定</el-button
+        >
+      </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -149,6 +223,9 @@
   import historyOption from "../bill/config/application.json"
   import {getUserInfo} from "@/api/system/user";
   import { getBillList } from "@/api/financialManagement/paymentRequest";
+  import {customerList, getDeptLazyTree} from "@/api/basicData/customerInformation";
+  import { getDeptLazyTree as getFeeLazyTree, customerList as feeList } from "@/api/basicData/basicFeesDesc";
+  import corpOption from './config/corpOption.json'
 
   export default {
     name: "financialAccount",
@@ -216,11 +293,53 @@
           pagerCount: 1,
           total: 0,
         },
+        corpOption: [], //客户
+        feeOption: [], // 费用
+        rowData: null,
+        corpVisible: false,
+        feeVisible: false,
+        treeStyle:'height:'+(window.innerHeight - 315)+'px',
+        corpTreeOption: {
+          nodeKey: "id",
+          lazy: true,
+          addBtn: false,
+          menu: false,
+          size: "small",
+          props: {
+            labelText: "标题",
+            label: "title",
+            value: "value",
+            children: "children"
+          }
+        },
+        treeCorpId: '',
+        selectionList: [],
+        corpPage: {
+          currentPage: 1,
+          pageSize: 10,
+          total: 0
+        },
+        corpSearch: {},
+        dialogLoading: false,
+        KHOption: corpOption,
+        corpData: [],
       }
     },
     created() {
       this.historyOption.searchShow = false
-
+      customerList({
+        size: 10000,
+        current: 1
+      }).then(res => {
+        this.corpOption = res.data.data.records? res.data.data.records: [];
+      })
+      this.loading = true;
+      feeList({size: 10000, current: 1}).then(res => {
+        this.feeOption = res.data.data.records? res.data.data.records: [];
+        this.init()
+      }).finally(() => {
+        this.loading = false;
+      })
       getUserInfo().then(res=>{
         this.category = res.data.data.billType
         if (this.category == 2) {
@@ -235,7 +354,7 @@
       })
     },
     mounted() {
-      this.init()
+      // this.init()
     },
     watch:{
       billId(val, oldVal) {
@@ -249,13 +368,23 @@
         if(this.arrList.length === 0){
           this.corpId = this.billData.corpId
           this.corpsName = this.billData.corpsName[0].cname
-          this.$refs.crud.rowCellAdd(this.billData);
+          this.feeOption.forEach(item => {
+            if (this.billData.costType == item.id) {
+              this.$set(this.billData, 'costName', item.cname)
+            }
+          })
+          this.data.push(this.billData)
         }else{
           this.billData = this.arrList[0]
           this.corpId = this.arrList[0].corpId
           this.corpsName = this.arrList[0].corpsName[0].cname
           this.arrList.forEach(item=>{
-            this.$refs.crud.rowCellAdd(item);
+            this.feeOption.forEach(e => {
+              if (item.costType == e.id) {
+                this.$set(item, 'costName', e.cname)
+              }
+            })
+            this.data.push(item)
           })
         }
 
@@ -278,7 +407,12 @@
         })
       },
       rowCell(row,index){
-        this.$refs.crud.rowCell(row, index)
+        // this.$refs.crud.rowCell(row, index)
+        if (row.$cellEdit == true) {
+          this.$set(row, '$cellEdit', false)
+        } else {
+          this.$set(row, '$cellEdit', true)
+        }
       },
       rowDel(row,index){
         this.$confirm("确定将选择数据删除?", {
@@ -413,6 +547,106 @@
         }
         row.amount = Number(row.price) * Number(row.quantity)
       },
+      // 客户、费用弹窗
+      openDialog(row, index, type) {
+        this.rowData = {
+          ...row,
+          index
+        }
+        // 1客户 2费用
+        if (type == 1) {
+          this.corpTreeOption.treeLoad = function(node, resolve) {
+            const parentId = node.level === 0 ? 0 : node.data.id;
+            getDeptLazyTree({
+              parentId: parentId,
+              corpType: "KG"
+            }).then(res => {
+              resolve(
+                res.data.data.map(item => {
+                  return {
+                    ...item,
+                    leaf: !item.hasChildren
+                  };
+                })
+              );
+            });
+          };
+          this.corpVisible = !this.corpVisible;
+        } else if (type == 2) {
+          this.feeVisible = !this.feeVisible;
+        }
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      closeCorp() {
+        this.selectionList = [];
+        this.treeCorpId = "";
+        this.reData = null;
+      },
+      corpNodeClick(data) {
+        this.treeCorpId = data.id;
+        this.corpPage.currentPage = 1;
+        this.corpOnLoad(this.corpPage);
+      },
+      //列表内展开树节点
+      corpTreeLoad(tree, treeNode, resolve) {
+        const parentId = tree.id;
+        customerList({ parentId: parentId }).then(res => {
+          resolve(res.data.data.records);
+        });
+      },
+      //点击搜索按钮触发
+      corpSearchChange(params, done) {
+        this.corpPage.currentPage = 1;
+        this.corpOnLoad(this.corpPage, params);
+        done();
+      },
+      corpSearchReset() {
+        this.treeCorpId = null;
+      },
+      corpSizeChange(val) {
+        this.corpPage.pageSize = val;
+        this.corpOnLoad();
+      },
+      corpCurrentChange(val) {
+        this.corpPage.currentPage = val;
+        this.corpOnLoad();
+      },
+      corpRefreshChange() {
+        this.corpOnLoad(this.corpPage, this.corpSearch);
+      },
+      corpOnLoad(page, params = { parentId: 0 }) {
+        let queryParams = Object.assign({}, params, {
+          size: page.pageSize,
+          current: page.currentPage,
+          corpsTypeId: this.treeDeptId,
+          corpType: 'KG'
+        });
+        this.dialogLoading = true;
+        customerList(queryParams)
+          .then(res => {
+            this.corpData = res.data.data.records;
+            this.corpPage.total = res.data.data.total;
+            if (this.corpPage.total) {
+              this.KHOption.height = window.innerHeight - 350;
+            }
+          })
+          .finally(() => {
+            this.dialogLoading = false;
+          });
+      },
+      importCorp() {
+        this.corpData.forEach((item, index) => {
+          if (index == this.rowData.index) {
+            item.corpId = this.selectionList[0].id;
+          }
+        })
+        this.corpVisible = false;
+      },
+      getFeeValue(row, value) {
+        this.$set(row, 'costName', value.cname)
+      }
     }
   }
 </script>

+ 39 - 4
src/views/dealer/purchase/detail.vue

@@ -25,6 +25,7 @@
           style="margin-right: 8px;"
           @click="dealerSubmit"
           :disabled="disabled"
+          :loading="btnLoading"
           v-if="form.id"
         >
           {{ form.status == 0? '确认订单': form.status == 3? '撤销订单': '' }}
@@ -88,6 +89,10 @@
           ref="crud"
           :data="dataList"
           :option="tableOption"
+          :page.sync="goodPage"
+          :table-loading="goodLoading"
+          @current-change="currentChange"
+          @size-change="sizeChange"
           :cell-style="cellStyle"
           @saveColumn="saveColumn"
           @resetColumn="resetColumn"
@@ -409,7 +414,7 @@ import {getDeptLazyTree,
   getGoods,} from "@/api/basicData/customerInquiry";
 import {selectGoodsNum} from "@/api/basicData/inventoryAccount"; // 库存查询
 import {getUserInfo} from "@/api/system/user"; //登录用户信息
-import {dataDetail, removeGoods, typeSave, dealerSubmit, historyPrice} from "@/api/dealer/purchase";
+import {dataDetail, removeGoods, typeSave, dealerSubmit, historyPrice, itemDetail} from "@/api/dealer/purchase";
 import {
   isDiscount,
   isPercentage,
@@ -628,6 +633,7 @@ export default {
       treeStyle: "height:" + (window.innerHeight - 315) + "px",
       goodsoptions: [],
       uploadData: [],
+      goodData: [], // 存储所有商品信息
       activeName: 'searchList',
       // 商品列表数据合计
       goodsListShow: [],
@@ -649,6 +655,12 @@ export default {
       headers: { "Blade-Auth": 'Bearer ' + getToken()},
       historyVisible: false,
       historyParams: {},
+      goodPage: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      goodLoading: false,
     }
   },
   async created() {
@@ -715,6 +727,7 @@ export default {
       this.pageLoading = true;
       dataDetail(id).then(res => {
         this.form = res.data.data;
+        this.getItemDetail();
         this.form.amount = Number(this.form.amount).toFixed(2);
         this.confirmDisabled = this.form.status == 3? true: false;
         if (this.confirmDisabled) {
@@ -722,7 +735,7 @@ export default {
           //   this.$set(e, 'disabled', true)
           // })
         }
-        this.dataList = this.form.orderItemsList? this.form.orderItemsList: [];
+        this.goodData = this.form.orderItemsList? this.form.orderItemsList: [];
         this.uploadData = this.form.orderFilesList? this.form.orderFilesList: [];
         delete this.form.orderItemsList;
         delete this.form.orderFilesList;
@@ -1179,7 +1192,7 @@ export default {
     beforeBillData(bool,type) {
       this.billType = type;
       this.applyPaymentList = [];
-      this.dataList.map(e => {
+      this.goodData.map(e => {
         const form = {
           srcOrderno:this.form.orderNo,
           srcParentId: this.form.id,
@@ -1198,7 +1211,7 @@ export default {
           amount: e.amount,
           costType: this.feesOption.find(item => item.cname == '货款')? this.feesOption.find(item => item.cname == '货款').id: null,
           srcFeesId: e.id,
-          cname: e.cname,
+          goodName: e.cname,
           price: e.price,
           quantity: e.orderQuantity,
           unit:e.unit,
@@ -1322,6 +1335,28 @@ export default {
     closeDialog() {
       this.historyVisible = false;
     },
+    // 商品明细分页处理
+    currentChange(val) {
+      this.goodPage.currentPage = val;
+      this.getItemDetail();
+    },
+    sizeChange(val) {
+      this.goodPage.currentPage = 1;
+      this.goodPage.pageSize = val;
+      this.getItemDetail();
+    },
+    getItemDetail() {
+      const data = {
+        pid: this.form.id,
+      };
+      this.goodLoading = true;
+      itemDetail(this.goodPage.currentPage, this.goodPage.pageSize, data).then(res => {
+        this.dataList = res.data.data.records;
+        this.goodPage.total = res.data.data.total;
+      }).finally(() => {
+        this.goodLoading = false;
+      })
+    },
   },
 }
 </script>

+ 4 - 2
src/views/dealer/sales/detail.vue

@@ -24,6 +24,7 @@
           style="margin-right: 8px;"
           @click="dealerSubmit"
           :disabled="disabled"
+          :loading="btnLoading"
           v-if="form.id"
         >
           {{ form.status == 0? '确认订单': form.status == 3? '撤销订单': '' }}
@@ -464,7 +465,7 @@ import {getUserInfo} from "@/api/system/user";
 import { gainUser } from "@/api/basicData/customerInquiry";
 import {selectGoodsNum} from "@/api/basicData/inventoryAccount"; // 库存查询
 import {detail as KHDetail} from "@/api/basicData/customerInformation";
-import {dataDetail, removeGoods, typeSave, getLotNo, dealerSubmit, historyPrice} from "@/api/dealer/sales";
+import {dataDetail, removeGoods, typeSave, getLotNo, dealerSubmit, historyPrice, itemDetail} from "@/api/dealer/sales";
 import reportDialog from "@/components/report-dialog/main";
 import {
   isDiscount,
@@ -705,6 +706,7 @@ export default {
         dicData: [],
       },
       uploadData: [],
+      goodData: [], // 存储所有商品信息
       switchDialog: false, // 报表弹窗控制
       userList: [],
       activeName: 'searchList',
@@ -1438,7 +1440,7 @@ export default {
           amount: e.amount,
           costType: this.feesOption.find(item => item.cname == '货款')? this.feesOption.find(item => item.cname == '货款').id: null,
           srcFeesId: e.id,
-          cname: e.cname,
+          goodName: e.cname,
           price: e.price,
           quantity: e.orderQuantity,
           unit: e.unit,

+ 80 - 0
src/views/workManagement/purchaseApply/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
+    }
+  ]
+}

+ 151 - 0
src/views/workManagement/purchaseApply/config/customerContact.json

@@ -0,0 +1,151 @@
+{
+  "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": "orderQuantity",
+      "type": "sum"
+    },
+    {
+      "name": "price",
+      "type": "sum"
+    },
+    {
+      "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": "lotNo",
+      "index": 8,
+      "width": 140,
+      "overHidden": true
+    },
+    {
+      "label": "库存",
+      "prop": "storageQuantity",
+      "index": 9,
+      "width": 100,
+      "overHidden": true
+    },
+
+    {
+      "label": "数量",
+      "prop": "orderQuantity",
+      "index": 10,
+      "width": 100,
+      "overHidden": true
+    },
+    {
+      "label": "尺寸",
+      "prop": "size",
+      "index": 11,
+      "width": 100,
+      "overHidden": true
+    },
+    {
+      "label": "库存价格",
+      "prop": "purchaseAmount",
+      "index": 12,
+      "width": 100,
+      "overHidden": true
+    },
+    {
+      "label": "价格",
+      "prop": "price",
+      "index": 13,
+      "width": 100,
+      "overHidden": true
+    },
+    {
+      "label": "小计",
+      "prop": "amount",
+      "index": 14,
+      "width": 100,
+      "overHidden": true
+    },
+    {
+      "label": "最新价格",
+      "prop": "newJob",
+      "index": 14,
+      "width": 100,
+      "overHidden": true
+    },
+    {
+      "label": "最新日期",
+      "prop": "newDate",
+      "index": 15,
+      "width": 100,
+      "overHidden": true
+    },
+    {
+      "label": "备注",
+      "prop": "remarks",
+      "index": 16,
+      "width": 100,
+      "overHidden": true
+    }
+  ]
+}

+ 57 - 0
src/views/workManagement/purchaseApply/config/mainList.json

@@ -0,0 +1,57 @@
+{
+  "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": "createUser",
+      "search": true,
+      "index": 1,
+      "minWidth": 80,
+      "overHidden": true
+    },
+    {
+      "label": "申请部门",
+      "prop": "a",
+      "overHidden": true,
+      "minWidth": 100,
+      "search": false
+    },
+    {
+      "label": "制单日期",
+      "prop": "createTime",
+      "type": "date",
+      "overHidden": true,
+      "minWidth": 200,
+      "format": "yyyy-MM-dd",
+      "valueFormat": "yyyy-MM-dd",
+      "unlinkPanels": true,
+      "searchRange": true,
+      "search": true
+    },
+    {
+      "label": "系统编号",
+      "prop": "sysNo",
+      "overHidden": true,
+      "minWidth": 120,
+      "search": true
+    }
+  ]
+}

+ 816 - 0
src/views/workManagement/purchaseApply/detail.vue

@@ -0,0 +1,816 @@
+<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"
+        >编 辑</el-button>
+        <el-button
+          type="success"
+          :disabled="!form.id"
+          size="small"
+          @click="copyDoc"
+          :loading="btnLoading"
+        >复制单据</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"
+            >
+              <el-option
+                v-for="(item,index) in userList"
+                :key="index"
+                :label="item.realName"
+                :value="item.realName"
+              ></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"
+            ></avue-input-tree>
+          </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"
+            >录入明细</el-button>
+            <el-button
+              type="info"
+              icon="el-icon-printer"
+              size="small"
+            >报 表</el-button>
+          </template>
+          <template slot="menu" slot-scope="{ row, index }">
+            <el-button
+              size="small"
+              icon="el-icon-edit"
+              type="text"
+              @click="rowCell(row, index)"
+            >{{ row.$cellEdit ? "保存" : "修改" }}</el-button>
+            <el-button
+              size="small"
+              icon="el-icon-delete"
+              type="text"
+              @click="rowDel(row, index)"
+            >删除</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"
+              @input="amountChange(row)"
+              style="width: 100%"
+            />
+            <span v-else>{{ row.orderQuantity | IntegerFormat }}</span>
+          </template>
+          <template slot="price" slot-scope="{ row, index }">
+            <el-input-number
+              v-if="row.$cellEdit"
+              v-model="row.price"
+              size="small"
+              :controls="false"
+              :precision="2"
+              @input="amountChange(row)"
+              style="width: 100%"
+            ></el-input-number>
+            <span v-else>{{ row.price }}</span>
+          </template>
+          <!--          单位-->
+          <template slot="unit" slot-scope="{ row, index }">
+            <el-select
+              v-if="row.$cellEdit"
+              v-model="row.unit"
+              size="small"
+              clearable
+              filterable
+            >
+              <el-option
+                v-for="(item, index) in unitOption"
+                :key="index"
+                :label="item.dictValue"
+                :value="item.dictValue"
+              />
+            </el-select>
+            <span v-else>{{ row.unit }}</span>
+          </template>
+          <template slot="amount" slot-scope="{ row, index }">
+            <span>{{ row.amount | decimalFormat }}</span>
+          </template>
+          <template slot="storageQuantity" slot-scope="{ row, index }">
+            <span>{{ row.storageQuantity | IntegerFormat }}</span>
+          </template>
+          <template slot="remarks" slot-scope="{ row, index }">
+            <el-input
+              v-if="row.$cellEdit"
+              v-model="row.remarks"
+              size="small"
+            />
+            <span v-else>{{ row.remarks }}</span>
+          </template>
+        </avue-crud>
+      </basic-container>
+    </div>
+
+    <!--    商品弹窗-->
+    <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 {getDeptLazyTree,
+  getGoods,} from "@/api/basicData/customerInquiry";
+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";
+
+export default {
+  name: "detail",
+  data() {
+    return {
+      pageLoading: false,
+      btnLoading: false,
+      form: {},
+      option: {
+        menuBtn: false,
+        labelWidth: 100,
+        column: [
+          {
+            label: "申请人",
+            prop: "createUser",
+            rules: [
+              {
+                required: true,
+                message: " ",
+                trigger: "change"
+              }
+            ],
+            span: 8,
+            slot: true,
+          },
+          {
+            label: "申请部门",
+            prop: "deptId",
+            rules: [
+              {
+                required: true,
+                message: " ",
+                trigger: "change"
+              }
+            ],
+            span: 8,
+            slot: true,
+          },
+          {
+            label: "申请时间",
+            prop: "b",
+            span: 8,
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd 00:00:00",
+            rules: [
+              {
+                required: true,
+                message: "",
+                trigger: "blur"
+              }
+            ]
+          },
+          {
+            label: "系统号",
+            prop: "sysNo",
+            span: 8,
+            disabled: true
+          },
+          {
+            label: "备注",
+            prop: "orderRemark",
+            type: "textarea",
+            minRows: 2,
+            span: 24,
+          },
+        ],
+      },
+      dataList: [],
+      tableOption: {},
+      goodsoptions: [],
+      unitOption: [],
+      dialogVisible: false,
+      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"
+        }
+      },
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      search: {},
+      treeStyle: "height:" + (window.innerHeight - 315) + "px",
+      goodsOption: {},
+      loading: false,
+      goodData: [], // 存储所有商品信息
+      switchDialog: false, // 报表弹窗控制
+      userList: [],
+      activeName: 'searchList',
+      // 商品列表数据合计
+      goodsListShow: [],
+      // 商品列表暂存
+      goodsListSave: [],
+      pageList: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      dic: [],
+    }
+  },
+  async created() {
+    this.tableOption = await this.getColumnData(
+      this.getColumnName(89),
+      tableOption
+    );
+    this.goodsOption = await this.getColumnData(
+      this.getColumnName(90),
+      goodsOption
+    );
+    getGoods(1, 500).then(res => {
+      this.goodsoptions = res.data.data.records;
+    });
+    gainUser().then(res => {
+      this.userList = res.data.data;
+    });
+    getUserInfo().then(res => {
+      this.$set(this.form, 'createUser', res.data.data.realName);
+      this.$set(this.form, 'deptId', res.data.data.deptId);
+    })
+    getDeptTree().then(res => {
+      this.dic = res.data.data
+    })
+    this.getWorkDicts('unit').then(res => {
+      this.unitOption = res.data.data;
+    })
+  },
+  filters: {
+    IntegerFormat(num) {
+      return IntegerFormat(num);
+    },
+    decimalFormat(num) {
+      return num ? Number(num).toFixed(2) : "0.00";
+    }
+  },
+  methods: {
+    //返回列表
+    backToList() {
+      this.$emit("goBack");
+    },
+    // 编辑按钮触发
+    openEdit() {},
+    // 复制
+    copyDoc() {
+      this.$emit("copyOrder", this.form.id);
+    },
+    //修改提交触发
+    editCustomer(status) {
+      this.$refs["form"].validate((valid, done) => {
+        done();
+        if (valid) {
+          // this.btnLoading = true;
+          // typeSave(this.form).then(res => {
+          //   this.$message({type: "success", message: this.form.id ? "修改成功!" : "新增成功!"});
+          //   this.queryData(res.data.data.id);
+          // }).finally(() => {
+          //   this.btnLoading = false;
+          // })
+        } else {
+          return false
+        }
+      })
+    },
+    cellStyle() {
+      return "padding:0;height:40px;";
+    },
+    async saveColumn() {
+      const inSave = await this.saveColumnData(
+        this.getColumnName(89),
+        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(89),
+        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) => {
+        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);
+        }
+      });
+    },
+    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.price = e.price;
+        }
+      });
+    },
+    cnameChange(row) {
+      let form = {};
+      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.price = e.price;
+        }
+      });
+    },
+    rePick(row, index) {
+      this.reData = {
+        ...row,
+        index: index
+      };
+      this.newDetails();
+    },
+    // 商品信息价格计算
+    amountChange(row) {
+      if (!row.orderQuantity) {
+        row.orderQuantity = 0;
+      }
+      if (!row.price) {
+        row.price = 0;
+      }
+      row.amount = Number(row.price) * Number(row.orderQuantity)
+    },
+    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(90),
+        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(90),
+        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);
+    },
+    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.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,
+              $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,
+              price: e.price,
+              $cellEdit: true
+            });
+          });
+        }
+      }
+      this.dialogVisible = false;
+    },
+  },
+}
+</script>
+
+<style scoped>
+
+</style>

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

@@ -0,0 +1,196 @@
+<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"
+          >复制单据</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>
+      </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";
+
+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: {},
+    }
+  },
+  async created() {
+    this.option = await this.getColumnData(this.getColumnName(91), option);
+  },
+  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;
+    },
+    onLoad(page, params) {
+      // 重置掉展开
+      this.dataList.forEach(item => {
+        this.$refs.crud.toggleRowExpansion(item, false)
+      })
+      let queryParams = Object.assign({}, params, {
+        size: page.pageSize,
+        current: page.currentPage,
+      })
+      // this.loading = true;
+      // getSalesList(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(91),
+        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(91), 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.id) {
+        this.$router.$avueRouter.closeTag(this.$route.fullPath);
+        this.$router.push({
+          path: "/dealer/sales/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;
+      });
+    },
+  },
+}
+</script>
+
+<style scoped>
+
+</style>