浏览代码

修改bug

Qukatie 2 年之前
父节点
当前提交
52538e20f6

+ 30 - 6
public/cdn/iconfont/style.css

@@ -1,8 +1,8 @@
 @font-face {
   font-family: 'tradingIcon';  /* Project id 2994634 */
-  src: url('//at.alicdn.com/t/font_2994634_pu1caaeicsm.woff2?t=1641280014221') format('woff2'),
-       url('//at.alicdn.com/t/font_2994634_pu1caaeicsm.woff?t=1641280014221') format('woff'),
-       url('//at.alicdn.com/t/font_2994634_pu1caaeicsm.ttf?t=1641280014221') format('truetype');
+  src: url('//at.alicdn.com/t/c/font_2994634_ddj9uc46u9f.woff2?t=1666753519244') format('woff2'),
+  url('//at.alicdn.com/t/c/font_2994634_ddj9uc46u9f.woff?t=1666753519244') format('woff'),
+  url('//at.alicdn.com/t/c/font_2994634_ddj9uc46u9f.ttf?t=1666753519244') format('truetype');
 
 }
 .tradingIcon {
@@ -40,7 +40,31 @@
 .icon-charge:before {
   content: "\e633";
 }
-/* 付费 */
-.icon-pay:before {
-  content: "\e688";
+/* 新建 */
+.icon-add:before {
+  content: "\e6bd";
+}
+/* 删除 */
+.icon-del:before {
+  content: "\e6c5";
+}
+/* 编辑 */
+.icon-edit:before {
+  content: "\e6b7";
+}
+/* 收款 */
+.icon-proceeds:before {
+  content: "\e6d3";
+}
+/* 发货 */
+.icon-deliver:before {
+  content: "\e6bb";
+}
+/* 对账 */
+.icon-reconciliation:before {
+  content: "\e6cf";
+}
+/* 入库 */
+.icon-inStock:before {
+  content: "\e6c4";
 }

+ 31 - 16
src/api/basicData/client.js

@@ -1,20 +1,35 @@
 import request from '@/router/axios';
 
 export const getList = (current, size, params) => {
-    return request({
-      url: '/api/blade-client/partsCorps/page',
-      method: 'get',
-      params: {
-        ...params,
-        current,
-        size,
-      }
-    })
-  }
-  
+  return request({
+    url: '/api/blade-client/partsCorps/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
 export const getCorpsAll = () => {
-    return request({
-      url: '/api/blade-client/partsCorps/getCorpsAll',
-      method: 'get',
-    })
-  }
+  return request({
+    url: '/api/blade-client/partsCorps/getCorpsAll',
+    method: 'get',
+  })
+}
+
+export const pageStatistics = (data) => {
+  return request({
+    url: '/api/blade-client/partsCorps/pageStatistics',
+    method: 'get',
+    params:data
+  })
+}
+export const getDetails = (data) => {
+  return request({
+    url: '/api/blade-client/partsCorps/getDetails',
+    method: 'get',
+    params:data
+  })
+}

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

@@ -878,6 +878,9 @@ const columnName = [{
   code: 208,
   name: '客户(Y)-明细表'
 }, {
+  code: 208.1,
+  name: '客户(Y)-销售记录'
+}, {
   code: 209,
   name: '供应商(Y)-列表页'
 }, {
@@ -919,6 +922,12 @@ const columnName = [{
 }, {
   code: 222,
   name: '费用收入(Y)-明细表'
+},{
+  code: 223,
+  name: '客户(Y)-资金往来'
+},{
+  code: 224,
+  name: '配件系统-收费明细'
 }
 ]
 export const getColumnName = (key) => {

+ 281 - 0
src/views/Inventory/detailsPage.vue

@@ -0,0 +1,281 @@
+<template>
+  <div>
+    <div class="borderless">
+      <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">返回列表
+          </el-button>
+        </div>
+        <div class="add-customer-btn">
+          <el-button type="primary" size="small" @click="editCustomer">
+            保存数据
+          </el-button>
+        </div>
+      </div>
+      <trade-card title="库存明细" style="margin-top: 60px">
+        <avue-crud ref="crud" :option="optionList" :data="data" :table-loading="loading" @saveColumn="saveColumn"
+          @resetColumn="resetColumn" :cell-style="cellStyle" @row-save="rowSave" @row-update="addUpdate">
+          <template slot="menuLeft">
+            <el-button type="primary" @click="addRow" size="mini" :disabled="detailData.status == 1">新增产品
+            </el-button>
+          </template>
+          <template slot="menu" slot-scope="{ row, index }">
+            <el-button size="small" type="text" @click="rowCell(row, index)">{{
+                row.$cellEdit ? "保存" : "修改"
+            }}</el-button>
+            <el-button size="small" type="text" @click="rowDel(row, index)">删除
+            </el-button>
+          </template>
+        </avue-crud>
+      </trade-card>
+    </div>
+  </div>
+</template>
+
+<script>
+import { optionList } from "./js/optionList";
+import { getDetails } from "@/api/basicData/client";
+import { areaTypeTree } from "@/api/basicData/customerInformation";
+import { getCode } from "@/api/basicData/customerInquiry";
+export default {
+  name: "index",
+  data() {
+    return {
+      form: {},
+      data: [],
+      option: {
+        menuBtn: false,
+        labelWidth: 90,
+        column: [
+          {
+            label: "名称",
+            prop: "name",
+            span: 16,
+          },
+          {
+            label: "产品分类",
+            prop: "type",
+            span: 8,
+          },
+          {
+            label: "条码",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "单位",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "规格型号",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "期初库存",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "库存下限",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "进价",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "售价1",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "售价2",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "售价3",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "售价4",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "售价5",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "标签",
+            prop: "mailbox",
+            type: 'checkbox',
+            dicData: [{
+              label: '爆款',
+              value: 0
+            }, {
+              label: '新品',
+              value: 1
+            }, {
+              label: '促销',
+              value: ''
+            }],
+            span: 8,
+          },
+          {
+            label: "备注",
+            prop: "g",
+            type: "textarea",
+            minRows: 3,
+            span: 24,
+          }
+        ]
+      },
+      bankOfDepositData: [],
+      optionList: {},
+    };
+  },
+  props: {
+    detailData: {
+      type: Object
+    }
+  },
+  async created() {
+    this.optionList = await this.getColumnData(
+      this.getColumnName(220),
+      optionList
+    );
+    if (this.detailData.id) {
+      this.getDetail(this.detailData.id);
+    }
+    if (this.detailData.status == 1) {
+      this.option.disabled = true;
+    }
+  },
+  methods: {
+    cellStyle() {
+      return "padding:0;height:40px;";
+    },
+    getDetail(id) {
+      this.loadingBtn = true
+      getDetails({ id: id })
+        .then(res => {
+          this.form = res.data.data;
+          this.data = res.data.data.orderCostItemList;
+        })
+        .finally(() => {
+          this.loadingBtn = false;
+        });
+    },
+    //修改提交触发
+    editCustomer() {
+      this.$refs["form"].validate((valid, done) => {
+        done();
+        if (valid) {
+          this.data.forEach(e => {
+            e.departure = e.departureId ? e.departureId.replace(/,/g, "/") : ''
+          })
+          this.loadingBtn = true;
+          // submit({ ...this.form, feesType: 1, orderCostItemList: this.data })
+          //   .then(res => {
+          //     this.$message.success("保存成功");
+          //     this.form = res.data.data;
+          //     this.data = res.data.data.orderCostItemList;
+          //   })
+          //   .finally(() => {
+          //     this.loadingBtn = false;
+          //   });
+        } else {
+          return false;
+        }
+      });
+    },
+    async saveColumn() {
+      const inSave = await this.saveColumnData(
+        this.getColumnName(220),
+        this.optionList
+      );
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout();
+        });
+        this.$message.success("保存成功");
+        //关闭窗口
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+      }
+    },
+    async resetColumn() {
+      this.optionList = optionList;
+      const inSave = await this.delColumnData(
+        this.getColumnName(220),
+        optionList
+      );
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout();
+        });
+        this.$message.success("重置成功");
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+      }
+    },
+    //返回列表
+    backToList() {
+      this.$emit("goBack");
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.trading-form ::v-deep .el-form-item {
+  margin-bottom: 8px !important;
+}
+
+::v-deep .el-dialog__body {
+  padding: 0px 20px 15px 20px;
+}
+
+::v-deep .el-form-item__error {
+  display: none !important;
+}
+
+.img-form ::v-deep .el-form-item {
+  height: 150px;
+  line-height: 150px;
+  margin-bottom: 8px !important;
+}
+
+.img-form ::v-deep .avue-upload__icon {
+  font-size: 20px;
+  width: 150px;
+  height: 150px;
+  line-height: 150px;
+}
+
+::v-deep .el-table .cell {
+  padding: 0 2px !important;
+}
+
+::v-deep .avue-crud .el-table .el-form-item__label {
+  left: -1px;
+}
+
+.addressTabs {
+  display: flex;
+  justify-content: center;
+
+  span {
+    width: 100px;
+    font-size: 18px;
+    font-weight: 600;
+    text-align: center;
+  }
+}
+</style>

+ 233 - 0
src/views/Inventory/index.vue

@@ -0,0 +1,233 @@
+<template>
+  <div>
+    <basic-container v-show="show" class="page-crad">
+      <avue-crud ref="crud" :option="option" :data="dataList" :page.sync="page" :search.sync="search"
+        @search-change="searchChange" @current-change="currentChange" @size-change="sizeChange"
+        @refresh-change="refreshChange" @on-load="onLoad" :table-loading="loading" @saveColumn="saveColumn"
+        @resetColumn="resetColumn" :cell-style="cellStyle" @search-criteria-switch="searchCriteriaSwitch">
+        <template slot="menuLeft">
+          <!-- <el-button type="primary" size="mini" @click.stop="newAdd()">新建产品
+          </el-button> -->
+        </template>
+        <template slot-scope="{ row, index }" slot="id">
+          <span style="color: #409EFF;cursor: pointer" @click.stop="editOpen(row, 2)">{{ row.cname }}
+          </span>
+        </template>
+        <template slot-scope="{ row, index }" slot="menu">
+          <el-tooltip class="item" effect="dark" content="盘存" placement="top">
+            <i class="tradingIcon icon-inStock" />
+          </el-tooltip>
+          <!-- <el-tooltip class="item" effect="dark" content="删除" placement="top">
+            <i class="tradingIcon icon-del" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="编辑" placement="top">
+            <i class="tradingIcon icon-edit" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="收款" placement="top">
+            <i class="tradingIcon icon-proceeds" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="发货" placement="top">
+            <i class="tradingIcon icon-deliver" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="对账" placement="top">
+            <i class="tradingIcon icon-reconciliation" />
+          </el-tooltip> -->
+          <!-- <el-button type="text" size="small" @click.stop="editOpen(row, 2)">
+            查看
+          </el-button>
+          <el-button type="text" size="small" @click.stop="rowDel(row, index)">
+            删除
+          </el-button> -->
+        </template>
+      </avue-crud>
+    </basic-container>
+    <details-page v-if="!show" @goBack="goBack()" :detailData="detailData" />
+  </div>
+</template>
+  
+<script>
+import detailsPage from "./detailsPage";
+import { option } from "./js/optionList";
+import { getList, getCorpsAll, pageStatistics } from "@/api/basicData/client";
+export default {
+  name: "index",
+  data() {
+    return {
+      src: '',
+      show: true,
+      loading: false,
+      search: {},
+      detailData: {},
+      dataList: [],
+      selectionList: [],
+      page: {
+        pageSize: 20,
+        currentPage: 1,
+        total: 0,
+        pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
+      },
+      option: {},
+    };
+  },
+  components: {
+    detailsPage
+  },
+  async created() {
+    this.option = await this.getColumnData(this.getColumnName(219), option);
+    this.option.height = window.innerHeight - 210;
+    this.getAllWorkDicts()
+  },
+  methods: {
+    getAllWorkDicts() {
+      getCorpsAll().then(res => {
+        this.findObject(this.option.column, "id").dicData = res.data.data;
+        this.findObject(this.option.column, "ids").dicData = res.data.data;
+      })
+      this.$refs.crud.init();
+    },
+    searchCriteriaSwitch(type) {
+      if (type) {
+        this.option.height = this.option.height - 92;
+      } else {
+        this.option.height = this.option.height + 92;
+      }
+      this.$refs.crud.getTableHeight();
+    },
+    cellStyle() {
+      return "padding:0;height:40px;";
+    },
+    //点击搜索按钮触发
+    searchChange(params, done) {
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.search);
+    },
+    newAdd() {
+      this.show = false;
+    },
+    onLoad(page, params = {}) {
+      let data = this.deepClone(Object.assign(params, this.search));
+      this.loading = true;
+      getList(
+        page.currentPage,
+        page.pageSize,
+        data
+      )
+        .then(res => {
+          this.dataList = res.data.data.records ? res.data.data.records : [];
+          this.page.total = res.data.data.total;
+        })
+        .finally(() => {
+          pageStatistics(data).then(res => {
+            this.form = res.data.data
+          })
+          this.loading = false;
+        });
+    },
+    editOpen(row, status) {
+      this.detailData = {
+        id: row.id,
+        status: status
+      };
+      this.show = false;
+    },
+    currentChange(val) {
+      this.page.currentPage = val;
+    },
+    sizeChange(val) {
+      this.page.currentPage = 1;
+      this.page.pageSize = val;
+    },
+    rowDel(row, index, done) {
+      this.$confirm("确定删除数据?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        // remove(row.id).then(res => {
+        //   if (res.data.code == 200) {
+        //     this.$message({
+        //       type: "success",
+        //       message: "删除成功!"
+        //     });
+        //     this.onLoad(this.page, this.search);
+        //   }
+        // });
+      });
+    },
+    async saveColumn() {
+      const inSave = await this.saveColumnData(
+        this.getColumnName(219),
+        this.option
+      );
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout();
+        });
+        this.$message.success("保存成功");
+        //关闭窗口
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+      }
+    },
+    async resetColumn() {
+      this.option = option;
+      const inSave = await this.delColumnData(this.getColumnName(219), option);
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout();
+        });
+        this.getAllWorkDicts()
+        this.$message.success("重置成功");
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+      }
+    },
+    //返回列表
+    goBack() {
+      this.detailData = this.$options.data().detailData;
+      this.show = true;
+      this.onLoad(this.page, this.search);
+    },
+  }
+}
+</script>
+  
+<style  lang="scss"  scoped>
+.page-crad ::v-deep .basic-container__card {
+  height: 94.2vh;
+}
+
+.stat-td {
+  text-align: center;
+  position: relative;
+}
+
+.stat-img {
+  width: 95%;
+  height: 100px;
+}
+
+.stat-tip {
+  position: absolute;
+  left: 15px;
+  top: 5px;
+
+  .money {
+    color: #fff;
+    font-size: 28px;
+    text-align: left;
+    font-weight: 600;
+  }
+
+  .title {
+    color: #fff;
+    font-size: 14px;
+    text-align: left;
+    margin-top: 5px;
+    margin-bottom: 0px;
+  }
+}
+</style>
+  

