web100 vor 2 Jahren
Ursprung
Commit
7eedb1dbec

+ 8 - 0
src/api/basicData/invoice.js

@@ -112,3 +112,11 @@ export function gainUser(query) {
     params: query
   })
 }
+//商品类别列表查询
+export const getGoodsInfo = (query) => {
+  return request({
+    url: ' /api/blade-purchase-sales/orderitems/orderItemsList',
+    method: 'get',
+    params: query
+  })
+}

+ 8 - 0
src/api/exportTrade/purchaseContract.js

@@ -164,3 +164,11 @@ export function generatePurchaseBill(query) {
     data: query
   })
 }
+//商品类别列表查询
+export const getGoodsInfo = (query) => {
+  return request({
+    url: ' /api/blade-purchase-sales/orderitems/orderItemsList',
+    method: 'get',
+    params: query
+  })
+}

+ 8 - 0
src/api/tirePartsMall/purchasingManagement/warehouseEntryOrder.js

@@ -81,4 +81,12 @@ export const dotListAll = (data) => {
     method: 'GET',
     params: data
   })
+}
+//商品类别列表查询
+export const getGoodsInfo = (query) => {
+  return request({
+    url: ' /api/blade-purchase-sales/orderitems/orderItemsList',
+    method: 'get',
+    params: query
+  })
 }

+ 8 - 0
src/api/tirePartsMall/salesManagement/outboundWorkOrder.js

@@ -55,3 +55,11 @@ export const revokeOutboundCompleted = (data) => {
     data: data
   })
 }
+//商品类别列表查询
+export const getGoodsInfo = (query) => {
+  return request({
+    url: ' /api/blade-purchase-sales/orderitems/orderItemsList',
+    method: 'get',
+    params: query
+  })
+}

+ 8 - 0
src/api/tirePartsMall/salesManagement/saleOrder.js

@@ -125,4 +125,12 @@ export const revokeInboundTask = (data) => {
     method: 'post',
     data: data
   })
+}
+//商品类别列表查询
+export const getGoodsInfo = (query) => {
+  return request({
+    url: ' /api/blade-purchase-sales/orderitems/orderItemsList',
+    method: 'get',
+    params: query
+  })
 }

+ 7 - 0
src/views/approveData/configuration/mainList.json

