Browse Source

Merge branch 'develop' of ssh://gogs.zfire.top:2222/zfire-front/zfire-newmall-admin into develop

* 'develop' of ssh://gogs.zfire.top:2222/zfire-front/zfire-newmall-admin:
  查看发货条码
  no message
  订单详情发货
  no message
  发货参数调整
  添加是否关联条码逻辑
  一物一码调整
  发货优化
  修改商户/网点管理
  导入条码修改
Moss 1 year ago
parent
commit
fad9fb3001

+ 3 - 3
src/components/Mall/Member/member-browse.vue

@@ -5,7 +5,7 @@
         <el-table-column align="center" label="商品信息" prop="goodsName" min-width="200">
           <template slot-scope="scope">
             <div class="goods-info">
-              <el-image style="width: 40px; height: 40px;" :src="scope.row.imgUrl" :preview-src-list="[scope.row.imgUrl]" fit="cover"></el-image>
+              <el-image style="width: 40px; height: 40px;" :src="scope.row.goodsImg" :preview-src-list="[scope.row.goodsImg]" fit="cover"></el-image>
               <div class="name">{{scope.row.goodsName}}</div>
             </div>
           </template>
@@ -72,12 +72,12 @@ export default {
     handleSizeChange(val) {
       this.pageSize = val
       this.currentPage = 1
-      this.getList()
+      this.getBrowseList()
     },
     // 更改当前页
     handleCurrentChange(val) {
       this.currentPage = val
-      this.getList()
+      this.getBrowseList()
     },
   }
 }

+ 6 - 6
src/components/Mall/Member/member-order.vue

@@ -90,12 +90,12 @@ export default {
       this.getList()
     },
     goOrderDetail(row) {
-      this.$router.push({
-        path: '/order/detail',
-        query: {
-          orderId: row.orderId
-        }
-      })
+		this.$router.push({
+		  name: "order_detail",
+		  query: {
+		    orderId:row.orderId
+		  }
+		})
     }
   }
 }

+ 6 - 1
src/components/Mall/Member/member-warranty.vue

@@ -88,7 +88,12 @@ export default {
     },
     goOrderDetail(row) {
 		this.$router.push({
-			name: 'orderSettleManag'
+			name: 'orderSettleManag',
+			params: {
+				pageName: row.payNo,
+				pageType: row.orderChannel,
+				pageCode: row.payNo,
+			},
 		})
     }
   }

+ 421 - 27
src/views/mallManagement/order/order_detail/index.vue

@@ -232,7 +232,7 @@
     <el-dialog :title="dialogTitle" :visible.sync="remarkVisible" :show-close="false" :width="dialogWidth"
       :close-on-click-modal="false">
       <el-form :model="orderForm" :rules="orderFormRules" ref="orderForm" v-if="curOpenDialogType !== 'query'"
-        label-width="90px" label-position="left">
+        label-width="100px" label-position="left">
         <el-form-item prop="remark" v-if="curOpenDialogType === 'remark'">
           <el-input type="textarea" :autosize="{ minRows: 8, maxRows: 16 }" placeholder="请输入备注内容" v-model="remark"
             maxlength="100" show-word-limit>
@@ -250,27 +250,218 @@
         <el-form-item label="收货地址" prop="receAddress" v-if="curOpenDialogType === 'info'">
           <el-input v-model="orderForm.receAddress" autocomplete="off" placeholder="请输入收货地址"></el-input>
         </el-form-item>
