1061 lines
		
	
	
		
			33 KiB
		
	
	
	
		
			Vue
		
	
	
	
		
		
			
		
	
	
			1061 lines
		
	
	
		
			33 KiB
		
	
	
	
		
			Vue
		
	
	
	
|  | <!-- | |||
|  |  * @Descripttion: | |||
|  |  * @version: | |||
|  |  * @Author: kBank | |||
|  |  * @Date: 2022-10-31 13:55:20 | |||
|  | --> | |||
|  | <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" | |||
|  |                             :disabled="methods" | |||
|  |                             :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_40')" | |||
|  |                               prop="productCode"> | |||
|  |                   <el-input clearable | |||
|  |                             v-model="form.productCode" | |||
|  |                             disabled | |||
|  |                             :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 | |||
|  |                             v-model="form.retailPrice" | |||
|  |                             :disabled="methods" | |||
|  |                             :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" | |||
|  |                              :disabled="methods"> | |||
|  |                     <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="保质期" | |||
|  |                               prop="shelfLife"> | |||
|  |                   <el-input clearable | |||
|  |                             oninput="value=value.replace(/[^\d]/g,'')" | |||
|  |                             v-model="form.shelfLife" | |||
|  |                             :disabled="methods" | |||
|  |                             :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" | |||
|  |                              :disabled="methods"> | |||
|  |                     <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" | |||
|  |                             :disabled="methods" | |||
|  |                             :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" | |||
|  |                             :disabled="methods" | |||
|  |                             :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" | |||
|  |                              :disabled="methods"> | |||
|  |                     <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" | |||
|  |                              :disabled="methods"> | |||
|  |                     <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" | |||
|  |                             :disabled="methods" | |||
|  |                             :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" | |||
|  |                             :disabled="methods" | |||
|  |                             :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" | |||
|  |                             :disabled="methods" | |||
|  |                             :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" | |||
|  |                             :disabled="methods" | |||
|  |                             :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 | |||
|  |                              :disabled="methods" | |||
|  |                              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="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-form-item label="产品基本信息" prop="productBasName"> | |||
|  |                   <el-input | |||
|  |                     clearable | |||
|  |                     v-model="form.productBasName" | |||
|  |                     @focus="opProduct" | |||
|  |                   ></el-input> | |||
|  |                 </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" | |||
|  |                              :disabled="methods" | |||
|  |                              :class="{ uploadIconOne: showImg, uploadIcon: noneUploadImg }" | |||
|  |                              :action="uploadImgUrl" | |||
|  |                              :file-list="form.coverList" | |||
|  |                              :on-success="handlePictureSuccess" | |||
|  |                              :on-change="uploadImgChange" | |||
|  |                              list-type="picture-card" | |||
|  |                              :limit="1" | |||
|  |                              :on-remove="handleRemove"> | |||
|  |                     <i class="el-icon-plus"></i> | |||
|  |                   </el-upload> | |||
|  |                   <div class="jy">建议尺寸452×452,大小为200K</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="!methods" | |||
|  |                       class="elTag" | |||
|  |                       v-show="item.checked" | |||
|  |                       :disable-transitions="false" | |||
|  |                       @close="handleClose(item.pkId)"> | |||
|  |                 {{item.typeName}} | |||
|  |               </el-tag> | |||
|  |               <el-button class="button-new-tag" | |||
|  |                          v-show="!methods" | |||
|  |                          size="small" | |||
|  |                          @click="openDiag=true">{{$t('w_0328')}}</el-button> | |||
|  |             </el-form-item> | |||
|  |           </div> | |||
|  |           <div v-show="tabActive==2"> | |||
|  |             <el-col class="el-col-20"> | |||
|  |               <el-form-item :label="$t('MN_F_T_1143')" | |||
|  |                             prop="isPrize"> | |||
|  |                 <el-select clearable | |||
|  |                            v-model="form.isPrize" | |||
|  |                            :disabled="methods"> | |||
|  |                   <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" | |||
|  |                            :disabled="methods"> | |||
|  |                   <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" | |||
|  |                            :disabled="methods"> | |||
|  |                   <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" | |||
|  |                            :disabled="methods"> | |||
|  |                   <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" | |||
|  |                            :disabled="methods"> | |||
|  |                   <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" | |||
|  |                            :disabled="methods"> | |||
|  |                   <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" | |||
|  |                                    :disabled="methods" | |||
|  |                                    @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> | |||
|  |           </div> | |||
|  |         </el-form> | |||
|  |       </div> | |||
|  |       <div class="footer" | |||
|  |            v-show="!methods"> | |||
|  |         <el-button size="small" | |||
|  |                    class="thebtn2"> {{ $t('ENU_P_TYPE0') }}</el-button> | |||
|  |         <el-button size="small" | |||
|  |                    @click="submit('form')" | |||
|  |                    class="thebtn1"> {{ $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> | |||
|  |       <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> | |||
|  |       <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 * as supply from "@/api/supply.js"; | |||
|  | 
 | |||
|  | import { productUpdate, productSave } from '@/api/product.js' | |||
|  | export default { | |||
|  |   name: 'jcsz', | |||
|  |   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' }, | |||
|  |         ], | |||
|  |         productCode: [ | |||
|  |           { 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' }], | |||
|  |         postageWeight: [ | |||
|  |           { required: true, message: this.$t('MN_F_T_1131'), trigger: 'blur' }, | |||
|  |         ], | |||
|  |         productAttr: [ | |||
|  |           { | |||
|  |             required: true, | |||
|  |             message: this.$t('MN_F_T_1133'), | |||
|  |             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' }, | |||
|  |         ], | |||
|  |         isPutOn: [ | |||
|  |           { required: true, message: this.$t("CK_KS_38"), trigger: "change" }, | |||
|  |         ], | |||
|  |         productBasName: [ | |||
|  |           { required: true, message: this.$t("CK_KS_38"), trigger: "change" }, | |||
|  |         ], | |||
|  |         isPrize: [ | |||
|  |           { | |||
|  |             required: true, | |||
|  |             message: this.$t('MN_F_T_1143'), | |||
|  |             trigger: 'change', | |||
|  |           }, | |||
|  |         ], | |||
|  |         pkCubasdoc: [ | |||
|  |           { | |||
|  |             required: true, | |||
|  |             message: this.$t("CK_KS_38"), | |||
|  |             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_1149'), | |||
|  |             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: { | |||
|  |         sort: '', | |||
|  |         sptw: '', | |||
|  |         checkList: [], | |||
|  |         ysList: [], | |||
|  |         coverList: [], | |||
|  |         sort: '', | |||
|  |         postageWeight: '', | |||
|  |         height: '', | |||
|  |         width: '', | |||
|  |         length: '', | |||
|  |         weight: '', | |||
|  |         shelfLife: '', | |||
|  |       }, | |||
|  |       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: [], | |||
|  |       productId: '', | |||
|  |       methods: true, | |||
|  |       wahtMethods: 0, | |||
|  |       repurchaseTypeList: [], | |||
|  |       productList: [], | |||
|  |       isType: 0, | |||
|  |       supplierList:[] | |||
|  |     } | |||
|  |   }, | |||
|  |   mounted() { | |||
|  |     if (this.$route.query.id) { | |||
|  |       this.isType = 0 | |||
|  |       this.productId = this.$route.query.id | |||
|  |     } | |||
|  |     if (this.$route.query.pkProductBas) { | |||
|  |       this.isType = 1 | |||
|  |       this.productId = this.$route.query.pkProductBas | |||
|  |       // this.form.pkProductBas = this.$route.query.pkProductBas
 | |||
|  |     } | |||
|  | 
 | |||
|  |     this.methods = this.$route.query.methods ? false : true | |||
|  |     this.wahtMethods = this.$route.query.methods | |||
|  |     // 获取规格list
 | |||
|  |     this.getGg() | |||
|  |     // // 产品属性枚举
 | |||
|  |     this.getProductType() | |||
|  |     // 发货类型
 | |||
|  |     this.getShipping() | |||
|  |     // 单位
 | |||
|  |     this.getUnit() | |||
|  |     // 所属分类
 | |||
|  |     this.getClassifyAll() | |||
|  |     // 运输方式
 | |||
|  |     this.getTransportType() | |||
|  |     // 复购类型
 | |||
|  |     this.getRepurchaseType() | |||
|  |     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; | |||
|  |       }); | |||
|  |     }, | |||
|  |     getProductCode() { | |||
|  |       api.getProductCode().then((res) => { | |||
|  |         this.form.productCode = res.msg | |||
|  |       }) | |||
|  |     }, | |||
|  |     getAllData() { | |||
|  |       api.productDetailt({ productId: this.productId }).then((res) => { | |||
|  |         this.form = res.data | |||
|  |         if (res.data.cover) { | |||
|  |           this.noneUploadImg = true | |||
|  |         } | |||
|  |         this.form.coverList = [{ url: res.data.cover }] | |||
|  |         this.form = res.data | |||
|  |         //  let ysList =
 | |||
|  |         this.$set(this.form, 'ysList', [ | |||
|  |           res.data.isLandTrans == 0 ? 1 : '', | |||
|  |           res.data.isAirTrans == 0 ? 2 : '', | |||
|  |           res.data.isOceanTrans == 0 ? 3 : '', | |||
|  |         ]) | |||
|  |         // this.form.checkList = this.form.pkSpecsType
 | |||
|  |         this.$set(this.form, 'checkList', this.form.pkSpecsType) | |||
|  |         this.ggList.forEach((item) => { | |||
|  |           this.form.pkSpecsType.forEach((child) => { | |||
|  |             if (item.pkId == child) { | |||
|  |               // item.checked = true
 | |||
|  |               this.$set(item, 'checked', true) | |||
|  |             } | |||
|  |           }) | |||
|  |         }) | |||
|  |         if (this.wahtMethods == 2) { | |||
|  |           this.getProductCode() | |||
|  |         } | |||
|  |         this.$forceUpdate() | |||
|  |       }) | |||
|  |     }, | |||
|  |     getAllData1() { | |||
|  |       api.productDetailBas({ pkProductBas: this.productId }).then((res) => { | |||
|  |         if (res.data) { | |||
|  |           this.form = res.data | |||
|  |           this.productId = this.$route.query.pkProductBas | |||
|  |           this.$set(this.form, 'pkProductBas', this.productId) | |||
|  |           if (res.data.cover) { | |||
|  |             this.noneUploadImg = true | |||
|  |           } | |||
|  |           this.form.coverList = [{ url: res.data.cover }] | |||
|  |           this.form = res.data | |||
|  |           //  let ysList =
 | |||
|  |           this.$set(this.form, 'ysList', [ | |||
|  |             res.data.isLandTrans == 0 ? 1 : '', | |||
|  |             res.data.isAirTrans == 0 ? 2 : '', | |||
|  |             res.data.isOceanTrans == 0 ? 3 : '', | |||
|  |           ]) | |||
|  |           // this.form.checkList = this.form.pkSpecsType
 | |||
|  |           this.$set(this.form, 'checkList', this.form.pkSpecsType) | |||
|  |           this.ggList.forEach((item) => { | |||
|  |             this.form.pkSpecsType.forEach((child) => { | |||
|  |               if (item.pkId == child) { | |||
|  |                 // item.checked = true
 | |||
|  |                 this.$set(item, 'checked', true) | |||
|  |               } | |||
|  |             }) | |||
|  |           }) | |||
|  |         } else { | |||
|  |           this.$set(this.form, 'pkProductBas', this.productId) | |||
|  |         } | |||
|  |         this.$forceUpdate() | |||
|  |       }) | |||
|  |     }, | |||
|  |     // 运输方式单独三个字段
 | |||
|  |     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 | |||
|  |         if (this.isType == 0) { | |||
|  |           this.getAllData() | |||
|  |         } else { | |||
|  |           this.getAllData1() | |||
|  |         } | |||
|  |       }) | |||
|  |     }, | |||
|  |     // 产品属性枚举
 | |||