+ 264 - 0
src/views/Inventory/js/optionList.js

@@ -0,0 +1,264 @@
+import { number } from "echarts"
+
+export const option = {
+  searchShow: true,
+  searchMenuSpan: 16,
+  align: "center",
+  searchSpan: 8,
+  tip: false,
+  border: true,
+  index: true,
+  addBtn: false,
+  viewBtn: false,
+  editBtn: false,
+  delBtn: false,
+  menuWidth: 50,
+  searchIcon: true,
+  searchIndex: 2,
+  column: [
+    {
+      label: "图片",
+      prop: "img",
+      overHidden: true,
+      index: 1
+    },
+    {
+      label: "产品分类",
+      prop: "type",
+      overHidden: true,
+      index: 2
+    },
+    {
+      label: "产品名称",
+      prop: "data",
+      search: true,
+      overHidden: true,
+      index: 3
+    },
+    {
+      label: "规格型号",
+      prop: "debitAmount",
+      search: true,
+      overHidden: true,
+      index: 4
+    },
+    {
+      label: "库存",
+      prop: "deliveringAmount",
+      overHidden: true,
+      index: 5
+    },
+    {
+      label: "期初库存",
+      prop: "deliveringAmount",
+      overHidden: true,
+      index: 6
+    },
+    {
+      label: "库存数量",
+      prop: "deliveringAmount",
+      overHidden: true,
+      cell:true,
+      index: 7
+    },
+    {
+      label: "库存预警值",
+      prop: "deliveringAmount",
+      overHidden: true,
+      index: 8
+    },
+    {
+      label: "采购价",
+      prop: "deliveringAmount",
+      overHidden: true,
+      index: 9
+    },
+    {
+      label: "成本均价",
+      prop: "deliveringAmount",
+      overHidden: true,
+      cell:true,
+      index: 10
+    },
+    {
+      label: "单位",
+      prop: "sta",
+      overHidden: true,
+      search: true,
+      hide: true,
+      showColumn: false,
+      index: 11
+    },
+    {
+      label: "备注",
+      prop: "deliveringAmount",
+      overHidden: true,
+      search: true,
+      index: 12
+    },
+    {
+      label: "更新日期",
+      prop: "deliveringAmount",
+      overHidden: true,
+      index: 13
+    },
+    {
+      label: "状态",
+      prop: "status",
+      overHidden: true,
+      search: true,
+      hide: true,
+      showColumn: false,
+      index: 14
+    },
+    {
+      label: "产品标签",
+      prop: "b",
+      overHidden: true,
+      search: true,
+      hide: true,
+      showColumn: false,
+      index: 15
+    },
+    {
+      label: "条形码",
+      prop: "a",
+      overHidden: true,
+      search: true,
+      hide: true,
+      showColumn: false,
+      index: 16
+    }
+  ]
+}
+export const optionList = {
+  align: "center",
+  addBtn: false,
+  refreshBtn: false,
+  editBtn: false,
+  delBtn: false,
+  border: true,
+  menuWidth: 120,
+  stripe: true,
+  index:true,
+  column: [
+    {
+      label: "产品",
+      prop: "departureId",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "图片",
+      prop: "address",
+      overHidden: true
+    },
+    {
+      label: "规格型号",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "总数量",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "单位",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "单价",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "金额",
+      prop: "address",
+      overHidden: true
+    },
+    {
+      label: "送货数量",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "备注",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "供应商",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "进价",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "采购数量",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "总进价",
+      prop: "address",
+      overHidden: true
+    },
+  ]
+}
+
+export const feeOption = {
+  align: "center",
+  addBtn: false,
+  refreshBtn: false,
+  editBtn: false,
+  delBtn: false,
+  border: true,
+  menuWidth: 120,
+  stripe: true,
+  index:true,
+  column: [
+    {
+      label: "收款单号",
+      prop: "e",
+      overHidden: true
+    },
+    {
+      label: "收款日期",
+      prop: "a",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "收款金额",
+      prop: "b",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "收款账户",
+      prop: "c",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "备注",
+      prop: "d",
+      cell:true,
+      overHidden: true
+    }
+  ]
+}

+ 0 - 121
src/views/basicData/client/js/optionList.js

@@ -1,121 +0,0 @@
-import { number } from "echarts"
-
-export const option = {
-  searchShow: true,
-  searchMenuSpan: 8,
-  align: "center",
-  searchSpan: 8,
-  tip: false,
-  border: true,
-  index: true,
-  addBtn: false,
-  viewBtn: false,
-  editBtn: false,
-  delBtn: false,
-  menuWidth: 120,
-  searchIcon: true,
-  searchIndex: 2,
-  column: [
-    {
-      label: "客户名称",
-      prop: "ids",
-      type: 'select',
-      props: {
-        label: 'label',
-        value: 'value'
-      },
-      dicData: [],
-      overHidden: true,
-      search: true,
-      index:1
-    },
-    {
-      label: "电话",
-      prop: "tel",
-      overHidden: true,
-      search: true,
-      index:2
-    },
-    {
-      label: "合同金额",
-      prop: "debitAmount",
-      overHidden: true,
-      index:3
-    },
-    {
-      label: "已送货",
-      prop: "deliveringAmount",
-      overHidden: true,
-      index:4
-    },
-    {
-      label: "预收款",
-      prop: "advancePayment",
-      overHidden: true,
-      index:5
-    },
-    {
-      label: "未收款",
-      prop: "balanceAmount",
-      overHidden: true,
-      index:6
-    },
-    {
-      label: "已收款",
-      prop: "settlmentAmount",
-      overHidden: true,
-      index:7
-    },
-    {
-      label: "状态",
-      prop: "status",
-      type: 'select',
-      hide: true,
-      search: true,
-      showColumn: false,
-      overHidden: true,
-      index:8
-    },
-    {
-      label: "客户分类",
-      prop: "corpsTypeId",
-      type: 'select',
-      hide: true,
-      search: true,
-      showColumn: false,
-      overHidden: true,
-      index:9
-    },
-    {
-      label: "日期",
-      prop: "data",
-      hide: true,
-      search: true,
-      showColumn: false,
-      overHidden: true,
-      index:10
-    }
-  ]
-}
-export const optionList = {
-  align: "center",
-  addBtn: false,
-  refreshBtn: false,
-  editBtn: false,
-  delBtn: false,
-  border: true,
-  menuWidth: 120,
-  stripe: true,
-  column: [
-    {
-      label: "地址类型",
-      prop: "departureId",
-      overHidden: true
-    },
-    {
-      label: "详细地址",
-      prop: "address",
-      overHidden: true
-    }
-  ]
-}

+ 412 - 0
src/views/client/detailsInfo.vue