-        <el-form-item label="快递单号" prop="logisticsNo" v-if="curOpenDialogType === 'send'">
-          <el-input v-model="orderForm.logisticsNo" autocomplete="off" placeholder="请输入快递单号"></el-input>
-        </el-form-item>
-        <el-form-item label="物流公司" prop="companyCode" v-if="curOpenDialogType === 'send'">
-          <el-select v-model="orderForm.companyCode" placeholder="请选择物流公司" style="width: 100%;">
-            <el-option :label="item.name" :value="item.code" v-for="(item, index) in companyList"
-              :key="index"></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="仓储" prop="storageId" v-if="curOpenDialogType === 'send'">
-          <el-select v-model="orderForm.storageId" placeholder="请选择仓储" style="width: 100%;">
-            <el-option :label="item.storageName" :value="item.storageId" v-for="(item, index) in storageList"
-              :key="index"></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="是否派单" prop="workOrder" v-if="curOpenDialogType === 'send'">
-          <el-radio-group v-model="orderForm.workOrder">
-            <el-radio :label="true">是</el-radio>
-            <el-radio :label="false">否</el-radio>
-          </el-radio-group>
-        </el-form-item>
+		<template v-if="curOpenDialogType === 'send'">
+			<el-row :gutter="20">
+				<el-col :span="6">
+					<el-form-item label="发货方式" prop="pickType">
+					  <el-radio-group v-model="orderForm.pickType">
+					    <el-radio label="YES">自提/自送</el-radio>
+					    <el-radio label="NO">快递物流</el-radio>
+					  </el-radio-group>
+					</el-form-item>
+				</el-col>
+				<el-col :span="6">
+					<el-form-item v-if="orderForm.pickType == 'YES'" label="提货人" prop="pickName" :rules="[{ required: true, message: '提货人不能为空', trigger: 'blur' }]">
+					  <el-input v-model="orderForm.pickName" placeholder="请输入提货人"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="6">
+					<el-form-item v-if="orderForm.pickType == 'YES'" label="提货人电话" prop="pickPhone" :rules="[{ required: true, message: '提货人电话不能为空', trigger: 'blur' },{ pattern:/^((1[3456789]\d{9}))$/, message: '电话号码格式不正确', trigger: 'blur' }]">
+					  <el-input v-model="orderForm.pickPhone" placeholder="请输入提货人电话"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="6">
+					<el-form-item v-if="orderForm.pickType == 'NO'" label="快递单号" prop="logisticsNo">
+					  <el-input v-model="orderForm.logisticsNo" autocomplete="off" placeholder="请输入快递单号"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="6">
+					<el-form-item v-if="orderForm.pickType == 'NO'" label="物流公司" prop="companyCode">
+					  <el-select v-model="orderForm.companyCode" placeholder="请选择物流公司" style="width: 100%;">
+					    <el-option :label="item.name" :value="item.code" v-for="(item, index) in companyList"
+					      :key="index"></el-option>
+					  </el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="6">
+					<el-form-item label="仓储" prop="storageId">
+					  <el-select v-model="orderForm.storageId" placeholder="请选择仓储" style="width: 100%;">
+					    <el-option :label="item.storageName" :value="item.storageId" v-for="(item, index) in storageList"
+					      :key="index"></el-option>
+					  </el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="6">
+					<el-form-item label="是否派单" prop="workOrder">
+					  <el-radio-group v-model="orderForm.workOrder">
+					    <el-radio :label="true">是</el-radio>
+					    <el-radio :label="false">否</el-radio>
+					  </el-radio-group>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<el-card class="box-card">
+						<el-tabs v-model="typeIndex">
+						    <el-tab-pane label="发货数量" name="1"></el-tab-pane>
+						    <el-tab-pane label="发货条码" name="2"></el-tab-pane>
+						</el-tabs>
+						<br/>
+						<el-button size="small" v-show="typeIndex == 2" type="primary" @click="addCode()">新增</el-button>
+						<el-button size="small" v-show="typeIndex == 1" type="primary" @click="handleDownload('导入条码模板')">导入条码模板下载</el-button>
+						<div class="table">
+							<!-- 发货数量 -->
+							<el-form v-show="typeIndex == 1" ref="formData1" :model="formData1" label-width="0" size="small" label-position="left">
+								<el-table :data="formData1.list" element-loading-text="Loading" border fit highlight-current-row stripe>
+									<el-table-column prop="brandName" align="center" label="品牌"></el-table-column>
+									<el-table-column prop="mainName" align="center" label="大类"></el-table-column>
+									<el-table-column prop="smallName" align="center" label="小类"></el-table-column>
+									<el-table-column prop="goodsName" align="center" label="商品名称"></el-table-column>
+									<el-table-column prop="goodsMaterialSpecsName" align="center" label="规格型号"></el-table-column>
+									<el-table-column prop="goodsMaterialUnit" align="center" label="单位">
+										<template slot-scope="scope">
+											{{scope.row.goodsMaterialUnit == 'C'?'整套':scope.row.goodsMaterialUnit == 'I'?"单个":''}}
+										</template>
+									</el-table-column>
+									<el-table-column prop="num" align="center" label="数量"></el-table-column>
+									<el-table-column prop="insideNum" align="center" label="内机数量"></el-table-column>
+									<el-table-column prop="outNum" align="center" label="外机数量"></el-table-column>
+									<el-table-column prop="partNum" align="center" label="配件数量"></el-table-column>
+									<el-table-column prop="insideCodeQty" align="center" label="导入内机条码数量" width="140"></el-table-column>
+									<el-table-column prop="outCodeQty" align="center" label="导入外机条码数量" width="140"></el-table-column>
+									<el-table-column prop="partsCodeQty" align="center" label="导入配件条码数量" width="140"></el-table-column>
+									<el-table-column label="操作" align="center" width="140" fixed="right">
+										<template slot-scope="scope" v-if="joinCode">
+											<el-upload
+											  action='_'
+											  :show-file-list='false'
+											  :http-request="importCode"
+											>
+												<el-button @click="orderDetailId = scope.row.orderDetailId" size="mini" type="text">导入条码</el-button>
+											</el-upload>
+										</template>
+									</el-table-column>
+								</el-table>
+							</el-form>
+							<!-- 发货条码 -->
+							<el-form ref="formData2" :model="formData2">
+								<el-table v-show="typeIndex == 2" :data="formData2.list" element-loading-text="Loading" border fit highlight-current-row stripe>
+									<el-table-column label="品牌" align="center">
+										<template slot-scope="scope">
+											<el-form-item>
+												<el-input type="text" v-model="scope.row.brandName" :disabled="true" placeholder="请输入"></el-input>
+											</el-form-item>
+										</template>
+									</el-table-column>
+									<el-table-column label="商品大类" align="center">
+										<template slot-scope="scope">
+											<el-form-item>
+												<el-input type="text" v-model="scope.row.mainName" :disabled="true" placeholder="请输入"></el-input>
+											</el-form-item>
+										</template>
+									</el-table-column>
+									<el-table-column label="商品小类" align="center">
+										<template slot-scope="scope">
+											<el-form-item>
+												<el-input type="text" v-model="scope.row.smallName" :disabled="true" placeholder="请输入"></el-input>
+											</el-form-item>
+										</template>
+									</el-table-column>
+									<el-table-column prop="" align="center" label="商品名称">
+										<template slot-scope="scope">
+											<el-form-item>
+												<el-input type="text" v-model="scope.row.goodsMaterialName" :disabled="true" placeholder="请输入"></el-input>
+											</el-form-item>
+										</template>
+									</el-table-column>
+									<el-table-column label="规格型号" align="center">
+										<template slot-scope="scope">
+											<el-form-item :prop="'list.' + scope.$index + '.specs'" :rules="[{ required: true, message: `请选择规格型号`, trigger: 'blur' }]">
+												<el-select v-model="scope.row.specs" @change="(e)=>{changeSpecs(e,scope.row)}" value-key="goodsMaterialSpecsName" :disabled="isEdit2 != scope.$index" placeholder="请选择" style="width: 100%;">
+												    <el-option
+												      v-for="(item,ind) in formData1.list"
+												      :key="ind"
+												      :label="item.goodsMaterialSpecsName"
+												      :value="item">
+												    </el-option>
+												</el-select>
+											</el-form-item>
+										</template>
+									</el-table-column>
+									<el-table-column label="物料类型" align="center">
+										<template slot-scope="scope">
+											<el-form-item :prop="'list.' + scope.$index + '.goodsMaterialItemType'" :rules="[{ required: true, message: `请选择物料类型`, trigger: 'blur' }]">
+												<el-select v-model="scope.row.goodsMaterialItemType" @change="(e)=>{changeMaterial(e,scope.row)}" 
+													:disabled="isEdit2 != scope.$index" placeholder="请选择" style="width: 100%;">
+												    <el-option
+												      v-for="(item,ind) in [{name: '内机',id: 'INSIDE'},{name: '外机',id: 'OUT'},{name: '配件',id: 'PARTS'}]"
+												      :key="ind"
+												      :label="item.name"
+												      :value="item.id">
+												    </el-option>
+												</el-select>
+											</el-form-item>
+										</template>
+									</el-table-column>
+									<el-table-column label="物料名称" align="center">
+										<template slot-scope="scope">
+											<el-form-item :prop="'list.' + scope.$index + '.material'" :rules="[{ required: true, message: `请选择物料名称`, trigger: 'blur' }]">
+												<el-select v-model="scope.row.material" @focus="(e)=>{
+													if(!scope.row.goodsMaterialItemType){
+														return $message.warning('请先选择物料类型!');
+													}
+												}" @change="(e)=>{
+													scope.row.materialName = e.name
+													scope.row.stockQty = (e.uniqueCode=='YES'?1:null)
+													scope.row.uniqueCode = e.uniqueCode
+													scope.row.goodsMaterialItemId = e.itemId
+												}" value-key="name" :disabled="isEdit2 != scope.$index" placeholder="请选择" style="width: 100%;">
+												    <el-option
+												      v-for="(item,ind) in scope.row.materialList"
+												      :key="ind"
+												      :label="item.name"
+												      :value="item">
+												    </el-option>
+												</el-select>
+											</el-form-item>
+										</template>
+									</el-table-column>
+									<el-table-column prop="" align="center" label="是否一物一码" >
+										<template slot-scope="scope">
+											<el-form-item>
+												{{scope.row.uniqueCode=='YES'?'是':scope.row.uniqueCode=='NO'?'否':''}}
+											</el-form-item>
+										</template>
+									</el-table-column>
+									<el-table-column prop="" align="center" label="条码" >
+										<template slot-scope="scope">
+											<el-form-item :prop="'list.' + scope.$index + '.materialCode'" :rules="[{ required: true, message: `请输入条码`, trigger: 'blur' }]">
+												<el-input type="text" v-model="scope.row.materialCode" :disabled="isEdit2 != scope.$index" placeholder="请输入"></el-input>
+											</el-form-item>
+										</template>
+									</el-table-column>
+									<el-table-column prop="" align="center" label="数量">
+										<template slot-scope="scope">
+											<el-form-item :prop="'list.' + scope.$index + '.stockQty'" :rules="[{ required: true, message: `请输入数量`, trigger: 'blur' }]">
+												<el-input type="number" v-model="scope.row.stockQty" :disabled="isEdit2 != scope.$index || scope.row.uniqueCode=='YES'" placeholder="请输入"></el-input>
+											</el-form-item>
+										</template>
+									</el-table-column>
+									<el-table-column label="操作" align="right" width="140" fixed="right">
+										<template slot-scope="scope">
+											<el-button size="mini" type="primary" v-if="scope.$index == isEdit2" @click="saveCode(scope.row)">保存</el-button>
+											<el-button size="mini" type="primary" v-if="scope.$index != isEdit2" @click="isEdit2 = scope.$index">编辑</el-button>
+											<el-popconfirm title="确定删除吗?" @confirm="delCode(scope.row.orderDetailCodeId,scope.$index)">
+												<el-button slot="reference" size="mini" type="danger">删除</el-button>
+											</el-popconfirm>
+										</template>
+									</el-table-column>
+								</el-table>
+							</el-form>
+						</div>
+					</el-card>
+				</el-col>
+			</el-row>
+		</template>
       </el-form>
       <el-table v-loading="logisticsLoading" :data="logistics" style="width: 100%" size="mini"
         v-if="curOpenDialogType === 'query'">
@@ -285,7 +476,9 @@
         <el-table-column prop="context" label="物流详情" align="center"></el-table-column>
       </el-table>
       <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="saveForm" v-if="curOpenDialogType !== 'query'">保 存</el-button>
+		  
+        <el-button type="primary" @click="saveForm" v-if="curOpenDialogType !== 'query' && curOpenDialogType !== 'send'">保 存</el-button>
+		<el-button type="primary" @click="deliverGoods" v-if="curOpenDialogType == 'send'">发 货</el-button>
         <el-button @click="cancelForm">{{ curOpenDialogType === 'query' ? '关 闭' : '取 消' }}</el-button>
       </div>
     </el-dialog>
@@ -318,9 +511,10 @@ import {
   confirmOrder,
   getOrderDetail, goodsDeliver,
   saveRemark, orderRefund, orderCompensate, getCompensateList,
-  changeShow
+  changeShow, getCodeDetail, getMaterialList, listImport, saveCode, delCode
 } from "@/api/order";
 import { getExpress, getCompanyList } from "@/api/common";
+import { commonTemplateDownload } from '@/api/common.js'
 import * as Storage from "@/api/storage";
 import { mapGetters } from 'vuex'
 
