Pārlūkot izejas kodu

码单管理,打印弹窗布局交互搭建

lph 1 gadu atpakaļ
vecāks
revīzija
2581614306

+ 66 - 0
zkqy-ui/src/api/codeListManage/productCodeList.js

@@ -0,0 +1,66 @@
+import request from '@/utils/request'
+
+// 查询产品码单列表
+export function listProductCodeList(query) {
+  return request({
+    url: '/system/productCodeList/list',
+    method: 'get',
+    params: query,
+    baseURL: process.env.VUE_APP_BASE_API1
+  })
+}
+
+// 查询产品码单详细
+export function getProductCodeList(id) {
+  return request({
+    url: '/system/productCodeList/' + id,
+    method: 'get',
+    baseURL: process.env.VUE_APP_BASE_API1
+  })
+}
+
+// 新增产品码单
+export function addProductCodeList(data) {
+  return request({
+    url: '/system/productCodeList',
+    method: 'post',
+    data: data,
+    baseURL: process.env.VUE_APP_BASE_API1
+  })
+}
+
+// 修改产品码单
+export function updateProductCodeList(data) {
+  return request({
+    url: '/system/productCodeList',
+    method: 'put',
+    data: data,
+    baseURL: process.env.VUE_APP_BASE_API1
+  })
+}
+
+// 删除产品码单
+export function delProductCodeList(id) {
+  return request({
+    url: '/system/productCodeList/' + id,
+    method: 'delete',
+    baseURL: process.env.VUE_APP_BASE_API1
+  })
+}
+
+// 获取完成产品列表
+export function finishedProductList() {
+  return request({
+    url: '/system/productCodeList/finishedProductList',
+    method: 'get',
+    baseURL: process.env.VUE_APP_BASE_API1
+  })
+}
+// 获取下拉数据
+export function getOptionLsit() {
+  return request({
+    url: '/system/productCode/dropDownData',
+    method: 'get',
+    baseURL: process.env.VUE_APP_BASE_API1
+  })
+}

+ 1088 - 0
zkqy-ui/src/views/orderMange/codeListManage/index.vue

