996 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			Vue
		
	
	
	
		
		
			
		
	
	
			996 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			Vue
		
	
	
	
|  | <!-- | ||
|  |  * @Descripttion: | ||
|  |  * @version: | ||
|  |  * @Author: kBank | ||
|  |  * @Date: 2022-10-28 09:02:23 | ||
|  | --> | ||
|  | <template> | ||
|  |   <div class="page"> | ||
|  |     <div class="topbox"> | ||
|  |       <div | ||
|  |         class="levelList_i" | ||
|  |         :class="tabActive == item.id ? 'act' : ''" | ||
|  |         v-for="(item, index) in topList" | ||
|  |         :key="index" | ||
|  |         @click.prevent="handleLink(item.id)" | ||
|  |       > | ||
|  |         {{ item.name }} | ||
|  |       </div> | ||
|  |     </div> | ||
|  |     <div class="main"> | ||
|  |       <div class="contain"> | ||
|  |         <el-form ref="form" :rules="rules" :model="form" label-width="auto"> | ||
|  |           <div v-show="tabActive == 0"> | ||
|  |             <el-row :gutter="10"> | ||
|  |               <el-col class="el-col-40"> | ||
|  |                 <el-form-item :label="$t('MN_F_39')" prop="productName"> | ||
|  |                   <el-input | ||
|  |                     clearable | ||
|  |                     v-model="form.productName" | ||
|  |                     :placeholder="$t('S_C_70')" | ||
|  |                   ></el-input> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_618')" prop="productCode"> | ||
|  |                   <el-input | ||
|  |                     clearable | ||
|  |                     v-model="form.productCode" | ||
|  |                     :placeholder="$t('S_C_70')" | ||
|  |                   ></el-input> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_1123')" prop="retailPrice"> | ||
|  |                   <el-input | ||
|  |                     clearable | ||
|  |                     oninput="value=value.replace(/[^\d.]/g,'')" | ||
|  |                     v-model="form.retailPrice" | ||
|  |                     :placeholder="$t('S_C_70')" | ||
|  |                   ></el-input> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_1125')" prop="shippingChannel"> | ||
|  |                   <el-select clearable v-model="form.shippingChannel"> | ||
|  |                     <el-option | ||
|  |                       v-for="item in fhTypeList" | ||
|  |                       :key="item.value" | ||
|  |                       :label="item.label" | ||
|  |                       :value="item.value" | ||
|  |                     ></el-option> | ||
|  |                   </el-select> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_1127')" prop="shelfLife"> | ||
|  |                   <el-input | ||
|  |                     clearable | ||
|  |                     oninput="value=value.replace(/[^\d]/g,'')" | ||
|  |                     v-model="form.shelfLife" | ||
|  |                     :placeholder="$t('S_C_70')" | ||
|  |                   > | ||
|  |                     <i slot="suffix" class="neibu">{{ $t("S_L_6") }} </i> | ||
|  |                   </el-input> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('S_C_7')" prop="unit"> | ||
|  |                   <el-select clearable v-model="form.unit"> | ||
|  |                     <el-option | ||
|  |                       v-for="item in dwList" | ||
|  |                       :key="item.pkId" | ||
|  |                       :label="item.name" | ||
|  |                       :value="item.pkId" | ||
|  |                     ></el-option> | ||
|  |                   </el-select> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_248')" prop="weight"> | ||
|  |                   <el-input | ||
|  |                     clearable | ||
|  |                     oninput="value=value.replace(/[^\d.]/g,'')" | ||
|  |                     v-model="form.weight" | ||
|  |                     :placeholder="$t('S_C_70')" | ||
|  |                   > | ||
|  |                     <i slot="suffix" class="neibu">KG </i> | ||
|  |                   </el-input> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_1130')" prop="postageWeight"> | ||
|  |                   <el-input | ||
|  |                     clearable | ||
|  |                     oninput="value=value.replace(/[^\d.]/g,'')" | ||
|  |                     v-model="form.postageWeight" | ||
|  |                     :placeholder="$t('S_C_70')" | ||
|  |                   > | ||
|  |                     <i slot="suffix" class="neibu">KG </i> | ||
|  |                   </el-input> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_1132')" prop="productAttr"> | ||
|  |                   <el-select clearable v-model="form.productAttr"> | ||
|  |                     <el-option | ||
|  |                       v-for="item in productTypeList" | ||
|  |                       :key="item.value" | ||
|  |                       :label="item.label" | ||
|  |                       :value="item.value" | ||
|  |                     ></el-option> | ||
|  |                   </el-select> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_1134')" prop="pkClassify"> | ||
|  |                   <el-select clearable v-model="form.pkClassify"> | ||
|  |                     <el-option | ||
|  |                       v-for="item in classifyList" | ||
|  |                       :key="item.pkId" | ||
|  |                       :label="item.name" | ||
|  |                       :value="item.pkId" | ||
|  |                     ></el-option> | ||
|  |                   </el-select> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_1136')" prop="sort"> | ||
|  |                   <el-input | ||
|  |                     clearable | ||
|  |                     oninput="value = value.replace(/[^\d]/g,'')" | ||
|  |                     v-model="form.sort" | ||
|  |                     :placeholder="$t('S_C_70')" | ||
|  |                   > | ||
|  |                   </el-input> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_1138')" prop="length"> | ||
|  |                   <el-input | ||
|  |                     clearable | ||
|  |                     oninput="value=value.replace(/[^\d.]/g,'')" | ||
|  |                     v-model="form.length" | ||
|  |                     :placeholder="$t('S_C_70')" | ||
|  |                   > | ||
|  |                     <i slot="suffix" class="neibu">CM </i> | ||
|  |                   </el-input> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_1139')" prop="width"> | ||
|  |                   <el-input | ||
|  |                     clearable | ||
|  |                     oninput="value=value.replace(/[^\d.]/g,'')" | ||
|  |                     v-model="form.width" | ||
|  |                     :placeholder="$t('S_C_70')" | ||
|  |                   > | ||
|  |                     <i slot="suffix" class="neibu">CM </i> | ||
|  |                   </el-input> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_1140')" prop="height"> | ||
|  |                   <el-input | ||
|  |                     clearable | ||
|  |                     oninput="value=value.replace(/[^\d.]/g,'')" | ||
|  |                     v-model="form.height" | ||
|  |                     :placeholder="$t('S_C_70')" | ||
|  |                   > | ||
|  |                     <i slot="suffix" class="neibu">CM </i> | ||
|  |                   </el-input> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_1141')"> | ||
|  |                   <el-select clearable v-model="form.repurchaseType"> | ||
|  |                     <el-option | ||
|  |                       v-for="item in repurchaseTypeList" | ||
|  |                       :key="item.value" | ||
|  |                       :label="item.label" | ||
|  |                       :value="item.value" | ||
|  |                     ></el-option> | ||
|  |                   </el-select> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_622')" prop="isPutOn"> | ||
|  |                   <el-select clearable v-model="form.isPutOn"> | ||
|  |                     <el-option | ||
|  |                       v-for="item in agreeList" | ||
|  |                       :key="item.val" | ||
|  |                       :label="item.text" | ||
|  |                       :value="item.val" | ||
|  |                     ></el-option> | ||
|  |                   </el-select> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item label="产品基本信息" prop="productBasName"> | ||
|  |                   <el-input | ||
|  |                     clearable | ||
|  |                     v-model="form.productBasName" | ||
|  |                     @focus="opProduct" | ||
|  |                   ></el-input> | ||
|  |                 </el-form-item> | ||
|  |                 <!-- <el-form-item label="产品基本信息" prop="pkProductBas"> | ||
|  |                   <el-select clearable v-model="form.pkProductBas" filterable> | ||
|  |                     <el-option | ||
|  |                       v-for="item in productList" | ||
|  |                       :key="item.pkId" | ||
|  |                       :label="item.productName" | ||
|  |                       :value="item.pkId" | ||
|  |                     ></el-option> | ||
|  |                   </el-select> | ||
|  |                 </el-form-item> --> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item label="供应商" prop="pkCubasdoc"> | ||
|  |                   <el-select | ||
|  |                     clearable | ||
|  |                     :placeholder="$t('CK_KS_38')" | ||
|  |                     v-model="form.pkCubasdoc" | ||
|  |                   > | ||
|  |                     <el-option | ||
|  |                       v-for="item in supplierList" | ||
|  |                       :key="item.pkId" | ||
|  |                       :label="item.custName" | ||
|  |                       :value="item.pkId" | ||
|  |                     ></el-option> | ||
|  |                   </el-select> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-40"> | ||
|  |                 <el-form-item :label="$t('MN_F_38')" prop="cover"> | ||
|  |                   <!-- <el-upload :headers="headers" | ||
|  |                              :class="{ uploadIconOne: showImg, uploadIcon: noneUploadImg }" | ||
|  |                              :action="uploadImgUrl" | ||
|  |                              :on-success="handlePictureSuccess" | ||
|  |                              :on-change="uploadImgChange" | ||
|  |                              list-type="picture-card" | ||
|  |                              :limit="1" | ||
|  |                              :on-remove="handleRemove"> | ||
|  |                     <i class="el-icon-plus"></i> | ||
|  |                   </el-upload> --> | ||
|  |                   <imageUpload v-model="form.cover" /> | ||
|  |                   <div class="jy">{{ $t("MN_F_T_1142") }}</div> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |             </el-row> | ||
|  |           </div> | ||
|  |           <div v-show="tabActive == 1"> | ||
|  |             <el-form-item :label="$t('w_0107')" prop="pkSpecsType"> | ||
|  |               <el-tag | ||
|  |                 :key="item.pkId" | ||
|  |                 v-for="(item, index) in ggList" | ||
|  |                 closable | ||
|  |                 class="elTag" | ||
|  |                 v-show="item.checked" | ||
|  |                 :disable-transitions="false" | ||
|  |                 @close="handleClose(item.pkId)" | ||
|  |               > | ||
|  |                 {{ item.typeName }} | ||
|  |               </el-tag> | ||
|  |               <el-button | ||
|  |                 class="button-new-tag" | ||
|  |                 size="small" | ||
|  |                 @click="openDiag = true" | ||
|  |                 >{{ $t("w_0328") }}</el-button | ||
|  |               > | ||
|  |             </el-form-item> | ||
|  |           </div> | ||
|  |           <div v-show="tabActive == 2"> | ||
|  |             <el-row> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_1143')" prop="isPrize"> | ||
|  |                   <el-select clearable v-model="form.isPrize"> | ||
|  |                     <el-option | ||
|  |                       v-for="item in agreeList" | ||
|  |                       :key="item.val" | ||
|  |                       :label="item.text" | ||
|  |                       :value="item.val" | ||
|  |                     ></el-option> | ||
|  |                   </el-select> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_1145')" prop="isGift"> | ||
|  |                   <el-select clearable v-model="form.isGift"> | ||
|  |                     <el-option | ||
|  |                       v-for="item in agreeList" | ||
|  |                       :key="item.val" | ||
|  |                       :label="item.text" | ||
|  |                       :value="item.val" | ||
|  |                     ></el-option> | ||
|  |                   </el-select> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_259')" prop="isPickUp"> | ||
|  |                   <el-select clearable v-model="form.isPickUp"> | ||
|  |                     <el-option | ||
|  |                       v-for="item in agreeList" | ||
|  |                       :key="item.val" | ||
|  |                       :label="item.text" | ||
|  |                       :value="item.val" | ||
|  |                     ></el-option> | ||
|  |                   </el-select> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_1147')" prop="isMerge"> | ||
|  |                   <el-select clearable v-model="form.isMerge"> | ||
|  |                     <el-option | ||
|  |                       v-for="item in agreeList" | ||
|  |                       :key="item.val" | ||
|  |                       :label="item.text" | ||
|  |                       :value="item.val" | ||
|  |                     ></el-option> | ||
|  |                   </el-select> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_T_1149')" prop="isFresh"> | ||
|  |                   <el-select clearable v-model="form.isFresh"> | ||
|  |                     <el-option | ||
|  |                       v-for="item in agreeList" | ||
|  |                       :key="item.val" | ||
|  |                       :label="item.text" | ||
|  |                       :value="item.val" | ||
|  |                     ></el-option> | ||
|  |                   </el-select> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('MN_F_44')" prop="isBarCode"> | ||
|  |                   <el-select clearable v-model="form.isBarCode"> | ||
|  |                     <el-option | ||
|  |                       v-for="item in agreeList" | ||
|  |                       :key="item.val" | ||
|  |                       :label="item.text" | ||
|  |                       :value="item.val" | ||
|  |                     ></el-option> | ||
|  |                   </el-select> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |               <el-col class="el-col-20"> | ||
|  |                 <el-form-item :label="$t('w_0063')" prop="ysList"> | ||
|  |                   <el-checkbox-group v-model="form.ysList" @change="changeYsfs"> | ||
|  |                     <el-checkbox | ||
|  |                       v-for="(item, index) in transportTypeList" | ||
|  |                       :key="item.value" | ||
|  |                       :label="item.value" | ||
|  |                       >{{ item.label }}</el-checkbox | ||
|  |                     > | ||
|  |                   </el-checkbox-group> | ||
|  |                 </el-form-item> | ||
|  |               </el-col> | ||
|  |             </el-row> | ||
|  |           </div> | ||
|  |         </el-form> | ||
|  |       </div> | ||
|  |       <div class="footer"> | ||
|  |         <el-button size="small" class="cancelBtn"> | ||
|  |           {{ $t("ENU_P_TYPE0") }}</el-button | ||
|  |         > | ||
|  |         <el-button | ||
|  |           size="small" | ||
|  |           v-hasButtons="['ProductReleaseConfirm']" | ||
|  |           @click="submit('form')" | ||
|  |           style="background: #c8161d; border: none" | ||
|  |           class="sureBtn" | ||
|  |         > | ||
|  |           {{ $t("MN_F_32") }}</el-button | ||
|  |         > | ||
|  |       </div> | ||
|  |     </div> | ||
|  |     <!-- 产品弹框 --> | ||
|  |     <el-dialog | ||
|  |       :title="$t('w_0328')" | ||
|  |       :visible.sync="dialogVisible" | ||
|  |       :close-on-click-modal="false" | ||
|  |       width="50%" | ||
|  |       center | ||
|  |       :before-close="handleClose1" | ||
|  |     > | ||
|  |       <div class="cpHeight"> | ||
|  |         <el-row> | ||
|  |           <el-col :span="22"> | ||
|  |             <el-input | ||
|  |               v-model="select.query" | ||
|  |               clearable | ||
|  |               :placeholder="$t('S_C_70')" | ||
|  |               @keyup.enter.native="getProduct" | ||
|  |               prefix-icon="el-icon-search" | ||
|  |             ></el-input> | ||
|  |           </el-col> | ||
|  |           <el-col :span="2"> | ||
|  |             <el-button type="primary" size="small" @click="getProduct"> | ||
|  |               {{ $t("MN_T_2") }}</el-button | ||
|  |             > | ||
|  |           </el-col> | ||
|  |         </el-row> | ||
|  |         <div style="height: 10px"></div> | ||
|  |         <el-table | ||
|  |           :data="productList" | ||
|  |           ref="multipleTable" | ||
|  |           height="500px" | ||
|  |           style="width: 100%" | ||
|  |           @select-all="onSelectAll" | ||
|  |           @select="selected" | ||
|  |           :header-cell-style="{ background: '#EEEEEE' }" | ||
|  |           :row-class-name="tableRowClassName" | ||
|  |         > | ||
|  |           <el-table-column type="selection" width="55"> | ||
|  |           </el-table-column> | ||
|  |           <el-table-column | ||
|  |             align="center" | ||
|  |             prop="productName" | ||
|  |             :label="$t('MN_F_39')" | ||
|  |           > | ||
|  |           </el-table-column> | ||
|  |           <el-table-column | ||
|  |             align="center" | ||
|  |             prop="productCode" | ||
|  |             :label="$t('MN_F_40')" | ||
|  |           > | ||
|  |           </el-table-column> | ||
|  |           <el-table-column align="center" prop="unitStr" :label="$t('S_C_7')"> | ||
|  |           </el-table-column> | ||
|  |         </el-table> | ||
|  |       </div> | ||
|  |       <pagination | ||
|  |         v-show="total > 0" | ||
|  |         :total="total" | ||
|  |         :page.sync="queryParams.pageNum" | ||
|  |         :limit.sync="queryParams.pageSize" | ||
|  |         @pagination="getProduct" | ||
|  |       /> | ||
|  |       <span slot="footer" class="dialog-footer"> | ||
|  |         <el-button @click="handleClose1">{{ $t("ENU_P_TYPE0") }}</el-button> | ||
|  |         <el-button type="primary" @click="sureProduct">{{ | ||
|  |           $t("ENU_P_TYPE4") | ||
|  |         }}</el-button> | ||
|  |       </span> | ||
|  |     </el-dialog> | ||
|  |     <!-- 规格 --> | ||
|  |     <el-dialog | ||
|  |       :title="$t('w_0328')" | ||
|  |       :visible.sync="openDiag" | ||
|  |       :close-on-click-modal="false" | ||
|  |       width="30%" | ||
|  |       center | ||
|  |     > | ||
|  |       <div class="addCheck"> | ||
|  |         <el-checkbox-group v-model="form.checkList" class="check"> | ||
|  |           <el-checkbox | ||
|  |             v-for="(item, index) in ggList" | ||
|  |             class="check_i" | ||
|  |             :key="item.pkId" | ||
|  |             :label="item.pkId" | ||
|  |             >{{ item.typeName }}</el-checkbox | ||
|  |           > | ||
|  |         </el-checkbox-group> | ||
|  |       </div> | ||
|  |       <span slot="footer" class="dialog-footer"> | ||
|  |         <el-button @click="openDiag = false">{{ $t("ENU_P_TYPE0") }}</el-button> | ||
|  |         <el-button type="primary" @click="checkTrue">{{ | ||
|  |           $t("ENU_P_TYPE4") | ||
|  |         }}</el-button> | ||
|  |       </span> | ||
|  |     </el-dialog> | ||
|  |   </div> | ||
|  | </template> | ||
|  | <script> | ||
|  | import { getToken } from "@/utils/auth"; | ||
|  | import * as api from "@/api/product.js"; | ||
|  | import ImageUpload from "@/components/ImageUpload"; | ||
|  | import * as supply from "@/api/supply.js"; | ||
|  | 
 | ||