@@ -0,0 +1,412 @@
+<template>
+    <div>
+        <div class="borderless">
+            <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">返回列表
+                    </el-button>
+                </div>
+                <div class="add-customer-btn">
+                    <el-button type="primary" size="small" @click="editCustomer">
+                        编辑
+                    </el-button>
+                </div>
+            </div>
+        </div>
+        <containerTitle title="基础信息" style="margin-top: 60px"></containerTitle>
+        <basic-container v-loading="loading">
+            <span style="font-size: 18px;font-weight: 600;">{{ form.cname }}</span>
+            <containerTitle title="应收款项" style="margin-top:5px"></containerTitle>
+            <table border="0" width="100%" v-loading="loading">
+                <tr>
+                    <td class="stat-td">
+                        <img src="@/assets/img/contractAmountBg.png" class="stat-img">
+                        <div class="stat-tip">
+                            <div class="money">
+                                <span style="font-size:20px;">¥</span>
+                                <avue-count-up :end="form.debitAmount"></avue-count-up>
+                            </div>
+                            <div class="title">合同金额</div>
+                        </div>
+                    </td>
+                    <td class="stat-td">
+                        <img src="@/assets/img/deliveredBg.png" class="stat-img">
+                        <div class="stat-tip">
+                            <div class="money">
+                                <span style="font-size:20px;">¥</span>
+                                <avue-count-up :end="form.deliveringAmount"></avue-count-up>
+                            </div>
+                            <div class="title">已送货</div>
+                        </div>
+                    </td>
+                    <td class="stat-td">
+                        <img src="@/assets/img/advanceCollectionBg.png" class="stat-img">
+                        <div class="stat-tip">
+                            <div class="money">
+                                <span style="font-size:20px;">¥</span>
+                                <avue-count-up :end="form.advancePayment"></avue-count-up>
+                            </div>
+                            <div class="title">预收款</div>
+                        </div>
+                    </td>
+                    <td class="stat-td">
+                        <img src="@/assets/img/uncollectedBg.png" class="stat-img">
+                        <div class="stat-tip">
+                            <div class="money">
+                                <span style="font-size:20px;">¥</span>
+                                <avue-count-up :end="form.balanceAmount"></avue-count-up>
+                            </div>
+                            <div class="title">未收款</div>
+                        </div>
+                    </td>
+                    <td class="stat-td">
+                        <img src="@/assets/img/receivableBg.png" class="stat-img">
+                        <div class="stat-tip">
+                            <div class="money">
+                                <span style="font-size:20px;">¥</span>
+                                <avue-count-up :end="form.settlmentAmount"></avue-count-up>
+                            </div>
+                            <div class="title">已收款</div>
+                        </div>
+                    </td>
+                </tr>
+            </table>
+        </basic-container>
+        <containerTitle title="明细信息"></containerTitle>
+        <basic-container v-loading="loading">
+            <el-tabs v-model="activeName">
+                <el-tab-pane label="销售记录" name="first">
+                    <avue-crud ref="crud" :option="sellOption" :data="sellList" :page.sync="page" :search.sync="search"
+                        @search-change="searchChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad" :table-loading="loading"
+                        @saveColumn="saveColumn" @resetColumn="resetColumn" :cell-style="cellStyle"
+                        @search-criteria-switch="searchCriteriaSwitch">
+                        <template slot="menuLeft">
+                            <el-button type="primary" size="mini">新建销售单
+                            </el-button>
+                            <el-button size="mini">收款
+                            </el-button>
+                            <el-button size="mini">送货
+                            </el-button>
+                        </template>
+                    </avue-crud>
+                </el-tab-pane>
+                <el-tab-pane label="资金往来" name="second">
+                    <avue-crud ref="crud2" :option="capitalOption" :data="capitalList" :page.sync="page2"
+                        :search.sync="search2" @search-change="searchChange2" @current-change="currentChange2"
+                        @size-change="sizeChange2" @refresh-change="refreshChange2" @on-load="onLoad2"
+                        :table-loading="loading2" @saveColumn="saveColumn2" @resetColumn="resetColumn2"
+                        :cell-style="cellStyle" @search-criteria-switch="searchCriteriaSwitch2">
+                        <template slot="menuLeft">
+                            <el-button size="mini">收款
+                            </el-button>
+                        </template>
+                    </avue-crud>
+                </el-tab-pane>
+                <el-tab-pane label="客户信息" name="third">
+                    <div style="display:flex;justify-content: flex-end;">
+                        <el-button size="mini">禁用</el-button>
+                        <el-button type="primary" size="mini">打印</el-button>
+                    </div>
+                    <el-row class="client_info">
+                        <el-col :span="4">客户名称</el-col>
+                        <el-col :span="4">{{ form.cname | nameFileter }}</el-col>
+                        <el-col :span="4">期初欠款</el-col>
+                        <el-col :span="4">{{ form.arrears | nameFileter }}</el-col>
+                        <el-col :span="4">电话</el-col>
+                        <el-col :span="4">{{ form.tel | nameFileter }}</el-col>
+                    </el-row>
+                    <el-row class="client_info">
+                        <el-col :span="4">备用电话</el-col>
+                        <el-col :span="4">{{ form.telephone | nameFileter }}</el-col>
+                        <el-col :span="4">传真</el-col>
+                        <el-col :span="4">{{ form.Fax | nameFileter }}</el-col>
+                        <el-col :span="4">邮箱</el-col>
+                        <el-col :span="4">{{ form.mailbox | nameFileter }}</el-col>
+                    </el-row>
+                    <el-row class="client_info">
+                        <el-col :span="4">备注</el-col>
+                        <el-col :span="20">{{ form.remarks | nameFileter }}</el-col>
+                    </el-row>
+                    <el-row class="client_info">
+                        <el-col :span="2"><i class="el-icon-location"></i></el-col>
+                        <el-col :span="4">客户地址</el-col>
+                        <el-col :span="18">(公司地址)天津市和平区222</el-col>
+                    </el-row>
+                </el-tab-pane>
+            </el-tabs>
+        </basic-container>
+    </div>
+</template>
+  
+<script>
+import { optionList, sellOption, capitalOption } from "./js/optionList";
+import { getDetails } from "@/api/basicData/client";
+import { validatenull } from "@/util/validate";
+export default {
+    name: "index",
+    data() {
+        return {
+            loading: false,
+            loading2: false,
+            form: {
+                debitAmount: 0,
+                deliveringAmount: 0,
+                advancePayment: 0,
+                balanceAmount: 0,
+                settlmentAmount: 0
+            },
+            page: {
+                pageSize: 20,
+                currentPage: 1,
+                total: 0,
+                pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
+            },
+            page2: {
+                pageSize: 20,
+                currentPage: 1,
+                total: 0,
+                pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
+            },
+            activeName: "first",
+            search: {},
+            search2: {},
+            sellOption: {},
+            capitalOption: {},
+            sellList: [],
+            capitalList: [],
+        };
+    },
+    props: {
+        detailData: {
+            type: Object
+        }
+    },
+    filters: {
+        nameFileter(val) {
+            return validatenull(val) ? '-' : val
+        }
+    },
+    async created() {
+        this.sellOption = await this.getColumnData(
+            this.getColumnName(208.1),
+            sellOption
+        );
+        this.capitalOption = await this.getColumnData(
+            this.getColumnName(223),
+            capitalOption
+        );
+        // this.sellOption.height = window.innerHeight - 330;
+        if (this.detailData.id) {
+            this.getDetail(this.detailData.id);
+        }
+        this.getAllWorkDicts()
+    },
+    methods: {
+        getAllWorkDicts() {
+            // this.findObject(this.optionList.column, "departureId").dicData = JSON.parse(localStorage.getItem('areaTypeTree'));
+        },
+        cellStyle() {
+            return "padding:0;height:40px;";
+        },
+        searchCriteriaSwitch(type) {
+            if (type) {
+                this.sellOption.height = this.sellOption.height - 46;
+            } else {
+                this.sellOption.height = this.sellOption.height + 46;
+            }
+            this.$refs.crud.getTableHeight();
+        },
+        //点击搜索按钮触发
+        searchChange(params, done) {
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.search);
+        },
+        currentChange(val) {
+            this.page.currentPage = val;
+        },
+        sizeChange(val) {
+            this.page.currentPage = 1;
+            this.page.pageSize = val;
+        },
+        onLoad(page, params = {}) {
+            let data = this.deepClone(Object.assign(params, this.search));
+            // this.loading = true;
+            //   getList(
+            //     page.currentPage,
+            //     page.pageSize,
+            //     data
+            //   )
+            //     .then(res => {
+            //       this.dataList = res.data.data.records ? res.data.data.records : [];
+            //       this.page.total = res.data.data.total;
+            //     })
+            //     .finally(() => {
+            //       this.loading = false;
+            //     });
+        },
+        searchCriteriaSwitch2(type) {
+            if (type) {
+                this.capitalOption.height = this.capitalOption.height - 46;
+            } else {
+                this.capitalOption.height = this.capitalOption.height + 46;
+            }
+            this.$refs.crud2.getTableHeight();
+        },
+        //点击搜索按钮触发
+        searchChange2(params, done) {
+            this.page2.currentPage = 1;
+            this.onLoad2(this.page2, params);
+            done();
+        },
+        refreshChange2() {
+            this.onLoad2(this.page2, this.search2);
+        },
+        currentChange2(val) {
+            this.page2.currentPage = val;
+        },
+        sizeChange2(val) {
+            this.page2.currentPage = 1;
+            this.page2.pageSize = val;
+        },
+        onLoad2(page, params = {}) {
+            let data = this.deepClone(Object.assign(params, this.search2));
+            // this.loading = true;
+            //   getList(
+            //     page.currentPage,
+            //     page.pageSize,
+            //     data
+            //   )
+            //     .then(res => {
+            //       this.dataList = res.data.data.records ? res.data.data.records : [];
+            //       this.page.total = res.data.data.total;
+            //     })
+            //     .finally(() => {
+            //       this.loading = false;
+            //     });
+        },
+        getDetail(id) {
+            this.loading = true
+            getDetails({ id: id })
+                .then(res => {
+                    this.form = res.data.data;
+                    this.dataList = res.data.data.orderCostItemList;
+                })
+                .finally(() => {
+                    this.loading = false;
+                });
+        },
+        async saveColumn() {
+            const inSave = await this.saveColumnData(
+                this.getColumnName(208.1),
+                this.sellOption
+            );
+            if (inSave) {
+                this.$nextTick(() => {
+                    this.$refs.crud.doLayout();
+                });
+                this.$message.success("保存成功");
+                //关闭窗口
+                this.$refs.crud.$refs.dialogColumn.columnBox = false;
+            }
+        },
+        async resetColumn() {
+            this.sellOption = sellOption;
+            const inSave = await this.delColumnData(
+                this.getColumnName(208.1),
+                sellOption
+            );
+            if (inSave) {
+                this.$nextTick(() => {
+                    this.$refs.crud.doLayout();
+                });
+                this.getAllWorkDicts()
+                this.$message.success("重置成功");
+                this.$refs.crud.$refs.dialogColumn.columnBox = false;
+            }
+        },
+        async saveColumn2() {
+            const inSave = await this.saveColumnData(
+                this.getColumnName(223),
+                this.capitalOption
+            );
+            if (inSave) {
+                this.$nextTick(() => {
+                    this.$refs.crud2.doLayout();
+                });
+                this.$message.success("保存成功");
+                //关闭窗口
+                this.$refs.crud2.$refs.dialogColumn.columnBox = false;
+            }
+        },
+        async resetColumn2() {
+            this.capitalOption = capitalOption;
+            const inSave = await this.delColumnData(
+                this.getColumnName(223),
+                capitalOption
+            );
+            if (inSave) {
+                this.$nextTick(() => {
+                    this.$refs.crud2.doLayout();
+                });
+                this.getAllWorkDicts()
+                this.$message.success("重置成功");
+                this.$refs.crud2.$refs.dialogColumn.columnBox = false;
+            }
+        },
+        //返回列表
+        backToList() {
+            this.$emit("goBack");
+        }
+    }
+};
+</script>
+  
+<style lang="scss" scoped>
+.page-crad ::v-deep .basic-container__card {
+    height: 94.2vh;
+}
+
+.stat-td {
+    text-align: center;
+    position: relative;
+}
+
+.stat-img {
+    width: 95%;
+    height: 75px;
+}
+
+.stat-tip {
+    position: absolute;
+    left: 15px;
+    top: 5px;
+
+    .money {
+        color: #fff;
+        font-size: 28px;
+        font-weight: 600;
+    }
+
+    .title {
+        color: #fff;
+        font-size: 14px;
+        text-align: left;
+        margin-top: 4px;
+    }
+}
+
+.client_info {
+    font-size: 14px;
+    color: #333;
+    line-height: 20px;
+    margin-top: 10px;
+    margin-bottom: 10px;
+}
+</style>
+  