@@ -344,6 +538,9 @@ export default {
         logisticsNo: '',
         companyCode: '',
         workOrder: true,
+		pickType: 'YES',
+		pickName: '',
+		pickPhone: ''
       },
       orderFormRules: {
         payAmount: [
@@ -456,6 +653,17 @@ export default {
         refundNum: '',
       },
       compensateList: [],
+	  typeIndex: '1',
+	  formData1: {
+	  	list: [],
+	  },
+	  formData2: {
+	  	list: [],
+	  },
+	  isEdit1: 0,
+	  isEdit2: 0,
+	  joinCode: JSON.parse(localStorage.getItem('greemall_user')).joinCode,
+	  orderDetailId: ''
     }
   },
   created() {
@@ -472,10 +680,11 @@ export default {
         this.orderDetail.workerName = this.orderDetail.workerName ? this.orderDetail.workerName : '暂无'
         this.orderDetail.workerPhone = this.orderDetail.workerPhone ? this.orderDetail.workerPhone : ''
         this.evaluateDetail = res.data.orderComment;
+		this.formData1.list = res.data.orderDetails
       })
     },
     showDialog(type) {
-      this.dialogWidth = type === 'query' ? '80%' : '50%'
+      this.dialogWidth = type === 'query' ? '80%' : type === 'send' ? '80%': '50%'
       this.remarkVisible = true
       this.curOpenDialogType = type
       if (type === 'remark') {
@@ -705,7 +914,192 @@ export default {
         this.getDetail();
         this.$successMsg();
       })
-    }
+    },
+	
+	async getCodeDetail(){
+		getCodeDetail({orderId: this.orderId}).then(async res => {
+			for(var item of res.data){
+				item.specs = {goodsMaterialSpecsName: item.specsName}
+				item.material = {name: item.materialName}
+				item.materialList = await this.getMaterialList(item.specsName,item.goodsMaterialItemType)
+			}
+			this.formData2.list = res.data
+		})
+	},
+	async getMaterialList(specsName,type){
+		return new Promise((resolve, reject) => {
+			getMaterialList({
+				pageNum: 1,
+				pageSize: -1,
+				specsName,
+				type
+			}).then(async res => {
+				resolve(res.data.records) 
+			})
+		})
+		
+	},
+	async changeSpecs(e,row){
+		row.brandName = e.brandName
+		row.brandId = e.brandId
+		row.mainName = e.mainName
+		row.mainId = e.mainNumber
+		row.smallName = e.smallName
+		row.smallId = e.smallNumber
+		row.specsName = e.goodsMaterialSpecsName
+		row.goodsMaterialName = e.goodsName
+		row.goodsMaterialId = e.goodsMaterialId
+		row.material = null
+		row.materialName = ''
+		row.stockQty = ''
+		row.uniqueCode = ''
+		row.materialList = await this.getMaterialList(row.specsName,row.goodsMaterialItemType)
+		row.orderDetailId = e.orderDetailId
+	},
+	async changeMaterial(e,row){
+		if(!row.specs){
+			return this.$message.warning('请先选择规格型号!');
+		}
+		row.material = null
+		row.materialName = ''
+		row.stockQty = ''
+		row.uniqueCode = ''
+		row.materialList = await this.getMaterialList(row.specsName,row.goodsMaterialItemType)
+	},
+	//发货新增条码
+	addCode(){
+		this.$refs.formData2.validate((valid) => {
+			if (valid) {
+				this.isEdit2 = 0
+				this.formData2.list.unshift({
+					brandId: '',
+					brandName: '',
+					mainId: '',
+					mainName: '',
+					stockQty: '',
+					smallId: '',
+					smallName: '',
+					goodsMaterialItemType: '',
+					goodsMaterialName: '',
+					goodsMaterialId: '',
+					materialCode: '',
+					uniqueCode: '',
+					specs: null,
+					specsName: '',
+					materialName: '',
+					material: null,
+					materialList: [],
+					orderDetailId: '',
+					goodsMaterialItemId: ''
+				})
+			}
+		});
+	},
+	delCode(orderDetailCodeId,index){
+		if(orderDetailCodeId){
+			delCode({
+			  orderDetailCodeId
+			}).then(res => {
+			  if (res.code == 200) {
+			    this.$message({ type: 'success', message: '删除成功!' })
+			    this.getOrderDetail()
+			    this.getCodeDetail()
+			  } else {
+			    this.$message.error(res.msg);
+			  }
+			})
+		}else{
+			this.formData2.list.splice(index,1)
+		}
+	},
+	saveCode(orderDetailCodes){
+		const that = this
+		let params = [{
+			...orderDetailCodes,
+			orderId: this.orderId,
+		}]
+		delete params[0].material;
+		delete params[0].specs;
+		this.$refs.formData2.validate((valid, invalidFields, errLabels) => {
+			if (valid) {
+				saveCode(params).then(res=>{
+					if(res.code == 200){
+						that.$message.success('保存成功!')
+						this.getOrderDetail()
+						this.getCodeDetail()
+					}
+				})
+			}
+		})
+	},
+	deliverGoods(){
+		this.$refs.orderForm.validate((valid) => {
+		  if (valid) {
+		    goodsDeliver({
+		      orderId: this.orderId,
+		      logisticsNo: this.orderForm.logisticsNo,
+		      storageId: this.orderForm.storageId,
+		      companyCode: this.orderForm.companyCode,
+		      workOrder: this.orderForm.workOrder,
+		    				pickName: this.orderForm.pickName,
+		    				pickPhone: this.orderForm.pickPhone,
+		    				pickType: this.orderForm.pickType,
+		    }).then(() => {
+		      this.cancelForm();
+		      this.getDetail();
+		      this.$successMsg('发货成功');
+		    })
+		  }
+		})
+	},
+	importCode(data){
+		const loading = this.$loading({
+		  lock: true,
+		  text: '正在导入',
+		  spinner: 'el-icon-loading',
+		  background: 'rgba(0, 0, 0, 0.7)'
+		})
+		var formdata = new FormData()
+		formdata.append('file', data.file)
+		let params = {
+			orderDetailId: this.orderDetailId
+		}
+		if (!!params) {
+		  for (const key in params) {
+		    if (Object.hasOwnProperty.call(params, key)) {
+		      formdata.append(key, params[key])
+		    }
+		  }
+		}
+		listImport({ formdata })
+		  .then(res => {
+		    this.getOrderDetail()
+		    loading.close()
+		    this.$message({
+		      type: 'success',
+		      message: '导入成功!'
+		    })
+		  })
+		  .catch(err => {
+		    loading.close()
+		    this.$message({
+		      type: 'error',
+		      message: err.message || '导入失败'
+		    })
+		  })
+	},
+	
+	// 下载导入模版
+	handleDownload(title) {
+		commonTemplateDownload({ name: '导入条码.xlsx' }, title).then(res => {
+			this.$message({
+				message: '下载成功',
+				type: 'success'
+			})
+		}).catch(err => {
+			this.$message.error('下载失败')
+		})
+	},
 
   },
   computed: {
@@ -738,7 +1132,7 @@ export default {
       const totalAmount = parseFloat(this.orderDetail.totalAmount)
       const freight = parseFloat(this.orderDetail.freight)
       return (totalAmount - freight).toFixed(2)
-    }
+    },
   }
 }
 </script>

+ 62 - 34
src/views/mallManagement/order/order_list/index.vue

@@ -262,6 +262,10 @@
                           @click="queryLogistics(order)">
                           查看物流
                         </el-button>
+							  <el-button type="text" size="small"
+							    v-if="(order.orderStatus === 'YFH' || order.orderStatus === 'OVER')" @click="showLogistics(order, 'detail')">
+							    查看发货条码
+							  </el-button>
                         <!-- toWorkOrderDetail(order.orderId) -->
                         <el-button type="text" size="small" v-if="order.toWorkOrder && $restrict('workOrder_detail')"
                           @click="queryWorkOrder(order.orderId)">查看工单</el-button>
@@ -317,75 +321,76 @@
           </div>
         </div>
         <!-- 发货弹窗 -->
-			<div v-if="activeKey == 'deliverGoods' || activeKey == 'editExpressage'" class="app-container">
+			<div v-if="activeKey == 'deliverGoods' || activeKey == 'editExpressage' || activeKey == 'deliverGoodsDetail'" class="app-container">
 				<el-form :model="logisticsForm" ref="logisticsForm" label-width="100px" label-position="left">
 					<el-row :gutter="20">
 						<el-col :span="6">
-							<el-form-item label="发货方式" prop="pickType" v-if="logisticsType === 'add'">
+							<el-form-item label="发货方式" prop="pickType" v-if="logisticsType != 'edit'">
 							  <el-radio-group v-model="logisticsForm.pickType">
-							    <el-radio label="YES">自提/自送</el-radio>
-							    <el-radio label="NO">快递物流</el-radio>
+							    <el-radio :disabled="logisticsType == 'detail'" label="YES">自提/自送</el-radio>
+							    <el-radio :disabled="logisticsType == 'detail'" label="NO">快递物流</el-radio>
 							  </el-radio-group>
 							</el-form-item>
 						</el-col>
 						<el-col :span="6" v-if="logisticsForm.pickType == 'YES'">
 							<el-form-item label="提货人" prop="pickName" :rules="[{ required: true, message: '提货人不能为空', trigger: 'blur' }]">
-							  <el-input v-model="logisticsForm.pickName" placeholder="请输入提货人"></el-input>
+							  <el-input v-model="logisticsForm.pickName" :disabled="logisticsType == 'detail'" placeholder="请输入提货人"></el-input>
 							</el-form-item>
 						</el-col>
 						<el-col :span="6" v-if="logisticsForm.pickType == 'YES'">
 							<el-form-item label="提货人电话" prop="pickPhone" :rules="[{ required: true, message: '提货人电话不能为空', trigger: 'blur' },{ pattern:/^((1[3456789]\d{9}))$/, message: '电话号码格式不正确', trigger: 'blur' }]">
