소스 검색

Merge branch 'feature/Feature-supply' into develop

莫绍宝 3 년 전
부모
커밋
2c37db73bb

+ 36 - 0
src/api/supply/apply.js

@@ -126,4 +126,40 @@ export function getEnginDetail(params) {
     method: 'get',
     params
   })
+}
+
+// 工程发货申请单 - 获取产品列表
+export function getEnginGoodsList(params) {
+  return request({
+    url: '/invoice/listProjectOrder',
+    method: 'get',
+    params
+  })
+}
+
+// 工程发货申请单 - 新增
+export function addEngin(params) {
+  return request({
+    url: '/invoice/addProject',
+    method: 'post',
+    data: params
+  })
+}
+
+// 工程发货申请单 - 编辑
+export function editEngin(params) {
+  return request({
+    url: '/invoice/updateProject',
+    method: 'post',
+    data: params
+  })
+}
+
+// 工程发货申请单 - 审批
+export function examineEngin(params) {
+  return request({
+    url: '/invoice/approvalInvoiceProject',
+    method: 'post',
+    data: params
+  })
 }

+ 0 - 86
src/views/supply/apply/components/apply_detail.vue

@@ -125,76 +125,12 @@
     
     <div class="page-footer">
       <div class="footer" :class="classObj">
-        <el-button  type="primary" @click="openDeliverDialog">直调发货</el-button>
         <el-popconfirm title="确定关闭吗?" @onConfirm="goBack" style="margin-left: 10px;">
           <el-button slot="reference">关 闭</el-button>
         </el-popconfirm>
       </div>
     </div>
 
-    <el-dialog
-      title="直调发货"
-      :visible.sync="isShowDeliverDialog"
-      width="80%">
-      <el-form ref="deliverForm" :model="deliverForm" label-width="70px" size="small" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="8" :lg="8">
-            <el-form-item label="工程订单" prop="orderNum">
-              <el-input v-model="deliverForm.orderNum" placeholder="请输入工程订单"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="8" :lg="8" style="height: 51px;">
-            <el-form-item label="发货日期" prop="date">
-              <el-date-picker
-                v-model="deliverForm.date"
-                type="date"
-                value-format="yyyy-MM-dd"
-                style="width: 100%;"
-                placeholder="选择日期">
-              </el-date-picker>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="8" :lg="8">
-            <el-form-item label="发货仓库" prop="warehouse">
-              <el-select v-model="deliverForm.warehouse" placeholder="请选择发货仓库">
-                <el-option
-                  v-for="item in warehouseList"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value">
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-
-      <div class="table" style="margin-top: 20px">
-        <el-table :data="detailData.orders" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400">
-          <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
-          <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="发货仓库" prop="stockIds" min-width="160" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <span v-for="(item, index) in scope.row.stockIds" :key="index">{{item.name}}</span>
-            </template>
-          </el-table-column>
-          <el-table-column align="center" label="库存数" prop="stockNumber" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="销售订单号" prop="retailOrderId" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="产品编码" prop="materialCode" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="计量单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="申请数量" prop="invoiceNum" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="审批数量" prop="approvalNumber" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="备注" prop="remark" min-width="160" show-overflow-tooltip></el-table-column>
-        </el-table>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="closeDeliverDialog">取 消</el-button>
-        <el-button type="primary" @click="submitDeliverForm">确 定</el-button>
-      </span>
-    </el-dialog>
-
   </div>
 </template>
 
@@ -223,13 +159,6 @@ export default {
     return {
       imageURL: this.$imageUrl,
       detailData: {},
-
-      isShowDeliverDialog: false,
-      deliverForm: {
-        orderNum: '',
-        date: '',
-      },
-      warehouseList: [],
     }
   },
 
@@ -292,21 +221,6 @@ export default {
       })
     },
 
-    // 打开 直调发货
-    openDeliverDialog() {
-      this.isShowDeliverDialog = true;
-    },
-
-    // 关闭 直调发货
-    closeDeliverDialog() {
-      this.isShowDeliverDialog = false;
-    },
-
-    // 提交 直调发货
-    submitDeliverForm() {
-
-    },
-
   }
 }
 </script>

+ 180 - 215
src/views/supply/apply/components/engin_detail.vue

@@ -2,130 +2,138 @@
   <div class="detail-container">
     <el-page-header @back="goBack" content="详情"></el-page-header>
 
-    <div id="printData">
-      <div class="main-title">
-        <div class="title">工程订单</div>
-      </div>
+    <div class="main-title">
+      <div class="title">工程发货申请单信息</div>
+    </div>
 