+ 56 - 59
src/views/basicData/client/detailsPage.vue → src/views/client/detailsPage.vue

@@ -13,17 +13,15 @@
           </el-button>
         </div>
       </div>
-      <containerTitle title="基础资料" style="margin-top: 60px"></containerTitle>
-      <basic-container v-loading="loadingBtn">
+      <trade-card title="基础资料" style="margin-top: 60px">
         <avue-form ref="form" class="trading-form" v-model="form" :option="option">
         </avue-form>
-      </basic-container>
-      <containerTitle title="地址管理"></containerTitle>
-      <basic-container v-loading="loadingBtn">
-        <avue-crud ref="crud" :option="optionList" :data="dataList" :table-loading="loading" @saveColumn="saveColumn"
+      </trade-card>
+      <trade-card title="地址管理">
+        <avue-crud ref="crud" :option="optionList" :data="data" :table-loading="loading" @saveColumn="saveColumn"
           @resetColumn="resetColumn" :cell-style="cellStyle" @row-save="rowSave" @row-update="addUpdate">
           <template slot="menuLeft">
-            <el-button type="primary" @click="addRow" size="small" :disabled="detailData.status == 1">新增
+            <el-button type="primary" @click="addRow" size="mini" :disabled="detailData.status == 1">新建地址
             </el-button>
           </template>
           <template slot="menu" slot-scope="{ row, index }">
@@ -33,7 +31,7 @@
             </el-button>
           </template>
         </avue-crud>
-      </basic-container>
+      </trade-card>
       <containerTitle title="上传附件"></containerTitle>
       <c-upload typeUpload="CD" deleteUrl="/api/trade-purchase/woodHarvestingCloud/removeByFileId"
         :data="orderFilesList" display :enumerationValue="35.1" :disabled="detailData.status == 1"></c-upload>
@@ -50,8 +48,8 @@
           </el-tabs>
         </span>
         <div class="avue-dialog__footer">
-          <el-button @click="type1=false">取 消</el-button>
-          <el-button @click="type1=false" type="primary">确 定</el-button>
+          <el-button @click="addressVisible=false">取 消</el-button>
+          <el-button @click="addressVisible=false" type="primary">确 定</el-button>
         </div>
       </el-dialog>
     </div>
@@ -60,7 +58,7 @@
 
 <script>
 import { optionList } from "./js/optionList";