@@ -148,6 +148,13 @@
       "index": 11
     },
     {
+      "label": "毛利",
+      "prop": "grossProfit",
+      "overHidden": true,
+      "width": 100,
+      "index": 11
+    },
+    {
       "label": "订单备注",
       "prop": "orderRemark",
       "overHidden": true,

+ 2 - 0
src/views/exportTrade/invoice/config/mainList.json

@@ -12,6 +12,8 @@
   "searchLabelWidth": "90",
   "showSummary": true,
   "searchIcon": true,
+  "expand": true,
+  "expandWidth": 38,
   "searchIndex": 2,
   "selection": true,
   "tip":false,

+ 91 - 2
src/views/exportTrade/invoice/index.vue

@@ -20,8 +20,18 @@
         :summary-method="summaryMethod"
         :cell-style="cellStyle"
         @selection-change="selectionChange"
+        @expand-change="expandChange"
         @search-criteria-switch="searchCriteriaSwitch"
       >
+      <template slot-scope="{ row }" slot="expand">
+          <avue-crud
+            :data="row.itemData"
+            :option="itemOption"
+            :table-loading="row.itemLoading"
+            :cell-style="cellStyle"
+            class="itemTable"
+          ></avue-crud>
+        </template>
         <template slot-scope="{ row }" slot="salesCompany">
           <span>{{ row.salesCompanyName }}</span>
         </template>
@@ -113,7 +123,7 @@
 
 <script>
 import option from "./config/mainList.json";
-import { getList, remove, gainUser } from "@/api/basicData/invoice";
+import { getList, remove, gainUser,getGoodsInfo} from "@/api/basicData/invoice";
 import detailPage from "./detailsPage.vue";
 import { micrometerFormat, IntegerFormat } from "@/util/validate";
 import { defaultDate } from "@/util/date";
@@ -133,6 +143,62 @@ export default {
       search: {
         businessDate: defaultDate()
       },
+      itemOption: {
+        align: "center",
+        header: false,
+        border: true,
+        menu: false,
+        column: [
+          {
+            label: "产品类别",
+            prop: "priceCategory",
+            width: 140,
+            overHidden: true
+          },
+          {
+            label: "产品名称",
+            prop: "cname",
+            width: 240,
+            overHidden: true
+          },
+          {
+            label: "产品描述",
+            prop: "itemDescription",
+            width: 240,
+            overHidden: true
+          },
+          {
+            label: "配件描述",
+            prop: "partsDescribe",
+            width: 240,
+            overHidden: true
+          },
+          {
+            label: "配件价格描述",
+            prop: "partsPriceDescribe",
+            width: 240,
+            overHidden: true
+          },
+          {
+            label: "数量",
+            prop: "orderQuantity",
+            width: 100,
+            overHidden: true
+          },
+          {
+            label: "单价",
+            prop: "price",
+            width: 100,
+            overHidden: true
+          },
+          {
+            label: "金额",
+            prop: "amount",
+            width: 100,
+            overHidden: true
+          }
+        ]
+      },
       form: {},
       option: {},
       parentId: 0,
@@ -270,8 +336,16 @@ export default {
         delete params.businessDate;
       }
       this.loading = true;
+      this.dataList.forEach(item => {
+      this.$refs.crud.toggleRowExpansion(item, false);
+      });
       getList(page.currentPage, page.pageSize, params)
         .then(res => {
+          if (res.data.data.records) {
+            res.data.data.records.forEach(e => {
+              e.itemLoading = true;
+            });
+          }
           this.dataList = res.data.data.records ? res.data.data.records : [];
           this.page.total = res.data.data.total;
         })
@@ -287,13 +361,13 @@ export default {
       this.$store.commit("OUT_IN__DETAIL");
     },
     goBack() {
-      this.detailData = this.$options.data().detailData;
       if (this.$route.query.pageType == "Generate") {
         this.$router.$avueRouter.closeTag();
         this.$router.push({
           path: "/exportTrade/invoice/index"
         });
       }
+      this.detailData = this.$options.data().detailData;
       this.show = true;
       this.$store.commit("OUT_OUT_DETAIL");
       this.onLoad(this.page, this.search);
@@ -333,6 +407,17 @@ export default {
       }
       return sums;
     },
+    expandChange(row) {
+      if (!row.itemData) {
+        getGoodsInfo({ id: row.id, tradeType: "CK" })
+          .then(res => {
+            this.dataList[row.$index].itemData = res.data.data;
+          })
+          .finally(() => {
+            this.dataList[row.$index].itemLoading = false;
+          });
+      }
+    },
     async saveColumn() {
       const inSave = await this.saveColumnData(
         this.getColumnName(8),
@@ -374,4 +459,8 @@ export default {
 .page-crad ::v-deep .basic-container__card {
   height: 94.2vh;
 }
+.itemTable ::v-deep .el-table {
+  margin-left: 50px;
+  width: 100%;
+}
 </style>

+ 2 - 0
src/views/exportTrade/purchaseContract/config/mainList.json

@@ -12,6 +12,8 @@
   "searchLabelWidth": "90",
   "searchIcon": true,
   "searchIndex": 2,
+  "expand": true,
+  "expandWidth": 38,
   "selection": true,
   "tip": false,
   "column": [{

Datei-Diff unterdrückt, da er zu groß ist
+ 317 - 489
src/views/exportTrade/purchaseContract/detailsPage.vue


+ 197 - 206
src/views/exportTrade/purchaseContract/index.vue

@@ -1,51 +1,26 @@
 <template>
     <div>
         <basic-container v-show="show" class="page-crad">
-            <avue-crud
-                    ref="crud"
-                    :option="option"
-                    :data="dataList"
-                    v-model="form"
-                    :page.sync="page"
-                    :search.sync="search"
-                    @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"
-                    @selection-change="selectionChange"
-                    @search-criteria-switch="searchCriteriaSwitch"
-            >
+            <avue-crud ref="crud" :option="option" :data="dataList" v-model="form" :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" @selection-change="selectionChange"
+                @expand-change="expandChange" @search-criteria-switch="searchCriteriaSwitch">
+                <template slot-scope="{ row }" slot="expand">
+                    <avue-crud :data="row.itemData" :option="itemOption" :table-loading="row.itemLoading"
+                        :cell-style="cellStyle" class="itemTable"></avue-crud>
+                </template>
                 <template slot="createTimeSearch">
-                    <el-date-picker
-                            v-model="search.createTime"
-                            type="daterange"
-                            start-placeholder="开始日期"
-                            end-placeholder="结束日期"
-                            format="yyyy-MM-dd"
-                            value-format="yyyy-MM-dd HH:mm:ss"
-                            :default-time="['00:00:00', '23:59:59']"
-                    >
+                    <el-date-picker v-model="search.createTime" type="daterange" start-placeholder="开始日期"
+                        end-placeholder="结束日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss"
+                        :default-time="['00:00:00', '23:59:59']">
                     </el-date-picker>
                 </template>
                 <template slot="menuLeft">
-                    <el-button
-                            type="primary"
-                            icon="el-icon-plus"
-                            size="small"
-                            @click.stop="newAdd('new')"
-                    >创建单据
+                    <el-button type="primary" icon="el-icon-plus" size="small" @click.stop="newAdd('new')">创建单据
                     </el-button>
-                    <el-button
-                            type="success"
-                            size="small"
-                            @click.stop="copyDoc()"
-                            :disabled="selectionList.length != 1"
-                    >复制单据
+                    <el-button type="success" size="small" @click.stop="copyDoc()"
+                        :disabled="selectionList.length != 1">复制单据
                     </el-button>
                     <el-button type="info" size="small" disabled>报表打印</el-button>
                     <el-button type="warning" size="small" @click="dialogVisible = true;">采购任务</el-button>
@@ -54,68 +29,47 @@
                     <crop-select v-model="search.corpId" corpType="KH"></crop-select>
                 </template>
                 <template slot="businesDateSearch">
-                    <el-date-picker
-                            v-model="search.businesDate"
-                            type="daterange"
-                            start-placeholder="开始日期"
-                            end-placeholder="结束日期"
-                            format="yyyy-MM-dd"
-                            value-format="yyyy-MM-dd HH:mm:ss"
-                            :default-time="['00:00:00', '23:59:59']">
+                    <el-date-picker v-model="search.businesDate" type="daterange" start-placeholder="开始日期"
+                        end-placeholder="结束日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss"
+                        :default-time="['00:00:00', '23:59:59']">
                     </el-date-picker>
                 </template>
                 <template slot="plannedDeliveryDateSearch">
-                    <el-date-picker
-                            v-model="search.plannedDeliveryDate"
-                            type="daterange"
-                            start-placeholder="开始日期"
-                            end-placeholder="结束日期"
-                            format="yyyy-MM-dd"
-                            value-format="yyyy-MM-dd HH:mm:ss"
-                            :default-time="['00:00:00', '23:59:59']"
-                    >
+                    <el-date-picker v-model="search.plannedDeliveryDate" type="daterange" start-placeholder="开始日期"
+                        end-placeholder="结束日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss"
+                        :default-time="['00:00:00', '23:59:59']">
                     </el-date-picker>
                 </template>
                 <template slot="requiredDeliveryDateSearch">
-                    <el-date-picker
-                            v-model="search.requiredDeliveryDate"
-                            type="daterange"
-                            start-placeholder="开始日期"
-                            end-placeholder="结束日期"
-                            format="yyyy-MM-dd"
-                            value-format="yyyy-MM-dd HH:mm:ss"
-                            :default-time="['00:00:00', '23:59:59']"
-                    >
+                    <el-date-picker v-model="search.requiredDeliveryDate" type="daterange" start-placeholder="开始日期"
+                        end-placeholder="结束日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss"
+                        :default-time="['00:00:00', '23:59:59']">
                     </el-date-picker>
                 </template>
                 <template slot-scope="scope" slot="corpId">
-          <span
-                  style="color: #409EFF;cursor: pointer"
-                  @click.stop="editOpen(scope.row, 1)"
-          >{{ scope.row.strCorpName }}
-          </span>
+                    <span style="color: #409EFF;cursor: pointer" @click.stop="editOpen(scope.row, 1)">{{
+                        scope.row.strCorpName }}
+                    </span>
                 </template>
                 <template slot-scope="scope" slot="orderNo">
-          <span
-                  style="color: #409EFF;cursor: pointer"
-                  @click.stop="editOpen(scope.row, 1)"
-          >{{ scope.row.orderNo }}
-          </span>
+                    <span style="color: #409EFF;cursor: pointer" @click.stop="editOpen(scope.row, 1)">{{ scope.row.orderNo
+                    }}
+                    </span>
                 </template>
                 <template slot-scope="scope" slot="fudaPurchaseStatus">
-          <span class="el-button--text">
-            {{ scope.row.fudaPurchaseStatus }}
-          </span>
+                    <span class="el-button--text">
+                        {{ scope.row.fudaPurchaseStatus }}
+                    </span>
                 </template>
                 <template slot-scope="scope" slot="fudaPurchaseDate">
-          <span class="el-button--text">
-            {{ scope.row.fudaPurchaseDate }}
-          </span>
+                    <span class="el-button--text">
+                        {{ scope.row.fudaPurchaseDate }}
+                    </span>
                 </template>
                 <template slot-scope="scope" slot="productionScheduling">
-          <span class="el-button--text">
-            {{ scope.row.productionScheduling }}
-          </span>
+                    <span class="el-button--text">
+                        {{ scope.row.productionScheduling }}
+                    </span>
                 </template>
                 <template slot-scope="scope" slot="createUser">
                     {{ scope.row.createUserName }}
@@ -124,121 +78,75 @@
                     <span>{{ row.orderQuantity | IntegerFormat }}</span>
                 </template>
                 <template slot-scope="scope" slot="menu">
-                    <el-button
-                            type="text"
-                            icon="el-icon-delete"
-                            size="small"
-                            @click.stop="rowDel(scope.row, scope.index)"
-                    >删除
+                    <el-button type="text" icon="el-icon-delete" size="small"
+                        @click.stop="rowDel(scope.row, scope.index)">删除
                     </el-button>
                 </template>
             </avue-crud>
         </basic-container>
-        <detail-page
-                @goBack="goBack"
-                @copyOrder="copyOrder"
-                :detailData="detailData"
-                v-if="!show"
-        ></detail-page>
-        <el-dialog
-                title="导入采购任务"
-                v-if="dialogVisible"
-                :visible.sync="dialogVisible"
-                append-to-body
-                :close-on-click-modal="false"
-                :close-on-press-escape="false"
-                :before-close="function() {
-          dialogVisible = false;params={}
-        }"
-                top="1vh"
-                width="90%">
-      <span>
-        <el-row>
-          <el-col :span="6" style="padding: 0 10px">
-            <el-scrollbar>
-<!--                <avue-tree :option="treeOption" :key="avueTree" :data="treeData" @node-click="nodeClick"/>-->
-                <!--                {{ treeData }}-->
-                <el-table
-                        style="width: 100%"
-                        border
-                        size="mini"
-                        ref="singleTable"
-                        highlight-current-row
-                        @current-change="handleCurrentChange"
-                        :data="treeData">
-                      <el-table-column
-                              prop="orderNo"
-                              show-overflow-tooltip
-                              align="center"
-                              label="销售单号">
-                      </el-table-column>
-                      <el-table-column
-                              prop="plannedDeliveryDate"
-                              show-overflow-tooltip
-                              width="105"
-                              align="center"
-                              label="交货日期">
-                          <template slot-scope="{row}">
-                              {{ row.plannedDeliveryDate ? row.plannedDeliveryDate.slice(0, 10) : '' }}
-                          </template>
-                      </el-table-column>
-                </el-table>
-            </el-scrollbar>
-          </el-col>
-          <el-col :span="18">
-<!--            :page.sync="dialogPage"-->
-            <avue-crud
-                    :data="dialogData"
-                    :option="dialogOption"
-                    :search.sync="params"
-                    ref="dialogCrud"
-                    @resetColumn="resetColumnTwo('dialogCrud','dialogOption','dialogOptionList',2.1)"
-                    @saveColumn="saveColumnTwo('dialogCrud','dialogOption','dialogOptionList',2.1)"
-                    @refresh-change="refreshChangeTwo"
-                    @search-change="searchChangeTwo"
-                    @search-reset="searchReset"
-                    @on-load="dialogOnLoad">
-          <template slot="menuLeft">
-                <el-tabs v-model="activeName" @tab-click="tabHandle">
-                  <el-tab-pane label="查询结果" name="searchList"/>
-                  <el-tab-pane label="已选定数据" name="importStaging"/>
-                </el-tabs>
-              </template>
-          <template slot="corpNameSearch">
-            <crop-select v-model="params.corpId" corpType="GYS"/>
-          </template>
-          <template slot="orderQuantity" slot-scope="scope">
-              <el-input-number v-if="activeName === 'importStaging'" v-model="scope.row.orderQuantity" :precision="2" :min="0.01" :controls="false"></el-input-number>
-              <span v-else>{{scope.row.orderQuantity}}</span>
-          </template>
-          <template slot-scope="scope" slot="menu">
-            <el-button
-                    type="text"
-                    icon="el-icon-edit"
-                    size="small"
-                    @click.stop="importStagList(scope.row, scope.index)"
-                    v-if="activeName == 'searchList'"
-                    :disabled=" goodsListSave.findIndex(item => item.id == scope.row.id) !== -1 "
-            >选择
-            </el-button>
-            <el-button
-                    type="text"
-                    icon="el-icon-delete"
-                    size="small"
-                    @click.stop="removeStagList(scope.row, scope.index)"
-                    v-else
-            >移除
-            </el-button>
-          </template>
-        </avue-crud>
-          </el-col>
-        </el-row>
-      </span>
+        <detail-page @goBack="goBack" @copyOrder="copyOrder" :detailData="detailData" v-if="!show"></detail-page>
+        <el-dialog title="导入采购任务" v-if="dialogVisible" :visible.sync="dialogVisible" append-to-body
+            :close-on-click-modal="false" :close-on-press-escape="false" :before-close="function () {
+                dialogVisible = false; params = {}
+            }" top="1vh" width="90%">
+            <span>
+                <el-row>
+                    <el-col :span="6" style="padding: 0 10px">
+                        <el-scrollbar>
+                            <!--                <avue-tree :option="treeOption" :key="avueTree" :data="treeData" @node-click="nodeClick"/>-->
+                            <!--                {{ treeData }}-->
+                            <el-table style="width: 100%" border size="mini" ref="singleTable" highlight-current-row
+                                @current-change="handleCurrentChange" :data="treeData">
+                                <el-table-column prop="orderNo" show-overflow-tooltip align="center" label="销售单号">
+                                </el-table-column>
+                                <el-table-column prop="plannedDeliveryDate" show-overflow-tooltip width="105" align="center"
+                                    label="交货日期">
+                                    <template slot-scope="{row}">
+                                        {{ row.plannedDeliveryDate ? row.plannedDeliveryDate.slice(0, 10) : '' }}
+                                    </template>
+                                </el-table-column>
+                            </el-table>
+                        </el-scrollbar>
+                    </el-col>
+                    <el-col :span="18">
+                        <!--            :page.sync="dialogPage"-->
+                        <avue-crud :data="dialogData" :option="dialogOption" :search.sync="params" ref="dialogCrud"
+                            @resetColumn="resetColumnTwo('dialogCrud', 'dialogOption', 'dialogOptionList', 2.1)"
+                            @saveColumn="saveColumnTwo('dialogCrud', 'dialogOption', 'dialogOptionList', 2.1)"
+                            @refresh-change="refreshChangeTwo" @search-change="searchChangeTwo" @search-reset="searchReset"
+                            @on-load="dialogOnLoad">
+                            <template slot="menuLeft">
+                                <el-tabs v-model="activeName" @tab-click="tabHandle">
+                                    <el-tab-pane label="查询结果" name="searchList" />
+                                    <el-tab-pane label="已选定数据" name="importStaging" />
+                                </el-tabs>
+                            </template>
+                            <template slot="corpNameSearch">
+                                <crop-select v-model="params.corpId" corpType="GYS" />
+                            </template>
+                            <template slot="orderQuantity" slot-scope="scope">
+                                <el-input-number v-if="activeName === 'importStaging'" v-model="scope.row.orderQuantity"
+                                    :precision="2" :min="0.01" :controls="false"></el-input-number>
+                                <span v-else>{{ scope.row.orderQuantity }}</span>
+                            </template>
+                            <template slot-scope="scope" slot="menu">
+                                <el-button type="text" icon="el-icon-edit" size="small"
+                                    @click.stop="importStagList(scope.row, scope.index)" v-if="activeName == 'searchList'"
+                                    :disabled="goodsListSave.findIndex(item => item.id == scope.row.id) !== -1">选择
+                                </el-button>
+                                <el-button type="text" icon="el-icon-delete" size="small"
+                                    @click.stop="removeStagList(scope.row, scope.index)" v-else>移除
+                                </el-button>
+                            </template>
+                        </avue-crud>
+                    </el-col>
+                </el-row>
+            </span>
             <span slot="footer" class="dialog-footer">
-          <el-button type="warning" @click="outExport">导出</el-button>
-        <el-button @click="dialogVisible = false;params={}">取 消</el-button>
-        <el-button type="primary" :disabled="goodsListSave.length === 0" @click="confirmImport">导 入</el-button>
-      </span>
+                <el-button type="warning" @click="outExport">导出</el-button>
+                <el-button @click="dialogVisible = false; params = {}">取 消</el-button>
+                <el-button type="primary" :disabled="goodsListSave.length === 0" @click="confirmImport">导 入</el-button>
+            </span>
         </el-dialog>
     </div>
 </template>
@@ -251,13 +159,14 @@ import {
     gainUser,
     listXS,
     generatePurchaseBill,
-    listBYStatus
+    listBYStatus,
+    getGoodsInfo
 } from "@/api/exportTrade/purchaseContract";
 import detailPage from "./detailsPage.vue";
-import {defaultDate} from "@/util/date";
-import {IntegerFormat} from "@/util/validate";
-import {customerParameter} from "@/enums/management-type";
-import {getToken} from "@/util/auth";
+import { defaultDate } from "@/util/date";
+import { IntegerFormat } from "@/util/validate";
+import { customerParameter } from "@/enums/management-type";
+import { getToken } from "@/util/auth";
 
 export default {
     name: "customerInformation",
@@ -325,7 +234,7 @@ export default {
                     prop: "billNo",
                     search: true,
                     searchSpan: 8,
-                    searchOrder:1,
+                    searchOrder: 1,
                     overHidden: true
                 }, {
                     label: "销售日期",
@@ -406,10 +315,10 @@ export default {
                     label: "显示全部",
                     prop: "showAll",
                     searchSpan: 8,
-                    searchOrder:2,
+                    searchOrder: 2,
                     overHidden: true,
                     type: "select",
-                    clearable:false,
+                    clearable: false,
                     search: true,
                     hide: true,
                     showColumn: false,
@@ -424,6 +333,62 @@ export default {
                 }]
             },
             dialogVisible: false,
+            itemOption: {
+                align: "center",
+                header: false,
+                border: true,
+                menu: false,
+                column: [
+                    {
+                        label: "产品类别",
+                        prop: "priceCategory",
+                        width: 140,
+                        overHidden: true
+                    },
+                    {
+                        label: "产品名称",
+                        prop: "cname",
+                        width: 240,
+                        overHidden: true
+                    },
+                    {
+                        label: "产品描述",
+                        prop: "itemDescription",
+                        width: 240,
+                        overHidden: true
+                    },
+                    {
+                        label: "配件描述",
+                        prop: "partsDescribe",
+                        width: 240,
+                        overHidden: true
+                    },
+                    {
+                        label: "配件价格描述",
+                        prop: "partsPriceDescribe",
+                        width: 240,
+                        overHidden: true
+                    },
+                    {
+                        label: "数量",
+                        prop: "orderQuantity",
+                        width: 100,
+                        overHidden: true
+                    },
+                    {
+                        label: "单价",
+                        prop: "price",
+                        width: 100,
+                        overHidden: true
+                    },
+                    {
+                        label: "金额",
+                        prop: "amount",
+                        width: 100,
+                        overHidden: true
+                    }
+                ]
+            },
             form: {},
             option: {},
             parentId: 0,
@@ -441,7 +406,7 @@ export default {
             selectionList: []
         };
     },
-    components: {detailPage},
+    components: { detailPage },
     async created() {
         this.option = await this.getColumnData(this.getColumnName(2), option);
         this.dialogOption = await this.getColumnData(this.getColumnName(2.1), this.dialogOptionList);
@@ -470,7 +435,7 @@ export default {
     },
     methods: {
         outExport() {
-            let config = {params: {...this.params}}
+            let config = { params: { ...this.params } }
             if (config.params) {
                 for (const propName of Object.keys(config.params)) {
                     const value = config.params[propName];
@@ -533,6 +498,18 @@ export default {
         selectionChange(list) {
             this.selectionList = list;
         },
+        //行展开数据
+        expandChange(row) {
+            if (!row.itemData) {
+                getGoodsInfo({ id: row.id, tradeType: "CK" })
+                    .then(res => {
+                        this.dataList[row.$index].itemData = res.data.data;
+                    })
+                    .finally(() => {
+                        this.dataList[row.$index].itemLoading = false;
+                    });
+            }
+        },
         copyDoc() {
             this.selectionList.forEach(e => {
                 this.detailData = {
@@ -628,7 +605,7 @@ export default {
                 this.$refs[ref].$refs.dialogColumn.columnBox = false;
             }
         },
-//自定义列重置
+        //自定义列重置
         async resetColumnTwo(ref, option, optionBack, code) {
             this[option] = this[optionBack];
             const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
@@ -648,6 +625,7 @@ export default {
                 background: 'rgba(255,255,255,0.7)'
             });
             generatePurchaseBill(this.goodsListSave).then(res => {
+                console.log(res.data.data);
                 this.$message.success("导入成功")
                 this.detailData = {
                     form: res.data.data
@@ -697,8 +675,16 @@ export default {
                 delete params.requiredDeliveryDate
             }
             this.loading = true;
+            this.dataList.forEach(item => {
+            this.$refs.crud.toggleRowExpansion(item, false);
+            });
             getList(page.currentPage, page.pageSize, params)
                 .then(res => {
+                    if (res.data.data.records) {
+                        res.data.data.records.forEach(e => {
+                            e.itemLoading = true;
+                        });
+                    }
                     this.dataList = res.data.data.records ? res.data.data.records : [];
                     this.page.total = res.data.data.total;
                 })
@@ -776,4 +762,9 @@ export default {
 .page-crad ::v-deep .basic-container__card {
     height: 94.2vh;
 }
+
+.itemTable ::v-deep .el-table {
+    margin-left: 50px;
+    width: 100%;
+}
 </style>

+ 2 - 2
src/views/tirePartsMall/inventory/index.vue

@@ -195,10 +195,10 @@ export default {
             width: 100,
             dicData: [{
               "label": "是",
-              "value": 0
+              "value": 1
             }, {
               "label": "否",
-              "value": 1
+              "value": 0
             }]
           }]
       }

+ 119 - 9
src/views/tirePartsMall/purchasingManagement/warehouseEntryOrder/index.vue

@@ -3,16 +3,21 @@
     <basic-container v-show="!detailsOpen">
       <avue-crud :option="option" :search.sync="search" v-model="form" :table-loading="loading" :data="dataList"
         ref="crud" :key="key" @on-load="onLoad" @search-change="searchChange" @row-del="rowDel"
-        @refresh-change="refreshChange" @resetColumn="resetColumnTwo('crud', 'option', 'optionList', 270)"
+        @refresh-change="refreshChange" @expand-change="expandChange"
+        @resetColumn="resetColumnTwo('crud', 'option', 'optionList', 270)"
         @saveColumn="saveColumnTwo('crud', 'option', 'optionList', 270)" :page.sync="page">
+        <template slot-scope="{ row }" slot="expand">
+          <avue-crud :data="row.itemData" :option="itemOption" :table-loading="row.itemLoading" :cell-style="cellStyle"
+            class="itemTable"></avue-crud>
+        </template>
         <template slot-scope="{type,size,row,index}" slot="menu">
           <!-- <el-button :size="size" :type="type" @click="check(row)">查看</el-button> -->
           <el-button :size="size" :type="type" :disabled="row.item >= 1"
             @click="$refs.crud.rowDel(row, index)">删除</el-button>
         </template>
         <!-- <template slot-scope="{type,size,row,$index}" slot="menuLeft"> -->
-          <!-- <el-button icon="el-icon-plus" type="primary" :size="size" @click="detailsOpen = true">新采购单</el-button> -->
-          <!--<el-button type="warning" icon="el-icon-download" size="small" @click="outExport">导出</el-button>-->
+        <!-- <el-button icon="el-icon-plus" type="primary" :size="size" @click="detailsOpen = true">新采购单</el-button> -->
+        <!--<el-button type="warning" icon="el-icon-download" size="small" @click="outExport">导出</el-button>-->
         <!-- </template> -->
         <template slot-scope="{row,index}" slot="stockClerkName">
           <el-select placeholder="请选择" v-if="row.$cellEdit" v-model="row.stockClerkName" size="small" filterable
@@ -35,16 +40,16 @@
         </template>
       </avue-crud>
     </basic-container>
-    <detailsPage v-if="detailsOpen" :onLoad="form"  :detailData="detailData" @backToList="backToList"></detailsPage>
+    <detailsPage v-if="detailsOpen" :onLoad="form" :detailData="detailData" @backToList="backToList"></detailsPage>
   </div>
 </template>
 
 <script>
 import { customerListAll } from "@/api/tirePartsMall/basicData/warehouse"
-import { getList, remove, getWarehouseKeeper } from "@/api/tirePartsMall/purchasingManagement/warehouseEntryOrder";
+import { getList, remove, getWarehouseKeeper, getGoodsInfo } from "@/api/tirePartsMall/purchasingManagement/warehouseEntryOrder";
 import detailsPage from "./detailsPage.vue"
 import { dateFormat } from '@/util/date'
-
+import {getDetails} from "@/api/tirePartsMall/purchasingManagement/warehouseEntryOrder";
 export default {
   name: "index",
   components: {
@@ -68,6 +73,90 @@ export default {
         pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
       },
       key: 0,
+      itemOption: {
+        align: "center",
+        header: false,
+        border: true,
+        menu: false,
+        column: [
+          {
+            label: '轮胎名称',
+            prop: 'goodsId',
+            width: 200,
+            overHidden: true,
+            disabled: false,
+            filterable: true,
+            type: 'select',
+            props: {
+              label: 'cname',
+              value: 'id'
+            },
+            dicUrl: '/api/blade-sales-part/goodsDesc/goodsListAll'
+          },
+          {
+            label: "实际数量",
+            prop: "sendNum",
+            disabled: false,
+            overHidden: true,
+            rules: [{
+              required: true,
+              message: " ",
+              trigger: "blur"
+            }]
+          }, {
+            label: "批次号",
+            prop: "dot",
+            type: "select",
+            disabled: false,
+            allowCreate: true,
+            filterable: true,
+            dicData: [],
+            props: {
+              label: "dot",
+              value: "dot"
+            },
+            overHidden: true
+          }, {
+            label: '物料编码',
+            prop: 'goodsNo',
+            overHidden: true,
+            disabled: false,
+            width: 140
+          }, {
+            label: "品牌",
+            prop: 'brandId',
+            width: 100,
+            overHidden: true,
+            disabled: false,
+            type: 'select',
+            props: {
+              label: 'cname',
+              value: 'id'
+            },
+            dicUrl: '/api/blade-sales-part/brandDesc/listAll'
+          }, {
+            label: "规格型号",
+            prop: "propertyName",
+            overHidden: true,
+            disabled: false,
+          }, {
+            label: "花纹",
+            prop: "pattern",
+            disabled: false,
+            overHidden: true
+          }, {
+            label: "入库数量",
+            prop: "goodsNum",
+            disabled: true,
+            ovrHidden: true,
+          }, {
+            label: "轮胎描述",
+            prop: "goodsDescription",
+            disabled: false,
+            overHidden: true
+          },
+        ]
+      },
       option: {},
       optionList: {
         viewBtn: false,
@@ -86,6 +175,8 @@ export default {
         searchIcon: true,
         searchIndex: 2,
         highlightCurrentRow: true,
+        expand: true,
+        expandWidth: 38,
         dialogWidth: "70%",
         summaryText: "合计",
         showSummary: true,
@@ -167,7 +258,7 @@ export default {
           }, {
             label: "已入库",
             value: 1
-          },{
+          }, {
             label: "已撤销",
             value: 1
           }],
@@ -182,9 +273,9 @@ export default {
           width: 100,
           searchRange: true,
           searchDefaultTime: ["00:00:00", "23:59:59"],
-          format: "yyyy-MM-dd HH:mm:ss",
+          format: "yyyy-MM-dd",
           valueFormat: "yyyy-MM-dd HH:mm:ss"
-        },{
+        }, {
           label: "库管",
           prop: "stockClerkName",
           search: true,
@@ -339,7 +430,15 @@ export default {
       delete params.storageName;
       // delete this.search.storageName
       this.loading = true
+      this.dataList.forEach(item => {
+        this.$refs.crud.toggleRowExpansion(item, false);
+      });
       getList(params).then(res => {
+        if (res.data.data.records) {
+          res.data.data.records.forEach(e => {
+            e.itemLoading = true;
+          });
+        }
         this.dataList = res.data.data.records
         this.page.total = res.data.data.total
         this.loading = false
@@ -355,6 +454,17 @@ export default {
       };
       this.detailsOpen = true;
     },
+    expandChange(row) {
+      if (!row.itemData) {
+        getDetails({ id: row.id})
+          .then(res => {
+            this.dataList[row.$index].itemData = res.data.data.shipItemsList;
+          })
+          .finally(() => {
+            this.dataList[row.$index].itemLoading = false;
+          });
+      }
+    },
     //自定义列保存
     async saveColumnTwo(ref, option, optionBack, code) {
       /**

+ 2 - 2
src/views/tirePartsMall/salesManagement/outboundWorkOrder/detailsPage.vue

@@ -516,8 +516,8 @@ export default {
         }
         this.isAddDisabled = true
         if(res.data.data.statusName == '待出库'){
-              this.isAddDisabled = false
-              this.isDisabled = false
+              this.isAddDisabled = true
+              this.isDisabled = true
           }
         this.form = res.data.data
         loading.close();

+ 90 - 1
src/views/tirePartsMall/salesManagement/outboundWorkOrder/index.vue

@@ -12,10 +12,15 @@
           @on-load="onLoad"
           @search-change="searchChange"
           @row-del="rowDel"
+          @expand-change="expandChange"
           @refresh-change="refreshChange"
           @resetColumn="resetColumnTwo('crud','option','optionList',270)"
           @saveColumn="saveColumnTwo('crud','option','optionList',270)"
           :page.sync="page">
+          <template slot-scope="{ row }" slot="expand">
+          <avue-crud :data="row.itemData" :option="itemOption" :table-loading="row.itemLoading" :cell-style="cellStyle"
+            class="itemTable"></avue-crud>
+        </template>
         <template slot-scope="{type,size,row,index}" slot="menu">
           <!-- <el-button  :size="size" :type="type" @click="check(row)">查看</el-button> -->
           <el-button  :size="size" :disabled="row.status !== '待出库' && row.item >= 1" :type="type" @click="$refs.crud.rowDel(row,index)">删除</el-button>
@@ -42,8 +47,9 @@
 </template>
 
 <script>
-import {getList, remove} from "@/api/tirePartsMall/salesManagement/outboundWorkOrder";
+import {getList, remove,getGoodsInfo} from "@/api/tirePartsMall/salesManagement/outboundWorkOrder";
 import detailsPage from "./detailsPage"
+import { getDetails} from "@/api/tirePartsMall/salesManagement/outboundWorkOrder";
 
 export default {
   name: "index",
@@ -65,6 +71,67 @@ export default {
         pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
       },
       key: 0,
+      itemOption: {
+        align: "center",
+        header: false,
+        border: true,
+        menu: false,
+        column: [
+        {
+          label: '轮胎名称',
+          prop: 'goodsId',
+          disabled: true,
+          width: 200,
+          overHidden: true,
+          props: {
+            label: 'cname',
+            value: 'id'
+          },
+          dicUrl: '/api/blade-sales-part/goodsDesc/goodsListAll'
+        },{
+          label: '轮胎编码',
+          disabled: true,
+          prop: 'goodsNo',
+          width: 100
+        },  {
+          label: '品牌',
+          prop: 'brandId',
+          disabled: true,
+          width: 100,
+          overHidden: true,
+          props: {
+            label: 'cname',
+            value: 'id'
+          },
+          dicUrl: '/api/blade-sales-part/brandDesc/listAll'
+        }, {
+          label: '规格型号',
+          prop: 'propertyName',
+          disabled: true,
+          width: 100
+        }, {
+          label: '花纹',
+          prop: 'pattern',
+          disabled: true,
+          width: 100
+        }, {
+          label: '轮胎描述',
+          prop: 'goodsDescription',
+          disabled: true,
+        }, {
+          label: '批次号',
+          prop: 'dot',
+          type: 'select',
+          disabled: true,
+          dicData: [],
+          props: {
+            label: "dot",
+            value: "dot"
+          },
+          dicUrl: "/api/blade-sales-part/stockDesc/dotList",
+        }
+        ]
+      },
       option: {},
       optionList: {
         viewBtn: false,
@@ -83,6 +150,8 @@ export default {
         searchIcon: true,
         searchIndex: 2,
         highlightCurrentRow: true,
+        expand: true,
+        expandWidth: 38,
         dialogWidth: "70%",
         summaryText: "合计",
         showSummary: true,
@@ -278,6 +347,7 @@ export default {
       this.onLoad(this.page, params)
     },
     onLoad(page, params = {}) {
+      console.log(params);
       params = {
         ...params,
         current: page.currentPage,
@@ -286,7 +356,15 @@ export default {
         ...Object.assign(params, this.search)
       }
       this.loading = true
+        this.dataList.forEach(item => {
+        this.$refs.crud.toggleRowExpansion(item, false);
+        });
       getList(params).then(res => {
+        if (res.data.data.records) {
+          res.data.data.records.forEach(e => {
+            e.itemLoading = true;
+          });
+        }
         this.dataList = res.data.data.records
         this.page.total = res.data.data.total
         this.loading = false
@@ -302,6 +380,17 @@ export default {
             };
             this.detailsOpen = true;
         },
+      expandChange(row) {
+      if (!row.itemData) {
+        getDetails({ id: row.id})
+          .then(res => {
+            this.dataList[row.$index].itemData = res.data.data.shipItemsList;
+          })
+          .finally(() => {
+            this.dataList[row.$index].itemLoading = false;
+          });
+      }
+    },
     //自定义列保存
     async saveColumnTwo(ref, option, optionBack, code) {
       /**

+ 183 - 20
src/views/tirePartsMall/salesManagement/purchaseOrder/index.vue

@@ -3,11 +3,18 @@
     <basic-container v-show="!detailsOpen">
       <avue-crud :option="option" :search.sync="search" v-model="form" :table-loading="loading" :data="dataList"
         ref="crud" :key="key" @on-load="onLoad" @search-change="searchChange" @row-del="rowDel"
-        @refresh-change="refreshChange" @resetColumn="resetColumnTwo('crud', 'option', 'optionList', 274.4)"
+        @expand-change="expandChange" @refresh-change="refreshChange"
+        @resetColumn="resetColumnTwo('crud', 'option', 'optionList', 274.4)"
         @saveColumn="saveColumnTwo('crud', 'option', 'optionList', 274.4)" :page.sync="page">
+        <template slot-scope="{ row }" slot="expand">
+          <avue-crud :data="row.itemData" :option="itemOption" :table-loading="row.itemLoading" :cell-style="cellStyle"
+            class="itemTable"></avue-crud>
+        </template>
         <template slot-scope="{type,size,row,index}" slot="menu">
           <!-- <el-button :size="size" :type="type" @click="check(row)">查看</el-button> -->
-          <el-button :size="size" :type="type" :disabled="row.status != '录入' && row.status != '待确认' && row.item>=1 || row.businessSource == '外部销售' || row.numberRows>=1" @click="$refs.crud.rowDel(row, index)">删除</el-button>
+          <el-button :size="size" :type="type"
+            :disabled="row.status != '录入' && row.status != '待确认' && row.item >= 1 || row.businessSource == '外部销售' || row.numberRows >= 1"
+            @click="$refs.crud.rowDel(row, index)">删除</el-button>
         </template>
         <template slot="corpNameSearch">
           <crop-select v-model="search.corpId" corpType="KH" :refresh="false"></crop-select>
@@ -32,8 +39,9 @@
 </template>
 
 <script>
-import { getList, remove } from "@/api/tirePartsMall/salesManagement/saleOrder";
+import { getList, remove, getGoodsInfo } from "@/api/tirePartsMall/salesManagement/saleOrder";
 import detailsPage from "./detailsPage"
+import { getDetails } from "@/api/tirePartsMall/salesManagement/saleOrder";
 
 export default {
   name: "index",
@@ -55,6 +63,140 @@ export default {
         pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
       },
       key: 0,
+      itemOption: {
+        align: "center",
+        header: false,
+        border: true,
+        menu: false,
+        column: [
+          {
+            label: '轮胎名称',
+            prop: 'goodsId',
+            width: 200,
+            disabled: false,
+            remote: true,
+            overHidden: true,
+            type: 'select',
+            // dicData: [],
+            props: {
+              label: 'cname',
+              value: 'id'
+            },
+            dicUrl: "/api/blade-sales-part/goodsDesc/goodsListAll?cname={{key}}&enableOrNot=0"
+          }, {
+            label: '数量',
+            prop: 'goodsNum',
+            overHidden: true,
+            disabled: false,
+            width: 100,
+            rules: [{
+              required: true,
+              message: " ",
+              trigger: "blur"
+            }, {
+              validator: (rule, value, callback) => {
+                console.log(this.formContacts.inventory);
+                if (value < 0) {
+                  callback(new Error("数量不能小于0"));
+                } else {
+                  callback();
+                }
+              },
+              trigger: "blur"
+            }]
+          },
+          {
+            label: '价格',
+            prop: 'price',
+            overHidden: true,
+            width: 100,
+            disabled: false,
+            rules: [{
+              required: true,
+              message: " ",
+              trigger: "blur"
+            }, {
+              validator: (rule, value, callback) => {
+                if (value < 0) {
+                  callback(new Error("价格不能小于0"));
+                } else {
+                  callback();
+                }
+              },
+              trigger: "blur"
+            }]
+          },
+          {
+            label: '库存',
+            prop: 'inventory',
+            overHidden: true,
+            hide: true,
+            width: 100
+          }, {
+            label: '批次号',
+            prop: 'dot',
+            type: "select",
+            disabled: true,
+            allowCreate: true,
+            filterable: true,
+            dicData: [],
+            props: {
+              label: "dot",
+              value: "dot"
+            },
+            dicUrl: "/api/blade-sales-part/stockDesc/dotList",
+            overHidden: true,
+          }, {
+            label: '轮胎编码',
+            prop: 'goodsNo',
+            overHidden: true,
+            disabled: false,
+            width: 100
+          },
+          {
+            label: '品牌',
+            prop: 'brandId',
+            disabled: false,
+            width: 100,
+            overHidden: true,
+            type: 'select',
+            props: {
+              label: 'cname',
+              value: 'id'
+            },
+            dicUrl: '/api/blade-sales-part/brandDesc/listAll'
+          },
+          {
+            label: '规格型号',
+            prop: 'propertyName',
+            overHidden: true,
+            disabled: false,
+            width: 100
+          }, {
+            label: '花纹',
+            prop: 'pattern',
+            overHidden: true,
+            disabled: false,
+            width: 100
+          }, {
+            label: '轮胎描述',
+            prop: 'goodsDescription',
+            disabled: false,
+            overHidden: true,
+            width: 100
+          },
+          {
+            label: '收货数量',
+            prop: 'sendNum',
+            disabled: false,
+            overHidden: true,
+            width: 100,
+            disabled: true,
+            editDisplay: false,
+            addDisplay: false
+          }
+        ]
+      },
       option: {},
       optionList: {
         viewBtn: false,
@@ -73,18 +215,20 @@ export default {
         searchIcon: true,
         searchIndex: 2,
         highlightCurrentRow: true,
+        expand: true,
+        expandWidth: 38,
         dialogWidth: "70%",
         summaryText: "合计",
         showSummary: true,
-        sumColumnList: [ {
-              name: 'goodsTotalNum',
-              type: 'sum',
-              decimals:1
-            }, {
-              name: 'totalMoney',
-              type: 'sum',
-              decimals:1
-            },],
+        sumColumnList: [{
+          name: 'goodsTotalNum',
+          type: 'sum',
+          decimals: 1
+        }, {
+          name: 'totalMoney',
+          type: 'sum',
+          decimals: 1
+        },],
         column: [{
           label: '采购单号',
           prop: "ordNo",
@@ -153,12 +297,12 @@ export default {
           search: true,
           overHidden: true,
           type: 'select',
-          dicUrl: "/api/blade-system/dict-biz/dictionary?code=sales_Status",
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=procurement_Status",
           props: {
             label: "dictValue",
             value: "dictKey"
           }
-        }, 
+        },
         // {
         //   label: '应结日期',
         //   prop: "dueDate",
@@ -229,10 +373,10 @@ export default {
         this.$store.commit("IN_LTCG_STATUS");
       }
       this.detailData = {
-          id: this.$route.query.check.billId,
-          check: this.$route.query.check,
-          auditId: this.$route.query.check.id
-        };
+        id: this.$route.query.check.billId,
+        check: this.$route.query.check,
+        auditId: this.$route.query.check.id
+      };
     }, 100);
   },
   async created() {
@@ -274,7 +418,7 @@ export default {
     },
     //刷新
     refreshChange() {
-    this.onLoad(this.page, this.search)
+      this.onLoad(this.page, this.search)
     },
     rowDel(form, index) {
       this.$confirm('此操作将永久删除该行, 是否继续?', '提示', {
@@ -282,7 +426,7 @@ export default {
         cancelButtonText: '取消',
         type: 'warning'
       }).then(() => {
-        remove({id:form.id}).then(res => {
+        remove({ id: form.id }).then(res => {
           this.$message({
             type: 'success',
             message: '删除成功!'
@@ -306,7 +450,15 @@ export default {
         ...Object.assign(params, this.search)
       }
       this.loading = true
+      this.dataList.forEach(item => {
+        this.$refs.crud.toggleRowExpansion(item, false);
+      });
       getList(params).then(res => {
+        if (res.data.data.records) {
+          res.data.data.records.forEach(e => {
+            e.itemLoading = true;
+          });
+        }
         this.dataList = res.data.data.records
         this.page.total = res.data.data.total
         this.loading = false
@@ -314,6 +466,17 @@ export default {
         this.loading = false
       })
     },
+    expandChange(row) {
+      if (!row.itemData) {
+        getDetails({ id: row.id})
+          .then(res => {
+            this.dataList[row.$index].itemData = res.data.data.orderItemsList;
+          })
+          .finally(() => {
+            this.dataList[row.$index].itemLoading = false;
+          });
+      }
+    },
     //自定义列保存
     async saveColumnTwo(ref, option, optionBack, code) {
       /**

+ 10 - 6
src/views/tirePartsMall/salesManagement/saleOrder/detailsPage.vue

@@ -224,7 +224,8 @@ export default {
                         }
                         if (this.$refs.form.DIC.customerId || !this.onLoad.id) {
                             getCustom({ id: data.value }).then(res => {
-                                this.dicUrlWithCustomId = res.data.data.id ? res.data.data.id : ''
+                                if(res.data.data){
+                                    this.dicUrlWithCustomId = res.data.data.id ? res.data.data.id : ''
                                 // this.form.storageId ? this.form.storageId : res.data.data.deliveryWarehouseId
                                 // this.form.storageId = res.data.data.deliveryWarehouseId
                                 this.form.storageId = this.form.storageId ? this.form.storageId : res.data.data.deliveryWarehouseId
@@ -232,6 +233,7 @@ export default {
                                 this.form.phone = res.data.data.corpsAttnList[0].tel
                                 this.contactsOption = res.data.data.corpsAddrList
                                 this.form.recAddress = res.data.data.corpsAddrList[0].belongtoarea + res.data.data.corpsAddrList[0].detailedAddress
+                                }
                             })
                         }
 
@@ -1112,11 +1114,13 @@ export default {
                 // })
                 // this['optionContacts'] = this['optionContactsBack'];
                 // this.delColumnData(this.getColumnName(269.1), this['optionContactsBack']);
-                this.form.outboundRecordsList.forEach(item=>{
-                    if(item.statusName == '待出库'){
-                        this.isDisabledTask = true
-                    }
-                })
+
+
+                // this.form.outboundRecordsList.forEach(item=>{
+                //     if(item.statusName == '待出库'){
+                //         this.isDisabledTask = true
+                //     }
+                // })
       
                 loading.close()
             }

+ 142 - 18
src/views/tirePartsMall/salesManagement/saleOrder/index.vue

@@ -3,11 +3,18 @@
     <basic-container v-show="!detailsOpen">
       <avue-crud :option="option" :search.sync="search" v-model="form" :table-loading="loading" :data="dataList"
         ref="crud" :key="key" @on-load="onLoad" @search-change="searchChange" @row-del="rowDel"
-        @refresh-change="refreshChange" @resetColumn="resetColumnTwo('crud', 'option', 'optionList', 269)"
+        @expand-change="expandChange" @refresh-change="refreshChange"
+        @resetColumn="resetColumnTwo('crud', 'option', 'optionList', 269)"
         @saveColumn="saveColumnTwo('crud', 'option', 'optionList', 269)" :page.sync="page">
+        <template slot-scope="{ row }" slot="expand">
+          <avue-crud :data="row.itemData" :option="itemOption" :table-loading="row.itemLoading" :cell-style="cellStyle"
+            class="itemTable"></avue-crud>
+        </template>
         <template slot-scope="{type,size,row,index}" slot="menu">
           <!-- <el-button :size="size" :type="type" @click="check(row)">查看</el-button> -->
-          <el-button :size="size" :type="type" :disabled="row.status != '录入' && row.status != '待确认' && row.item>=1 || row.businessSource == '外部销售'" @click="$refs.crud.rowDel(row, index)">删除</el-button>
+          <el-button :size="size" :type="type"
+            :disabled="row.status != '录入' && row.status != '待确认' && row.item >= 1 || row.businessSource == '外部销售'"
+            @click="$refs.crud.rowDel(row, index)">删除</el-button>
         </template>
         <template slot="corpNameSearch">
           <crop-select v-model="search.corpId" corpType="KH" :refresh="false"></crop-select>
@@ -24,16 +31,17 @@
           <span style="color: #409EFF;cursor: pointer" @click.stop="editOpen(row, 3)">{{ row.srcOrdNo }}
           </span>
         </template>
-
       </avue-crud>
     </basic-container>
-    <detailsPage v-if="detailsOpen" @goBack="goBack" :onLoad="form" :detailData="detailData" @backToList="backToList"></detailsPage>
+    <detailsPage v-if="detailsOpen" @goBack="goBack" :onLoad="form" :detailData="detailData" @backToList="backToList">
+    </detailsPage>
   </div>
 </template>
 
 <script>
-import { getList, remove } from "@/api/tirePartsMall/salesManagement/saleOrder";
+import { getList, remove, getGoodsInfo } from "@/api/tirePartsMall/salesManagement/saleOrder";
 import detailsPage from "./detailsPage"
+import { getDetails } from "@/api/tirePartsMall/salesManagement/saleOrder";
 
 export default {
   name: "index",
@@ -55,6 +63,83 @@ export default {
         pageSizes: [10, 20, 30, 40, 50, 100, 200, 300, 400, 500]
       },
       key: 0,
+      itemOption: {
+        align: "center",
+        header: false,
+        border: true,
+        menu: false,
+        column: [
+          {
+            label: '轮胎名称',
+            prop: 'goodsId',
+            width: 200,
+            overHidden: true,
+            dicData: [],
+            props: {
+              label: 'cname',
+              value: 'id'
+            },
+            dicUrl: "/api/blade-sales-part/goodsDesc/goodsListAll"
+          }, {
+            label: '数量',
+            prop: 'goodsNum',
+            overHidden: true,
+            width: 100,
+          },
+          {
+            label: '价格',
+            prop: 'price',
+            overHidden: true,
+            width: 100,
+          },
+          {
+            label: '批次号',
+            prop: 'dot',
+            type: "select",
+            disabled: true,
+            allowCreate: true,
+            filterable: true,
+            width: 150,
+            dicData: [],
+            props: {
+              label: "dot",
+              value: "dot"
+            },
+            dicUrl: "/api/blade-sales-part/stockDesc/dotList",
+            overHidden: true,
+          }, {
+            label: '轮胎编码',
+            prop: 'goodsNo',
+            overHidden: true,
+            width: 150
+          },
+          {
+            label: '品牌',
+            prop: 'brandId',
+            disabled: false,
+            width: 100,
+            overHidden: true,
+            props: {
+              label: 'cname',
+              value: 'id'
+            },
+            dicUrl: '/api/blade-sales-part/brandDesc/listAll'
+          },
+          {
+            label: '花纹',
+            prop: 'pattern',
+            overHidden: true,
+            disabled: false,
+            width: 150
+          },
+          {
+            label: '发货数量',
+            prop: 'sendNum',
+            disabled: false,
+            overHidden: true,
+            width: 100,
+          }]
+      },
       option: {},
       optionList: {
         viewBtn: false,
@@ -71,18 +156,20 @@ export default {
         menuWidth: 50,
         searchSpan: 8,
         searchIcon: true,
+        expand: true,
+        expandWidth: 38,
         searchIndex: 2,
         highlightCurrentRow: true,
         dialogWidth: "70%",
         summaryText: "合计",
         showSummary: true,
-        sumColumnList: [ {
-              name: 'goodsTotalNum',
-              type: 'sum',
-            },{
-              name: 'totalMoney',
-              type: 'sum',
-            },],
+        sumColumnList: [{
+          name: 'goodsTotalNum',
+          type: 'sum',
+        }, {
+          name: 'totalMoney',
+          type: 'sum',
+        },],
         column: [{
           label: '销售单号',
           prop: "ordNo",
@@ -154,6 +241,19 @@ export default {
             label: "dictValue",
             value: "dictKey"
           }
+
+        }, {
+          label: '结算状态',
+          prop: "settlementStatus",
+          search: true,
+          overHidden: true,
+          type: 'select',
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=settlement_Status",
+          props: {
+            label: "dictValue",
+            value: "dictKey"
+          }
+
         }, {
           label: '应结日期',
           prop: "dueDate",
@@ -223,10 +323,10 @@ export default {
         this.$store.commit("IN_LTXS_STATUS");
       }
       this.detailData = {
-          id: this.$route.query.check.billId,
-          check: this.$route.query.check,
-          auditId: this.$route.query.check.id
-        };
+        id: this.$route.query.check.billId,
+        check: this.$route.query.check,
+        auditId: this.$route.query.check.id
+      };
     }, 100);
   },
   async created() {
@@ -271,13 +371,24 @@ export default {
     refreshChange() {
       this.onLoad(this.page, this.search)
     },
+    expandChange(row) {
+      if (!row.itemData) {
+        getDetails({ id: row.id })
+          .then(res => {
+            this.dataList[row.$index].itemData = res.data.data.orderItemsList;
+          })
+          .finally(() => {
+            this.dataList[row.$index].itemLoading = false;
+          });
+      }
+    },
     rowDel(form, index) {
       this.$confirm('此操作将永久删除该行, 是否继续?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
       }).then(() => {
-        remove({id:form.id}).then(res => {
+        remove({ id: form.id }).then(res => {
           this.$message({
             type: 'success',
             message: '删除成功!'
@@ -301,7 +412,15 @@ export default {
         ...Object.assign(params, this.search)
       }
       this.loading = true
+      this.dataList.forEach(item => {
+        this.$refs.crud.toggleRowExpansion(item, false);
+      });
       getList(params).then(res => {
+        if (res.data.data.records) {
+          res.data.data.records.forEach(e => {
+            e.itemLoading = true;
+          });
+        }
         this.dataList = res.data.data.records
         this.page.total = res.data.data.total
         this.loading = false
@@ -336,4 +455,9 @@ export default {
 }
 </script>
 
-<style scoped></style>
+<style scoped>
+.itemTable ::v-deep .el-table {
+  margin-left: 50px;
+  width: 100%;
+}
+</style>

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.