|  | export default { | ||
|  |   name: "jcsz", | ||
|  |   components: { | ||
|  |     ImageUpload, | ||
|  |   }, | ||
|  |   data() { | ||
|  |     return { | ||
|  |       selectData:{}, | ||
|  |       select:{}, | ||
|  |       queryParams: { | ||
|  |         pageNum: 1, | ||
|  |         pageSize: 50, | ||
|  |       }, | ||
|  |       total: 0, | ||
|  |       dialogVisible:false, | ||
|  |       rules: { | ||
|  |         shippingChannel: [ | ||
|  |           { | ||
|  |             required: true, | ||
|  |             message: this.$t("MN_F_T_1126"), | ||
|  |             trigger: "change", | ||
|  |           }, | ||
|  |         ], | ||
|  |         unit: [{ required: true, message: "请选择单位", trigger: "change" }], | ||
|  |         productName: [ | ||
|  |           { required: true, message: "请输入产品名称", trigger: "blur" }, | ||
|  |         ], | ||
|  |         retailPrice: [ | ||
|  |           { required: true, message: this.$t("MN_F_T_1124"), trigger: "blur" }, | ||
|  |         ], | ||
|  |         shelfLife: [ | ||
|  |           { required: true, message: this.$t("MN_F_T_1128"), trigger: "blur" }, | ||
|  |         ], | ||
|  |         weight: [{ required: true, message: "请输入重量", trigger: "blur" }], | ||
|  |         productCode: [ | ||
|  |           { required: true, message: "请输入产品编号", trigger: "blur" }, | ||
|  |         ], | ||
|  |         postageWeight: [ | ||
|  |           { required: true, message: this.$t("MN_F_T_1131"), trigger: "blur" }, | ||
|  |         ], | ||
|  |         productAttr: [ | ||
|  |           { | ||
|  |             required: true, | ||
|  |             message: this.$t("MN_F_T_1133"), | ||
|  |             trigger: "change", | ||
|  |           }, | ||
|  |         ], | ||
|  |         isPutOn: [ | ||
|  |           { required: true, message: this.$t("CK_KS_38"), trigger: "change" }, | ||
|  |         ], | ||
|  |         productBasName: [ | ||
|  |           { required: true, message: this.$t("CK_KS_38"), trigger: "change" }, | ||
|  |         ], | ||
|  |         pkClassify: [ | ||
|  |           { | ||
|  |             required: true, | ||
|  |             message: this.$t("MN_F_T_1135"), | ||
|  |             trigger: "change", | ||
|  |           }, | ||
|  |         ], | ||
|  |         sort: [ | ||
|  |           { required: true, message: this.$t("MN_F_T_1137"), trigger: "blur" }, | ||
|  |         ], | ||
|  |         length: [{ required: true, message: "请输入长", trigger: "blur" }], | ||
|  |         width: [{ required: true, message: "请输入宽", trigger: "blur" }], | ||
|  |         height: [{ required: true, message: "请输入高", trigger: "blur" }], | ||
|  |         cover: [ | ||
|  |           { required: true, message: "请上传产品主图", trigger: "change" }, | ||
|  |         ], | ||
|  |         pkSpecsType: [ | ||
|  |           { required: true, message: "请选择规格", trigger: "change" }, | ||
|  |         ], | ||
|  |         isPrize: [ | ||
|  |           { | ||
|  |             required: true, | ||
|  |             message: this.$t("MN_F_T_1143"), | ||
|  |             trigger: "change", | ||
|  |           }, | ||
|  |         ], | ||
|  |         isGift: [ | ||
|  |           { required: true, message: "请选择特惠礼品", trigger: "change" }, | ||
|  |         ], | ||
|  |         isPickUp: [ | ||
|  |           { required: true, message: "请选择提货商品", trigger: "change" }, | ||
|  |         ], | ||
|  |         isMerge: [ | ||
|  |           { | ||
|  |             required: true, | ||
|  |             message: this.$t("MN_F_T_1148"), | ||
|  |             trigger: "change", | ||
|  |           }, | ||
|  |         ], | ||
|  |         isFresh: [ | ||
|  |           { | ||
|  |             required: true, | ||
|  |             message: this.$t("MN_F_T_1150"), | ||
|  |             trigger: "change", | ||
|  |           }, | ||
|  |         ], | ||
|  |         pkCubasdoc: [ | ||
|  |           { | ||
|  |             required: true, | ||
|  |             message: this.$t("CK_KS_38"), | ||
|  |             trigger: "change", | ||
|  |           }, | ||
|  |         ], | ||
|  |         isBarCode: [ | ||
|  |           { required: true, message: "请选择条码管理", trigger: "change" }, | ||
|  |         ], | ||
|  |         ysList: [ | ||
|  |           { required: true, message: this.$t("w_0064"), trigger: "change" }, | ||
|  |         ], | ||
|  |       }, | ||
|  |       ggList: [], | ||
|  |       // 规格名称弹框
 | ||
|  |       openDiag: false, | ||
|  |       showImg: true, //默认展示
 | ||
|  |       noneUploadImg: false, //
 | ||
|  |       uploadImgUrl: process.env.VUE_APP_BASE_API + "/system/upload", | ||
|  |       headers: { | ||
|  |         Authorization: getToken(), | ||
|  |       }, | ||
|  |       form: { | ||
|  |         productBasName:'', | ||
|  |         productCode: "", | ||
|  |         sptw: "", | ||
|  |         checkList: [], | ||
|  |         ysList: [], | ||
|  |         sort: "", | ||
|  |         postageWeight: "", | ||
|  |         height: "", | ||
|  |         width: "", | ||
|  |         length: "", | ||
|  |         weight: "", | ||
|  |         shelfLife: "", | ||
|  |         retailPrice: "", | ||
|  |       }, | ||
|  |       tabActive: 0, | ||
|  |       agreeList: [ | ||
|  |         { | ||
|  |           text: this.$t("ENU_POPUP_TYPE_1"), | ||
|  |           val: 0, | ||
|  |         }, | ||
|  |         { | ||
|  |           text: this.$t("ENU_POPUP_TYPE_2"), | ||
|  |           val: 1, | ||
|  |         }, | ||
|  |       ], | ||
|  |       topList: [ | ||
|  |         { | ||
|  |           name: this.$t("MN_F_T_1122"), | ||
|  |           id: 0, | ||
|  |         }, | ||
|  |         { | ||
|  |           name: this.$t("MN_F_T_617"), | ||
|  |           id: 1, | ||
|  |         }, | ||
|  |         { | ||
|  |           name: this.$t("MN_F_T_1151"), | ||
|  |           id: 2, | ||
|  |         }, | ||
|  |       ], | ||
|  |       productTypeList: [], | ||
|  |       fhTypeList: [], | ||
|  |       dwList: [], | ||
|  |       classifyList: [], | ||
|  |       transportTypeList: [], | ||
|  |       repurchaseTypeList: [], | ||
|  |       productList: [], | ||
|  |       supplierList: [], | ||
|  |     }; | ||
|  |   }, | ||
|  |   mounted() { | ||
|  |     // 获取规格list
 | ||
|  |     this.getGg(); | ||
|  |     // // 产品属性枚举
 | ||
|  |     this.getProductType(); | ||
|  |     // 发货类型
 | ||
|  |     this.getShipping(); | ||
|  |     // 单位
 | ||
|  |     this.getUnit(); | ||
|  |     // 复购类型
 | ||
|  |     this.getRepurchaseType(); | ||
|  |     // 所属分类
 | ||
|  |     this.getClassifyAll(); | ||
|  |     // 运输方式
 | ||
|  |     this.getTransportType(); | ||
|  |     // 获取产品编号
 | ||
|  |     this.getProductCode(); | ||
|  |     // 获取排序
 | ||
|  |     this.getSort(); | ||
|  |     // 获取产品
 | ||
|  |     this.getProduct(); | ||
|  |   }, | ||
|  |   methods: { | ||
|  |     sureProduct(){ | ||
|  |       this.form.productBasName = this.selectData.productName | ||
|  |       this.form.pkProductBas = this.selectData.pkId | ||
|  |       this.dialogVisible = false | ||
|  |     }, | ||
|  |     onSelectAll() { | ||
|  |       this.$refs.multipleTable.clearSelection(); | ||
|  |     }, | ||
|  |     selected(selection, row) { | ||
|  |       this.$refs.multipleTable.clearSelection(); | ||
|  |       if (selection.length == 0) return; | ||
|  |       this.$refs.multipleTable.toggleRowSelection(row, true); | ||
|  |       this.selectData = row; | ||
|  |     }, | ||
|  |     handleClose1() { | ||
|  |       this.dialogVisible = false | ||
|  |     }, | ||
|  |     opProduct(){ | ||
|  |       this.dialogVisible = true | ||
|  |     }, | ||
|  |     getProduct() { | ||
|  |       api.productFind1(Object.assign({}, this.queryParams, this.select)).then((res) => { | ||
|  |         this.productList = res.rows; | ||
|  |         this.total = res.total | ||
|  |       }); | ||
|  |     }, | ||
|  |     getRepurchaseType() { | ||
|  |       api.repurchaseType().then((res) => { | ||
|  |         this.repurchaseTypeList = res.data; | ||
|  |       }); | ||
|  |       supply.supplierList().then((res) => { | ||
|  |         this.supplierList = res.rows; | ||
|  |       }); | ||
|  |     }, | ||
|  |     getSort() { | ||
|  |       api.getMaxSort().then((res) => { | ||
|  |         this.form.sort = res.data; | ||
|  |       }); | ||
|  |     }, | ||
|  |     getProductCode() { | ||
|  |       api.getProductCode().then((res) => { | ||
|  |         this.form.productCode = res.msg; | ||
|  |       }); | ||
|  |     }, | ||
|  |     // 运输方式单独三个字段
 | ||
|  |     changeYsfs(val) { | ||
|  |       // 有陆运
 | ||
|  |       if (val.indexOf(1) > -1) { | ||
|  |         this.form.isLandTrans = 0; | ||
|  |       } else { | ||
|  |         this.form.isLandTrans = 1; | ||
|  |       } | ||
|  |       // 有空运
 | ||
|  |       if (val.indexOf(2) > -1) { | ||
|  |         this.form.isAirTrans = 0; | ||
|  |       } else { | ||
|  |         this.form.isAirTrans = 1; | ||
|  |       } | ||
|  |       // 海运
 | ||
|  |       if (val.indexOf(3) > -1) { | ||
|  |         this.form.isOceanTrans = 0; | ||
|  |       } else { | ||
|  |         this.form.isOceanTrans = 1; | ||
|  |       } | ||
|  |     }, | ||
|  |     // 运输方式
 | ||
|  |     getTransportType() { | ||
|  |       api.transportType().then((res) => { | ||
|  |         this.transportTypeList = res.data; | ||
|  |       }); | ||
|  |     }, | ||
|  |     // 所属分类
 | ||
|  |     getClassifyAll() { | ||
|  |       api.classifyAll().then((res) => { | ||
|  |         this.classifyList = res.data; | ||
|  |       }); | ||
|  |     }, | ||
|  |     // 选完规格
 | ||
|  |     checkTrue() { | ||
|  |       this.ggList.forEach((item) => { | ||
|  |         item.checked = false; | ||
|  |       }); | ||
|  |       this.ggList.forEach((item) => { | ||
|  |         this.form.checkList.forEach((child) => { | ||
|  |           if (item.pkId == child) { | ||
|  |             item.checked = true; | ||
|  |           } | ||
|  |         }); | ||
|  |       }); | ||
|  |       this.openDiag = false; | ||
|  |       this.form.pkSpecsType = this.form.checkList; | ||
|  |     }, | ||
|  |     // 获取规格
 | ||
|  |     getGg() { | ||
|  |       api.findAll().then((res) => { | ||
|  |         res.data.forEach((item) => { | ||
|  |           item.checked = false; | ||
|  |         }); | ||
|  |         this.ggList = res.data; | ||
|  |       }); | ||
|  |     }, | ||
|  |     // 产品属性枚举
 | ||
|  |     getProductType() { | ||
|  |       api.productType().then((res) => { | ||
|  |         this.productTypeList = res.data; | ||
|  |       }); | ||
|  |     }, | ||
|  |     // 发货类型
 | ||
|  |     getShipping() { | ||
|  |       api.getShipping().then((res) => { | ||
|  |         this.fhTypeList = res.data; | ||
|  |       }); | ||
|  |     }, | ||
|  |     // 单位
 | ||
|  |     getUnit() { | ||
|  |       api.unitAll().then((res) => { | ||
|  |         this.dwList = res.data; | ||
|  |       }); | ||
|  |     }, | ||
|  |     // 移除规格
 | ||
|  |     handleClose(pkId) { | ||
|  |       // 引藏全规格中选中字段
 | ||
|  |       this.ggList.forEach((item) => { | ||
|  |         if (item.pkId == pkId) { | ||
|  |           item.checked = false; | ||
|  |         } | ||
|  |       }); | ||
|  |       // 移除表单选中
 | ||
|  |       this.form.checkList.splice(this.form.checkList.indexOf(pkId), 1); | ||
|  |       this.$forceUpdate(); | ||
|  |     }, | ||
|  |     submit(form) { | ||
|  |       this.$refs[form].validate((valid) => { | ||
|  |         if (valid) { | ||
|  |           api.productSave(this.form).then((res) => { | ||
|  |             if (res.code == 200) { | ||
|  |               this.$message({ | ||
|  |                 message: this.$t("MN_F_T_477"), | ||
|  |                 type: "success", | ||
|  |               }); | ||
|  |               this.$router.replace({ | ||
|  |                 path: "/goodsManage/productList", | ||
|  |               }); | ||
|  |             } else { | ||
|  |               this.$message({ | ||
|  |                 message: res.msg, | ||
|  |                 type: "warning", | ||
|  |                 duration: 3000, | ||
|  |               }); | ||
|  |             } | ||
|  |           }); | ||
|  |         } else { | ||
|  |           return false; | ||
|  |         } | ||
|  |       }); | ||
|  |     }, | ||
|  |     // 切换tab
 | ||
|  |     handleLink(id) { | ||
|  |       this.tabActive = id; | ||
|  |     }, | ||
|  |     tableRowClassName({ row, rowIndex }) { | ||
|  |       if (rowIndex % 2 == 1) { | ||
|  |         return 'warning-row' | ||
|  |       } else if (rowIndex % 2 == 0) { | ||
|  |         return 'success-row' | ||
|  |       } | ||
|  |       return '' | ||
|  |     }, | ||
|  |     // uploadImgChange(file, fileList) {
 | ||
|  |     //   this.noneUploadImg = fileList.length > 0
 | ||
|  |     //   this.$refs.form.clearValidate('cover')
 | ||
|  |     // },
 | ||
|  |     //图片上传成功后的回调
 | ||
|  |     // handlePictureSuccess(res, file) {
 | ||
|  |     //   this.form.cover = res.data.url
 | ||
|  |     // },
 | ||
|  |     //图片上传删除
 | ||
|  |     // handleRemove(file, fileList) {
 | ||
|  |     //   this.form.cover = ''
 | ||
|  |     //   this.noneUploadImg = fileList.length > 0
 | ||
|  |     // },
 | ||
|  |   }, | ||
|  | }; | ||
|  | </script> | ||
|  | <style scoped lang="scss"> | ||
|  | ::v-deep .el-select { | ||
|  |   width: 100%; | ||
|  | } | ||
|  | .uploadIcon ::v-deep .el-upload--picture-card { | ||
|  |   display: none !important; /* 上传按钮隐藏 */ | ||
|  | } | ||
|  | .el-col-20 { | ||
|  |   width: 20%; | ||
|  | } | ||
|  | .el-col-60 { | ||
|  |   width: 60%; | ||
|  | } | ||
|  | .el-col-40 { | ||
|  |   width: 40%; | ||
|  | } | ||
|  | .page { | ||
|  |   padding-top: 20px; | ||
|  |   background: #f9f9f9; | ||
|  | } | ||
|  | .topbox { | ||
|  |   align-items: center; | ||
|  |   padding: 0px 0 0px 0; | ||
|  |   display: flex; | ||
|  |   //   background: skyblue;
 | ||
|  |   .levelList_i { | ||
|  |     margin-left: 20px; | ||
|  |     position: relative; | ||
|  |     cursor: pointer; | ||
|  |     // padding: 0 5px;
 | ||
|  |     // width: 88px;
 | ||
|  |     // height: 34px;
 | ||
|  |     border-radius: 17px; | ||
|  |     border: 1px solid #cccccc; | ||
|  |     font-size: 12px; | ||
|  |     font-family: MicrosoftYaHei; | ||
|  |     text-align: center; | ||
|  |     padding: 4px 15px; | ||
|  |     // line-height: 32px;
 | ||
|  |   } | ||
|  |   .act { | ||
|  |     color: #ffffff; | ||
|  |     background: #c8161d; | ||
|  |   } | ||
|  |   .act1 { | ||
|  |     border-bottom: 3px solid #1890ff !important; | ||
|  |   } | ||
|  |   .cha { | ||
|  |     font-size: 16px; | ||
|  |     color: #606266; | ||
|  |     position: absolute; | ||
|  |     top: 10px; | ||
|  |   } | ||
|  |   .li { | ||
|  |     width: 40px; | ||
|  |     margin: 0 auto; | ||
|  |     border-bottom: 3px solid transparent; | ||
|  |   } | ||
|  | } | ||
|  | .main { | ||
|  |   display: flex; | ||
|  |   flex-direction: column; | ||
|  | } | ||
|  | .contain { | ||
|  |   background: #ffffff; | ||
|  |   border-radius: 8px; | ||
|  |   box-shadow: 0px 2px 20px 0px rgba(238, 238, 238, 0.5); | ||
|  |   margin: 0px 0px 0 0px; | ||
|  |   flex: 1; | ||
|  |   padding: 10px; | ||
|  | } | ||
|  | .footer { | ||
|  |   height: 68px; | ||
|  |   background: #ffffff; | ||
|  |   box-shadow: 0px -3px 20px 0px rgba(204, 204, 204, 0.5); | ||
|  |   margin: 0 0px; | ||
|  |   display: flex; | ||
|  |   justify-content: center; | ||
|  |   align-items: center; | ||
|  | } | ||
|  | .thebtn1 { | ||
|  |   background: #48b2fd; | ||
|  |   color: #ffffff; | ||
|  |   padding: 9px 45px; | ||
|  | } | ||
|  | .thebtn2 { | ||
|  |   background: #f9f9f9; | ||
|  |   color: #333; | ||
|  |   padding: 9px 45px; | ||
|  | } | ||
|  | .neibu { | ||
|  |   margin-right: 10px; | ||
|  |   color: #666666; | ||
|  |   font-style: normal; | ||
|  | } | ||
|  | .elTag { | ||
|  |   margin-right: 10px; | ||
|  | } | ||
|  | .check { | ||
|  |   display: flex; | ||
|  |   flex-wrap: wrap; | ||
|  |   text-align: center; | ||
|  |   // justify-content: center;
 | ||
|  |   .check_i { | ||
|  |     width: 50%; | ||
|  |     text-align: left; | ||
|  |     margin-bottom: 10px; | ||
|  |     margin-right: 0 !important; | ||
|  |   } | ||
|  | } | ||
|  | .jy { | ||
|  |   font-size: 10px; | ||
|  |   font-family: PingFang SC-Regular, PingFang SC; | ||
|  |   font-weight: 400; | ||
|  |   color: #999999; | ||
|  | } | ||
|  | .addCheck { | ||
|  |   padding-left: 20px; | ||
|  | } | ||
|  | ::v-deep .el-dialog__body { | ||
|  |   border-top: 1px solid #eee; | ||
|  |   border-bottom: 1px solid #eee; | ||
|  | } | ||
|  | ::v-deep .el-form-item { | ||
|  |   margin-bottom: 15px !important; | ||
|  | } | ||
|  | </style> |