-      <div class="diy-table-1">
-        <el-row>
-          <el-col :span="8" class="item">
-            <div class="label">订单号</div>
-            <div class="value">{{detailData.billNo}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">订单日期</div>
-            <div class="value">{{detailData.fdate}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">单据状态</div>
-            <div class="value">{{detailData.srcStockId}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">工程登录单号</div>
-            <div class="value">{{detailData.destStockId}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">项目名称</div>
-            <div class="value">{{detailData.approveDate}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">单据类型</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">经销商编码</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">使用单位</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">安装地址</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">工程编号</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">厂工厂编码</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">工程登录类型</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">文件编号</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">制单人</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="8" class="item">
-            <div class="label">制单日期</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="24" class="item">
-            <div class="label">格力回复</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="24" class="item">
-            <div class="label">格力内部备注</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="6" class="item">
-            <div class="label">审核人</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="6" class="item">
-            <div class="label">审核日期</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="6" class="item">
-            <div class="label">关闭人</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="6" class="item">
-            <div class="label">关闭日期</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-          <el-col :span="24" class="item">
-            <div class="label">备注</div>
-            <div class="value">{{detailData.approverId}}</div>
-          </el-col>
-        </el-row>
-      </div>
+    <div class="diy-table-1">
+      <el-row>
+        <el-col :span="8" class="item">
+          <div class="label">发货申请单号</div>
+          <div class="value">{{detailData.id}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">申请日期</div>
+          <div class="value">{{detailData.createTime}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">单据状态</div>
+          <div class="value">{{detailData.examineStatus | statusFilter}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">经销商编号</div>
+          <div class="value">{{detailData.customerNumber}}</div>
+        </el-col>
+        <el-col :span="16" class="item">
+          <div class="label">经销商名称</div>
+          <div class="value">{{detailData.customerName}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">工程登录编码</div>
+          <div class="value">{{detailData.enginOrderNo}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">工程项目名称</div>
+          <div class="value">{{detailData.refProjectName}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">工程登录类型</div>
+          <div class="value">{{detailData.enginOrderType | enginTypeFilter}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">厂工程编号</div>
+          <div class="value">{{detailData.refFactoryNo}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">使用单位</div>
+          <div class="value">{{detailData.refUseUnit}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label"></div>
+          <div class="value"></div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">联系人</div>
+          <div class="value">{{detailData.refLinkman}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">固定电话</div>
+          <div class="value">{{detailData.refTel}}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">移动电话</div>
+          <div class="value">{{detailData.refPhone}}</div>
+        </el-col>
+        <el-col :span="24" class="item">
+          <div class="label">安装地址</div>
+          <div class="value">{{detailData.refInstallAddress}}</div>
+        </el-col>
+        <el-col :span="24" class="item">
+          <div class="label">备注</div>
+          <div class="value">{{detailData.remark}}</div>
+        </el-col>
+        <el-col :span="24" class="item file">
+          <div class="label">附件</div>
+          <div class="value">
+            <div class="file-list">
+              <div class="file-item">
+                <el-image v-if="checkFileType(detailData.fileUrl) == 'image'" class="img" :src="imageURL + detailData.fileUrl" :preview-src-list="[imageURL + detailData.fileUrl]"></el-image>
+                <div v-else class="box2" @click="openLink(detailData.fileUrl)">
+                  <img src="@/assets/common/word.png" v-if="checkFileType(detailData.fileUrl) == 'word'" />
+                  <img src="@/assets/common/excel.png" v-if="checkFileType(detailData.fileUrl) == 'excel'" />
+                  <img src="@/assets/common/ppt.png" v-if="checkFileType(detailData.fileUrl) == 'ppt'" />
+                  <img src="@/assets/common/pdf.png" v-if="checkFileType(detailData.fileUrl) == 'pdf'" />
+                  <div class="name ellipsis-3">{{ detailData.fileName }}</div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </el-col>
+        <el-col :span="6" class="item">
+          <div class="label">制单人</div>
+          <div class="value">{{detailData.createBy}}</div>
+        </el-col>
+        <el-col :span="6" class="item">
+          <div class="label">制单日期</div>
+          <div class="value">{{detailData.createTime}}</div>
+        </el-col>
+        <el-col :span="6" class="item">
+          <div class="label">审核人</div>
+          <div class="value">{{detailData.approvalName}}</div>
+        </el-col>
+        <el-col :span="6" class="item">
+          <div class="label">审核日期</div>
+          <div class="value">{{detailData.approvalTime}}</div>
+        </el-col>
+        <el-col :span="24" class="item">
+          <div class="label">审批说明</div>
+          <div class="value">{{detailData.approvalRemark}}</div>
+        </el-col>
+      </el-row>
+    </div>
 
-      <div class="main-title">
-        <div class="title">货品信息</div>
-      </div>
+    <div class="main-title">
+      <div class="title">货品信息</div>
+    </div>
 
-      <div class="table" style="margin-top: 20px">
-        <el-table :data="detailData.kingDeeTransferItems" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400">
-          <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
-          <el-table-column align="center" label="引用记录" prop="materialNumber" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="销售类型" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="产品编码" prop="model" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="产品名称" prop="baseUnitId" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="规格型号" prop="qty" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="单位" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="总数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="是否使用返利" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="返利使用比例" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="是否直调" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="直调数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="已发货数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="单价" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="金额" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="返利" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="备注" prop="qty" min-width="160" show-overflow-tooltip></el-table-column>
-        </el-table>
-      </div>
+    <div class="table" style="margin-top: 20px">
+      <el-table :data="detailData.orders" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400">
+        <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
+        <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="订单日期" prop="theTime" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="销售订单号" prop="retailOrderId" min-width="180" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="物料代码" prop="materialOldNumber" min-width="120" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品编码" prop="materialCode" min-width="120" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="申请数量" prop="invoiceNum" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="审批数量" prop="approvalNumber" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="备注" prop="remark" min-width="160" show-overflow-tooltip></el-table-column>
+      </el-table>
+    </div>
 
+    <div v-if="isExamine">
       <div class="main-title">
         <div class="title">审批记录</div>
       </div>
@@ -133,121 +141,63 @@
         <el-row :gutter="0">
           <el-col :span="12" class="item">
             <div class="label">审批人</div>
-            <div class="value">2022123233435342</div>
+            <div class="value">{{detailData.approvalName}}</div>
           </el-col>
           <el-col :span="12" class="item">
             <div class="label">审批结果</div>
-            <div class="value">2022123233435342</div>
+            <div class="value">{{detailData.examineStatus | statusFilter}}</div>
           </el-col>
           <el-col :span="24" class="item">
             <div class="label">审批说明</div>
-            <div class="value">2022123233435342</div>
+            <div class="value">{{detailData.approvalRemark}}</div>
           </el-col>
         </el-row>
       </div>
-      
     </div>
     
     <div class="page-footer">
       <div class="footer" :class="classObj">
-        <el-button  type="primary" @click="openDeliverDialog">直调发货</el-button>
         <el-popconfirm title="确定关闭吗?" @onConfirm="goBack" style="margin-left: 10px;">
           <el-button slot="reference">关 闭</el-button>
         </el-popconfirm>
       </div>
     </div>
 
-    <el-dialog
-      title="直调发货"
-      :visible.sync="isShowDeliverDialog"
-      width="80%">
-      <el-form ref="deliverForm" :model="deliverForm" label-width="70px" size="small" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="8" :lg="8">
-            <el-form-item label="工程订单" prop="orderNum">
-              <el-input v-model="deliverForm.orderNum" placeholder="请输入工程订单"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="8" :lg="8" style="height: 51px;">
-            <el-form-item label="发货日期" prop="date">
-              <el-date-picker
-                v-model="deliverForm.date"
-                type="date"
-                value-format="yyyy-MM-dd"
-                style="width: 100%;"
-                placeholder="选择日期">
-              </el-date-picker>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="8" :lg="8">
-            <el-form-item label="发货仓库" prop="warehouse">
-              <el-select v-model="deliverForm.warehouse" placeholder="请选择发货仓库">
-                <el-option
-                  v-for="item in warehouseList"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value">
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-
-      <div class="table" style="margin-top: 20px">
-        <el-table :data="detailData.kingDeeTransferItems" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400">
-          <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
-          <el-table-column align="center" label="引用记录" prop="materialNumber" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="销售类型" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="产品编码" prop="model" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="产品名称" prop="baseUnitId" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="规格型号" prop="qty" min-width="160" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="单位" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="总数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="是否使用返利" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="返利使用比例" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="是否直调" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="直调数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="已发货数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="单价" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="金额" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="返利" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="备注" prop="qty" min-width="160" show-overflow-tooltip></el-table-column>
-        </el-table>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="closeDeliverDialog">取 消</el-button>
-        <el-button type="primary" @click="submitDeliverForm">确 定</el-button>
-      </span>
-    </el-dialog>
-
   </div>
 </template>
 
 <script>
-import print from 'vue-print-nb'
-import { getDetail } from "@/api/supply/apply";
+import { getEnginDetail } from "@/api/supply/apply";
+import { getFileUrl } from '@/api/common';
 
 export default {
   name: 'EnginDetail',
   componentName: 'EnginDetail',
   props: ['listItem'],
-  directives: {
-    print
+  filters: {
+    statusFilter(val) {
+      const statusList = [
+        { label: '已保存', value: 'SAVE' },
+        { label: '待审核', value: 'WAIT' },
+        { label: '审核通过', value: 'OK' },
+        { label: '审核驳回', value: 'FAIL' },
+        { label: '已关闭', value: 'CLOSE' },
+      ];
+      let obj = statusList.find(o => o.value == val);
+      return obj ? obj.label : ''
+    },
+    enginTypeFilter(val) {
+      const MAP = {
+        HOME: '家用',
+        TRADE: '商用',
+      }
+      return MAP[val];
+    }
   },
   data() {
     return {
-      printObj: {
-        id: 'printData'
-      },
+      imageURL: this.$imageUrl,
       detailData: {},
-
-      isShowDeliverDialog: false,
-      deliverForm: {
-        orderNum: '',
-        date: '',
-      },
-      warehouseList: [],
     }
   },
 
@@ -261,6 +211,9 @@ export default {
         openSidebar: this.sidebar.opened
       }
     },
+    isExamine() {
+      return this.detailData.examineStatus === 'OK' || this.detailData.examineStatus === "FAIL"
+    },
   },
 
   created() {
@@ -275,24 +228,36 @@ export default {
 
     // 获取详情
     getDetail() {
-      getDetail({id: this.listItem.id}).then(res => {
+      getEnginDetail({id: this.listItem.id}).then(res => {
         this.detailData = res.data;
       })
     },
 
-    // 打开 直调发货
-    openDeliverDialog() {
-      this.isShowDeliverDialog = true;
-    },
-
-    // 关闭 直调发货
-    closeDeliverDialog() {
-      this.isShowDeliverDialog = false;
-    },
+    // 检查文件类型
+    checkFileType(url) {
+      if(!url) return '';
+			const fileSuffix = url.substring(url.lastIndexOf(".") + 1);
 
-    // 提交 直调发货
-    submitDeliverForm() {
+			if (['jpg', 'jpeg', 'png'].includes(fileSuffix)) {
+				return 'image';
+			}else if (['doc', 'docx', 'dot', 'wps', 'wpt'].includes(fileSuffix)) {
+				return 'word';
+			}else if(['xls', 'xlsx', 'xlt', 'et', 'ett'].includes(fileSuffix)) {
+				return 'excel';
+			}else if(['ppt', 'pptx', 'dps', 'dpt', 'pot', 'pps'].includes(fileSuffix)) {
+				return 'ppt';
+			}else if(['pdf'].includes(fileSuffix)) {
+				return 'pdf';
+			}else {
+        return '';
+      }
+		},
 
+    // 打开链接
+    openLink(url) {
+      getFileUrl({key: url}).then(res => {
+        window.open(res.data);
+      })
     },
 
   }

+ 124 - 87
src/views/supply/apply/components/engin_examine.vue

@@ -3,98 +3,111 @@
     <el-page-header @back="goBack" content="审批"></el-page-header>
 
     <div class="main-title">
-      <div class="title">工程订单</div>
+      <div class="title">工程发货申请单信息</div>
     </div>
 
     <div class="diy-table-1">
       <el-row>
         <el-col :span="8" class="item">
-          <div class="label">单号</div>
-          <div class="value">{{detailData.billNo}}</div>
+          <div class="label">发货申请单号</div>
+          <div class="value">{{detailData.id}}</div>
         </el-col>
         <el-col :span="8" class="item">
-          <div class="label">订单日期</div>
-          <div class="value">{{detailData.fdate}}</div>
+          <div class="label">申请日期</div>
+          <div class="value">{{detailData.createTime}}</div>
         </el-col>
         <el-col :span="8" class="item">
           <div class="label">单据状态</div>
-          <div class="value">{{detailData.srcStockId}}</div>
+          <div class="value">{{detailData.examineStatus | statusFilter}}</div>
         </el-col>
         <el-col :span="8" class="item">
-          <div class="label">工程登录单号</div>
-          <div class="value">{{detailData.destStockId}}</div>
+          <div class="label">经销商编号</div>
+          <div class="value">{{detailData.customerNumber}}</div>
         </el-col>
-        <el-col :span="8" class="item">
-          <div class="label">项目名称</div>
-          <div class="value">{{detailData.approveDate}}</div>
+        <el-col :span="16" class="item">
+          <div class="label">经销商名称</div>
+          <div class="value">{{detailData.customerName}}</div>
         </el-col>
         <el-col :span="8" class="item">
-          <div class="label">单据类型</div>
-          <div class="value">{{detailData.approverId}}</div>
+          <div class="label">工程登录编码</div>
+          <div class="value">{{detailData.enginOrderNo}}</div>
         </el-col>
         <el-col :span="8" class="item">
-          <div class="label">经销商编码</div>
-          <div class="value">{{detailData.approverId}}</div>
+          <div class="label">工程项目名称</div>
+          <div class="value">{{detailData.refProjectName}}</div>
         </el-col>
         <el-col :span="8" class="item">
-          <div class="label">使用单位</div>
-          <div class="value">{{detailData.approverId}}</div>
+          <div class="label">工程登录类型</div>
+          <div class="value">{{detailData.enginOrderType | enginTypeFilter}}</div>
         </el-col>
         <el-col :span="8" class="item">
-          <div class="label">安装地址</div>
-          <div class="value">{{detailData.approverId}}</div>
+          <div class="label">厂工程编号</div>
+          <div class="value">{{detailData.refFactoryNo}}</div>
         </el-col>
         <el-col :span="8" class="item">
-          <div class="label">工程编号</div>
-          <div class="value">{{detailData.approverId}}</div>
+          <div class="label">使用单位</div>
+          <div class="value">{{detailData.refUseUnit}}</div>
         </el-col>
         <el-col :span="8" class="item">
-          <div class="label">厂工厂编码</div>
-          <div class="value">{{detailData.approverId}}</div>
+          <div class="label"></div>
+          <div class="value"></div>
         </el-col>
         <el-col :span="8" class="item">
-          <div class="label">工程登录类型</div>
-          <div class="value">{{detailData.approverId}}</div>
+          <div class="label">联系人</div>
+          <div class="value">{{detailData.refLinkman}}</div>
         </el-col>
         <el-col :span="8" class="item">
-          <div class="label">文件编号</div>
-          <div class="value">{{detailData.approverId}}</div>
+          <div class="label">固定电话</div>
+          <div class="value">{{detailData.refTel}}</div>
         </el-col>
         <el-col :span="8" class="item">
-          <div class="label">制单人</div>
-          <div class="value">{{detailData.approverId}}</div>
-        </el-col>
-        <el-col :span="8" class="item">
-          <div class="label">制单日期</div>
-          <div class="value">{{detailData.approverId}}</div>
+          <div class="label">移动电话</div>
+          <div class="value">{{detailData.refPhone}}</div>
         </el-col>
         <el-col :span="24" class="item">
-          <div class="label">格力回复</div>
-          <div class="value"><el-input v-model="detailData.remark" placeholder="请输入内容"></el-input></div>
+          <div class="label">安装地址</div>
+          <div class="value">{{detailData.refInstallAddress}}</div>
         </el-col>
         <el-col :span="24" class="item">
-          <div class="label">格力内部备注</div>
-          <div class="value"><el-input v-model="detailData.remark" placeholder="请输入内容"></el-input></div>
+          <div class="label">备注</div>
+          <div class="value">{{detailData.remark}}</div>
+        </el-col>
+        <el-col :span="24" class="item file">
+          <div class="label">附件</div>
+          <div class="value">
+            <div class="file-list">
+              <div class="file-item">
+                <el-image v-if="checkFileType(detailData.fileUrl) == 'image'" class="img" :src="imageURL + detailData.fileUrl" :preview-src-list="[imageURL + detailData.fileUrl]"></el-image>
+                <div v-else class="box2" @click="openLink(detailData.fileUrl)">
+                  <img src="@/assets/common/word.png" v-if="checkFileType(detailData.fileUrl) == 'word'" />
+                  <img src="@/assets/common/excel.png" v-if="checkFileType(detailData.fileUrl) == 'excel'" />
+                  <img src="@/assets/common/ppt.png" v-if="checkFileType(detailData.fileUrl) == 'ppt'" />
+                  <img src="@/assets/common/pdf.png" v-if="checkFileType(detailData.fileUrl) == 'pdf'" />
+                  <div class="name ellipsis-3">{{ detailData.fileName }}</div>
+                </div>
+              </div>
+            </div>
+          </div>
         </el-col>
         <el-col :span="6" class="item">
-          <div class="label">审核人</div>
-          <div class="value">{{detailData.approverId}}</div>
+          <div class="label">制单人</div>
+          <div class="value">{{detailData.createBy}}</div>
         </el-col>
         <el-col :span="6" class="item">
-          <div class="label">审核日期</div>
-          <div class="value">{{detailData.approverId}}</div>
+          <div class="label">制单日期</div>
+          <div class="value">{{detailData.createTime}}</div>
         </el-col>
         <el-col :span="6" class="item">
-          <div class="label">关闭人</div>
-          <div class="value">{{detailData.approverId}}</div>
+          <div class="label">审核人</div>
+          <div class="value">{{detailData.approvalName}}</div>
         </el-col>
         <el-col :span="6" class="item">
-          <div class="label">关闭日期</div>
-          <div class="value">{{detailData.approverId}}</div>
+          <div class="label">审核日期</div>
+          <div class="value">{{detailData.approvalTime}}</div>
         </el-col>
         <el-col :span="24" class="item">
-          <div class="label">备注</div>
-          <div class="value">{{detailData.approverId}}</div>
+          <div class="label">审批说明</div>
+          <div class="value">{{detailData.approvalRemark}}</div>
         </el-col>
       </el-row>
     </div>
@@ -104,24 +117,27 @@
     </div>
 
     <div class="table" style="margin-top: 20px">
-      <el-table :data="detailData.kingDeeTransferItems" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400">
+      <el-table :data="detailData.orders" element-loading-text="Loading" border fit highlight-current-row stripe max-height="400">
         <el-table-column align="center" label="序号" type="index" width="50"></el-table-column>
-        <el-table-column align="center" label="引用记录" prop="materialNumber" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="销售类型" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="产品编码" prop="model" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="产品名称" prop="baseUnitId" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="规格型号" prop="qty" min-width="160" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="单位" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="总数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="是否使用返利" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="返利使用比例" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="是否直调" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="直调数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="已发货数量" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="单价" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="金额" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="返利" prop="qty" min-width="100" show-overflow-tooltip></el-table-column>
-        <el-table-column align="center" label="备注" prop="qty" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="订单日期" prop="theTime" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="销售订单号" prop="retailOrderId" min-width="180" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="物料代码" prop="materialOldNumber" min-width="120" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品编码" prop="materialCode" min-width="120" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="单位" prop="unit" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="申请数量" prop="invoiceNum" min-width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column align="center" label="审批数量" prop="approvalNumber" min-width="100" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.approvalNumber" size="small" type="number"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="备注" prop="remark" min-width="160" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.remark" size="small"></el-input>
+          </template>
+        </el-table-column>
       </el-table>
     </div>
 
@@ -132,16 +148,11 @@
       <el-row :gutter="0">
         <el-col :span="12" class="item">
           <div class="label">审批人</div>
-          <div class="value">2022123233435342</div>
+          <div class="value">{{userName}}</div>
         </el-col>
         <el-col :span="12" class="item">
-          <div class="label">审批结果</div>
-          <div class="value">
-            <el-radio-group v-model="examineForm.status">
-              <el-radio :label="true">通过</el-radio>
-              <el-radio :label="false">驳回</el-radio>
-            </el-radio-group>
-          </div>
+          <div class="label">审批日期</div>
+          <div class="value">{{getDate()}}</div>
         </el-col>
         <el-col :span="24" class="item">
           <div class="label">审批说明</div>
@@ -152,12 +163,9 @@
     
     <div class="page-footer">
       <div class="footer" :class="classObj">
-        <el-button type="primary" @click="clickSubmitForm" :loading="formLoading">{{ formLoading ? '提交中 ...' : '提 交' }}</el-button>
-        <el-popconfirm
-          title="确定关闭吗?"
-          @onConfirm="goBack"
-          style="margin-left: 10px;"
-        >
+        <el-button type="primary" @click="clickSubmitForm('OK')">审批通过</el-button>
+        <el-button type="warning" @click="clickSubmitForm('FAIL')">审批驳回</el-button>
+        <el-popconfirm title="确定关闭吗?" @onConfirm="goBack" style="margin-left: 10px;">
           <el-button slot="reference">关 闭</el-button>
         </el-popconfirm>
       </div>
@@ -167,7 +175,7 @@
 </template>
 
 <script>
-import { getDetail } from "@/api/supply/apply";
+import { getEnginDetail, examineEngin } from "@/api/supply/apply";
 
 export default {
   name: 'EnginExamine',
@@ -175,14 +183,10 @@ export default {
   props: ['listItem'],
   data() {
     return {
-      printObj: {
-        id: 'printData'
-      },
       detailData: {},
+      userName: JSON.parse(localStorage.getItem("supply_user")).nickName,
 
-      formLoading: false,
       examineForm: {
-        status: true,
         remark: '',
       }
     }
@@ -205,6 +209,22 @@ export default {
   },
 
   methods: {
+    getDate() {
+      var date = new Date();
+      var seperator1 = "-";
+      var year = date.getFullYear();
+      var month = date.getMonth() + 1;
+      var strDate = date.getDate();
+      if (month >= 1 && month <= 9) {
+          month = "0" + month;
+      }
+      if (strDate >= 0 && strDate <= 9) {
+          strDate = "0" + strDate;
+      }
+      var currentdate = year + seperator1 + month + seperator1 + strDate;
+      return currentdate;
+    },
+
     // 返回列表
     goBack() {
       this.$emit('backListFormDetail');
@@ -212,13 +232,30 @@ export default {
 
     // 获取详情
     getDetail() {
-      getDetail({id: this.listItem.id}).then(res => {
+      getEnginDetail({id: this.listItem.id}).then(res => {
         this.detailData = res.data;
       })
     },
 
-    clickSubmitForm() {
-
+    // 提交审批
+    clickSubmitForm(val) {
+      this.$confirm('此操作将审批订单, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        let params = {
+          id: this.detailData.id,
+          examineStatus: val,
+          approvalRemark: this.examineForm.remark,
+          orders: this.detailData.orders,
+        };
+        examineEngin(params).then(res => {
+          this.$successMsg();
+          this.goBack();
+          this.$parent.getList();
+        })
+      }).catch(() => {});
     },
 
   }

+ 56 - 31
src/views/supply/apply/components/engin_form.vue

@@ -174,18 +174,18 @@
       <el-form ref="screenForm" :model="screenForm" size="small" label-position="left" label-width="100px">
         <el-row :gutter="20">
           <el-col :xs="12" :sm="12" :lg="6">
-            <el-form-item prop="orderNum" label="工程登录编号">
-              <el-input v-model="screenForm.orderNum" placeholder="请输入工程登录编号"></el-input>
+            <el-form-item prop="loginNum" label="工程登录编号">
+              <el-input v-model="screenForm.loginNum" placeholder="请输入工程登录编号"></el-input>
             </el-form-item>
           </el-col>
           <el-col :xs="12" :sm="12" :lg="6">
-            <el-form-item prop="orderNum" label="工程名称">
-              <el-input v-model="screenForm.orderNum" placeholder="请输入工程名称"></el-input>
+            <el-form-item prop="enginName" label="工程名称">
+              <el-input v-model="screenForm.enginName" placeholder="请输入工程名称"></el-input>
             </el-form-item>
           </el-col>
           <el-col :xs="12" :sm="12" :lg="6">
-            <el-form-item prop="orderNum" label="规格型号">
-              <el-input v-model="screenForm.orderNum" placeholder="请输入规格型号"></el-input>
+            <el-form-item prop="model" label="规格型号">
+              <el-input v-model="screenForm.model" placeholder="请输入规格型号"></el-input>
             </el-form-item>
           </el-col>
           <el-col :xs="12" :sm="12" :lg="6">
@@ -220,26 +220,36 @@
       <div class="table">
         <el-table :data="tableGoodsList" element-loading-text="Loading" border fit highlight-current-row stripe height="400" @selection-change="tableSelectionChange">
           <el-table-column align="center" type="selection" width="55" :selectable='checkboxSelect'></el-table-column>
-          <el-table-column align="center" label="订单类型" prop="orderId" min-width="180" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="工程登录编号" prop="orderId" min-width="180" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="订单类型" prop="orderType" min-width="180" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{scope.row.orderType | orderTypeFilter}}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="工程登录编号" prop="enginOrderNo" min-width="180" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="销售类型" prop="saleTypeName" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="物料代码" prop="materialOldNumber" min-width="160" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="产品编码" prop="materialCode" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="单位" prop="unit" min-width="80" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="数量" prop="qty" min-width="80" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="订单数量" prop="qty" min-width="80" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="已申请数量" prop="alreadyInvoiceNum" min-width="100" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="未申请数量" prop="refundableQty" min-width="100" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="本次申请数量" prop="invoiceNum" min-width="110" show-overflow-tooltip>
             <template slot-scope="scope">
               <el-input v-model="scope.row.invoiceNum" size="small"></el-input>
             </template>
           </el-table-column>
-          <el-table-column align="center" label="已申请数量" prop="alreadyInvoiceNum" min-width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column align="center" label="未申请数量" prop="refundableQty" min-width="100" show-overflow-tooltip></el-table-column>
           <el-table-column align="center" label="总库存数量" prop="stockAdequate" min-width="100" show-overflow-tooltip>
             <template slot-scope="scope">
               {{scope.row.stockAdequate | stockFilter}}
             </template>
           </el-table-column>
-          <el-table-column align="center" label="对应库存数量" prop="stockCorrespond" min-width="110" show-overflow-tooltip></el-table-column>
+          <el-table-column align="center" label="对应库存数量" prop="stockCorrespond" min-width="110" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{scope.row.stockCorrespond | stockFilter}}
+            </template>
+          </el-table-column>
         </el-table>
         <div class="pagination clearfix" style="margin-top: 10px">
           <div class="fr">
@@ -265,7 +275,7 @@
 </template>
 
 <script>
-import { getEnginDetail, addApply, editApply, getGoodsList, getWarehouseList, getDealerList } from "@/api/supply/apply";
+import { getEnginDetail, addEngin, editEngin, getEnginGoodsList, getWarehouseList, getDealerList } from "@/api/supply/apply";
 import { getDictList } from '@/api/common'
 import { findElem } from '@/utils/util'
 import fileUpload from '@/components/Common/file-upload.vue'
@@ -278,12 +288,15 @@ export default {
   componentName: 'EnginForm',
   props: ['listItem'],
   filters: {
+    orderTypeFilter(val) {
+      
+    },
     stockFilter(val) {
-      const MAP = {
-        0: '不充足',
-        1: '充足'
+      if(val > 50) {
+        return '充足';
+      }else {
+        return '紧缺';
       }
-      return MAP[val]
     }
   },
   data() {
@@ -316,9 +329,11 @@ export default {
       warehouseList: [],
       isShowDialog: false,
       screenForm: {
+        loginNum: '',
+        enginName: '',
+        model: '',
+        date: '',
         warehouse: '',
-        type: '',
-        orderNum: '',
       },
       currentPage: 1,
       listTotal: 0,
@@ -428,12 +443,15 @@ export default {
 
     // 获取商品列表
     getGoodsList() {
-      getGoodsList({
+      getEnginGoodsList({
         pageNum: this.currentPage,
         pageSize: 10,
+        enginOrderNo: this.screenForm.loginNum,
+        refProjectName: this.screenForm.enginName,
+        specification: this.screenForm.model,
+        startTime: this.screenForm.date ? this.screenForm.date[0] : '',
+        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
         correspondId: this.screenForm.warehouse,
-        mainId: this.screenForm.type,
-        id: this.screenForm.orderNum,
       }).then(res => {
         res.data.records.forEach(item => {
           item.mainOrderId = item.id;
@@ -473,15 +491,13 @@ export default {
         return this.$errorMsg('请选择仓库');
       }
       this.isShowDialog = true;
-      if(this.screenForm.warehouse && this.screenForm.type) {
-        this.getGoodsList();
-      }
+      this.getGoodsList();
     },
 
     // 提交筛选表单
     submitScreenForm() {
-      if(!this.screenForm.warehouse || !this.screenForm.type) {
-        return this.$errorMsg('请选择仓库和产品大类');
+      if(!this.screenForm.warehouse) {
+        return this.$errorMsg('请选择仓库');
       }
       this.currentPage = 1;
       this.getGoodsList();
@@ -582,25 +598,34 @@ export default {
 
           let correspondName = this.warehouseList[findElem(this.warehouseList, 'id', this.screenForm.warehouse)].name;
           let params = {
-            id: this.listItem ? this.listItem.id : '',
             orderTime: this.mainForm.date + ' 00:00:00',
             remark: this.mainForm.remark,
+            enginOrderNo: this.mainForm.loginNum,
+            refProjectName: this.mainForm.enginName,
+            enginOrderType: this.mainForm.loginType,
+            refFactoryNo: this.mainForm.factoryNum,
+            refUseUnit: this.mainForm.company,
+            refLinkman: this.mainForm.contactMan,
+            refTel: this.mainForm.tel,
+            refPhone: this.mainForm.phone,
+            refInstallAddress: this.mainForm.address,
+            remark: this.mainForm.remark,
             fileUrl: this.fileList && this.fileList.length > 0 ? this.fileList[0].url : '',
             fileName: this.fileList && this.fileList.length > 0 ? this.fileList[0].name : '',
-            orderType: 1, // 1零售单 2家用工程 3商用工程
             correspondId: this.screenForm.warehouse,
             correspondName,
             orders: this.goodsList,
             examineStatus: status,
           }
           if(this.listItem) {
-            editApply(params).then(res => {
+            params.id = this.listItem.id;
+            editEngin(params).then(res => {
               this.$successMsg('编辑成功');
               this.goBack();
               this.$parent.getList();
             })
           }else {
-            addApply(params).then(res => {
+            addEngin(params).then(res => {
               this.$successMsg('添加成功');
               this.goBack();
               this.$parent.getList();