-import { getDetail, submit, itemDel } from "@/api/maintenance/landFreight";
+import { getDetails } from "@/api/basicData/client";
 import { areaTypeTree } from "@/api/basicData/customerInformation";
 import { getCode } from "@/api/basicData/customerInquiry";
 export default {
@@ -77,7 +75,7 @@ export default {
       form3: {
 
       },
-      dataList: [],
+      data: [],
       option: {
         menuBtn: false,
         labelWidth: 130,
@@ -103,7 +101,7 @@ export default {
           },
           {
             label: "期初欠款",
-            prop: "c",
+            prop: "arrears",
             span: 8,
           },
           {
@@ -113,17 +111,17 @@ export default {
           },
           {
             label: "备用电话",
-            prop: "e",
+            prop: "telephone",
             span: 8,
           },
           {
             label: "传真",
-            prop: "f",
+            prop: "Fax",
             span: 8,
           },
           {
             label: "邮箱",
-            prop: "g",
+            prop: "mailbox",
             span: 8,
           },
           {
@@ -143,13 +141,13 @@ export default {
             label: "简称",
             prop: "a",
             type: "select",
-            span: 8,
+            span: 24,
           },
           {
             label: "地址",
             prop: "b",
             type: "select",
-            span: 16,
+            span: 24,
           },
           {
             label: "详细地址",
@@ -183,7 +181,7 @@ export default {
         labelWidth: 80,
         column: [
           {
-            label: "客户名称",
+            label: "目的地",
             prop: "a",
             type: "select",
             rules: [
@@ -193,38 +191,32 @@ export default {
                 trigger: "blur"
               }
             ],
-            span: 8,
+            span: 24,
           },
           {
-            label: "客户分类",
+            label: "物流公司",
             prop: "b",
-            type: "select",
-            span: 8,
+            span: 24,
           },
           {
-            label: "期初欠款",
+            label: "电话",
             prop: "c",
-            span: 8,
+            span: 24,
           },
           {
-            label: "电话",
+            label: "地址",
             prop: "d",
-            span: 8,
+            span: 24,
           },
           {
-            label: "备用电话",
+            label: "详细地址",
             prop: "e",
-            span: 8,
+            span: 24,
           },
           {
-            label: "传真",
+            label: "邮编",
             prop: "f",
-            span: 8,
-          },
-          {
-            label: "邮箱",
-            prop: "g",
-            span: 8,
+            span: 24,
           },
           {
             label: "备注",
@@ -232,6 +224,13 @@ export default {
             type: "textarea",
             minRows: 3,
             span: 24,
+          },
+          {
+            label: "地址智能识别",
+            prop: "g",
+            type: "textarea",
+            minRows: 3,
+            span: 24,
           }
         ]
       },
@@ -254,9 +253,6 @@ export default {
     if (this.detailData.status == 1) {
       this.option.disabled = true;
     }
-    // getCode().then(res => {
-    //   this.currencyList = res.data.data;
-    // });
     this.getAllWorkDicts()
   },
   methods: {
@@ -276,10 +272,10 @@ export default {
     },
     getDetail(id) {
       this.loadingBtn = true
-      getDetail(id)
+      getDetails({id:id})
         .then(res => {
           this.form = res.data.data;
-          this.dataList = res.data.data.orderCostItemList;
+          this.data = res.data.data.orderCostItemList;
         })
         .finally(() => {
           this.loadingBtn = false;
@@ -308,19 +304,19 @@ export default {
         type: "warning"
       }).then(() => {
         if (row.id) {
-          itemDel(row.id).then(res => {
-            this.$message({
-              type: "success",
-              message: "删除成功!"
-            });
-            this.dataList.splice(index, 1);
-          });
+          // itemDel(row.id).then(res => {
+          //   this.$message({
+          //     type: "success",
+          //     message: "删除成功!"
+          //   });
+          //   this.data.splice(index, 1);
+          // });
         } else {
           this.$message({
             type: "success",
             message: "删除成功!"
           });
-          this.dataList.splice(index, 1);
+          this.data.splice(index, 1);
         }
       });
     },
@@ -329,19 +325,19 @@ export default {
       this.$refs["form"].validate((valid, done) => {
         done();
         if (valid) {
-          this.dataList.forEach(e => {
+          this.data.forEach(e => {
             e.departure = e.departureId ? e.departureId.replace(/,/g, "/") : ''
           })
           this.loadingBtn = true;
-          submit({ ...this.form, feesType: 1, orderCostItemList: this.dataList })
-            .then(res => {
-              this.$message.success("保存成功");
-              this.form = res.data.data;
-              this.dataList = res.data.data.orderCostItemList;
-            })
-            .finally(() => {
-              this.loadingBtn = false;
-            });
+          // submit({ ...this.form, feesType: 1, orderCostItemList: this.data })
+          //   .then(res => {
+          //     this.$message.success("保存成功");
+          //     this.form = res.data.data;
+          //     this.data = res.data.data.orderCostItemList;
+          //   })
+          //   .finally(() => {
+          //     this.loadingBtn = false;
+          //   });
         } else {
           return false;
         }
@@ -379,6 +375,7 @@ export default {
     //返回列表
     backToList() {
       this.$emit("goBack");
+      console.log(11111)
     }
   }
 };

+ 308 - 0
src/views/client/index.vue

@@ -0,0 +1,308 @@
+<template>
+  <div>
+    <basic-container v-show="show && showInfo" class="page-crad">
+      <table border="0" width="100%" style="margin-bottom:20px;" v-loading="loading">
+        <tr>
+          <td class="stat-td">
+            <img src="@/assets/img/contractAmountBg.png" class="stat-img">
+            <div class="stat-tip">
+              <div class="money">
+                <span style="font-size:20px;">¥</span>
+                <avue-count-up :end="form.debitAmount"></avue-count-up>
+              </div>
+              <div class="title">合同金额</div>
+            </div>
+          </td>
+          <td class="stat-td">
+            <img src="@/assets/img/deliveredBg.png" class="stat-img">
+            <div class="stat-tip">
+              <div class="money">
+                <span style="font-size:20px;">¥</span>
+                <avue-count-up :end="form.deliveringAmount"></avue-count-up>
+              </div>
+              <div class="title">已送货</div>
+            </div>
+          </td>
+          <td class="stat-td">
+            <img src="@/assets/img/advanceCollectionBg.png" class="stat-img">
+            <div class="stat-tip">
+              <div class="money">
+                <span style="font-size:20px;">¥</span>
+                <avue-count-up :end="form.advancePayment"></avue-count-up>
+              </div>
+              <div class="title">预收款</div>
+              <div class="title">(积累预收:)</div>
+            </div>
+          </td>
+          <td class="stat-td">
+            <img src="@/assets/img/uncollectedBg.png" class="stat-img">
+            <div class="stat-tip">
+              <div class="money">
+                <span style="font-size:20px;">¥</span>
+                <avue-count-up :end="form.balanceAmount"></avue-count-up>
+              </div>
+              <div class="title">未收款</div>
+              <div class="title">(积累欠款:)</div>
+            </div>
+          </td>
+          <td class="stat-td">
+            <img src="@/assets/img/receivableBg.png" class="stat-img">
+            <div class="stat-tip">
+              <div class="money">
+                <span style="font-size:20px;">¥</span>
+                <avue-count-up :end="form.settlmentAmount"></avue-count-up>
+              </div>
+              <div class="title">已收款</div>
+            </div>
+          </td>
+        </tr>
+      </table>
+      <avue-crud ref="crud" :option="option" :data="dataList" :page.sync="page" :search.sync="search"
+        @search-change="searchChange" @current-change="currentChange" @size-change="sizeChange"
+        @refresh-change="refreshChange" @on-load="onLoad" :table-loading="loading" @saveColumn="saveColumn"
+        @resetColumn="resetColumn" :cell-style="cellStyle" @search-criteria-switch="searchCriteriaSwitch">
+        <template slot="menuLeft">
+          <el-button type="primary" size="mini" @click.stop="newAdd()">新建客户
+          </el-button>
+        </template>
+        <template slot-scope="{ row, index }" slot="id">
+          <span style="color: #409EFF;cursor: pointer" @click.stop="viewInfo(row)">{{ row.cname }}
+          </span>
+        </template>
+        <template slot-scope="{ row, index }" slot="menu">
+          <el-tooltip class="item" effect="dark" content="新建销售订单" placement="top">
+            <i class="tradingIcon icon-add" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="删除" placement="top">
+            <i class="tradingIcon icon-del" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="编辑" placement="top">
+            <i class="tradingIcon icon-edit" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="收款" placement="top">
+            <i class="tradingIcon icon-proceeds" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="发货" placement="top">
+            <i class="tradingIcon icon-deliver" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="对账" placement="top">
+            <i class="tradingIcon icon-reconciliation" />
+          </el-tooltip>
+          <!-- <el-button type="text" size="small" @click.stop="editOpen(row, 2)">
+            查看
+          </el-button>
+          <el-button type="text" size="small" @click.stop="rowDel(row, index)">
+            删除
+          </el-button> -->
+        </template>
+      </avue-crud>
+    </basic-container>
+    <details-page v-if="!show" @goBack="goBack()" :detailData="detailData" />
+    <details-info v-if="!showInfo" @goBack="goBack()" :detailData="detailData" />
+  </div>
+</template>
+  
+<script>
+import detailsInfo from "./detailsInfo";
+import detailsPage from "./detailsPage";
+import { option } from "./js/optionList";
+import { getList, getCorpsAll, pageStatistics } from "@/api/basicData/client";
+export default {
+  name: "index",
+  data() {
+    return {
+      src: '',
+      show: true,
+      showInfo: true,
+      loading: false,
+      search: {},
+      detailData: {},
+      dataList: [],
+      selectionList: [],
+      page: {
+        pageSize: 20,
+        currentPage: 1,
+        total: 0,
+        pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
+      },
+      form: {
+        debitAmount: 0,
+        deliveringAmount: 0,
+        advancePayment: 0,
+        balanceAmount: 0,
+        settlmentAmount: 0
+      },
+      option: {},
+    };
+  },
+  components: {
+    detailsPage,
+    detailsInfo
+  },
+  async created() {
+    this.option = await this.getColumnData(this.getColumnName(207), option);
+    this.option.height = window.innerHeight - 330;
+    this.getAllWorkDicts()
+  },
+  methods: {
+    getAllWorkDicts() {
+      getCorpsAll().then(res => {
+        this.findObject(this.option.column, "id").dicData = res.data.data;
+        this.findObject(this.option.column, "ids").dicData = res.data.data;
+      })
+      this.$refs.crud.init();
+    },
+    searchCriteriaSwitch(type) {
+      if (type) {
+        this.option.height = this.option.height - 46;
+      } else {
+        this.option.height = this.option.height + 46;
+      }
+      this.$refs.crud.getTableHeight();
+    },
+    cellStyle() {
+      return "padding:0;height:40px;";
+    },
+    //点击搜索按钮触发
+    searchChange(params, done) {
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.search);
+    },
+    newAdd() {
+      this.show = false;
+    },
+    onLoad(page, params = {}) {
+      let data = this.deepClone(Object.assign(params, this.search));
+      this.loading = true;
+      getList(
+        page.currentPage,
+        page.pageSize,
+        data
+      )
+        .then(res => {
+          this.dataList = res.data.data.records ? res.data.data.records : [];
+          this.page.total = res.data.data.total;
+        })
+        .finally(() => {
+          pageStatistics(data).then(res => {
+            this.form = res.data.data
+          })
+          this.loading = false;
+        });
+    },
+    viewInfo(row) {
+      this.detailData = {
+        id: row.id,
+        status: status
+      };
+      this.showInfo = false;
+    },
+    editOpen(row, status) {
+      this.detailData = {
+        id: row.id,
+        status: status
+      };
+      this.show = false;
+    },
+    currentChange(val) {
+      this.page.currentPage = val;
+    },
+    sizeChange(val) {
+      this.page.currentPage = 1;
+      this.page.pageSize = val;
+    },
+    rowDel(row, index, done) {
+      this.$confirm("确定删除数据?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        // remove(row.id).then(res => {
+        //   if (res.data.code == 200) {
+        //     this.$message({
+        //       type: "success",
+        //       message: "删除成功!"
+        //     });
+        //     this.onLoad(this.page, this.search);
+        //   }
+        // });
+      });
+    },
+    async saveColumn() {
+      const inSave = await this.saveColumnData(
+        this.getColumnName(207),
+        this.option
+      );
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout();
+        });
+        this.$message.success("保存成功");
+        //关闭窗口
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+      }
+    },
+    async resetColumn() {
+      this.option = option;
+      const inSave = await this.delColumnData(this.getColumnName(207), option);
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout();
+        });
+        this.getAllWorkDicts()
+        this.$message.success("重置成功");
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+      }
+    },
+    //返回列表
+    goBack() {
+      this.detailData = this.$options.data().detailData;
+      this.show = true;
+      this.showInfo = true;
+      this.onLoad(this.page, this.search);
+    },
+  }
+}
+</script>
+  
+<style  lang="scss"  scoped>
+.page-crad ::v-deep .basic-container__card {
+  height: 94.2vh;
+}
+
+.stat-td {
+  text-align: center;
+  position: relative;
+}
+
+.stat-img {
+  width: 95%;
+  height: 100px;
+}
+
+.stat-tip {
+  position: absolute;
+  left: 15px;
+  top: 5px;
+
+  .money {
+    color: #fff;
+    font-size: 28px;
+    text-align: left;
+    font-weight: 600;
+  }
+
+  .title {
+    color: #fff;
+    font-size: 14px;
+    text-align: left;
+    margin-top: 5px;
+    margin-bottom: 0px;
+  }
+}
+</style>
+  

+ 321 - 0
src/views/client/js/optionList.js

@@ -0,0 +1,321 @@
+import { number } from "echarts"
+
+export const option = {
+  searchShow: true,
+  searchMenuSpan: 8,
+  align: "center",
+  searchSpan: 8,
+  tip: false,
+  border: true,
+  index: true,
+  addBtn: false,
+  viewBtn: false,
+  editBtn: false,
+  delBtn: false,
+  menuWidth: 150,
+  searchIcon: true,
+  searchIndex: 2,
+  column: [
+    {
+      label: "客户名称",
+      prop: "id",
+      type: 'select',
+      dicData: [],
+      overHidden: true,
+      index: 1
+    },
+    {
+      label: "客户名称",
+      prop: "ids",
+      type: 'select',
+      dicData: [],
+      overHidden: true,
+      hide: true,
+      showColumn: false,
+      search: true,
+      index: 2
+    },
+    {
+      label: "电话",
+      prop: "tel",
+      overHidden: true,
+      search: true,
+      index: 3
+    },
+    {
+      label: "合同金额",
+      prop: "debitAmount",
+      overHidden: true,
+      index: 4
+    },
+    {
+      label: "已送货",
+      prop: "deliveringAmount",
+      overHidden: true,
+      index: 5
+    },
+    {
+      label: "预收款",
+      prop: "advancePayment",
+      overHidden: true,
+      index: 6
+    },
+    {
+      label: "未收款",
+      prop: "balanceAmount",
+      overHidden: true,
+      index: 7
+    },
+    {
+      label: "已收款",
+      prop: "settlmentAmount",
+      overHidden: true,
+      index: 8
+    },
+    {
+      label: "状态",
+      prop: "status",
+      type: 'select',
+      hide: true,
+      search: true,
+      showColumn: false,
+      overHidden: true,
+      index: 9
+    },
+    {
+      label: "客户分类",
+      prop: "corpsTypeId",
+      type: 'select',
+      hide: true,
+      search: true,
+      showColumn: false,
+      overHidden: true,
+      index: 10
+    },
+    {
+      label: "日期",
+      prop: "data",
+      hide: true,
+      search: true,
+      showColumn: false,
+      overHidden: true,
+      index: 11
+    }
+  ]
+}
+export const optionList = {
+  align: "center",
+  addBtn: false,
+  refreshBtn: false,
+  editBtn: false,
+  delBtn: false,
+  border: true,
+  menuWidth: 120,
+  stripe: true,
+  column: [
+    {
+      label: "地址类型",
+      prop: "departureId",
+      overHidden: true
+    },
+    {
+      label: "详细地址",
+      prop: "address",
+      overHidden: true
+    }
+  ]
+}
+
+export const sellOptionList = {
+  searchShow: true,
+  searchMenuSpan: 8,
+  align: "center",
+  searchSpan: 8,
+  tip: false,
+  border: true,
+  index: true,
+  addBtn: false,
+  viewBtn: false,
+  editBtn: false,
+  delBtn: false,
+  menu: false,
+  searchIcon: true,
+  searchIndex: 2,
+  column: [
+    {
+      label: "单号",
+      prop: "a",
+      search: true,
+      overHidden: true
+    },
+    {
+      label: "日期",
+      prop: "b",
+      search: true,
+      overHidden: true
+    },
+    {
+      label: "合同金额",
+      prop: "c",
+      search: true,
+      overHidden: true
+    },
+    {
+      label: "已发送",
+      prop: "d",
+      overHidden: true
+    },
+    {
+      label: "未收款",
+      prop: "e",
+      overHidden: true
+    },
+    {
+      label: "已收款",
+      prop: "f",
+      overHidden: true
+    },
+    {
+      label: "收款状态",
+      prop: "g",
+      search: true,
+      overHidden: true
+    },
+    {
+      label: "送货状态",
+      prop: "h",
+      search: true,
+      overHidden: true
+    }
+  ]
+}
+export const sellOption = {
+  searchShow: true,
+  searchMenuSpan: 8,
+  align: "center",
+  searchSpan: 8,
+  tip: false,
+  border: true,
+  index: true,
+  addBtn: false,
+  viewBtn: false,
+  editBtn: false,
+  delBtn: false,
+  menu: false,
+  searchIcon: true,
+  searchIndex: 2,
+  column: [
+    {
+      label: "单号",
+      prop: "a",
+      search: true,
+      overHidden: true
+    },
+    {
+      label: "日期",
+      prop: "b",
+      search: true,
+      overHidden: true
+    },
+    {
+      label: "合同金额",
+      prop: "c",
+      search: true,
+      overHidden: true
+    },
+    {
+      label: "已发送",
+      prop: "d",
+      overHidden: true
+    },
+    {
+      label: "未收款",
+      prop: "e",
+      overHidden: true
+    },
+    {
+      label: "已收款",
+      prop: "f",
+      overHidden: true
+    },
+    {
+      label: "收款状态",
+      prop: "g",
+      search: true,
+      overHidden: true
+    },
+    {
+      label: "送货状态",
+      prop: "h",
+      search: true,
+      overHidden: true
+    }
+  ]
+}
+export const capitalOption = {
+  searchShow: true,
+  searchMenuSpan: 16,
+  align: "center",
+  searchSpan: 8,
+  tip: false,
+  border: true,
+  index: true,
+  addBtn: false,
+  viewBtn: false,
+  editBtn: false,
+  delBtn: false,
+  menu: false,
+  searchIcon: true,
+  searchIndex: 2,
+  column: [
+    {
+      label: "单号",
+      prop: "a",
+      search: true,
+      overHidden: true
+    },
+    {
+      label: "收款日期",
+      prop: "b",
+      search: true,
+      overHidden: true
+    },
+    {
+      label: "类型",
+      prop: "c",
+      search: true,
+      overHidden: true
+    },
+    {
+      label: "收款金额",
+      prop: "d",
+      search: true,
+      overHidden: true
+    },
+    {
+      label: "收款账户",
+      prop: "e",
+      search: true,
+      overHidden: true
+    },
+    {
+      label: "制单人",
+      prop: "f",
+      search: true,
+      overHidden: true
+    },
+    {
+      label: "备注",
+      prop: "g",
+      overHidden: true
+    },
+    {
+      label: "是否打印",
+      prop: "h",
+      hide: true,
+      search: true,
+      showColumn: false,
+      overHidden: true
+    }
+  ]
+}

+ 239 - 0
src/views/product/detailsPage.vue

@@ -0,0 +1,239 @@
+<template>
+  <div>
+    <div class="borderless">
+      <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">返回列表
+          </el-button>
+        </div>
+        <div class="add-customer-btn">
+          <el-button type="primary" size="small" @click="editCustomer">
+            保存数据
+          </el-button>
+        </div>
+      </div>
+      <trade-card title="基础资料" style="margin-top: 60px">
+        <avue-form ref="form" class="trading-form" v-model="form" :option="option">
+        </avue-form>
+      </trade-card>
+      <containerTitle title="主图附件"></containerTitle>
+      <c-upload :data="bankOfDepositData" display deleteUrl="/api/blade-client/goodsfiles/delete"
+        :enumerationValue="160" />
+    </div>
+  </div>
+</template>
+
+<script>
+import { optionList } from "./js/optionList";
+import { getDetails } from "@/api/basicData/client";
+import { areaTypeTree } from "@/api/basicData/customerInformation";
+import { getCode } from "@/api/basicData/customerInquiry";
+export default {
+  name: "index",
+  data() {
+    return {
+      form: {},
+      data: [],
+      option: {
+        menuBtn: false,
+        labelWidth: 90,
+        column: [
+          {
+            label: "名称",
+            prop: "name",
+            span: 16,
+          },
+          {
+            label: "产品分类",
+            prop: "type",
+            span: 8,
+          },
+          {
+            label: "条码",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "单位",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "规格型号",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "期初库存",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "库存下限",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "进价",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "售价1",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "售价2",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "售价3",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "售价4",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "售价5",
+            prop: "mailbox",
+            span: 8,
+          },
+          {
+            label: "标签",
+            prop: "mailbox",
+            type: 'checkbox',
+            dicData: [{
+              label: '爆款',
+              value: 0
+            }, {
+              label: '新品',
+              value: 1
+            }, {
+              label: '促销',
+              value: ''
+            }],
+            span: 8,
+          },
+          {
+            label: "备注",
+            prop: "g",
+            type: "textarea",
+            minRows: 3,
+            span: 24,
+          }
+        ]
+      },
+      bankOfDepositData: []
+    };
+  },
+  props: {
+    detailData: {
+      type: Object
+    }
+  },
+  async created() {
+    if (this.detailData.id) {
+      this.getDetail(this.detailData.id);
+    }
+    if (this.detailData.status == 1) {
+      this.option.disabled = true;
+    }
+  },
+  methods: {
+    cellStyle() {
+      return "padding:0;height:40px;";
+    },
+    getDetail(id) {
+      this.loadingBtn = true
+      getDetails({ id: id })
+        .then(res => {
+          this.form = res.data.data;
+          this.data = res.data.data.orderCostItemList;
+        })
+        .finally(() => {
+          this.loadingBtn = false;
+        });
+    },
+    //修改提交触发
+    editCustomer() {
+      this.$refs["form"].validate((valid, done) => {
+        done();
+        if (valid) {
+          this.data.forEach(e => {
+            e.departure = e.departureId ? e.departureId.replace(/,/g, "/") : ''
+          })
+          this.loadingBtn = true;
+          // submit({ ...this.form, feesType: 1, orderCostItemList: this.data })
+          //   .then(res => {
+          //     this.$message.success("保存成功");
+          //     this.form = res.data.data;
+          //     this.data = res.data.data.orderCostItemList;
+          //   })
+          //   .finally(() => {
+          //     this.loadingBtn = false;
+          //   });
+        } else {
+          return false;
+        }
+      });
+    },
+    //返回列表
+    backToList() {
+      this.$emit("goBack");
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.trading-form ::v-deep .el-form-item {
+  margin-bottom: 8px !important;
+}
+
+::v-deep .el-dialog__body {
+  padding: 0px 20px 15px 20px;
+}
+
+::v-deep .el-form-item__error {
+  display: none !important;
+}
+
+.img-form ::v-deep .el-form-item {
+  height: 150px;
+  line-height: 150px;
+  margin-bottom: 8px !important;
+}
+
+.img-form ::v-deep .avue-upload__icon {
+  font-size: 20px;
+  width: 150px;
+  height: 150px;
+  line-height: 150px;
+}
+
+::v-deep .el-table .cell {
+  padding: 0 2px !important;
+}
+
+::v-deep .avue-crud .el-table .el-form-item__label {
+  left: -1px;
+}
+
+.addressTabs {
+  display: flex;
+  justify-content: center;
+
+  span {
+    width: 100px;
+    font-size: 18px;
+    font-weight: 600;
+    text-align: center;
+  }
+}
+</style>

+ 72 - 15
src/views/basicData/client/index.vue → src/views/product/index.vue

@@ -6,35 +6,57 @@
         @refresh-change="refreshChange" @on-load="onLoad" :table-loading="loading" @saveColumn="saveColumn"
         @resetColumn="resetColumn" :cell-style="cellStyle" @search-criteria-switch="searchCriteriaSwitch">
         <template slot="menuLeft">
-          <el-button type="primary" icon="el-icon-plus" size="small" @click.stop="newAdd()">新增
+          <el-button type="primary" size="mini" @click.stop="newAdd()">新建产品
           </el-button>
         </template>
+        <template slot-scope="{ row, index }" slot="id">
+          <span style="color: #409EFF;cursor: pointer" @click.stop="editOpen(row, 2)">{{ row.cname }}
+          </span>
+        </template>
         <template slot-scope="{ row, index }" slot="menu">
-          <el-button type="text" size="small" @click.stop="editOpen(row,2)">
+          <!-- <el-tooltip class="item" effect="dark" content="新建销售订单" placement="top">
+            <i class="tradingIcon icon-add" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="删除" placement="top">
+            <i class="tradingIcon icon-del" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="编辑" placement="top">
+            <i class="tradingIcon icon-edit" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="收款" placement="top">
+            <i class="tradingIcon icon-proceeds" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="发货" placement="top">
+            <i class="tradingIcon icon-deliver" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="对账" placement="top">
+            <i class="tradingIcon icon-reconciliation" />
+          </el-tooltip> -->
+          <!-- <el-button type="text" size="small" @click.stop="editOpen(row, 2)">
             查看
           </el-button>
           <el-button type="text" size="small" @click.stop="rowDel(row, index)">
             删除
-          </el-button>
+          </el-button> -->
         </template>
       </avue-crud>
     </basic-container>
-    <details-page v-if="!show" @goBack="backToList" :detailData="detailData" />
+    <details-page v-if="!show" @goBack="goBack()" :detailData="detailData" />
   </div>
 </template>
   
 <script>
 import detailsPage from "./detailsPage";
 import { option } from "./js/optionList";
-import { getList, getCorpsAll } from "@/api/basicData/client";
+import { getList, getCorpsAll, pageStatistics } from "@/api/basicData/client";
 export default {
   name: "index",
   data() {
     return {
+      src: '',
       show: true,
       loading: false,
-      form: {},
-      search: { },
+      search: {},
       detailData: {},
       dataList: [],
       selectionList: [],
@@ -51,13 +73,14 @@ export default {
     detailsPage
   },
   async created() {
-    this.option = await this.getColumnData(this.getColumnName(207), option);
+    this.option = await this.getColumnData(this.getColumnName(217), option);
     this.option.height = window.innerHeight - 210;
     this.getAllWorkDicts()
   },
   methods: {
     getAllWorkDicts() {
       getCorpsAll().then(res => {
+        this.findObject(this.option.column, "id").dicData = res.data.data;
         this.findObject(this.option.column, "ids").dicData = res.data.data;
       })
       this.$refs.crud.init();
@@ -86,8 +109,8 @@ export default {
       this.show = false;
     },
     onLoad(page, params = {}) {
-      this.loading = true;
       let data = this.deepClone(Object.assign(params, this.search));
+      this.loading = true;
       getList(
         page.currentPage,
         page.pageSize,
@@ -98,6 +121,9 @@ export default {
           this.page.total = res.data.data.total;
         })
         .finally(() => {
+          pageStatistics(data).then(res => {
+            this.form = res.data.data
+          })
           this.loading = false;
         });
     },
@@ -134,7 +160,7 @@ export default {
     },
     async saveColumn() {
       const inSave = await this.saveColumnData(
-        this.getColumnName(207),
+        this.getColumnName(217),
         this.option
       );
       if (inSave) {
@@ -148,7 +174,7 @@ export default {
     },
     async resetColumn() {
       this.option = option;
-      const inSave = await this.delColumnData(this.getColumnName(207), option);
+      const inSave = await this.delColumnData(this.getColumnName(217), option);
       if (inSave) {
         this.$nextTick(() => {
           this.$refs.crud.doLayout();
@@ -159,18 +185,49 @@ export default {
       }
     },
     //返回列表
-    backToList() {
+    goBack() {
       this.detailData = this.$options.data().detailData;
       this.show = true;
       this.onLoad(this.page, this.search);
-    }
+    },
   }
-};
+}
 </script>
   
-<style scoped>
+<style  lang="scss"  scoped>
 .page-crad ::v-deep .basic-container__card {
   height: 94.2vh;
 }
+
+.stat-td {
+  text-align: center;
+  position: relative;
+}
+
+.stat-img {
+  width: 95%;
+  height: 100px;
+}
+
+.stat-tip {
+  position: absolute;
+  left: 15px;
+  top: 5px;
+
+  .money {
+    color: #fff;
+    font-size: 28px;
+    text-align: left;
+    font-weight: 600;
+  }
+
+  .title {
+    color: #fff;
+    font-size: 14px;
+    text-align: left;
+    margin-top: 5px;
+    margin-bottom: 0px;
+  }
+}
 </style>
   

+ 185 - 0
src/views/product/js/optionList.js

@@ -0,0 +1,185 @@
+import { number } from "echarts"
+
+export const option = {
+  searchShow: true,
+  searchMenuSpan: 8,
+  align: "center",
+  searchSpan: 8,
+  tip: false,
+  border: true,
+  index: true,
+  addBtn: false,
+  viewBtn: false,
+  editBtn: false,
+  delBtn: false,
+  menuWidth: 150,
+  searchIcon: true,
+  searchIndex: 2,
+  column: [
+    {
+      label: "图品",
+      prop: "no",
+      overHidden: true,
+      index: 1
+    },
+    {
+      label: "产品分类",
+      prop: "id",
+      type: 'select',
+      dicData: [],
+      overHidden: true,
+      index: 2
+    },
+    {
+      label: "单位",
+      prop: "data",
+      search: true,
+      overHidden: true,
+      index: 4
+    },
+    {
+      label: "参考售价",
+      prop: "debitAmount",
+      overHidden: true,
+      index: 5
+    },
+    {
+      label: "备注",
+      prop: "deliveringAmount",
+      overHidden: true,
+      search: true,
+      index: 6
+    }
+  ]
+}
+export const optionList = {
+  align: "center",
+  addBtn: false,
+  refreshBtn: false,
+  editBtn: false,
+  delBtn: false,
+  border: true,
+  menuWidth: 120,
+  stripe: true,
+  index:true,
+  column: [
+    {
+      label: "产品",
+      prop: "departureId",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "图片",
+      prop: "address",
+      overHidden: true
+    },
+    {
+      label: "规格型号",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "总数量",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "单位",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "单价",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "金额",
+      prop: "address",
+      overHidden: true
+    },
+    {
+      label: "送货数量",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "备注",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "供应商",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "进价",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "采购数量",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "总进价",
+      prop: "address",
+      overHidden: true
+    },
+  ]
+}
+
+export const feeOption = {
+  align: "center",
+  addBtn: false,
+  refreshBtn: false,
+  editBtn: false,
+  delBtn: false,
+  border: true,
+  menuWidth: 120,
+  stripe: true,
+  index:true,
+  column: [
+    {
+      label: "收款单号",
+      prop: "e",
+      overHidden: true
+    },
+    {
+      label: "收款日期",
+      prop: "a",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "收款金额",
+      prop: "b",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "收款账户",
+      prop: "c",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "备注",
+      prop: "d",
+      cell:true,
+      overHidden: true
+    }
+  ]
+}

+ 101 - 0
src/views/salesOrder/components/feeInfo.vue

@@ -0,0 +1,101 @@
+<template>
+    <trade-card title="收款信息">
+        <avue-crud ref="crud" :data="data" :option="feeOption" @saveColumn="saveColumn" @resetColumn="resetColumn"
+            :cell-style="cellStyle">
+            <template slot="menuLeft">
+                <el-button type="primary" @click="addRow" size="mini" :disabled="detailData.status == 1">新增费用
+                </el-button>
+            </template>
+        </avue-crud>
+    </trade-card>
+</template>
+  
+<script>
+import { feeOption } from "../js/optionList";
+export default {
+    data() {
+        return {
+            feeOption: {}
+        };
+    },
+    props: {
+        data: {
+            type: Array
+        },
+        detailData: {
+            type: Object
+        },
+        form: {
+            type: Object
+        }
+    },
+    async created() {
+        this.feeOption = await this.getColumnData(
+            this.getColumnName(224),
+            feeOption
+        );
+    },
+    methods: {
+        cellStyle() {
+            return "padding:0;height:40px;";
+        },
+        addRow() {
+            // if (!this.form.corpId) {
+            //     return this.$message.error("请选择客户名称");
+            // }
+            this.data.push({ $cellEdit: true })
+        },
+        async saveColumn() {
+            const inSave = await this.saveColumnData(
+                this.getColumnName(224),
+                this.feeOption
+            );
+            if (inSave) {
+                this.$nextTick(() => {
+                    this.$refs.crud.doLayout();
+                });
+                this.$message.success("保存成功");
+                //关闭窗口
+                this.$refs.crud.$refs.dialogColumn.columnBox = false;
+            }
+        },
+        async resetColumn() {
+            this.feeOption = feeOption;
+            const inSave = await this.delColumnData(
+                this.getColumnName(224),
+                feeOption
+            );
+            if (inSave) {
+                this.$nextTick(() => {
+                    this.$refs.crud.doLayout();
+                });
+                this.$message.success("重置成功");
+                //关闭窗口
+                setTimeout(() => {
+                    this.$refs.crud.$refs.dialogColumn.columnBox = false;
+                }, 1000);
+            }
+        }
+    }
+};
+</script>
+  
+<style scoped>
+::v-deep .select-component {
+    display: flex;
+}
+
+.page-crad ::v-deep .basic-container__card {
+    height: 94.2vh;
+}
+
+.itemTable ::v-deep .el-table {
+    width: 738px;
+}
+
+::v-deep .el-input-group__append,
+.el-input-group__prepend {
+    padding: 0 5px;
+}
+</style>
+  

+ 472 - 0
src/views/salesOrder/detailsPage.vue

@@ -0,0 +1,472 @@
+<template>
+  <div>
+    <div class="borderless">
+      <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">返回列表
+          </el-button>
+        </div>
+        <div class="add-customer-btn">
+          <el-button type="primary" size="small" @click="editCustomer">
+            保存数据
+          </el-button>
+        </div>
+      </div>
+      <!-- <containerTitle title="基础资料" style="margin-top: 60px"></containerTitle> -->
+      <trade-card title="基础资料" style="margin-top: 60px">
+        <avue-form ref="form" class="trading-form" v-model="form" :option="option">
+        </avue-form>
+      </trade-card>
+      <trade-card title="商品信息">
+        <avue-form ref="form" class="trading-form" v-model="form" :option="option2">
+        </avue-form>
+        <avue-crud ref="crud" :option="optionList" :data="data" :table-loading="loading" @saveColumn="saveColumn"
+          @resetColumn="resetColumn" :cell-style="cellStyle" @row-save="rowSave" @row-update="addUpdate">
+          <template slot="menuLeft">
+            <el-button type="primary" @click="addRow" size="mini" :disabled="detailData.status == 1">新增产品
+            </el-button>
+          </template>
+          <template slot="menu" slot-scope="{ row, index }">
+            <el-button size="small" type="text" @click="rowCell(row, index)">{{
+                row.$cellEdit ? "保存" : "修改"
+            }}</el-button>
+            <el-button size="small" type="text" @click="rowDel(row, index)">删除
+            </el-button>
+          </template>
+        </avue-crud>
+      </trade-card>
+      <fee-info :data="orderFeeList" :form="form" :detailData="detailData"></fee-info>
+      <containerTitle title="上传附件"></containerTitle>
+      <c-upload typeUpload="CD" deleteUrl="/api/trade-purchase/woodHarvestingCloud/removeByFileId"
+        :data="orderFilesList" display :enumerationValue="35.1" :disabled="detailData.status == 1"></c-upload>
+      <el-dialog :title="addressTitle" v-dialogDrag :visible.sync="addressVisible" class="avue-dialog avue-dialog--top"
+        width="50%" append-to-body>
+        <span>
+          <el-tabs v-model="activeName">
+            <el-tab-pane label="客户地址" name="first">
+              <avue-form class="trading-form" v-model="form2" :option="optiontabs1"></avue-form>
+            </el-tab-pane>
+            <el-tab-pane label="物流地址" name="second">
+              <avue-form class="trading-form" v-model="form3" :option="optiontabs2"></avue-form>
+            </el-tab-pane>
+          </el-tabs>
+        </span>
+        <div class="avue-dialog__footer">
+          <el-button @click="addressVisible = false">取 消</el-button>
+          <el-button @click="addressVisible = false" type="primary">确 定</el-button>
+        </div>
+      </el-dialog>
+    </div>
+  </div>
+</template>
+
+<script>
+import { optionList } from "./js/optionList";
+import { getDetails } from "@/api/basicData/client";
+import { areaTypeTree } from "@/api/basicData/customerInformation";
+import { getCode } from "@/api/basicData/customerInquiry";
+import feeInfo from "./components/feeInfo.vue";
+export default {
+  name: "index",
+  data() {
+    return {
+      activeName: 'first',
+      loadingBtn: false,
+      addressTitle: null,
+      addressVisible: false,
+      form: {},
+      form2: {
+      },
+      form3: {
+
+      },
+      data: [],
+      option: {
+        menuBtn: false,
+        labelWidth: 90,
+        column: [
+          {
+            label: "客户名称",
+            prop: "id",
+            type: "select",
+            rules: [
+              {
+                required: true,
+                message: "",
+                trigger: "blur"
+              }
+            ],
+            span: 16,
+          },
+          {
+            label: "非产品费用",
+            prop: "Fax",
+            span: 8,
+          },
+          {
+            label: "销售日期",
+            prop: "mailbox",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            span: 8,
+          },
+          {
+            label: "计划收款日期",
+            prop: "mailbox",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            span: 8,
+          },
+          {
+            label: "送货日期",
+            prop: "mailbox",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            span: 8,
+          },
+          {
+            label: "送货地址",
+            prop: "mailbox",
+            type: 'select',
+            span: 24,
+          },
+          {
+            label: "备注",
+            prop: "g",
+            placeholder: "打印时显示",
+            type: "textarea",
+            minRows: 3,
+            span: 24,
+          }
+        ]
+      },
+      option2: {
+        menuBtn: false,
+        labelWidth: 90,
+        column: [
+          {
+            label: "税率",
+            prop: "id",
+            type: "select",
+            span: 6,
+          },
+          {
+            label: "订单金额",
+            prop: "id",
+            disabled: true,
+            span: 6,
+          },
+          {
+            label: "优惠金额",
+            prop: "id",
+            span: 6,
+          },
+          {
+            label: "合同金额",
+            prop: "id",
+            disabled: true,
+            span: 6,
+          }
+        ]
+      },
+      optiontabs1: {
+        menuBtn: false,
+        labelWidth: 90,
+        column: [
+          {
+            label: "简称",
+            prop: "a",
+            type: "select",
+            span: 24,
+          },
+          {
+            label: "地址",
+            prop: "b",
+            type: "select",
+            span: 24,
+          },
+          {
+            label: "详细地址",
+            prop: "c",
+            span: 24,
+          },
+          {
+            label: "邮编",
+            prop: "d",
+            span: 24,
+          },
+          {
+            label: "备注",
+            prop: "e",
+            type: 'textarea',
+            minRows: 3,
+            span: 24,
+          },
+          {
+            label: "地址智能识别",
+            prop: "ad",
+            placeholder: "例:上海市徐汇区枫林街道斜土路100号",
+            type: "textarea",
+            minRows: 3,
+            span: 24,
+          }
+        ]
+      },
+      optiontabs2: {
+        menuBtn: false,
+        labelWidth: 80,
+        column: [
+          {
+            label: "目的地",
+            prop: "a",
+            type: "select",
+            rules: [
+              {
+                required: true,
+                message: "",
+                trigger: "blur"
+              }
+            ],
+            span: 24,
+          },
+          {
+            label: "物流公司",
+            prop: "b",
+            span: 24,
+          },
+          {
+            label: "电话",
+            prop: "c",
+            span: 24,
+          },
+          {
+            label: "地址",
+            prop: "d",
+            span: 24,
+          },
+          {
+            label: "详细地址",
+            prop: "e",
+            span: 24,
+          },
+          {
+            label: "邮编",
+            prop: "f",
+            span: 24,
+          },
+          {
+            label: "备注",
+            prop: "remarks",
+            type: "textarea",
+            minRows: 3,
+            span: 24,
+          },
+          {
+            label: "地址智能识别",
+            prop: "g",
+            type: "textarea",
+            minRows: 3,
+            span: 24,
+          }
+        ]
+      },
+      optionList: {},
+      orderFeeList: []
+    };
+  },
+  props: {
+    detailData: {
+      type: Object
+    }
+  },
+  components: {
+    feeInfo,
+  },
+  async created() {
+    this.optionList = await this.getColumnData(
+      this.getColumnName(212),
+      optionList
+    );
+    if (this.detailData.id) {
+      this.getDetail(this.detailData.id);
+    }
+    if (this.detailData.status == 1) {
+      this.option.disabled = true;
+    }
+    this.getAllWorkDicts()
+  },
+  methods: {
+    getAllWorkDicts() {
+      this.findObject(this.optionList.column, "departureId").dicData = JSON.parse(localStorage.getItem('areaTypeTree'));
+    },
+    cellStyle() {
+      return "padding:0;height:40px;";
+    },
+    selectValue(value, row) {
+      console.log(value, row)
+      if (row.feesId) {
+        row.feesName = value.cname
+      } else {
+        row.feesName = ""
+      }
+    },
+    getDetail(id) {
+      this.loadingBtn = true
+      getDetails({ id: id })
+        .then(res => {
+          this.form = res.data.data;
+          this.data = res.data.data.orderCostItemList;
+        })
+        .finally(() => {
+          this.loadingBtn = false;
+        });
+    },
+    getCorpData(row) {
+      this.form.corpName = row.cname
+    },
+    addRow() {
+      this.data.push({ $cellEdit: true })
+    },
+    rowCell(row, index) {
+      this.$refs.crud.rowCell(row, index)
+    },
+    rowSave(form, done) {
+      done()
+    },
+    addUpdate(form, index, done, loading) {
+      done()
+    },
+    rowDel(row, index) {
+      this.$confirm("确定删除数据?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        if (row.id) {
+          // itemDel(row.id).then(res => {
+          //   this.$message({
+          //     type: "success",
+          //     message: "删除成功!"
+          //   });
+          //   this.data.splice(index, 1);
+          // });
+        } else {
+          this.$message({
+            type: "success",
+            message: "删除成功!"
+          });
+          this.data.splice(index, 1);
+        }
+      });
+    },
+    //修改提交触发
+    editCustomer() {
+      this.$refs["form"].validate((valid, done) => {
+        done();
+        if (valid) {
+          this.data.forEach(e => {
+            e.departure = e.departureId ? e.departureId.replace(/,/g, "/") : ''
+          })
+          this.loadingBtn = true;
+          // submit({ ...this.form, feesType: 1, orderCostItemList: this.data })
+          //   .then(res => {
+          //     this.$message.success("保存成功");
+          //     this.form = res.data.data;
+          //     this.data = res.data.data.orderCostItemList;
+          //   })
+          //   .finally(() => {
+          //     this.loadingBtn = false;
+          //   });
+        } else {
+          return false;
+        }
+      });
+    },
+    async saveColumn() {
+      const inSave = await this.saveColumnData(
+        this.getColumnName(212),
+        this.optionList
+      );
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout();
+        });
+        this.$message.success("保存成功");
+        //关闭窗口
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+      }
+    },
+    async resetColumn() {
+      this.optionList = optionList;
+      const inSave = await this.delColumnData(
+        this.getColumnName(212),
+        optionList
+      );
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout();
+        });
+        this.getAllWorkDicts()
+        this.$message.success("重置成功");
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+      }
+    },
+    //返回列表
+    backToList() {
+      this.$emit("goBack");
+      console.log(11111)
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.trading-form ::v-deep .el-form-item {
+  margin-bottom: 8px !important;
+}
+
+::v-deep .el-dialog__body {
+  padding: 0px 20px 15px 20px;
+}
+
+::v-deep .el-form-item__error {
+  display: none !important;
+}
+
+.img-form ::v-deep .el-form-item {
+  height: 150px;
+  line-height: 150px;
+  margin-bottom: 8px !important;
+}
+
+.img-form ::v-deep .avue-upload__icon {
+  font-size: 20px;
+  width: 150px;
+  height: 150px;
+  line-height: 150px;
+}
+
+::v-deep .el-table .cell {
+  padding: 0 2px !important;
+}
+
+::v-deep .avue-crud .el-table .el-form-item__label {
+  left: -1px;
+}
+
+.addressTabs {
+  display: flex;
+  justify-content: center;
+
+  span {
+    width: 100px;
+    font-size: 18px;
+    font-weight: 600;
+    text-align: center;
+  }
+}
+</style>

+ 233 - 0
src/views/salesOrder/index.vue

@@ -0,0 +1,233 @@
+<template>
+  <div>
+    <basic-container v-show="show" class="page-crad">
+      <avue-crud ref="crud" :option="option" :data="dataList" :page.sync="page" :search.sync="search"
+        @search-change="searchChange" @current-change="currentChange" @size-change="sizeChange"
+        @refresh-change="refreshChange" @on-load="onLoad" :table-loading="loading" @saveColumn="saveColumn"
+        @resetColumn="resetColumn" :cell-style="cellStyle" @search-criteria-switch="searchCriteriaSwitch">
+        <template slot="menuLeft">
+          <el-button type="primary" size="mini" @click.stop="newAdd()">新建销售单
+          </el-button>
+        </template>
+        <template slot-scope="{ row, index }" slot="id">
+          <span style="color: #409EFF;cursor: pointer" @click.stop="editOpen(row, 2)">{{ row.cname }}
+          </span>
+        </template>
+        <template slot-scope="{ row, index }" slot="menu">
+          <!-- <el-tooltip class="item" effect="dark" content="新建销售订单" placement="top">
+            <i class="tradingIcon icon-add" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="删除" placement="top">
+            <i class="tradingIcon icon-del" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="编辑" placement="top">
+            <i class="tradingIcon icon-edit" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="收款" placement="top">
+            <i class="tradingIcon icon-proceeds" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="发货" placement="top">
+            <i class="tradingIcon icon-deliver" />
+          </el-tooltip>
+          <el-tooltip class="item" effect="dark" content="对账" placement="top">
+            <i class="tradingIcon icon-reconciliation" />
+          </el-tooltip> -->
+          <!-- <el-button type="text" size="small" @click.stop="editOpen(row, 2)">
+            查看
+          </el-button>
+          <el-button type="text" size="small" @click.stop="rowDel(row, index)">
+            删除
+          </el-button> -->
+        </template>
+      </avue-crud>
+    </basic-container>
+    <details-page v-if="!show" @goBack="goBack()" :detailData="detailData" />
+  </div>
+</template>
+  
+<script>
+import detailsPage from "./detailsPage";
+import { option } from "./js/optionList";
+import { getList, getCorpsAll, pageStatistics } from "@/api/basicData/client";
+export default {
+  name: "index",
+  data() {
+    return {
+      src: '',
+      show: true,
+      loading: false,
+      search: {},
+      detailData: {},
+      dataList: [],
+      selectionList: [],
+      page: {
+        pageSize: 20,
+        currentPage: 1,
+        total: 0,
+        pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
+      },
+      option: {},
+    };
+  },
+  components: {
+    detailsPage
+  },
+  async created() {
+    this.option = await this.getColumnData(this.getColumnName(211), option);
+    this.option.height = window.innerHeight - 210;
+    this.getAllWorkDicts()
+  },
+  methods: {
+    getAllWorkDicts() {
+      getCorpsAll().then(res => {
+        this.findObject(this.option.column, "id").dicData = res.data.data;
+        this.findObject(this.option.column, "ids").dicData = res.data.data;
+      })
+      this.$refs.crud.init();
+    },
+    searchCriteriaSwitch(type) {
+      if (type) {
+        this.option.height = this.option.height - 46;
+      } else {
+        this.option.height = this.option.height + 46;
+      }
+      this.$refs.crud.getTableHeight();
+    },
+    cellStyle() {
+      return "padding:0;height:40px;";
+    },
+    //点击搜索按钮触发
+    searchChange(params, done) {
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.search);
+    },
+    newAdd() {
+      this.show = false;
+    },
+    onLoad(page, params = {}) {
+      let data = this.deepClone(Object.assign(params, this.search));
+      this.loading = true;
+      getList(
+        page.currentPage,
+        page.pageSize,
+        data
+      )
+        .then(res => {
+          this.dataList = res.data.data.records ? res.data.data.records : [];
+          this.page.total = res.data.data.total;
+        })
+        .finally(() => {
+          pageStatistics(data).then(res => {
+            this.form = res.data.data
+          })
+          this.loading = false;
+        });
+    },
+    editOpen(row, status) {
+      this.detailData = {
+        id: row.id,
+        status: status
+      };
+      this.show = false;
+    },
+    currentChange(val) {
+      this.page.currentPage = val;
+    },
+    sizeChange(val) {
+      this.page.currentPage = 1;
+      this.page.pageSize = val;
+    },
+    rowDel(row, index, done) {
+      this.$confirm("确定删除数据?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        // remove(row.id).then(res => {
+        //   if (res.data.code == 200) {
+        //     this.$message({
+        //       type: "success",
+        //       message: "删除成功!"
+        //     });
+        //     this.onLoad(this.page, this.search);
+        //   }
+        // });
+      });
+    },
+    async saveColumn() {
+      const inSave = await this.saveColumnData(
+        this.getColumnName(211),
+        this.option
+      );
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout();
+        });
+        this.$message.success("保存成功");
+        //关闭窗口
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+      }
+    },
+    async resetColumn() {
+      this.option = option;
+      const inSave = await this.delColumnData(this.getColumnName(211), option);
+      if (inSave) {
+        this.$nextTick(() => {
+          this.$refs.crud.doLayout();
+        });
+        this.getAllWorkDicts()
+        this.$message.success("重置成功");
+        this.$refs.crud.$refs.dialogColumn.columnBox = false;
+      }
+    },
+    //返回列表
+    goBack() {
+      this.detailData = this.$options.data().detailData;
+      this.show = true;
+      this.onLoad(this.page, this.search);
+    },
+  }
+}
+</script>
+  
+<style  lang="scss"  scoped>
+.page-crad ::v-deep .basic-container__card {
+  height: 94.2vh;
+}
+
+.stat-td {
+  text-align: center;
+  position: relative;
+}
+
+.stat-img {
+  width: 95%;
+  height: 100px;
+}
+
+.stat-tip {
+  position: absolute;
+  left: 15px;
+  top: 5px;
+
+  .money {
+    color: #fff;
+    font-size: 28px;
+    text-align: left;
+    font-weight: 600;
+  }
+
+  .title {
+    color: #fff;
+    font-size: 14px;
+    text-align: left;
+    margin-top: 5px;
+    margin-bottom: 0px;
+  }
+}
+</style>
+  

+ 225 - 0
src/views/salesOrder/js/optionList.js

@@ -0,0 +1,225 @@
+import { number } from "echarts"
+
+export const option = {
+  searchShow: true,
+  searchMenuSpan: 8,
+  align: "center",
+  searchSpan: 8,
+  tip: false,
+  border: true,
+  index: true,
+  addBtn: false,
+  viewBtn: false,
+  editBtn: false,
+  delBtn: false,
+  menuWidth: 150,
+  searchIcon: true,
+  searchIndex: 2,
+  column: [
+    {
+      label: "单号",
+      prop: "no",
+      overHidden: true,
+      search: true,
+      index: 1
+    },
+    {
+      label: "客户名称",
+      prop: "id",
+      type: 'select',
+      dicData: [],
+      overHidden: true,
+      index: 2
+    },
+    {
+      label: "客户名称",
+      prop: "ids",
+      type: 'select',
+      dicData: [],
+      overHidden: true,
+      hide: true,
+      showColumn: false,
+      search: true,
+      index: 3
+    },
+    {
+      label: "日期",
+      prop: "data",
+      search: true,
+      overHidden: true,
+      index: 4
+    },
+    {
+      label: "合同金额",
+      prop: "debitAmount",
+      overHidden: true,
+      index: 5
+    },
+    {
+      label: "已送货",
+      prop: "deliveringAmount",
+      overHidden: true,
+      search: true,
+      index: 6
+    },
+    {
+      label: "未收款",
+      prop: "balanceAmount",
+      overHidden: true,
+      search: true,
+      index: 7
+    },
+    {
+      label: "已收款",
+      prop: "settlmentAmount",
+      overHidden: true,
+      search: true,
+      index: 8
+    },
+    {
+      label: "送货状态",
+      prop: "status",
+      type: 'select',
+      search: true,
+      index: 9
+    },
+    {
+      label: "制单人",
+      prop: "as",
+      type: 'select',
+      search: true,
+      index: 10
+    }
+  ]
+}
+export const optionList = {
+  align: "center",
+  addBtn: false,
+  refreshBtn: false,
+  editBtn: false,
+  delBtn: false,
+  border: true,
+  menuWidth: 120,
+  stripe: true,
+  index:true,
+  column: [
+    {
+      label: "产品",
+      prop: "departureId",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "图片",
+      prop: "address",
+      overHidden: true
+    },
+    {
+      label: "规格型号",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "总数量",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "单位",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "单价",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "金额",
+      prop: "address",
+      overHidden: true
+    },
+    {
+      label: "送货数量",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "备注",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "供应商",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "进价",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "采购数量",
+      prop: "address",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "总进价",
+      prop: "address",
+      overHidden: true
+    },
+  ]
+}
+
+export const feeOption = {
+  align: "center",
+  addBtn: false,
+  refreshBtn: false,
+  editBtn: false,
+  delBtn: false,
+  border: true,
+  menuWidth: 120,
+  stripe: true,
+  index:true,
+  column: [
+    {
+      label: "收款单号",
+      prop: "e",
+      overHidden: true
+    },
+    {
+      label: "收款日期",
+      prop: "a",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "收款金额",
+      prop: "b",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "收款账户",
+      prop: "c",
+      cell:true,
+      overHidden: true
+    },
+    {
+      label: "备注",
+      prop: "d",
+      cell:true,
+      overHidden: true
+    }
+  ]
+}