|  |     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) { | |||
|  |       let urlRequir = '' | |||
|  |       if (this.wahtMethods == 1) { | |||
|  |         urlRequir = productUpdate | |||
|  |       } else { | |||
|  |         urlRequir = productSave | |||
|  |       } | |||
|  |       this.$refs[form].validate((valid) => { | |||
|  |         if (valid) { | |||
|  |           urlRequir(this.form).then((res) => { | |||
|  |             if (res.code == 200) { | |||
|  |               this.$message({ | |||
|  |                 message: res.msg, | |||
|  |                 type: 'success', | |||
|  |               }) | |||
|  |               this.$router.go(-1) | |||
|  |             } | |||
|  |           }) | |||
|  |         } else { | |||
|  |           return false | |||
|  |         } | |||
|  |       }) | |||
|  |     }, | |||
|  |     // 切换tab
 | |||
|  |     handleLink(id) { | |||
|  |       this.tabActive = id | |||
|  |     }, | |||
|  |     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 | |||
|  |     }, | |||
|  |     tableRowClassName({ row, rowIndex }) { | |||
|  |       if (rowIndex % 2 == 1) { | |||
|  |         return 'warning-row' | |||
|  |       } else if (rowIndex % 2 == 0) { | |||
|  |         return 'success-row' | |||
|  |       } | |||
|  |       return '' | |||
|  |     }, | |||
|  |   }, | |||
|  | } | |||
|  | </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%; | |||
|  | } | |||
|  | .topbox { | |||
|  |   align-items: center; | |||
|  |   padding: 0px 0 0px 0; | |||
|  |   display: flex; //   background: skyblue;
 | |||
|  |   .levelList_i { | |||
|  |     margin-left: 20px; | |||
|  |     position: relative; | |||
|  |     cursor: pointer; | |||
|  |     padding: 3px 10px; | |||
|  |     // width: 88px;
 | |||
|  |     // height: 34px;
 | |||
|  |     border-radius: 17px; | |||
|  |     border: 1px solid #cccccc; | |||
|  |     font-size: 14px; | |||
|  |     font-family: MicrosoftYaHei; | |||
|  |     text-align: center; | |||
|  |     // line-height: 34px;
 | |||
|  |   } | |||
|  |   .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; | |||
|  |   } | |||
|  | } | |||
|  | .page { | |||
|  |   height: calc(100vh - 50px); | |||
|  |   overflow: hidden; | |||
|  |   background: #f9f9f9; | |||
|  |   padding-top: 20px; | |||
|  | } | |||
|  | 
 | |||