-							  <el-input v-model="logisticsForm.pickPhone" placeholder="请输入提货人电话"></el-input>
+							  <el-input v-model="logisticsForm.pickPhone" :disabled="logisticsType == 'detail'" placeholder="请输入提货人电话"></el-input>
 							</el-form-item>
 						</el-col>
 						<el-col :span="6" v-if="logisticsForm.pickType == 'NO'">
 							<el-form-item label="快递单号" prop="logisticsNo" :rules="[{ required: true, message: '快递单号不能为空', trigger: 'blur' }]">
-							  <el-input v-model="logisticsForm.logisticsNo" placeholder="请输入快递单号"></el-input>
+							  <el-input v-model="logisticsForm.logisticsNo" :disabled="logisticsType == 'detail'" placeholder="请输入快递单号"></el-input>
 							</el-form-item>
 						</el-col>
 						<el-col :span="6" v-if="logisticsForm.pickType == 'NO'">
 							<el-form-item label="物流公司" prop="companyCode"
 							  :rules="[{ required: true, message: '请选择物流公司', trigger: 'change' }]">
-							  <el-select v-model="logisticsForm.companyCode" placeholder="请选择物流公司" style="width: 100%;">
+							  <el-select v-model="logisticsForm.companyCode" :disabled="logisticsType == 'detail'" placeholder="请选择物流公司" style="width: 100%;">
 							    <el-option :label="item.name" :value="item.code" v-for="(item, index) in companyList"
 							      :key="index"></el-option>
 							  </el-select>
 							</el-form-item>
 						</el-col>
 						<el-col :span="6">
-							<el-form-item label="仓储" prop="storageId" v-if="logisticsType === 'add'"
+							<el-form-item label="仓储" prop="storageId" v-if="logisticsType != 'edit'"
 							  :rules="[{ required: true, message: '请选择仓储', trigger: 'change' }]">
-							  <el-select v-model="logisticsForm.storageId" placeholder="请选择仓储" style="width: 100%;">
+							  <el-input v-if="logisticsType == 'detail'" v-model="logisticsForm.storageName" :disabled="true" placeholder="请输入提货人"></el-input>
+							  <el-select v-else v-model="logisticsForm.storageId" placeholder="请选择仓储" style="width: 100%;">
 							    <el-option :label="item.storageName" :value="item.storageId" v-for="(item, index) in storageList"
 							      :key="index"></el-option>
 							  </el-select>
 							</el-form-item>
 						</el-col>
 						<el-col :span="6">
-							<el-form-item label="是否派单" prop="workOrder" v-if="logisticsType === 'add'">
+							<el-form-item label="是否派单" prop="workOrder" v-if="logisticsType != 'edit'">
 							  <el-radio-group v-model="logisticsForm.workOrder">
-							    <el-radio :label="true">是</el-radio>
-							    <el-radio :label="false">否</el-radio>
+							    <el-radio :disabled="logisticsType == 'detail'" :label="true">是</el-radio>
+							    <el-radio :disabled="logisticsType == 'detail'" :label="false">否</el-radio>
 							  </el-radio-group>
 							</el-form-item>
 						</el-col>
 						<el-col :span="6">
-							<el-form-item label="是否退换单" prop="exchange" v-if="logisticsType === 'add'">
+							<el-form-item label="是否退换单" prop="exchange" v-if="logisticsType != 'edit'">
 							  <el-radio-group v-model="logisticsForm.exchange">
-							    <el-radio :label="true">是</el-radio>
-							    <el-radio :label="false">否</el-radio>
+							    <el-radio :disabled="logisticsType == 'detail'" :label="true">是</el-radio>
+							    <el-radio :disabled="logisticsType == 'detail'" :label="false">否</el-radio>
 							  </el-radio-group>
 							</el-form-item>
 						</el-col>
 						<el-col :span="24">
 							<el-card class="box-card">
-								<el-tabs v-model="typeIndex">
+								<el-tabs v-model="typeIndex" @tab-click="changeType">
 								    <el-tab-pane label="发货数量" name="1"></el-tab-pane>
 								    <el-tab-pane label="发货条码" name="2"></el-tab-pane>
 								</el-tabs>
 								<br/>
-								<el-button size="small" v-show="typeIndex == 2" type="primary" @click="addCode()">新增</el-button>
-								<el-button size="small" v-show="typeIndex == 1" type="primary" @click="handleDownload('导入条码模板')">导入条码模板下载</el-button>
+								<el-button size="small" v-show="typeIndex == 2 && logisticsType == 'add'" type="primary" @click="addCode()">新增</el-button>
+								<el-button size="small" v-show="typeIndex == 1 && logisticsType == 'add'" type="primary" @click="handleDownload('导入条码模板')">导入条码模板下载</el-button>
 								<div class="table">
 									<!-- 发货数量 -->
 									<el-form v-show="typeIndex == 1" ref="formData1" :model="formData1" label-width="0" size="small" label-position="left">
@@ -408,7 +413,7 @@
 											<el-table-column prop="outCodeQty" align="center" label="导入外机条码数量" width="140"></el-table-column>
 											<el-table-column prop="partsCodeQty" align="center" label="导入配件条码数量" width="140"></el-table-column>
 											<el-table-column label="操作" align="center" width="140" fixed="right">
-												<template slot-scope="scope" v-if="formType != 2 && joinCode">
+												<template slot-scope="scope" v-if="formType != 2 && joinCode && logisticsType == 'add'">
 													<el-upload
 													  action='_'
 													  :show-file-list='false'
@@ -454,7 +459,7 @@
 											<el-table-column label="规格型号" align="center">
 												<template slot-scope="scope">
 													<el-form-item :prop="'list.' + scope.$index + '.specs'" :rules="[{ required: true, message: `请选择规格型号`, trigger: 'blur' }]">
-														<el-select v-model="scope.row.specs" @change="(e)=>{changeSpecs(e,scope.row)}" value-key="goodsMaterialSpecsName" :disabled="isEdit2 != scope.$index || formType == 2" placeholder="请选择" style="width: 100%;">
+														<el-select v-model="scope.row.specs" @change="(e)=>{changeSpecs(e,scope.row)}" value-key="goodsMaterialSpecsName" :disabled="isEdit2 != scope.$index || formType == 2 || logisticsType == 'detail'" placeholder="请选择" style="width: 100%;">
 														    <el-option
 														      v-for="(item,ind) in formData1.list"
 														      :key="ind"
@@ -469,7 +474,7 @@
 												<template slot-scope="scope">
 													<el-form-item :prop="'list.' + scope.$index + '.goodsMaterialItemType'" :rules="[{ required: true, message: `请选择物料类型`, trigger: 'blur' }]">
 														<el-select v-model="scope.row.goodsMaterialItemType" @change="(e)=>{changeMaterial(e,scope.row)}" 
-															:disabled="isEdit2 != scope.$index || formType == 2" placeholder="请选择" style="width: 100%;">
+															:disabled="isEdit2 != scope.$index || formType == 2 || logisticsType == 'detail'" placeholder="请选择" style="width: 100%;">
 														    <el-option
 														      v-for="(item,ind) in [{name: '内机',id: 'INSIDE'},{name: '外机',id: 'OUT'},{name: '配件',id: 'PARTS'}]"
 														      :key="ind"
@@ -485,14 +490,14 @@
 													<el-form-item :prop="'list.' + scope.$index + '.material'" :rules="[{ required: true, message: `请选择物料名称`, trigger: 'blur' }]">
 														<el-select v-model="scope.row.material" @focus="(e)=>{
 															if(!scope.row.goodsMaterialItemType){
-																return this.$message.warning('请先选择物料类型!');
+																return $message.warning('请先选择物料类型!');
 															}
 														}" @change="(e)=>{
 															scope.row.materialName = e.name
-															scope.row.stockQty = e.stockQty
+															scope.row.stockQty = (e.uniqueCode=='YES'?1:null)
 															scope.row.uniqueCode = e.uniqueCode
-															
-														}" value-key="name" :disabled="isEdit2 != scope.$index || formType == 2" placeholder="请选择" style="width: 100%;">
+															scope.row.goodsMaterialItemId = e.itemId
+														}" value-key="name" :disabled="isEdit2 != scope.$index || formType == 2 || logisticsType == 'detail'" placeholder="请选择" style="width: 100%;">
 														    <el-option
 														      v-for="(item,ind) in scope.row.materialList"
 														      :key="ind"
@@ -513,19 +518,19 @@
 											<el-table-column prop="" align="center" label="条码" >
 												<template slot-scope="scope">
 													<el-form-item :prop="'list.' + scope.$index + '.materialCode'" :rules="[{ required: true, message: `请输入条码`, trigger: 'blur' }]">
