فهرست منبع

订单管理的出库发货的新增和修改/产品销售单页面的搭建

lph 1 سال پیش
والد
کامیت
8c4f253731

+ 44 - 0
zkqy-ui/src/api/system/ProductInvoice.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询产品发货单列表
+export function listProductInvoice(query) {
+  return request({
+    url: '/system/ProductInvoice/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询产品发货单详细
+export function getProductInvoice(id) {
+  return request({
+    url: '/system/ProductInvoice/' + id,
+    method: 'get'
+  })
+}
+
+// 新增产品发货单
+export function addProductInvoice(data) {
+  return request({
+    url: '/system/ProductInvoice',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改产品发货单
+export function updateProductInvoice(data) {
+  return request({
+    url: '/system/ProductInvoice',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除产品发货单
+export function delProductInvoice(id) {
+  return request({
+    url: '/system/ProductInvoice/' + id,
+    method: 'delete'
+  })
+}

+ 39 - 0
zkqy-ui/src/api/tablelist/commonTable.js

@@ -275,3 +275,42 @@ export function materialReturn(data) {
     baseURL: process.env.VUE_APP_BASE_API1
   })
 }
+
+
+// 订单管理  发货单详情接口
+export function productInvoiceInfo(data) {
+  return request({
+    url: '/system/ProductInvoice/productInvoiceInfo',
+    method: 'get',
+    params: data,
+    baseURL: process.env.VUE_APP_BASE_API1
+  })
+}
+// 订单管理  新增发货单接口
+export function addProductInvoice(data) {
+  return request({
+    url: '/system/ProductInvoice',
+    method: 'post',
+    data: data,
+    baseURL: process.env.VUE_APP_BASE_API1
+  })
+}
+// 订单管理  修改发货单接口
+export function updateProductInvoice(data) {
+  return request({
+    url: '/system/ProductInvoice',
+    method: 'put',
+    data: data,
+    baseURL: process.env.VUE_APP_BASE_API1
+  })
+}
+
+// 获取下拉框数据
+export function queryDropDownBoxData(data) {
+  return request({
+    url: '/dragform/common/queryDropDownBoxData',
+    method: 'post',
+    data: data,
+    baseURL: process.env.VUE_APP_BASE_API1
+  })
+}

+ 472 - 0
zkqy-ui/src/views/orderMange/ProductInvoice/index.vue

@@ -0,0 +1,472 @@
+<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="noticeNumber">
+        <el-input
+          v-model="queryParams.noticeNumber"
+          placeholder="请输入通知单号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="通知日期" prop="noticeDate">
+        <el-date-picker
+          clearable
+          v-model="queryParams.noticeDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择通知日期"
+        >
+        </el-date-picker>
+      </el-form-item>
+      <!-- <el-form-item label="状态" prop="status">
+        <el-select
+          v-model="queryParams.status"
+          value-key=""
+          placeholder=""
+          clearable
+          filterable
+          @change=""
+        >
+          <el-option
+            v-for="item in options"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          >
+          </el-option>
+        </el-select>
+      </el-form-item> -->
+
+      <el-form-item label="客户编号" prop="customerId">
+        <el-input
+          v-model="queryParams.customerId"
+          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="handleAdd"
+          v-hasPermi="['system:ProductInvoice: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:ProductInvoice: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:ProductInvoice: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:ProductInvoice:export']"
+          >导出</el-button
+        >
+      </el-col>
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+
+    <el-table
+      v-loading="loading"
+      :data="ProductInvoiceList"
+      @selection-change="handleSelectionChange"
+    >
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="编号" align="center" prop="id" />
+      <el-table-column label="通知单号" align="center" prop="noticeNumber" />
+      <el-table-column
+        label="通知日期"
+        align="center"
+        prop="noticeDate"
+        width="180"
+      >
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.noticeDate, "{y}-{m}-{d}") }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="销售员" align="center" prop="salesman" />
+      <el-table-column label="客户编号" align="center" prop="customerId" />
+      <el-table-column label="开票员" align="center" prop="drawer" />
+      <el-table-column
+        label="发货单备注"
+        align="center"
+        prop="dispatchNoteRemark"
+      />
+      <el-table-column label="开票类型" align="center" prop="billingType" />
+      <el-table-column
+        label="货车登记"
+        align="center"
+        prop="truckRegistration"
+      />
+      <el-table-column label="单据类型" align="center" prop="documentType" />
+      <el-table-column label="售货单位" align="center" prop="sellingUnit" />
+      <el-table-column label="计算类型" align="center" prop="calculationType" />
+      <el-table-column label="审核意见" align="center" prop="auditOpinion" />
+      <el-table-column label="状态" align="center" prop="status" />
+      <el-table-column label="销售单合同号" align="center" prop="saleOrderNo" />
+      <el-table-column label="备用列" align="center" prop="spare1" />
+      <el-table-column label="备用列" align="center" prop="spare2" />
+      <el-table-column label="备用列" align="center" prop="spare3" />
+      <el-table-column label="备用列" align="center" prop="spare4" />
+      <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:ProductInvoice:edit']"
+            >修改</el-button
+          >
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:ProductInvoice: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="noticeNumber">
+          <el-input v-model="form.noticeNumber" placeholder="请输入通知单号" />
+        </el-form-item>
+        <el-form-item label="通知日期" prop="noticeDate">
+          <el-date-picker
+            clearable
+            v-model="form.noticeDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择通知日期"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="销售员" prop="salesman">
+          <el-input v-model="form.salesman" placeholder="请输入销售员" />
+        </el-form-item>
+        <el-form-item label="客户编号" prop="customerId">
+          <el-input v-model="form.customerId" placeholder="请输入客户编号" />
+        </el-form-item>
+        <el-form-item label="开票员" prop="drawer">
+          <el-input v-model="form.drawer" placeholder="请输入开票员" />
+        </el-form-item>
+        <el-form-item label="发货单备注" prop="dispatchNoteRemark">
+          <el-input
+            v-model="form.dispatchNoteRemark"
+            type="textarea"
+            placeholder="请输入内容"
+          />
+        </el-form-item>
+        <el-form-item label="货车登记" prop="truckRegistration">
+          <el-input
+            v-model="form.truckRegistration"
+            placeholder="请输入货车登记"
+          />
+        </el-form-item>
+        <el-form-item label="售货单位" prop="sellingUnit">
+          <el-input v-model="form.sellingUnit" placeholder="请输入售货单位" />
+        </el-form-item>
+        <el-form-item label="审核意见" prop="auditOpinion">
+          <el-input v-model="form.auditOpinion" placeholder="请输入审核意见" />
+        </el-form-item>
+        <el-form-item label="销售单合同号" prop="saleOrderNo">
+          <el-input
+            v-model="form.saleOrderNo"
+            placeholder="请输入销售单合同号"
+          />
+        </el-form-item>
+        <el-form-item label="备用列" prop="spare1">
+          <el-input v-model="form.spare1" placeholder="请输入备用列" />
+        </el-form-item>
+        <el-form-item label="备用列" prop="spare2">
+          <el-input v-model="form.spare2" placeholder="请输入备用列" />
+        </el-form-item>
+        <el-form-item label="备用列" prop="spare3">
+          <el-input v-model="form.spare3" placeholder="请输入备用列" />
+        </el-form-item>
+        <el-form-item label="备用列" prop="spare4">
+          <el-input v-model="form.spare4" placeholder="请输入备用列" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" placeholder="请输入备注" />
+        </el-form-item>
+        <el-form-item label="删除标志" prop="delFlag">
+          <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
+        </el-form-item>
+        <el-form-item label="创建者ID" prop="createById">
+          <el-input v-model="form.createById" placeholder="请输入创建者ID" />
+        </el-form-item>
+        <el-form-item label="修改者ID" prop="updateById">
+          <el-input v-model="form.updateById" placeholder="请输入修改者ID" />
+        </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>
+  </div>
+</template>
+
+<script>
+import {
+  listProductInvoice,
+  getProductInvoice,
+  delProductInvoice,
+  addProductInvoice,
+  updateProductInvoice,
+} from "@/api/system/ProductInvoice";
+
+export default {
+  name: "ProductInvoice",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 产品发货单表格数据
+      ProductInvoiceList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        noticeNumber: null,
+        noticeDate: null,
+        salesman: null,
+        customerId: null,
+        drawer: null,
+        dispatchNoteRemark: null,
+        billingType: null,
+        truckRegistration: null,
+        documentType: null,
+        sellingUnit: null,
+        calculationType: null,
+        auditOpinion: null,
+        status: null,
+        saleOrderNo: null,
+        spare1: null,
+        spare2: null,
+        spare3: null,
+        spare4: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {},
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询产品发货单列表 */
+    getList() {
+      this.loading = true;
+      listProductInvoice(this.queryParams).then((response) => {
+        this.ProductInvoiceList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        noticeNumber: null,
+        noticeDate: null,
+        salesman: null,
+        customerId: null,
+        drawer: null,
+        dispatchNoteRemark: null,
+        billingType: null,
+        truckRegistration: null,
+        documentType: null,
+        sellingUnit: null,
+        calculationType: null,
+        auditOpinion: null,
+        status: null,
+        saleOrderNo: null,
+        spare1: null,
+        spare2: null,
+        spare3: null,
+        spare4: 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 = "添加产品发货单";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getProductInvoice(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) {
+            updateProductInvoice(this.form).then((response) => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addProductInvoice(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 delProductInvoice(ids);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "system/ProductInvoice/export",
+        {
+          ...this.queryParams,
+        },
+        `ProductInvoice_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>

+ 482 - 0
zkqy-ui/src/views/orderMange/components/dialogForm/Deliver.vue

@@ -0,0 +1,482 @@
+<template>
+  <div class="form-wrap">
+    <div class="title"><span>诸暨市新丝维纤维有限公司销售开单</span></div>
+    <el-row :gutter="20">
+      <el-form
+        ref="form"
+        :model="form"
+        :rules="rules"
+        label-width="100px"
+        class="form"
+        :inline="true"
+      >
+        <el-col :span="24">
+          <el-form-item prop="noticeNumber" label="通知单号:" size="mini">
+            {{ form.noticeNumber }}
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="通知日期:" prop="noticeDate" size="mini">
+            <el-date-picker
+              v-model="form.noticeDate"
+              type="date"
+              size="mini"
+              placeholder="选择日期"
+            >
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="销售员:" prop="salesman" size="mini">
+            <el-input
+              v-model="form.salesman"
+              placeholder=""
+              size="mini"
+              clearable
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="当前库存:" size="mini">
+            {{
+              "箱数: " +
+              form.inventoryBoxNum +
+              " " +
+              "重量: " +
+              form.inventoryWeight
+            }}
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="客户余款:" size="mini">
+            {{ "0" }}
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="开票员:" prop="drawer" size="mini">
+            <el-input
+              v-model="form.drawer"
+              placeholder=""
+              size="mini"
+              clearable
+            ></el-input>
+
+            <!-- <el-select
+              width="100px"
+              v-model="form.drawer"
+              placeholder=""
+              clearable
+              filterable
+            >
+              <el-option
+                v-for="item in []"
+                :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 label="" size="mini">
+            <el-radio-group v-model="form.batchNumberType">
+              <el-radio :label="1"> 仅使用有库存的批号 </el-radio>
+              <el-radio :label="2"> 使用所有批号 </el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+        <!-- <el-divider direction="horizontal" content-position="center"
+          >11111</el-divider
+        > -->
+
+        <el-col :span="8">
+          <el-form-item label="客户名称" size="mini">
+            <el-select
+              v-model="form.customerId"
+              placeholder=""
+              clearable
+              filterable
+            >
+              <el-option
+                v-for="item in customerOptions"
+                :key="item.id"
+                :label="item.customName"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="备 注:" prop="dispatchNoteRemark" size="mini">
+            <el-input
+              v-model="form.dispatchNoteRemark"
+              placeholder=""
+              size="mini"
+              clearable
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="货车登记:" prop="truckRegistration" size="mini">
+            <el-input
+              v-model="form.truckRegistration"
+              placeholder=""
+              size="mini"
+              clearable
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="售货单位:" prop="sellingUnit" size="mini">
+            <el-input
+              v-model="form.sellingUnit"
+              placeholder=""
+              size="mini"
+              clearable
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="" size="mini">
+            <el-radio-group v-model="form.computeType">
+              <el-radio :label="1"> 计算金额 </el-radio>
+              <el-radio :label="2"> 计算单价 </el-radio>
+              <el-radio :label="3"> 计算重量 </el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="开票类型:" prop="billingType" size="mini">
+            <el-select
+              v-model="form.billingType"
+              placeholder=""
+              clearable
+              filterable
+            >
+              <el-option
+                v-for="item in dict.type.billing_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 label="单据类型:" prop="documentType" size="mini">
+            <el-select
+              v-model="form.documentType"
+              placeholder=""
+              clearable
+              filterable
+            >
+              <el-option
+                v-for="item in dict.type.document_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 label="审核意见:" prop="auditOpinion" size="mini">
+            <el-input
+              v-model="form.auditOpinion"
+              placeholder=""
+              size="mini"
+              clearable
+            ></el-input>
+          </el-form-item>
+        </el-col>
+      </el-form>
+    </el-row>
+    <el-table
+      show-summary
+      :data="tableData"
+      :summary-method="getSummaries"
+      border
+      stripe
+    >
+      <el-table-column
+        v-for="(col, index) in columns"
+        :prop="col.id"
+        :key="index"
+        :label="col.label"
+      >
+      </el-table-column>
+      <el-table-column label="备注" prop="productRemark">
+        <!-- <template slot-scope="scope">
+          <el-input
+            v-model="scope.row.productRemark"
+            size="mini"
+            clearable
+          ></el-input>
+        </template> -->
+      </el-table-column>
+    </el-table>
+  </div>
+</template>
+
+<script>
+import {
+  productInvoiceInfo,
+  queryDropDownBoxData,
+} from "@/api/tablelist/commonTable";
+import { mapState } from "vuex";
+export default {
+  name: "Deliver",
+  props: ["currentRow"],
+  dicts: ["billing_type", "document_type"],
+  components: {},
+  data() {
+    return {
+      isEdit: false,
+      customerOptions: [], //客户选项
+      form: {
+        noticeNumber: "", //通知单号
+        noticeDate: "", //通知日期
+        salesman: "", //销售员
+        customerId: "", //客户编号
+        drawer: "", //开票员
+        dispatchNoteRemark: "", //发货单备注
+        billingType: "", //开票类型
+        truckRegistration: "", //货车登记
+        documentType: "", //单据类型
+        sellingUnit: "", //售货单位
+        auditOpinion: "", //审核意见
+        inventoryBoxNum: "", //库存箱数
+        inventoryWeight: "", //库存重量
+
+        batchNumberType: 1, //批次类型
+        computeType: 1, //计算方式
+      },
+      rules: {},
+      tableData: [
+        {
+          // productCode: "", //编码
+          // productName: "", //品名
+          // productSpecifications: "", //规格
+          // lotNum: "", //批号
+          // levels: "", //等级
+          // boxNum: "", //箱数
+          // weight: "", //重量
+          // unitPrice: "", //单价
+          // saleAmount: "", //销售金额
+          // productColor: "", //色泽
+          // productType: "", //类型
+          // bottomPrice: "", //底价
+          // productRemark: "", //备注
+        },
+      ],
+      columns: [
+        {
+          id: "productCode",
+          label: "编码",
+        },
+        {
+          id: "productName",
+          label: "品名",
+        },
+        {
+          id: "productSpecifications",
+          label: "规格",
+        },
+        {
+          id: "lotNum",
+          label: "批号",
+        },
+        {
+          id: "levels",
+          label: "等级",
+        },
+        {
+          id: "boxNum",
+          label: "箱数",
+        },
+        {
+          id: "weight",
+          label: "重量",
+        },
+        {
+          id: "unitPrice",
+          label: "单价",
+        },
+        {
+          id: "saleAmount",
+          label: "销售金额",
+        },
+        {
+          id: "productColor",
+          label: "色泽",
+        },
+        {
+          id: "productType",
+          label: "类型",
+        },
+        {
+          id: "unitPrice",
+          label: "底价",
+        },
+      ],
+    };
+  },
+  computed: {
+    ...mapState({
+      username: (state) => state.user.name,
+    }),
+  },
+  methods: {
+    // 自定义合计方法
+    getSummaries(param) {
+      const { columns, data } = param;
+      const sums = [];
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = "合计";
+          return;
+        }
+        const values = data.map((item) => Number(item[column.property]));
+        if (!values.every((value) => isNaN(value))) {
+          if (index == 5 || index == 6 || index == 8) {
+            sums[index] = values.reduce((prev, curr) => {
+              const value = Number(curr);
+              if (!isNaN(value)) {
+                return prev + curr;
+              } else {
+                return prev;
+              }
+            }, 0);
+          } else {
+            sums[index] = "";
+          }
+        } else {
+          sums[index] = "";
+        }
+      });
+      console.log(sums);
+      return sums;
+    },
+    // 初始化下拉框数据
+    async initDropDownBoxData() {
+      try {
+        let res = await queryDropDownBoxData([
+          {
+            basicMap: {
+              tableName: "customer",
+            },
+          },
+        ]);
+        if (res.code == 200) {
+          console.log(res);
+          this.customerOptions = res.data.resultMap.customer;
+        } else {
+          throw new Error(res);
+        }
+      } catch (error) {
+        console.log(error);
+      }
+    },
+    // 单号生成
+    getOrderNo() {
+      let year = new Date().getFullYear();
+      let month = new Date().getMonth() + 1;
+      let day = new Date().getDate();
+      if (month < 10) {
+        month = "0" + month;
+      }
+      if (day < 10) {
+        day = "0" + day;
+      }
+      let hour = new Date().getHours();
+      let minute = new Date().getMinutes();
+      let second = new Date().getSeconds();
+      if (hour < 10) {
+        hour = "0" + hour;
+      }
+      if (minute < 10) {
+        minute = "0" + minute;
+      }
+      if (second < 10) {
+        second = "0" + second;
+      }
+      let orderNo = year + month + day + hour + minute + second;
+      return orderNo;
+    },
+    // 获取发货单详情
+    async productInvoiceInfo(row) {
+      // 获取下拉框数据
+      await this.initDropDownBoxData();
+      let { saleOrderSaleNo } = row;
+      let payload = {
+        saleOrderNo: saleOrderSaleNo,
+      };
+      let res = await productInvoiceInfo(payload);
+      if (res.code == 200) {
+        this.tableData = res.data.saleProductInfoList;
+        this.tableData.forEach((item) => {
+          // item.saleOrderNo = saleOrderSaleNo;
+          let { boxNum, weight, unitPrice } = item;
+          item.saleAmount = (Number(weight) * Number(unitPrice)).toFixed(2);
+        });
+        // 表单字段循环赋值
+        for (const key of Object.keys(this.form)) {
+          this.form[key] = res.data[key];
+        }
+        this.isEdit = res.data.id ? true : false;
+        if (!this.isEdit) {
+          this.form.drawer = this.username;
+          this.form.noticeNumber = this.getOrderNo();
+          this.form.status = 1;
+          this.form.saleOrderNo = saleOrderSaleNo;
+        } else {
+          this.form.id = res.data.id;
+        }
+        this.form.batchNumberType = 1;
+        this.form.computeType = 1;
+      } else {
+        console.log(res);
+      }
+    },
+
+    // 获取表单数据
+    getAllData() {
+      let res = {};
+      this.$refs.form.validate(async (valid) => {
+        console.log(valid);
+        if (valid) {
+          res = {
+            flag: true,
+            isEdit: this.isEdit,
+            data: {
+              formData: this.form,
+              tableData: this.tableData,
+            },
+          };
+        } else {
+          res = {
+            flag: false,
+          };
+        }
+      });
+      return res;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.form-wrap {
+  width: 100%;
+  .title {
+    display: flex;
+    justify-content: center;
+    font-size: 20px;
+    font-weight: 700;
+  }
+}
+</style>

+ 85 - 24
zkqy-ui/src/views/orderMange/index.vue

@@ -681,12 +681,8 @@
     </el-dialog>
 
     <!-- 自定义弹窗 -->
-    <el-dialog
-      title="提示"
-      :visible.sync="btnDialogVisible"
-      :before-close="handleClose"
-    >
-      <DialogTemplate
+    <el-dialog title="提示" :visible.sync="deliverShow" width="1200px">
+      <!-- <DialogTemplate
         ref="dialogRef"
         :groupKey="groupKey"
         :rowobj="rowobj"
@@ -695,9 +691,10 @@
         :subTableName="subTableName"
         @addList="addListHandler"
       >
-      </DialogTemplate>
+      </DialogTemplate> -->
+      <Deliver ref="deliverRef" :currentRow="currentRow"></Deliver>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="btnDialogVisible = false">取 消</el-button>
+        <el-button @click="deliverShow = false">取 消</el-button>
         <el-button type="primary" @click="btnComfirm">确 定</el-button>
       </span>
     </el-dialog>
@@ -726,6 +723,9 @@ import {
   getTableList1,
   checkOrderNo,
   delOrder,
+  productInvoiceInfo,
+  addProductInvoice,
+  updateProductInvoice,
 } from "@/api/tablelist/commonTable";
 import { listData } from "@/api/system/tenant/data";
 import { getToken } from "@/utils/auth";
@@ -739,13 +739,21 @@ import { queryDropDownBoxData } from "@/api/dragform/form";
 import { v4 as uuidv4 } from "uuid";
 import { mapState } from "vuex";
 import moment from "moment";
+import Deliver from "@/views/orderMange/components/dialogForm/Deliver.vue";
 
 export default {
   name: "listInfo",
   dicts: ["payment_method", "direction_of_twist"],
-  components: { Queryfrom, Menu, DialogTemplate },
+  components: { Queryfrom, Menu, DialogTemplate, Deliver },
   data() {
     return {
+      // 发货 start
+      deliverShow: false,
+      // 发货 end
+
+      // 出库单  start
+
+      // 出库单  end
       myDelIds: [], //新增接口 删除的id
       // 详情弹窗数据
       detailShow: false,
@@ -989,6 +997,11 @@ export default {
     }),
   },
   methods: {
+    // 出库单回调
+    async myPrintOutBoundHandler(row, data) {
+      console.log("row", row);
+    },
+
     // 产品名称改变
     handleProductChange(productNo, row) {
       if (!productNo) {
@@ -1227,6 +1240,20 @@ export default {
                 '[{"fieldName":"sale_order.status","mark":"6","refValue":"1"}]',
               children: [],
             },
+            {
+              btnName: "打印出库单",
+              btnType: "printOutBound",
+              btnIcon: "",
+              btnShowCondition: "",
+              children: [],
+            },
+            {
+              btnName: "出库发货",
+              btnType: "deliver",
+              btnIcon: "",
+              btnShowCondition: "",
+              children: [],
+            },
             {
               btnName: "详情",
               btnType: "myDetail",
@@ -2189,21 +2216,40 @@ export default {
       this.addLists.push(...val);
     },
     // 绑定弹窗Dialog确定按钮
-    btnComfirm() {
-      // let data = {
-      //   addListMap:[],
-      //   basicMap:{
-      //     btnType: 10,
-      //     tableName: this.subTableName,
-      //     visible: true,
-      //   },
-      //   commMap: {},
-      //   conditionMap: {},
-      // }
-      // // data.addListMap =
-      // btnCommonApi(data).then(res => {
-      //   console.log('弹窗确定', res);
-      // })
+    async btnComfirm() {
+      let res = await this.$refs.deliverRef.getAllData();
+      let { flag, isEdit, data } = res;
+      if (flag) {
+        if (isEdit) {
+          //编辑
+          let payLoad = {
+            ...data.formData,
+            saleProductInfoList: data.tableData,
+          };
+          let res = await updateProductInvoice(payLoad);
+          if (res.code == 200) {
+            this.$message.success("修改成功");
+            this.deliverShow = false;
+            this.getList();
+          } else {
+            this.$message.error("网络异常");
+          }
+        } else {
+          //新增
+          let payLoad = {
+            ...data.formData,
+            saleProductInfoList: data.tableData,
+          };
+          let res = await addProductInvoice(payLoad);
+          if (res.code == 200) {
+            this.$message.success("保存成功");
+            this.deliverShow = false;
+            this.getList();
+          } else {
+            this.$message.error("网络异常");
+          }
+        }
+      }
     },
     // 去掉表名 开头字母小写
     formatField(field = "", tableName) {
@@ -2807,6 +2853,14 @@ export default {
         }
       } catch (error) {}
     },
+    // 发货回调
+    myDeliverHandler(row) {
+      this.currentRow = row;
+      this.deliverShow = true;
+      this.$nextTick(() => {
+        this.$refs.deliverRef.productInvoiceInfo(row);
+      });
+    },
 
     // 操作列回调
     excuteHandler(btnData, row) {
@@ -2846,6 +2900,13 @@ export default {
           break;
         case "myDelete":
           this.myDeleteHandler(row, btnData);
+          break;
+        case "printOutBound":
+          this.myPrintOutBoundHandler(row, btnData);
+          break;
+        case "deliver": //发货
+          this.myDeliverHandler(row, btnData);
+          break;
         default:
           break;
       }

+ 2 - 3
zkqy-ui/src/views/tablelist/commonTable/listInfo.vue

@@ -61,13 +61,12 @@
     <el-row :gutter="10" class="mb8">
       <!-- 按钮行 start -->
       <btn-menu-list
-        v-if="topBtnArr.length > 0"
         @topBtnHandler="topBtnHandler"
         :topBtnArr="topBtnArr"
         :selection="selection"
       ></btn-menu-list>
       <!-- 按钮行 end -->
-      <template v-else>
+      <!-- <template v-else>
         <el-col :span="1.5">
           <el-button
             type="primary"
@@ -119,7 +118,7 @@
             >导出
           </el-button>
         </el-col>
-      </template>
+      </template> -->
       <right-toolbar
         :showCount.sync="showCount"
         :showSearch.sync="showSearch"