|  | .main { | |||
|  |   display: flex; | |||
|  |   flex-direction: column; | |||
|  |   height: calc(100vh - 124px); | |||
|  |   overflow: hidden; | |||
|  | } | |||
|  | .contain { | |||
|  |   background: #ffffff; | |||
|  |   border-radius: 8px; | |||
|  |   box-shadow: 0px 2px 20px 0px rgba(238, 238, 238, 0.5); | |||
|  |   // margin: 10px 20px 0 20px;
 | |||
|  |   flex: 1; | |||
|  |   padding-top: 10px; | |||
|  | } | |||
|  | .footer { | |||
|  |   height: 68px; | |||
|  |   background: #ffffff; | |||
|  |   box-shadow: 0px -3px 20px 0px rgba(204, 204, 204, 0.5); | |||
|  |   // margin: 0 20px;
 | |||
|  |   display: flex; | |||
|  |   justify-content: center; | |||
|  |   align-items: center; | |||
|  | } | |||
|  | .thebtn1 { | |||
|  |   background: #c8161d; | |||
|  |   color: #ffffff; | |||
|  |   padding: 9px 45px; | |||
|  | } | |||
|  | .thebtn2 { | |||
|  |   background: #cccccc; | |||
|  |   color: #ffffff; | |||
|  |   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-right: 0 !important; | |||
|  |   } | |||
|  | } | |||
|  | .jy { | |||
|  |   font-size: 10px; | |||
|  |   font-family: PingFang SC-Regular, PingFang SC; | |||
|  |   font-weight: 400; | |||
|  |   color: #999999; | |||
|  | } | |||
|  | ::v-deep .el-form-item { | |||
|  |   margin-bottom: 15px !important; | |||
|  | } | |||
|  | </style> |