-														<el-input type="text" v-model="scope.row.materialCode" :disabled="isEdit2 != scope.$index || formType == 2" placeholder="请输入"></el-input>
+														<el-input type="text" v-model="scope.row.materialCode" :disabled="isEdit2 != scope.$index || formType == 2 || logisticsType == 'detail'" placeholder="请输入"></el-input>
 													</el-form-item>
 												</template>
 											</el-table-column>
 											<el-table-column prop="" align="center" label="数量">
 												<template slot-scope="scope">
 													<el-form-item :prop="'list.' + scope.$index + '.stockQty'" :rules="[{ required: true, message: `请输入数量`, trigger: 'blur' }]">
-														<el-input type="number" v-model="scope.row.stockQty" :disabled="isEdit2 != scope.$index || formType == 2" placeholder="请输入"></el-input>
+														<el-input type="number" v-model="scope.row.stockQty" :disabled="isEdit2 != scope.$index || formType == 2 || scope.row.uniqueCode=='YES' || logisticsType == 'detail'" placeholder="请输入"></el-input>
 													</el-form-item>
 												</template>
 											</el-table-column>
 											<el-table-column label="操作" align="right" width="140" fixed="right">
-												<template slot-scope="scope" v-if="formType != 2">
+												<template slot-scope="scope" v-if="logisticsType == 'add'">
 													<el-button size="mini" type="primary" v-if="scope.$index == isEdit2" @click="saveCode(scope.row)">保存</el-button>
 													<el-button size="mini" type="primary" v-if="scope.$index != isEdit2" @click="isEdit2 = scope.$index">编辑</el-button>
 													<el-popconfirm title="确定删除吗?" @confirm="delCode(scope.row.orderDetailCodeId,scope.$index)">
@@ -542,7 +547,7 @@
 				</el-form>
 				<br/>
 				<div slot="footer" class="dialog-footer">
-				  <el-button type="primary" @click="saveLogistics(data.removeTab)">{{logisticsType === 'add'?'发 货':'保 存'}}</el-button>
+				  <el-button type="primary" v-if="logisticsType != 'detail'" @click="saveLogistics(data.removeTab)">{{logisticsType === 'add'?'发 货':'保 存'}}</el-button>
 				  <el-button @click="cancelLogistics;data.removeTab()">取 消</el-button>
 				</div>
 			</div>
@@ -707,6 +712,7 @@ export default {
         pickPhone: '',
         logisticsNo: '',
         storageId: '',
+		storageName: '',
         companyCode: '',
         workOrder: true,
         exchange: false,
@@ -851,6 +857,10 @@ export default {
 		  this.formData1.list = res.data.orderDetails
 		})
 	},