@@ -0,0 +1,1088 @@
+<template>
+  <div class="app-container">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
+      <el-form-item label="码单号" prop="qrCode">
+        <el-input
+          v-model="queryParams.qrCode"
+          placeholder="请输入码单号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="批号" prop="lotNum">
+        <el-input
+          v-model="queryParams.lotNum"
+          placeholder="请输入批号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="货品编号" prop="productId">
+        <el-input
+          v-model="queryParams.productId"
+          placeholder="请输入货品编号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="等级" prop="levels">
+        <el-input
+          v-model="queryParams.levels"
+          placeholder="请输入等级"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="筒数" prop="canisterNum">
+        <el-input
+          v-model="queryParams.canisterNum"
+          placeholder="请输入筒数"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="箱数" prop="boxNum">
+        <el-input
+          v-model="queryParams.boxNum"
+          placeholder="请输入箱数"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="净重" prop="suttle">
+        <el-input
+          v-model="queryParams.suttle"
+          placeholder="请输入净重"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="printHandler"
+          v-hasPermi="['system:productCodeList:add']"
+          >打印</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:productCodeList:edit']"
+          >修改</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:productCodeList:remove']"
+          >删除</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:productCodeList:export']"
+          >导出</el-button
+        >
+      </el-col>
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+
+    <el-table
+      v-loading="loading"
+      :data="productCodeListList"
+      @selection-change="handleSelectionChange"
+    >
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="码单号" align="center" prop="qrCode" />
+      <el-table-column label="批号" align="center" prop="lotNum" />
+      <el-table-column label="货品编号" align="center" prop="productId" />
+      <el-table-column label="等级" align="center" prop="levels" />
+      <el-table-column label="筒数" align="center" prop="canisterNum" />
+      <el-table-column label="箱数" align="center" prop="boxNum" />
+      <el-table-column label="净重" align="center" prop="suttle" />
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:productCodeList:edit']"
+            >修改</el-button
+          >
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:productCodeList:remove']"
+            >删除</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改产品码单对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="码单号" prop="qrCode">
+          <el-input v-model="form.qrCode" placeholder="请输入码单号" />
+        </el-form-item>
+        <el-form-item label="批号" prop="lotNum">
+          <el-input v-model="form.lotNum" placeholder="请输入批号" />
+        </el-form-item>
+        <el-form-item label="货品编号" prop="productId">
+          <el-input v-model="form.productId" placeholder="请输入货品编号" />
+        </el-form-item>
+        <el-form-item label="等级" prop="levels">
+          <el-input v-model="form.levels" placeholder="请输入等级" />
+        </el-form-item>
+        <el-form-item label="筒数" prop="canisterNum">
+          <el-input v-model="form.canisterNum" placeholder="请输入筒数" />
+        </el-form-item>
+        <el-form-item label="箱数" prop="boxNum">
+          <el-input v-model="form.boxNum" placeholder="请输入箱数" />
+        </el-form-item>
+        <el-form-item label="净重" prop="suttle">
+          <el-input v-model="form.suttle" placeholder="请输入净重" />
+        </el-form-item>
+        <el-form-item label="生产日期" prop="productionDate">
+          <el-date-picker
+            clearable
+            v-model="form.productionDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择生产日期"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="机台" prop="machineTool">
+          <el-input v-model="form.machineTool" placeholder="请输入机台" />
+        </el-form-item>
+        <el-form-item label="毛重" prop="grossWeight">
+          <el-input v-model="form.grossWeight" placeholder="请输入毛重" />
+        </el-form-item>
+        <el-form-item label="包装" prop="packaging">
+          <el-input v-model="form.packaging" placeholder="请输入包装" />
+        </el-form-item>
+        <el-form-item label="班次" prop="workShifts">
+          <el-input v-model="form.workShifts" placeholder="请输入班次" />
+        </el-form-item>
+        <el-form-item label="外贸号" prop="foreignTradeNumber">
+          <el-input
+            v-model="form.foreignTradeNumber"
+            placeholder="请输入外贸号"
+          />
+        </el-form-item>
+        <el-form-item label="筒重" prop="canisterWeight">
+          <el-input v-model="form.canisterWeight" placeholder="请输入筒重" />
+        </el-form-item>
+        <el-form-item label="箱重/车重" prop="boxWeight">
+          <el-input v-model="form.boxWeight" placeholder="请输入箱重/车重" />
+        </el-form-item>
+        <el-form-item label="管色" prop="tubeColor">
+          <el-input v-model="form.tubeColor" placeholder="请输入管色" />
+        </el-form-item>
+        <el-form-item label="端口" prop="comPort">
+          <el-input v-model="form.comPort" placeholder="请输入端口" />
+        </el-form-item>
+        <el-form-item label="打印格式" prop="printFormat">
+          <el-input v-model="form.printFormat" placeholder="请输入打印格式" />
+        </el-form-item>
+        <el-form-item label="库位" prop="storageLocation">
+          <el-input v-model="form.storageLocation" placeholder="请输入库位" />
+        </el-form-item>
+        <el-form-item label="区域编号" prop="warehouseregionId">
+          <el-input
+            v-model="form.warehouseregionId"
+            placeholder="请输入区域编号"
+          />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input
+            v-model="form.remark"
+            type="textarea"
+            placeholder="请输入内容"
+          />
+        </el-form-item>
+        <el-form-item label="删除标志" prop="delFlag">
+          <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
+        </el-form-item>
+        <el-form-item label="创建者编号" prop="createById">
+          <el-input v-model="form.createById" placeholder="请输入创建者编号" />
+        </el-form-item>
+        <el-form-item label="更新者编号" prop="updateById">
+          <el-input v-model="form.updateById" placeholder="请输入更新者编号" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 打印弹窗 -->
+    <el-dialog
+      title="打印"
+      :visible.sync="printShow"
+      :fullscreen="true"
+      append-to-body
+    >
+      <div class="main-wrap">
+        <div class="left">
+          <div class="top-area">
+            <div class="btn-list mb10">
+              <el-button type="primary" size="mini" @click="() => {}"
+                >打印</el-button
+              >
+              <el-button type="primary" size="mini" @click="getOrderData"
+                >箱单</el-button
+              >
+            </div>
+            <div class="msg" v-if="orderData.boxNo">
+              <div class="msg-item">
+                <span>箱单号:{{ orderData.boxNo }}</span>
+              </div>
+              <div class="msg-item ml10">
+                <span>{{ orderData.msg }}</span>
+              </div>
+            </div>
+          </div>
+          <el-table
+            :data="tableData"
+            border
+            stripe
+            style="width: 100%; margin-bottom: 5px"
+          >
+            <el-table-column
+              type="index"
+              width="50"
+              label="序号"
+            ></el-table-column>
+            <el-table-column prop="machineTool" label="机台"> </el-table-column>
+            <el-table-column
+              prop="qrCode"
+              :label="`${tempStr}号`"
+            ></el-table-column>
+            <el-table-column
+              prop="boxWeight"
+              :label="`${tempStr}重`"
+            ></el-table-column>
+            <el-table-column
+              prop="canisterweight"
+              label="筒重"
+            ></el-table-column>
+            <el-table-column prop="canisterNum" label="筒数"></el-table-column>
+            <el-table-column prop="grossWeight" label="毛重">
+              <template slot-scope="scope">
+                <el-input
+                  v-model="scope.row.grossWeight"
+                  size="mini"
+                  clearable
+                ></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column prop="suttle" label="净重"></el-table-column>
+            <el-table-column prop="workShifts" label="班次"></el-table-column>
+            <el-table-column prop="tubecolor" label="管色"></el-table-column>
+          </el-table>
+          <div class="count-area">
+            <div class="count-item">
+              <div class="count-title">
+                <span>合计箱数:</span>
+              </div>
+              <div class="count-value">
+                <span>{{ count.sumBoxNum }}</span>
+              </div>
+            </div>
+            <div class="count-item">
+              <div class="count-title">
+                <span>合计筒重:</span>
+              </div>
+              <div class="count-value">
+                <span>{{ count.sumCanisterNum }}</span>
+              </div>
+            </div>
+            <div class="count-item">
+              <div class="count-title">
+                <span>合计毛重:</span>
+              </div>
+              <div class="count-value">
+                <span>{{ count.sumSuttle }}</span>
+              </div>
+            </div>
+            <div class="count-item">
+              <div class="count-title">
+                <span>合计净重:</span>
+              </div>
+              <div class="count-value">
+                <span>{{ count.sumGrossWeight }}</span>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="right">
+          <el-row :gutter="10">
+            <el-form
+              :model="form"
+              ref="form"
+              :rules="rules"
+              label-width="80px"
+              :inline="false"
+              size="normal"
+            >
+              <el-col :span="8">
+                <el-form-item prop="packaging" label="包装">
+                  <el-select
+                    v-model="form.packaging"
+                    clearable
+                    filterable
+                    size="mini"
+                    @change="packagingChange"
+                  >
+                    <el-option
+                      v-for="item in dict.type.packaging_type"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item prop="machineTool" label="机台">
+                  <el-select
+                    v-model="form.machineTool"
+                    clearable
+                    filterable
+                    size="mini"
+                  >
+                    <el-option
+                      v-for="item in dropDownData['machine tool']"
+                      :key="item.codeName"
+                      :label="item.codeName"
+                      :value="item.codeName"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item prop="workShifts" label="班次">
+                  <el-select
+                    v-model="form.workShifts"
+                    clearable
+                    filterable
+                    size="mini"
+                  >
+                    <el-option
+                      v-for="item in dropDownData.work_shifts"
+                      :key="item.codeName"
+                      :label="item.codeName"
+                      :value="item.codeName"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item prop="productionDate" label="日期">
+                  <el-date-picker
+                    v-model="form.productionDate"
+                    type="date"
+                    size="mini"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item prop="levels" label="等级">
+                  <el-select
+                    v-model="form.levels"
+                    clearable
+                    filterable
+                    size="mini"
+                  >
+                    <el-option
+                      v-for="item in dropDownData.level"
+                      :key="item.codeName"
+                      :label="item.codeName"
+                      :value="item.codeName"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item prop="foreignTradeNumber" label="外贸号">
+                  <el-input
+                    v-model="form.foreignTradeNumber"
+                    size="mini"
+                    clearable
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item prop="canisterweight" label="筒重">
+                  <el-select
+                    v-model="form.canisterweight"
+                    clearable
+                    filterable
+                    size="mini"
+                  >
+                    <el-option
+                      v-for="item in dropDownData.drum_weight"
+                      :key="item.codeName"
+                      :label="item.codeName"
+                      :value="item.codeName"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="8">
+                <el-form-item prop="canisterNum" label="筒数">
+                  <el-input-number
+                    v-model="form.canisterNum"
+                    size="mini"
+                    label=""
+                    :min="1"
+                    :step="1"
+                    :controls="true"
+                    controls-position="both"
+                  >
+                  </el-input-number>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item prop="boxWeight" :label="`${tempStr}重`">
+                  <el-select
+                    v-model="form.boxWeight"
+                    clearable
+                    filterable
+                    size="mini"
+                  >
+                    <el-option
+                      v-for="item in dropDownData.box_weight"
+                      :key="item.codeName"
+                      :label="item.codeName"
+                      :value="item.codeName"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item prop="tubecolor" label="管色">
+                  <el-select
+                    v-model="form.tubecolor"
+                    clearable
+                    filterable
+                    size="mini"
+                  >
+                    <el-option
+                      v-for="item in dropDownData.tube_color"
+                      :key="item.codeName"
+                      :label="item.codeName"
+                      :value="item.codeName"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="8">
+                <el-form-item prop="comPort" label="端口">
+                  <el-select
+                    v-model="form.comPort"
+                    clearable
+                    filterable
+                    size="mini"
+                  >
+                    <el-option
+                      v-for="item in dict.type.port"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="8">
+                <el-form-item prop="printFormat" label="格式">
+                  <el-select
+                    v-model="form.printFormat"
+                    clearable
+                    filterable
+                    size="mini"
+                  >
+                    <el-option
+                      v-for="item in dict.type.coding_list_format"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-form>
+          </el-row>
+          <div class="queryForm">
+            <span class="label">批号过滤 :</span>
+            <el-input
+              v-model="batchNum"
+              placeholder="请输入批号"
+              size="mini"
+              clearable
+              @change="batchNumChange"
+              @keyup.enter.native="batchNumChange"
+            ></el-input>
+            <el-button
+              class="ml10"
+              type="primary"
+              size="mini"
+              :disabled="!currentRow.lotNum"
+              @click="addProductHandler"
+              >添加</el-button
+            >
+          </div>
+          <div class="table-wrap">
+            <el-table
+              :data="batchTableData"
+              border
+              stripe
+              width="100%"
+              max-height="300"
+              highlight-current-row
+              @current-change="handleCurrentChange"
+            >
+              <el-table-column
+                v-for="col in columns"
+                :prop="col.id"
+                :key="col.id"
+                :label="col.label"
+              >
+              </el-table-column>
+            </el-table>
+          </div>
+        </div>
+      </div>
+
+      <!-- <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div> -->
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  listProductCodeList,
+  getProductCodeList,
+  delProductCodeList,
+  addProductCodeList,
+  updateProductCodeList,
+  finishedProductList,
+  getOptionLsit,
+} from "@/api/codeListManage/productCodeList";
+
+export default {
+  name: "ProductCodeList",
+  dicts: ["packaging_type", "port", "coding_list_format"],
+  data() {
+    return {
+      orderData: {
+        boxNo: "",
+        msg: "不定重",
+      },
+      // 自定义数据 start
+      tempStr: "箱",
+      printShow: false,
+      uuCode: "",
+      tableData: [
+        // {
+        //   machineTool: "", //机台号
+        //   qrCode: "", //箱号-码单号
+        //   boxWeight: "", //箱重-车重
+        //   canisterweight: "", //筒重
+        //   canisterNum: "", //筒数
+        //   grossWeight: "", //毛重
+        //   suttle: "", //净重
+        //   workShifts: "", //班次
+        //   tubecolor: "", //管色
+        // },
+      ],
+      // 统计相关数据
+      count: {
+        sumBoxNum: 0, //合计箱数
+        sumCanisterNum: 0, //合计筒数
+        sumSuttle: 0, //合计净重
+        sumGrossWeight: 0, //合计毛重
+      },
+
+      form: {
+        // 表单参数
+        packaging: "", //包装
+        machineTool: "", //机台
+        workShifts: "", //班次
+        productionDate: "", //生产日期
+        levels: "", //等级
+        foreignTradeNumber: "", //外贸号
+        canisterweight: "", //筒重
+        boxWeight: "", //箱重-车重
+        canisterNum: "", //筒数
+        tubecolor: "", //管色
+        comPort: "", //端口
+        printFormat: "", //格式
+      },
+      rules: {
+        packaging: [
+          { required: true, message: "请选择包装", trigger: "change" },
+        ],
+        machineTool: [
+          { required: true, message: "请选择机台", trigger: "change" },
+        ],
+        workShifts: [
+          { required: true, message: "请选择班次", trigger: "change" },
+        ],
+        productionDate: [
+          { required: true, message: "请选择生产日期", trigger: "change" },
+        ],
+        levels: [{ required: true, message: "请选择等级", trigger: "change" }],
+        foreignTradeNumber: [
+          { required: true, message: "请输入外贸号", trigger: "blur" },
+        ],
+        canisterweight: [
+          { required: true, message: "请选择筒重", trigger: "change" },
+        ],
+        boxWeight: [
+          { required: true, message: "请选择箱重/车重", trigger: "change" },
+        ],
+        tubecolor: [
+          { required: true, message: "请选择管色", trigger: "change" },
+        ],
+        comPort: [{ required: true, message: "请选择端口", trigger: "change" }],
+        printFormat: [
+          { required: true, message: "请选择格式", trigger: "change" },
+        ],
+      },
+      dropDownData: {},
+      batchNum: "", //批号--查询
+      batchData: [], //所有批号数据
+      batchTableData: [], //批号表格数据
+      currentRow: {},
+      columns: [
+        {
+          id: "productName",
+          label: "品名",
+        },
+        {
+          id: "productSpecifications",
+          label: "规格",
+        },
+        {
+          id: "lotNum",
+          label: "批号",
+        },
+        {
+          id: "productColor",
+          label: "色泽",
+        },
+        // {
+        //   id: "productName",
+        //   label: "订单号",
+        // },
+      ],
+
+      // 自定义数据 end
+
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 产品码单表格数据
+      productCodeListList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        qrCode: null,
+        lotNum: null,
+        productId: null,
+        levels: null,
+        canisterNum: null,
+        boxNum: null,
+        suttle: null,
+      },
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    // 获取箱单数据
+    getOrderData() {
+      let year = (new Date().getFullYear() + "").slice(-2);
+      let month = new Date().getMonth() + 1;
+      if (month < 10) {
+        month = "0" + month;
+      }
+      let day = new Date().getDate();
+      if (day < 10) {
+        day = "0" + day;
+      }
+      let timeStamp = (new Date().getTime() + "").slice(-5);
+      this.orderData.boxNo = year + month + day + timeStamp;
+    },
+    // 包装变化回调
+    packagingChange(val) {
+      if (val == "1") {
+        //车丝
+        this.tempStr = "车";
+      } else {
+        this.tempStr = "箱";
+      }
+    },
+    // 添加按钮回调
+    addProductHandler() {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          let {
+            machineTool,
+            boxWeight,
+            canisterweight,
+            canisterNum,
+            grossWeight,
+            suttle, //净重
+            workShifts, //班次
+            tubecolor,
+          } = this.form;
+          console.log(this.currentRow);
+          this.tableData.push({
+            qrCode: this.tableData.length + 1,
+            machineTool,
+            boxWeight,
+            canisterweight,
+            canisterNum,
+            grossWeight,
+            suttle,
+            workShifts,
+            tubecolor,
+            grossWeight: 0, //毛重
+            suttle: this.getSuttle(), //净重
+          });
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+    // 计算净重
+    getSuttle() {
+      let { boxWeight, canisterweight, canisterNum } = this.form;
+      return (Number(boxWeight) - canisterweight * canisterNum).toFixed(2);
+    },
+    // 表格点击回调
+    handleCurrentChange(val) {
+      console.log("row", val);
+      this.currentRow = JSON.parse(JSON.stringify(val));
+    },
+    // 获取所有批次数据
+    async getAllBatchData() {
+      try {
+        let res = await finishedProductList();
+        if (res.code == 200) {
+          this.batchData = res.data;
+        } else {
+          console.log(res);
+        }
+      } catch (error) {
+        console.error(res);
+      }
+    },
+    // 批号查询接口
+    batchNumChange(val) {
+      this.batchTableData = this.batchData.filter(
+        (item) => item.lotNum && item.lotNum.includes(val)
+      );
+      console.log(this.batchTableData);
+    },
+    // 获取下拉数据
+    async getSelectOptions() {
+      try {
+        let res = await getOptionLsit();
+        if (res.code == 200) {
+          this.dropDownData = res.data;
+        }
+      } catch (error) {}
+    },
+    /** 查询产品码单列表 */
+    getList() {
+      this.loading = true;
+      listProductCodeList(this.queryParams).then((response) => {
+        this.productCodeListList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        qrCode: null,
+        lotNum: null,
+        productId: null,
+        levels: null,
+        canisterNum: null,
+        boxNum: null,
+        suttle: null,
+        productionDate: null,
+        machineTool: null,
+        grossWeight: null,
+        packaging: null,
+        workShifts: null,
+        foreignTradeNumber: null,
+        canisterWeight: null,
+        boxWeight: null,
+        tubeColor: null,
+        comPort: null,
+        printFormat: null,
+        packagingType: null,
+        storageLocation: null,
+        warehouseregionId: null,
+        remark: null,
+        delFlag: null,
+        createBy: null,
+        createById: null,
+        createTime: null,
+        updateBy: null,
+        updateById: null,
+        updateTime: null,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加产品码单";
+    },
+    // 打印按钮操作
+    async printHandler() {
+      this.reset();
+      await this.getAllBatchData(); //获取所有产品数据
+      await this.getSelectOptions();
+      this.printShow = true;
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getProductCodeList(id).then((response) => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改产品码单";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateProductCodeList(this.form).then((response) => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addProductCodeList(this.form).then((response) => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal
+        .confirm('是否确认删除产品码单编号为"' + ids + '"的数据项?')
+        .then(function () {
+          return delProductCodeList(ids);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "system/productCodeList/export",
+        {
+          ...this.queryParams,
+        },
+        `productCodeList_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.main-wrap {
+  width: 100%;
+  display: flex;
+  justify-content: space-between;
+  .left {
+    width: 58%;
+    .top-area {
+      display: flex;
+      justify-content: space-between;
+      .msg {
+        display: flex;
+        align-items: center;
+        font-size: 16px;
+        font-weight: 700;
+      }
+    }
+    .count-area {
+      display: flex;
+      flex-wrap: wrap;
+      .count-item {
+        display: flex;
+        margin-bottom: 10px;
+        width: 50%;
+      }
+    }
+  }
+  .right {
+    width: 40%;
+    // flex: 1;
+    .queryForm {
+      width: 100%;
+      padding: 0 10px;
+      display: flex;
+      .label {
+        text-align: right;
+        color: #606266;
+        line-height: 30px;
+        display: block;
+        width: 100px;
+        font-weight: 700;
+        text-decoration: aliceblue;
+        margin-right: 10px;
+      }
+    }
+    .table-wrap {
+      margin-top: 5px;
+      width: 100%;
+      overflow-x: scroll;
+    }
+  }
+}
+::v-deep .el-date-editor.el-input {
+  width: 100%;
+}
+::v-deep .el-input-number--mini {
+  width: 99%;
+}
+</style>

+ 31 - 4
zkqy-ui/src/views/orderMange/index.vue

@@ -299,11 +299,16 @@
           :inline="true"
           size="normal"
         >
-          <el-col :span="24">
+          <el-col :span="12">
             <el-form-item prop="saleNo" label="合同号:">
               <el-input size="small" v-model="formData.saleNo"></el-input>
             </el-form-item>
           </el-col>
+          <el-col :span="12">
+            <el-form-item prop="lotNumber" label="批号:">
+              <el-input size="small" v-model="formData.lotNumber"></el-input>
+            </el-form-item>
+          </el-col>
           <el-col :span="12">
             <el-form-item prop="saleDate" label="日期:">
               <el-date-picker
@@ -772,6 +777,7 @@ export default {
         customCountryType: "", //国家类型
         contactPerson: "", //联系人
         // 货品明细表数据
+        lotNumber: "", //批号
         productNo: "", //货品号
         productName: "", //货品名称
         productNumber: "", //销售数量
@@ -824,6 +830,13 @@ export default {
             trigger: "change",
           },
         ],
+        lotNumber: [
+          {
+            required: true,
+            message: "请输入批号",
+            trigger: "blur",
+          },
+        ],
         saleCustomNo: [
           {
             required: true,
@@ -1012,6 +1025,7 @@ export default {
         customCountryType: "", //国家类型
         contactPerson: "", //联系人
         // 货品明细表数据
+        lotNumber: "", //批号
         productNo: "", //货品号
         productName: "", //货品名称
         productNumber: "", //销售数量
@@ -1101,7 +1115,7 @@ export default {
       this.isEdit = false;
       await this.getDropDownData();
       this.resetFormData();
-      this.title = "新增审计单";
+      this.title = "新增销售单";
       this.open = true;
     },
     // 获取下拉框数据
@@ -1364,6 +1378,9 @@ export default {
             craftOther,
             craftMark,
             shippingMethod,
+
+            // 产品表
+            lotNumber,
           } = this.formData;
 
           let saleCraftNo = this.isEdit ? this.formData.saleCraftNo : uuidv4();
@@ -1374,6 +1391,7 @@ export default {
           let saleValue = {
             status: 1, //新增销售单时  默认为1
             saleNo,
+            lotNumber, //批号
             saleProductsNo,
             saleOrderTechnologyNo: saleCraftNo,
             saleCustomNo,
@@ -1428,6 +1446,7 @@ export default {
           };
           this.productionTableData.forEach((item) => {
             item.saleOrderNo = saleNo;
+            item.lotNumber = lotNumber;
             delete item.id;
             delete item.productNotes;
             delete item.updateBy;
@@ -1439,8 +1458,15 @@ export default {
             delete item.delFlag;
             delete item.sliceTypeLabel;
             delete item.colourNumberLabel;
-            const matchedOption = this.colourNumberOptions.find(option => option.materielCode === item.colourNumber);
-            let taskName = item.productName + '-' + matchedOption.materieColorNumber + '-' + matchedOption.materieEncoding;
+            const matchedOption = this.colourNumberOptions.find(
+              (option) => option.materielCode === item.colourNumber
+            );
+            let taskName =
+              item.productName +
+              "-" +
+              matchedOption.materieColorNumber +
+              "-" +
+              matchedOption.materieEncoding;
             item.taskName = taskName;
           });
           let productData = {
@@ -2540,6 +2566,7 @@ export default {
         let {
           //订单表数据
           saleNo, //合同号
+          lotNumber, //批号
           saleCustomNo, //客户编号
           saleDate, //销售单日期
           saleOrderEstimatedTime, //预计下单时间