+	changeType(){
+		this.getOrderDetail()
+		this.getCodeDetail()
+	},
 	async getCodeDetail(){
 		getCodeDetail({orderId: this.editOrderId}).then(async res => {
 			for(var item of res.data){
@@ -892,6 +902,9 @@ export default {
 		row.orderDetailId = e.orderDetailId
 	},
 	async changeMaterial(e,row){
+		if(!row.specs){
+			return this.$message.warning('请先选择规格型号!');
+		}
 		row.material = null
 		row.materialName = ''
 		row.stockQty = ''
@@ -921,7 +934,8 @@ export default {
 					materialName: '',
 					material: null,
 					materialList: [],
-					orderDetailId: ''
+					orderDetailId: '',
+					goodsMaterialItemId: ''
 				})
 			}
 		});
@@ -981,7 +995,7 @@ export default {
 			// 唯一标识
 			key: type,
 			// 页签名称
-			label: ({ remark: "订单备注", editExpressage: "修改快递单号",editAddress: "修改收货地址", materialDetail: "查看物流", deliverGoods: "发货" })[type],
+			label: ({ remark: "订单备注", editExpressage: "修改快递单号",editAddress: "修改收货地址", materialDetail: "查看物流", deliverGoods: "发货", deliverGoodsDetail: '查看发货条码' })[type],
 			// 打开时事件
 			triggerEvent: () => {
 				
@@ -1085,8 +1099,21 @@ export default {
 				this.getOrderDetail()
 				this.getCodeDetail()
 				this.openForm('deliverGoods',item)
-			}else{
+			}else if(type == 'edit'){
 				this.openForm('editExpressage',item)
+			}else{
+				this.logisticsForm.logisticsNo = item.logisticsNo
+				this.logisticsForm.storageId = item.storageId
+				this.logisticsForm.storageName = item.storageName
+				this.logisticsForm.companyCode = item.companyCode
+				this.logisticsForm.workOrder = item.workOrder
+				this.logisticsForm.exchange = item.exchangeOrder
+				this.logisticsForm.pickType = item.pickType
+				this.logisticsForm.pickName = item.pickName
+				this.logisticsForm.pickPhone = item.pickPhone
+				this.getOrderDetail()
+				this.getCodeDetail()
+				this.openForm('deliverGoodsDetail',item)
 			}
     },
     // 取消快递信息填写
@@ -1449,7 +1476,8 @@ export default {
 		}
 		listImport({ formdata })
 		  .then(res => {
-		    this.$refs.pageRef.refreshList()
+		    this.getOrderDetail()
+			this.getCodeDetail()
 		    loading.close()
 		    this.$message({
 		      type: 'success',

+ 16 - 6
src/views/mallManagement/order/order_refund/index.vue

@@ -286,7 +286,7 @@
 						</el-col>
 						<el-col :span="24">
 							<el-card class="box-card">
-								<el-tabs v-model="typeIndex">
+								<el-tabs v-model="typeIndex" @tab-click="changeType">
 								    <el-tab-pane label="发货数量" name="1"></el-tab-pane>
 								    <el-tab-pane label="发货条码" name="2"></el-tab-pane>
 								</el-tabs>
@@ -392,12 +392,13 @@
 													<el-form-item :prop="'list.' + scope.$index + '.material'" :rules="[{ required: true, message: `请选择物料名称`, trigger: 'blur' }]">
 														<el-select v-model="scope.row.material" @focus="(e)=>{
 															if(!scope.row.goodsMaterialItemType){
-																return this.$message.warning('请先选择物料类型!');
+																return $message.warning('请先选择物料类型!');
 															}
 														}" @change="(e)=>{
 															scope.row.materialName = e.name
-															scope.row.stockQty = e.stockQty
+															scope.row.stockQty = (e.uniqueCode=='YES'?1:null)
 															scope.row.uniqueCode = e.uniqueCode
+															scope.row.goodsMaterialItemId = e.itemId
 															
 														}" value-key="name" :disabled="isEdit2 != scope.$index || formType == 2 || activeKey == 'REFUND_GOODS_DETAIL'" placeholder="请选择" style="width: 100%;">
 														    <el-option
@@ -427,7 +428,7 @@
 											<el-table-column prop="" align="center" label="数量">
 												<template slot-scope="scope">
 													<el-form-item :prop="'list.' + scope.$index + '.stockQty'" :rules="[{ required: true, message: `请输入数量`, trigger: 'blur' }]">
-														<el-input type="number" v-model="scope.row.stockQty" :disabled="isEdit2 != scope.$index || formType == 2 || activeKey == 'REFUND_GOODS_DETAIL'" placeholder="请输入"></el-input>
+														<el-input type="number" v-model="scope.row.stockQty" :disabled="isEdit2 != scope.$index || formType == 2 || activeKey == 'REFUND_GOODS_DETAIL' || scope.row.uniqueCode=='YES'" placeholder="请输入"></el-input>
 													</el-form-item>
 												</template>
 											</el-table-column>
@@ -567,6 +568,10 @@ export default {
 			  this.formData1.list = res.data.orderDetails
 			})
 		},
+		changeType(){
+			this.getOrderDetail()
+			this.getCodeDetail()
+		},
 		async getCodeDetail2(){
 			getCodeDetail2({orderId: this.editOrderId}).then(async res => {
 				for(var item of res.data){
@@ -608,6 +613,9 @@ export default {
 			row.orderDetailId = e.orderDetailId
 		},
 		async changeMaterial(e,row){
+			if(!row.specs){
+				return this.$message.warning('请先选择规格型号!');
+			}
 			row.material = null
 			row.materialName = ''
 			row.stockQty = ''
@@ -637,7 +645,8 @@ export default {
 						materialName: '',
 						material: null,
 						materialList: [],
-						orderDetailId: ''
+						orderDetailId: '',
+						goodsMaterialItemId: ''
 					})
 				}
 			});
@@ -882,7 +891,8 @@ export default {
 			}
 			listImport2({ formdata })
 			  .then(res => {
-			    this.$refs.pageRef.refreshList()
+			    this.getOrderDetail()
+				this.getCodeDetail()
 			    loading.close()
 			    this.$message({
 			      type: 'success',

+ 12 - 22
src/views/salesPurchasing/goodsPurchasedStored/index.vue

@@ -1,17 +1,7 @@
 <template>
-  <template-page
-    v-if="pageShow"
-    ref="pageRef"
-    :get-list="getList"
-    :table-attributes="tableAttributes"
-    :table-events="tableEvents"
-    :options-evens-group="optionsEvensGroup"
-    :moreParameters="moreParameters"
-    :column-parsing="columnParsing"
-    :exportList="exportList"
-    :operation="operation()"
-    key="pageType"
-  >
+  <template-page v-if="pageShow" ref="pageRef" :get-list="getList" :table-attributes="tableAttributes"
+    :table-events="tableEvents" :options-evens-group="optionsEvensGroup" :moreParameters="moreParameters"
+    :column-parsing="columnParsing" :exportList="exportList" :operation="operation()" key="pageType">
     <div slot="moreSearch">
       <el-radio-group v-model="pageType" size="mini" @input="changePageType">
         <el-radio-button label="list">列表</el-radio-button>
@@ -21,13 +11,8 @@
       <br /><br />
     </div>
     <div class="cartographer_big">
-      <el-dialog
-        :title="formDialogTitles[formDialogType]"
-        width="100%"
-        :modal="false"
-        :visible.sync="formDialog"
-        :before-close="handleClose"
-      >
+      <el-dialog :title="formDialogTitles[formDialogType]" width="100%" :modal="false" :visible.sync="formDialog"
+        :before-close="handleClose">
         <zj-page-container>
           <zj-page-fill>
             <div style="box-sizing: border-box; padding: 20px 20px 0 20px">
@@ -37,7 +22,7 @@
                 <zj-form-module title="" label-width="100px" :form-data="formData" :form-items="formItems2">
                   <el-tabs slot="header" v-model="activeName">
                     <el-tab-pane label="商品信息" name="goodsInfo"></el-tab-pane>
-                    <el-tab-pane v-if="formDialogType > 0" label="条码信息" name="codeInfo"></el-tab-pane>
+                    <el-tab-pane v-if="formDialogType > 0 && joinCode" label="条码信息" name="codeInfo"></el-tab-pane>
                   </el-tabs>
                 </zj-form-module>
               </zj-form-container>
@@ -120,7 +105,8 @@ export default {
         codeInfoList: []
       },
       activeName: 'goodsInfo',
-      goods_material_id: ''
+      goods_material_id: '',
+      joinCode: false
     }
   },
   computed: {
@@ -134,6 +120,7 @@ export default {
                 click: () => {
                   this.openForm()
                   this.formDialog = true
+                  this.joinCode = JSON.parse(localStorage.getItem('greemall_user')).joinCode
                 }
               })
             ]
@@ -210,6 +197,7 @@ export default {
           fileUrl: res.data.fileUrl ? [{ url: res.data.fileUrl }] : [],
           items: res.data.items.map(item => ({ ...item, details: {} }))
         })
+        this.joinCode = res.data.joinCode
         this.formDialogType = type
         this.openForm()
         this.formDialog = true
@@ -222,6 +210,7 @@ export default {
       this.formDialog = false
       this.formDialogType = 0
       this.activeName = 'goodsInfo'
+      this.joinCode = false
     },
     // 操作按钮
     operation() {
@@ -334,6 +323,7 @@ export default {
 .tab {
   padding: 20px 20px 0 20px;
 }
+
 ::v-deep .teshudeshangchuananniu {
   color: #409eff !important;
 }

+ 10 - 22
src/views/salesPurchasing/merchandisePurchaseReturn/index.vue

@@ -1,17 +1,7 @@
 <template>
-  <template-page
-    v-if="pageShow"
-    ref="pageRef"
-    :get-list="getList"
-    :table-attributes="tableAttributes"
-    :table-events="tableEvents"
-    :options-evens-group="optionsEvensGroup"
-    :moreParameters="moreParameters"
-    :column-parsing="columnParsing"
-    :exportList="exportList"
-    :operation="operation()"
-    key="pageType"
-  >
+  <template-page v-if="pageShow" ref="pageRef" :get-list="getList" :table-attributes="tableAttributes"
+    :table-events="tableEvents" :options-evens-group="optionsEvensGroup" :moreParameters="moreParameters"
+    :column-parsing="columnParsing" :exportList="exportList" :operation="operation()" key="pageType">
     <div slot="moreSearch">
       <el-radio-group v-model="pageType" size="mini" @change="changePageType">
         <el-radio-button label="list">列表</el-radio-button>
@@ -21,13 +11,8 @@
       <br /><br />
     </div>
     <div class="cartographer_big">
-      <el-dialog
-        :title="formDialogTitles[formDialogType]"
-        width="100%"
-        :modal="false"
-        :visible.sync="formDialog"
-        :before-close="handleClose"
-      >
+      <el-dialog :title="formDialogTitles[formDialogType]" width="100%" :modal="false" :visible.sync="formDialog"
+        :before-close="handleClose">
         <zj-page-container>
           <zj-page-fill>
             <div style="box-sizing: border-box; padding: 20px 20px 0 20px">
@@ -37,7 +22,7 @@
                 <zj-form-module title="" label-width="100px" :form-data="formData" :form-items="formItems2">
                   <el-tabs slot="header" v-model="activeName">
                     <el-tab-pane label="商品信息" name="goodsInfo"></el-tab-pane>
-                    <el-tab-pane v-if="formDialogType > 0" label="条码信息" name="codeInfo"></el-tab-pane>
+                    <el-tab-pane v-if="formDialogType > 0 && joinCode" label="条码信息" name="codeInfo"></el-tab-pane>
                   </el-tabs>
                 </zj-form-module>
               </zj-form-container>
@@ -118,7 +103,8 @@ export default {
         codeInfoList: []
       },
       activeName: 'goodsInfo',
-      goods_material_id: ''
+      goods_material_id: '',
+      joinCode: false
     }
   },
   computed: {
@@ -219,6 +205,7 @@ export default {
       this.formDialog = false
       this.formDialogType = 0
       this.activeName = 'goodsInfo'
+      this.joinCode = false
     },
     // 操作按钮
     operation() {
@@ -331,6 +318,7 @@ export default {
 .tab {
   padding: 20px 20px 0 20px;
 }
+
 ::v-deep .teshudeshangchuananniu {
   color: #409eff !important;
 }

+ 17 - 10
src/views/salesPurchasing/mixins/common_form.js

@@ -100,6 +100,7 @@ export default {
                               this.formData.items = []
                               if (val) {
                                 goodsPurchaseDetail({ id: val, isQuery: true }).then(res => {
+                                  this.joinCode = res.data.joinCode
                                   this.formData.items = res.data.items.map(item => ({
                                     brandId: item.brandId,
                                     brandName: item.brandName,
@@ -135,9 +136,8 @@ export default {
                             {this.cgrkOrder.map(item => (
                               <el-option
                                 key={item.id}
-                                label={`${item.id} | 销售金额:${item.totalAmount || '-'} | 入库时间:${
-                                  item.examineTime || '-'
-                                }`}
+                                label={`${item.id} | 销售金额:${item.totalAmount || '-'} | 入库时间:${item.examineTime || '-'
+                                  }`}
                                 value={item.id}
                               ></el-option>
                             ))}
@@ -160,11 +160,11 @@ export default {
                 >
                   {!!~['merchandisePurchaseReturn'].indexOf(this?.$route?.name)
                     ? [
-                        <el-descriptions-item label="退货数量">{this.formData.totalQty}</el-descriptions-item>,
-                        <el-descriptions-item label="退款金额">{this.formData.totalAmount}</el-descriptions-item>,
-                        <el-descriptions-item label=""></el-descriptions-item>,
-                        <el-descriptions-item label=""></el-descriptions-item>
-                      ]
+                      <el-descriptions-item label="退货数量">{this.formData.totalQty}</el-descriptions-item>,
+                      <el-descriptions-item label="退款金额">{this.formData.totalAmount}</el-descriptions-item>,
+                      <el-descriptions-item label=""></el-descriptions-item>,
+                      <el-descriptions-item label=""></el-descriptions-item>
+                    ]
                     : null}
                   <el-descriptions-item label="制单人">{this.formData.createBy}</el-descriptions-item>
                   <el-descriptions-item label="制单时间">{this.formData.createTime}</el-descriptions-item>
@@ -240,10 +240,17 @@ export default {
         goodsPurchaseList({
           pageNum: 1,
           pageSize: -1,
-          params: [{ param: 'a.vender_id', compare: '=', value: this.formData.venderId }]
+          params: [
+            { param: 'a.vender_id', compare: '=', value: this.formData.venderId },
+            { "param": "a.status", "compare": "=", "value": "OK" }
+          ]
         }).then(res => {
           this.cgrkOrder = res.data.records
-          console.log(res.data.records)
+          if (this.formData.goodsPurchaseId) {
+            goodsPurchaseDetail({ id: this.formData.goodsPurchaseId, isQuery: true }).then(res => {
+              this.joinCode = res.data.joinCode
+            })
+          }
         })
       }
     }

+ 35 - 22
src/views/salesPurchasing/mixins/out_storage_goods.js

@@ -189,7 +189,7 @@ export default {
           }
         },
         ...(() => {
-          if (this.formDialogType < 2) {
+          if (this.formDialogType < 2 && !~['SAVE', 'WAIT', 'OK', 'FAIL'].indexOf(this.formData.status)) {
             return [
               {
                 columnAttributes: {
@@ -200,28 +200,41 @@ export default {
                 render: (h, { row, column, index }) => {
                   return (
                     <div style="padding:0 6px" class="operation-btns">
-                      {!~['SAVE', 'WAIT', 'OK', 'FAIL'].indexOf(this.formData.status) ? (
-                        <el-button
-                          type="text"
-                          onClick={() => {
-                            this.formData?.items?.splice(index, 1)
-                          }}
-                        >
-                          删除
-                        </el-button>
-                      ) : !!~['SAVE'].indexOf(this.formData.status) ? (
-                        this.importButton(goodsPurchaseRetItemImportCode, '导入条码', { purchaseRetItemId: row.id }, () => { }, () => {
-                          if (this.formData.id) {
-                            // 更新表单信息
-                            goodsPurchaseRetDetail({ id: this.formData.id }).then(res => {
-                              Object.assign(this.formData, res.data, {
-                                fileUrl: res.data.fileUrl ? [{ url: res.data.fileUrl }] : [],
-                                items: res.data.items.map(item => ({ ...item, details: {} }))
-                              })
+                      <el-button
+                        type="text"
+                        onClick={() => {
+                          this.formData?.items?.splice(index, 1)
+                        }}
+                      >
+                        删除
+                      </el-button>
+                    </div>
+                  )
+                }
+              }
+            ]
+          } else if (this.formDialogType < 2 && !!~['SAVE'].indexOf(this.formData.status) && this.joinCode) {
+            return [
+              {
+                columnAttributes: {
+                  label: '操作',
+                  fixed: 'right',
+                  width: 140
+                },
+                render: (h, { row, column, index }) => {
+                  return (
+                    <div style="padding:0 6px" class="operation-btns">
+                      {this.importButton(goodsPurchaseRetItemImportCode, '导入条码', { id: this.formData.id, purchaseRetItemId: row.id }, () => { }, () => {
+                        if (this.formData.id) {
+                          // 更新表单信息
+                          goodsPurchaseRetDetail({ id: this.formData.id }).then(res => {
+                            Object.assign(this.formData, res.data, {
+                              fileUrl: res.data.fileUrl ? [{ url: res.data.fileUrl }] : [],
+                              items: res.data.items.map(item => ({ ...item, details: {} }))
                             })
-                          }
-                        })
-                      ) : null}
+                          })
+                        }
+                      })}
                     </div>
                   )
                 }

+ 19 - 19
src/views/salesPurchasing/mixins/out_storage_table.js

@@ -22,24 +22,24 @@ export default {
               <div>
                 {this.activeName == 'goodsInfo'
                   ? [
-                      this.formDialogType == 1 ? (
-                        <div style="margin-bottom:10px">
-                          <el-button type="primary" onClick={this.domlMban}>
-                            下载导入模板
-                          </el-button>
-                        </div>
-                      ) : null,
-                      <zj-table
-                        columns={this.storage_goods}
-                        tableData={this.formData.items}
-                        tableAttributes={{
-                          size: 'mini',
-                          border: true
-                        }}
-                      />
-                    ]
-                  : this.activeName == 'codeInfo'
-                  ? [
+                    this.formDialogType == 1 && this.joinCode ? (
+                      <div style="margin-bottom:10px">
+                        <el-button type="primary" onClick={this.domlMban}>
+                          下载导入模板
+                        </el-button>
+                      </div>
+                    ) : null,
+                    <zj-table
+                      columns={this.storage_goods}
+                      tableData={this.formData.items}
+                      tableAttributes={{
+                        size: 'mini',
+                        border: true
+                      }}
+                    />
+                  ]
+                  : this.activeName == 'codeInfo' && this.joinCode
+                    ? [
                       this.formDialogType == 1 ? (
                         <div style="margin-bottom:10px">
                           <el-button type="primary" onClick={this.addCodeInfo} disabled={this.isEditIndex != -1}>
@@ -56,7 +56,7 @@ export default {
                         }}
                       />
                     ]
-                  : null}
+                    : null}
               </div>
             )
           }

+ 58 - 44
src/views/salesPurchasing/mixins/storage_goods.js

@@ -390,7 +390,8 @@ export default {
           }
         },
         ...(() => {
-          if (this.formDialogType < 2) {
+
+          if (this.formDialogType < 2 && !~['SAVE', 'WAIT', 'OK', 'FAIL'].indexOf(this.formData.status)) {
             return [
               {
                 columnAttributes: {
@@ -401,57 +402,70 @@ export default {
                 render: (h, { row, column, index }) => {
                   return (
                     <div style="padding:0 6px" class="operation-btns">
-                      {!~['SAVE', 'WAIT', 'OK', 'FAIL'].indexOf(this.formData.status)
-                        ? [
-                          this.isEditIndex == index ? (
-                            <el-button
-                              type="text"
-                              onClick={() => {
-                                this.$refs.formRef.validateField(
-                                  this.getVfyKey(this.isEditIndex),
-                                  (valid, invalidFields, errLabels) => {
-                                    if (valid && this.eidtItems()) {
-                                      this.isEditIndex = -1
-                                    }
+                      {[
+                        this.isEditIndex == index ? (
+                          <el-button
+                            type="text"
+                            onClick={() => {
+                              this.$refs.formRef.validateField(
+                                this.getVfyKey(this.isEditIndex),
+                                (valid, invalidFields, errLabels) => {
+                                  if (valid && this.eidtItems()) {
+                                    this.isEditIndex = -1
                                   }
-                                )
-                              }}
-                            >
-                              保存
-                            </el-button>
-                          ) : null,
-                          this.isEditIndex == -1 ? (
-                            <el-button
-                              type="text"
-                              onClick={() => {
-                                this.isEditIndex = index
-                              }}
-                            >
-                              编辑
-                            </el-button>
-                          ) : null,
+                                }
+                              )
+                            }}
+                          >
+                            保存
+                          </el-button>
+                        ) : null,
+                        this.isEditIndex == -1 ? (
                           <el-button
                             type="text"
                             onClick={() => {
-                              this.delGoodsInfo(row, index)
+                              this.isEditIndex = index
                             }}
                           >
-                            删除
+                            编辑
                           </el-button>
-                        ]
-                        : !!~['SAVE'].indexOf(this.formData.status)
-                          ? this.importButton(goodsPurchaseItemImportCode, '导入条码', { purchaseItemId: row.id }, () => { }, () => {
-                            if (this.formData.id) {
-                              // 更新表单信息
-                              goodsPurchaseDetail({ id: this.formData.id }).then(res => {
-                                Object.assign(this.formData, res.data, {
-                                  fileUrl: res.data.fileUrl ? [{ url: res.data.fileUrl }] : [],
-                                  items: res.data.items.map(item => ({ ...item, details: {} }))
-                                })
-                              })
-                            }
+                        ) : null,
+                        <el-button
+                          type="text"
+                          onClick={() => {
+                            this.delGoodsInfo(row, index)
+                          }}
+                        >
+                          删除
+                        </el-button>
+                      ]}
+                    </div>
+                  )
+                }
+              }
+            ]
+          } else if (this.formDialogType < 2 && !!~['SAVE'].indexOf(this.formData.status) && this.joinCode) {
+            return [
+              {
+                columnAttributes: {
+                  label: '操作',
+                  fixed: 'right',
+                  width: 140
+                },
+                render: (h, { row, column, index }) => {
+                  return (
+                    <div style="padding:0 6px" class="operation-btns">
+                      {this.importButton(goodsPurchaseItemImportCode, '导入条码', { purchaseItemId: row.id }, () => { }, () => {
+                        if (this.formData.id) {
+                          // 更新表单信息
+                          goodsPurchaseDetail({ id: this.formData.id }).then(res => {
+                            Object.assign(this.formData, res.data, {
+                              fileUrl: res.data.fileUrl ? [{ url: res.data.fileUrl }] : [],
+                              items: res.data.items.map(item => ({ ...item, details: {} }))
+                            })
                           })
-                          : null}
+                        }
+                      })}
                     </div>
                   )
                 }

+ 25 - 25
src/views/salesPurchasing/mixins/storage_table.js

@@ -22,30 +22,30 @@ export default {
               <div>
                 {this.activeName == 'goodsInfo'
                   ? [
-                      this.formDialogType == 0 ? (
-                        <div style="margin-bottom:10px">
-                          <el-button type="primary" onClick={this.addGoodsInfo}>
-                            添加
-                          </el-button>
-                        </div>
-                      ) : this.formDialogType == 1 ? (
-                        <div style="margin-bottom:10px">
-                          <el-button type="primary" onClick={this.domlMban}>
-                            下载导入模板
-                          </el-button>
-                        </div>
-                      ) : null,
-                      <zj-table
-                        columns={this.storage_goods}
-                        tableData={this.formData.items}
-                        tableAttributes={{
-                          size: 'mini',
-                          border: true
-                        }}
-                      />
-                    ]
-                  : this.activeName == 'codeInfo'
-                  ? [
+                    this.formDialogType == 0 ? (
+                      <div style="margin-bottom:10px">
+                        <el-button type="primary" onClick={this.addGoodsInfo}>
+                          添加
+                        </el-button>
+                      </div>
+                    ) : this.formDialogType == 1 && this.joinCode ? (
+                      <div style="margin-bottom:10px">
+                        <el-button type="primary" onClick={this.domlMban}>
+                          下载导入模板
+                        </el-button>
+                      </div>
+                    ) : null,
+                    <zj-table
+                      columns={this.storage_goods}
+                      tableData={this.formData.items}
+                      tableAttributes={{
+                        size: 'mini',
+                        border: true
+                      }}
+                    />
+                  ]
+                  : this.activeName == 'codeInfo' && this.joinCode
+                    ? [
                       this.formDialogType == 1 ? (
                         <div style="margin-bottom:10px">
                           <el-button type="primary" onClick={this.addCodeInfo} disabled={this.isEditIndex != -1}>
@@ -62,7 +62,7 @@ export default {
                         }}
                       />
                     ]
-                  : null}
+                    : null}
               </div>
             )
           }

+ 12 - 10
src/views/setting/departmentManage/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <zj-tab-page ref="tabPage" :defaultActives="[{ key: 'list', label: $route.meta.title+'-列表', essential: true }]">
+  <zj-tab-page ref="tabPage" :defaultActives="[{ key: 'list', label: $route.meta.title + '-列表', essential: true }]">
     <template slot-scope="{activeKey, data}">
       <div class="app-container">
         <div v-if="activeKey == 'list'" class="mymain-container">
@@ -95,12 +95,12 @@
                 <el-radio :label="false">禁用</el-radio>
               </el-radio-group>
             </el-form-item>
-						<el-form-item label="商品出入库" prop="joinCode">
-						  <el-radio-group v-model="mainForm.joinCode">
-						    <el-radio :label="true">关联条码</el-radio>
-						    <el-radio :label="false">不关联条码</el-radio>
-						  </el-radio-group>
-						</el-form-item>
+            <el-form-item v-if="mainForm.type == 'B'" label="商品出入库" prop="joinCode">
+              <el-radio-group v-model="mainForm.joinCode">
+                <el-radio :label="true">关联条码</el-radio>
+                <el-radio :label="false">不关联条码</el-radio>
+              </el-radio-group>
+            </el-form-item>
           </el-form>
           <div slot="footer" class="dialog-footer">
             <el-button @click="data.removeTab()">取 消</el-button>
@@ -142,7 +142,8 @@ export default {
         address: '',
         status: true,
         isIncre: true,
-		joinCode: true
+        joinCode: true,
+        type: ""
       },
       mainFormRules: {
         name: [{ required: true, message: '请填写网点名称', trigger: 'blur' }],
@@ -279,7 +280,8 @@ export default {
                   address: res.data.address,
                   status: res.data.status,
                   isIncre: res.data.isIncre,
-									joinCode: res.data.joinCode
+                  joinCode: res.data.joinCode,
+                  type: res.data.type,
                 }
               })
             }
@@ -319,7 +321,7 @@ export default {
             address: this.mainForm.address,
             status: this.mainForm.status,
             isIncre: this.mainForm.isIncre,
-						joinCode: this.mainForm.joinCode
+            joinCode: this.mainForm.joinCode
           }
           if (this.mainFormType == 'edit') {
             params.websitId = this.editId

+ 2 - 2
src/views/valueAddedService/orderSettleManag/index.vue

@@ -21,8 +21,8 @@ export default {
   components: { collect, offline },
   data() {
     return {
-      tabType: 'collect',
-      tabTypeCk: 'collect',
+      tabType: this?.$route?.params?.pageType ? ({ SELF: "offline", ONLINE: "collect" })[this?.$route?.params?.pageType] || 'collect' : 'collect',
+      tabTypeCk: this?.$route?.params?.pageType ? ({ SELF: "offline", ONLINE: "collect" })[this?.$route?.params?.pageType] || 'collect' : 'collect',
     }
   },
   methods: {

+ 7 - 1
src/views/valueAddedService/orderSettleManag/pages/collect.vue

@@ -1,7 +1,7 @@
 <template>
   <template-page ref="pageRef" :get-list="getList" :exportList="exportList" :table-attributes="tableAttributes"
     :table-events="tableEvents" :moreParameters="moreParameters" :column-parsing="columnParsing" :operation="operation()"
-    :operationColumnWidth="200" :optionsEvensGroup="optionsEvensGroup">
+    :operationColumnWidth="200" :optionsEvensGroup="optionsEvensGroup" :defaultSearchData="defaultSearchData">
     <div class="cartographer">
       <el-dialog :title="formTypeName[formType]" width="100%" :modal="false" :visible.sync="formDialog"
         :before-close="formCancel">
@@ -60,6 +60,7 @@ export default {
         pgIncreItems: []
       },
       formDialog: false,
+      defaultSearchData: [],
     }
   },
   computed: {
@@ -115,6 +116,11 @@ export default {
       ]
     }
   },
+  created() {
+    if (this.pageCode) {
+      this.defaultSearchData = [{ "param": "a.id", "compare": "=", "value": this.pageCode, label: "订单单号" }]
+    }
+  },
   methods: {
     selectable(row, index) {
       return ["PAID"].includes(Object.entries(row.selectMapData.payStatus).find(([key, val]) => val == row.payStatus)?.[0]) &&

+ 22 - 13
src/views/valueAddedService/orderSettleManag/pages/offline.vue

@@ -1,7 +1,7 @@
 <template>
   <template-page ref="pageRef" :get-list="getList" :exportList="exportList" :table-attributes="tableAttributes"
     :table-events="tableEvents" :moreParameters="moreParameters" :column-parsing="columnParsing" :operation="operation()"
-    :operationColumnWidth="200" :optionsEvensGroup="optionsEvensGroup">
+    :operationColumnWidth="200" :optionsEvensGroup="optionsEvensGroup" :defaultSearchData="defaultSearchData">
     <div class="cartographer">
       <el-dialog :title="formTypeName[formType]" width="100%" :modal="false" :visible.sync="formDialog"
         :before-close="formCancel">
@@ -31,11 +31,14 @@
     <div class="cartographer">
       <el-dialog title="新增" width="100%" :modal="false" :visible.sync="addFormDialog" :before-close="addFormCancel">
         <zj-form-container v-if="addFormDialog" ref="addFormRef" :form-data="addFormData">
-          <zj-form-module  v-if="addFormDialog" title="客户信息" label-width="80px" :form-data="addFormData" :form-items="basicInfo">
+          <zj-form-module v-if="addFormDialog" title="客户信息" label-width="80px" :form-data="addFormData"
+            :form-items="basicInfo">
           </zj-form-module>
-          <zj-form-module  v-if="addFormDialog" title="服务信息" label-width="80px" :form-data="addFormData" :form-items="serviceInfo">
+          <zj-form-module v-if="addFormDialog" title="服务信息" label-width="80px" :form-data="addFormData"
+            :form-items="serviceInfo">
           </zj-form-module>
-          <zj-form-module  v-if="addFormDialog" title="产品信息" label-width="80px" :form-data="addFormData" :form-items="productInfo">
+          <zj-form-module v-if="addFormDialog" title="产品信息" label-width="80px" :form-data="addFormData"
+            :form-items="productInfo">
           </zj-form-module>
         </zj-form-container>
         <div slot="footer" class="dialog-footer">
@@ -98,6 +101,7 @@ export default {
       formDialog: false,
       addFormDialog: false,
       formDshType: false,
+      defaultSearchData: [],
       addFormData: {
         shiyongleixing: "按使用年限",
         "amount": "",
@@ -213,11 +217,16 @@ export default {
       }
     }
   },
+  created() {
+    if (this.pageCode) {
+      this.defaultSearchData = [{ "param": "a.id", "compare": "=", "value": this.pageCode, label: "订单单号" }]
+    }
+  },
   methods: {
     wxPay(id) {
       increOrderSettleGeneratePayCode({ id }).then(res => {
         this.codeUrl = res.data.codeUrl
-        if(this.$refs?.payQRCode?.innerHTML){
+        if (this.$refs?.payQRCode?.innerHTML) {
           this.$refs.payQRCode.innerHTML = '';
         }
         this.$nextTick(() => {
@@ -301,14 +310,14 @@ export default {
             return ["PAID", "REFUND"].includes(row.payStatus)
           },
           click: ({ row, index, column }) => {
-				this.$router.push({
-					name: 'workOrderPool',
-					params: {
-            pageName: row.id,
-						pageType: 'pgIncreItemId',
-						pageCode: row.id,
-					},
-				})
+            this.$router.push({
+              name: 'workOrderPool',
+              params: {
+                pageName: row.id,
+                pageType: 'pgIncreItemId',
+                pageCode: row.id,
+              },
+            })
           }
         },
         examine: {