<template>
	<view>
		<!-- 顶部操作条 -->
		<cu-custom :bgColor="'bg-main-color'" :isBack="true">
			<block slot="backText">返回</block>
			<block slot="content">货品上架</block>
		</cu-custom>
		<!-- 表单内容 -->
		<form @submit="submit" style="position: relative; z-index: 1;">
			<view class="cu-form-group">
				<view class="title">商品名称<text class="text-red">*</text></view>
				<input name="servName" v-model="formData.servName" placeholder="请编辑上架标题(供客户搜索)"></input>
			</view>
			<view class="cu-form-group">
				<view class="title">搜索关键词<text class="text-red">*</text></view>
				<input name="servDesc" v-model="formData.servDesc" placeholder="多个关键词用#分隔"></input>
			</view>
			<view class="solid-top">
				<view class="cu-form-group">
					<view class="title">选择类目<text class="text-red">*</text></view>
					<picker :mode="'multiSelector'" @change="categoryChange" @columnchange="categoryColChange"
						:value="categoryMultiIndex" :range-key="'goodsCategoryName'" :range="categoryList"
						:disabled="goodsId">
						<input v-if="formData.category" disabled class="line-input radius-input"
							:value="formData.category && formData.category.length ? formData.category[0].goodsCategoryName + '-' + formData.category[1].goodsCategoryName + '-' + formData.category[2].goodsCategoryName : ''"
							placeholder="请选择类目"/>
						<input v-else-if="formData.categoryConcatName" disabled class="line-input radius-input"
							:value="formData.categoryConcatName" placeholder="请选择类目" :class="goodsId ? 'bg-gray' : ''"/>
					</picker>
				</view>
				<view v-if="formData.specsList && formData.specsList.length > 0">
					<view :class="isShowAllSpecs ? '' : 'certern-height'">
						<checkbox-group class="padding-lr bg-white" @change="checkSpecs">
							<view v-for="(item, index) in formData.specsList" :key="index" class="padding-tb-sm">
								<view class="flex">
									<view class="flex-sub flex justify-center">
										<checkbox style="transform:scale(1)" class="margin-right-xs"
											:value="index" :checked="item.checked" :class="goodsId && item.checked ? 'grey' : 'main-color'" :disabled="goodsId && item.checked"></checkbox>
										<!-- <text>{{item.goodsCategoryName}}</text> -->
										<input class="sm radius-input flex-sub"
											@input="inputSpecs($event, index, 'goodsStandardName')"
											:value="item.goodsStandardName" maxlength="20"
											placeholder="请输入商品的规格(含必要标注或颜色等特性)【限20个字符】"></input>
									</view>
									<!-- <view class="flex-sub">
										<input class="sm radius-input"
											@input="inputSpecs($event, index, 'goodsStandardName')"
											:value="item.goodsStandardName" maxlength="20"
											placeholder="自编辑购买标题(限20字符)"></input>
									</view> -->
								</view>
								<view class="flex margin-top-xs">
									<view class="margin-right-xs" style="flex-basis: 30%;">
										<view class='text-red' style="position: absolute; z-index: 0;">*</view>
										<zb-tooltip
											:content="'平' + parseInt(item.deptRate * 100) + '%+￥' + $calcUtil.curNumPlaces(item.deptMoney, 3) + '销' + parseInt((Number(item.oneRate) + Number(item.twoRate) + Number(item.threeRate) + Number(item.retainRate)) * 100) + '%+￥' + $calcUtil.curNumPlaces(item.retainMoney, 3)"
											placement="top" ref="goodsPriceTip">
											<input type="number" class="radius-input xs" @input="inputSpecs($event, index, 'goodsPrice')"
												:value="item.goodsPrice" placeholder="价格"
												@blur="hideTips('goodsPriceTip', index)"></input>
										</zb-tooltip>
									</view>
									<view class="margin-right-xs" style="flex-basis: 21%;">
										<input type="number" class="radius-input xs" @input="inputSpecs($event, index, 'extMoney')"
											:value="item.extMoney" placeholder="追加提成额"></input>
									</view>
									<view class="margin-right-xs" style="flex-basis: 14%;">
										<input type="number" class="radius-input xs" @input="inputSpecs($event, index, 'groupPrice')"
											:value="item.groupPrice" placeholder="团购价"></input>
									</view>
									<view class="margin-right-xs" style="flex-basis: 11%;">
										<input class="radius-input xs" @input="inputSpecs($event, index, 'goodsUnit')"
											:value="item.goodsUnit" placeholder="单位"></input>
									</view>
									<view class="margin-right-xs" style="flex-basis: 14%;">
										<view class='text-red' style="position: absolute; absolute; z-index: 0;">*</view>
										<input type="number" class="radius-input xs" @input="inputSpecs($event, index, 'goodsNum')"
											:value="item.goodsNum" placeholder="库存数"></input>
									</view>
									<view style="flex-basis: 10%;">
										<view style="border: 1px solid #0081ff;text-align: center;" class="radius-input" @click="chooseImgList($event, 'specsList:'+index, 500, 500)">
											<image v-if="item.imageUrl" :src="item.imageUrl" style="width: 40rpx;height: 40rpx;" alt="" mode="aspectFit" ></image>
											<image v-else src="/static/add-img.png" style="width: 40rpx;height: 40rpx;" alt="" mode="aspectFit" ></image>
										</view>
									</view>
								</view>
							</view>
						</checkbox-group>
					</view>
					
					<view class="text-bold text-gray text-lg text-center bg-white padding-tb-sm">
						<text @click="showAllSpecs()" :class="'cuIcon-' + (isShowAllSpecs ? 'fold' : 'unfold')"></text>
						<text class="text-blue text-df" style="font-weight: 400;margin-left: 150rpx;" v-if="isShowAllSpecs && storageSpecList.length" @click="addSpec">新增规格</text>
					</view>
				</view>
				<!-- <view class="solid-top"> -->
				<!-- <view class="padding-lr flex align-center">
						<view class="flex-twice flex justify-start align-center">
							<view style="width: 20%;">单位</view>
							<my-uni-combox :candidates="productUnits" placeholder="请选择" v-model="formData.productUnit">
							</my-uni-combox>
						</view>
						<view class="flex-sub margin-left">
							优惠券+
						</view>
					</view> -->
				<!-- <view class="padding-lr flex align-center padding-tb-xs"> -->
				<!-- <view class="cu-form-group"> -->
				<!-- <checkbox style="transform:scale(1)" class="main-color margin-right-xs" :value="true"
								:v-model="formData.isGoldenServ" :checked="formData.isGoldenServ"></checkbox> -->
				<!-- <view class="title">金牌服务<text class="margin-left-xs text-red">*</text></view> -->
				<!-- <my-uni-combox :candidates="servHonorTitle" placeholder="请选择" v-model="formData.servHonorTitle"> -->
				<!-- </my-uni-combox> -->
				<!-- </view> -->
				<!-- <view class="flex-twice flex justify-start align-center">
							<view style="width: 25%;">质保期</view>
							<my-uni-combox :candidates="productProtectTimes" placeholder="请选择"
								v-model="formData.productProtectTime"></my-uni-combox>
						</view> -->
				<!-- </view> -->
				<!-- </view> -->
			</view>
			<view class="cu-form-group solid-top justify-start">
				<view class="title">商品单位<text class="text-red">*</text></view>
				<my-uni-combox class="form-val-area" :candidates="goodsUnitList" placeholder="上方已填单位则以上方所填为准"
					v-model="formData.goodsUnit">
				</my-uni-combox>
			</view>
			<view class="cu-form-group justify-start">
				<view class="title">质保期<text class="text-red">*</text></view>
				<my-uni-combox class="form-val-area" :candidates="warrantyPeriodList" placeholder="请选择"
					v-model="formData.warrantyPeriod">
				</my-uni-combox>
			</view>
			<view class="cu-form-group justify-start">
				<!-- <checkbox style="transform:scale(1)" class="main-color margin-right-xs" :value="true"
					:v-model="formData.isGoldenServ" :checked="formData.isGoldenServ"></checkbox> -->
				<view class="title">货品活动<text class="text-red">*</text></view>
				<my-uni-combox class="form-val-area" :candidates="servActivityList" placeholder="请选择"
					v-model="formData.servActivity">
				</my-uni-combox>
			</view>
			<view class="cu-form-group justify-start">
				<!-- <checkbox style="transform:scale(1)" class="main-color margin-right-xs" :value="true"
					:v-model="formData.isGoldenServ" :checked="formData.isGoldenServ"></checkbox> -->
				<view class="title">发货时效<text class="text-red">*</text></view>
				<my-uni-combox class="form-val-area" :candidates="expectDurationList" placeholder="请选择"
					v-model="formData.expectDuration">
				</my-uni-combox>
			</view>
			<view class="cu-form-group justify-start">
				<view class="title">到店服务</view>
				<my-uni-combox class="form-val-area" :showClear="true" :candidates="storeServiceList" placeholder="必须到店购买才选此项"
					v-model="formData.storeService">
				</my-uni-combox>
			</view>
			<view class="cu-form-group justify-start" v-if="formData.storeService">
				<view class="title">服务店铺<text class="text-red">*</text></view>
				<my-uni-combox class="form-val-area" :candidates="myShopList" placeholder="请选择" :alwaysShowEmpty="true"
					v-model="formData.shopId">
					<template v-slot:empty>
						<view>
							<span>无匹配项，</span>
							<span class="text-blue" @click="goToShopList">点击增加</span>
						</view>
					</template>
				</my-uni-combox>
			</view>
			<view class="cu-form-group justify-start">
				<view class="title">附加服务<text class="text-red">*</text></view>
				<view style="flex-basis: 85%;">
					<radio-group @change="changeServiceRadio">
						<label class="radio margin-right-sm">
							<radio style="transform:scale(0.7)" class="main-color" value="1"
								:checked="formData.installService == 1" />
							<text>包安装</text>
						</label>
						<label class="radio">
							<radio style="transform:scale(0.7)" class="main-color" value="2" :checked="formData.installService == 2" />
							<text>不包安装</text>
						</label>
						<label class="radio">
							<radio style="transform:scale(0.7)" class="main-color" value="2" :checked="formData.installService == 3" />
							<text>自费安装</text>
						</label>
					</radio-group>
					<radio-group @change="changeDeliveryRaio">
						<label class="radio margin-right-sm">
							<radio style="transform:scale(0.7)" class="main-color" value="1"
								:checked="formData.deliveryService == 1" />
							<text>包邮</text>
						</label>
						<label class="radio">
							<radio style="transform:scale(0.7)" class="main-color" value="2" :checked="formData.deliveryService == 2"/>
							<text>同城包送</text>
						</label>
						<label class="radio">
							<radio style="transform:scale(0.7)" class="main-color" value="3" :checked="formData.deliveryService == 3"/>
							<text>邮费自付/自提</text>
						</label>
					</radio-group>
				</view>
			</view>
			<view class="solid-top">
				<view class="cu-form-group">
					<view class="title">上架区域<text class="text-red">*</text></view>
					<picker :mode="'multiSelector'" @change="regionChange" @columnchange="regionColChange"
						:value="regionMultiIndex" :range-key="'areaName'" :range="regionList">
						<input disabled class="line-input radius-input" v-if="formData.region"
							:value="formData.region && formData.region.length ? formData.region[0].areaName + '-' + formData.region[1].areaName : ''"
							placeholder="请选择区域"></input>
						<input disabled class="line-input radius-input" v-else-if="formData.areaConcatName"
							:value="formData.areaConcatName" placeholder="请选择区域"></input>
					</picker>
				</view>
				<view class="padding-lr bg-white">
					<checkbox-group @change="checkDistirct" class="grid col-3">
						<view v-for="(item, index) in formData.districtList" :key="index" class="margin-tb-xs">
							<checkbox style="transform:scale(1)" class="main-color margin-right-xs" :value="index"
								:checked="item.checked"></checkbox>
							<text>{{item.areaName}}</text>
						</view>
					</checkbox-group>
				</view>
			</view>
			<view class="cu-bar bg-white">
				<view class="action text-black">区域描述<text class="text-red">*</text></view>
			</view>
			<view class="padding-lr-sm padding-bottom-sm bg-white">
				<textarea name="areaDesc" style="width: 100%; height: 150rpx;" class="solid radius text-left padding-sm"
					v-model="formData.areaDesc" maxlength="-1" placeholder="如：XX区XX街道未覆盖或XX区仅服务XX街道"></textarea>
			</view>
			<!-- 多城市 -->
			<view v-for="(item,index) in servArea" :key="index" class="bg-white">
				<view class="solid-top">
					<view @click="delServArea(index)">
						<button class="cu-btn bg-red light">
							<text class="margin-right-xs"><text class="cuIcon-close"></text></text>
							<text>删除</text>
						</button>
					</view>
					<view class="cu-form-group">
						<view class="title">上架区域<text class="text-red">*</text></view>
						<picker :mode="'multiSelector'" @change="multiRegionChange($event, index)"
							@columnchange="multiRegionColChange($event, index)"
							:value="item.regionMultiIndex" :range-key="'areaName'"
							:range="item.regionList">
							<input disabled class="line-input radius-input" v-if="item.region"
								:value="item.region && item.region.length ? item.region[0].areaName + '-' + item.region[1].areaName : ''"
								placeholder="请选择区域"></input>
						</picker>
					</view>
					<view class="padding-lr bg-white">
						<checkbox-group @change="multiAreaCheckDistirct($event, index)"  class="grid col-3">
							<view v-for="(item1, index1) in item.districtList"  :key="item1.id" class="margin-tb-xs">
								<checkbox style="transform:scale(1)" class="main-color margin-right-xs" :value="index1"
									:checked="item1.checked"></checkbox>
								<text>{{item1.areaName}}</text>
							</view>
						</checkbox-group>
					</view>
				</view>
				<view class="cu-bar">
					<view class="action text-black">区域描述<text class="text-red">*</text></view>
				</view>
				<view class="padding-lr-sm padding-bottom-sm">
					 <!-- :adjust-position="false" -->
					<textarea name="areaDesc" style="width: 100%; height: 150rpx;"
						class="solid radius text-left padding-sm" v-model="servArea[index].areaDesc" maxlength="-1"
						placeholder="如：XX区XX街道未覆盖或XX区仅服务XX街道"></textarea>
				</view>
			</view>
			<view class="text-center padding-bottom bg-white">
				<button class="cu-btn bg-main-color light" @click="addServArea">
					<text class="margin-right-xs"><text class="cuIcon-add"></text></text>
					<text>继续添加上架城市</text>
				</button>
			</view>
			<!-- <view class="cu-form-group">
				<view class="title">上门费</view>
				<input type="digit" name="doorPrice" :value="formData.doorPrice" :v-model="formData.doorPrice"
					placeholder="单位:元/次"></input>
			</view> -->
			<view class="cu-bar bg-white solid-top">
				<view class="action text-black">
					商品封面图上传<text class="text-red">*</text>【只能一张一张上传】
				</view>
			</view>
			<view class="cu-form-group">
				<view class="grid col-4 grid-square flex-sub">
					<view class="bg-img" v-for="(item,index) in formData.coverImgList" :key="index"
						@tap="viewImage($event, formData.coverImgList)" :data-url="item">
						<image :src="item" mode="aspectFill"></image>
						<view class="cu-tag bg-red" @tap.stop="delImg($event, formData.coverImgList)"
							:data-index="index">
							<text class='cuIcon-close'></text>
						</view>
					</view>
					<view class="solids" @tap="chooseImgList($event, 'coverImgList', 800, 800)"
						v-if="formData.coverImgList.length === 0">
						<text class='cuIcon-cameraadd'></text>
					</view>
				</view>
			</view>
			<view class="cu-bar bg-white solid-top">
				<view class="action text-black">
					详情图上传<text class="text-red">*</text>【可多张勾选同时上传】
				</view>
			</view>
			<view class="cu-form-group">
				<view class="grid col-4 grid-square flex-sub">
					<view class="bg-img" v-for="(item,index) in formData.descImgList" :key="index"
						@tap="viewImage($event, formData.descImgList)" :data-url="item">
						<image :src="item" mode="aspectFill"></image>
						<view class="cu-tag bg-red" @tap.stop="delImg($event, formData.descImgList)"
							:data-index="index">
							<text class='cuIcon-close'></text>
						</view>
					</view>
					<view class="solids" @tap="chooseImgNoCrop($event, 'descImgList')"
						v-if="formData.descImgList.length<9">
						<text class='cuIcon-cameraadd'></text>
					</view>
				</view>
			</view>
			<view class="cu-bar bg-white solid-top">
				<view class="action text-black">
					轮播图上传<text class="text-red">*</text>【只能一张一张上传】
				</view>
			</view>
			<view class="cu-form-group">
				<view class="grid col-4 grid-square flex-sub">
					<view class="bg-img" v-for="(item,index) in formData.imgList" :key="index"
						@tap="viewImage($event, formData.imgList)" :data-url="item">
						<image :src="item" mode="aspectFill"></image>
						<view class="cu-tag bg-red" @tap.stop="delImg($event, formData.imgList)" :data-index="index">
							<text class='cuIcon-close'></text>
						</view>
					</view>
					<view class="solids" @tap="chooseImgList($event, 'imgList')" v-if="formData.imgList.length<9">
						<text class='cuIcon-cameraadd'></text>
					</view>
				</view>
			</view>
			<ksp-cropper mode="fixed" :width="cropWidth" :height="cropHeight" :maxWidth="cropWidth"
				:maxHeight="cropHeight" :url="url2Crop" @cancel="oncancel" @ok="onok"></ksp-cropper>
			<view class="cu-bar bg-white solid-top">
				<view class="action text-black">
					视频上传【一分钟内的视频最佳】
				</view>
			</view>
			<!-- <view class="bg-white padding-lr padding-bottom-sm">
				<uni-file-picker limit="1" file-mediatype="video" return-type="object" @select="selectVideo">
					<button class="cu-btn bg-main-color shadow-blur">选择文件</button>
				</uni-file-picker>
			</view> -->
			<view class="cu-form-group">
				<view class="grid col-4 grid-square flex-sub" v-if="formData.videoList.length === 0">
					<view class="solids" @tap="chooseVideo()">
						<text class='cuIcon-cameraadd'></text>
					</view>
				</view>
				<view class="grid grid-square flex-sub" v-else>
					<view class="bg-img" v-for="(item,index) in formData.videoList" :key="index" :data-url="item">
						<video :src="item" controls></video>
						<view class="cu-tag bg-red" @tap.stop="delImg($event, formData.videoList)" :data-index="index">
							<text class='cuIcon-close'></text>
						</view>
					</view>
				</view>
			</view>
			<view class="padding-sm bg-white solid-top">
				<textarea style="width: 100%;" class="solid radius text-left padding-sm" v-model="formData.detailDesc"
					maxlength="-1" placeholder="请输入详情介绍"></textarea>
			</view>

			<view class="padding-bottom-lg padding-top bg-white text-center">
				<button class="cu-btn bg-main-color shadow-blur long-btn" @click="submit">确定</button>
			</view>
		</form>
		<!-- 账户及实名弹窗 -->
		<!-- <vertify-bank-bind ref="vertifyBankBind"></vertify-bank-bind> -->
		<vertify-certify ref="vertifyCertify"></vertify-certify>
	</view>
</template>

<script>
	import myUniCombox from '@/components/uni-combox/my-uni-combox.vue';

	export default {
		components: {
			myUniCombox
		},
		data() {
			return {
				goodsId: null,
				type: 1,
				formData: {
					servName: '',
					servDesc: '',
					specsList: [],
					category: [],
					productUnit: '',
					isGoldenServ: false,
					region: [],
					districtList: [],
					areaDesc: '',
					doorPrice: '',
					imgList: [],
					detailDesc: '',
					descImgList: [],
					coverImgList: [],
					videoList: [],
					shopId: '',
					shopName: '',
					storeService: '',
					installService: '1',
					deliveryService: '1'
				},
				servArea: [],
				sysInfo: null,
				url2Crop: '',
				cropWidth: 0,
				cropHeight: 0,
				curImgListField: '',
				categoryList: [],
				categoryMultiIndex: [0, 0, 0],
				regionList: [],
				regionMultiIndex: [0, 0],
				isShowAllSpecs: false,
				goodsUnitList: [{
					code: 1,
					name: '台'
				}, {
					code: 2,
					name: '件'
				}, {
					code: 3,
					name: '个'
				}, {
					code: 4,
					name: '套'
				}, {
					code: 5,
					name: '㎡'
				}, {
					code: 6,
					name: '只'
				}, {
					code: 7,
					name: '张'
				}, {
					code: 8,
					name: '条'
				}, {
					code: 9,
					name: '顶'
				}, {
					code: 10,
					name: '支'
				}, {
					code: 11,
					name: '根'
				}],
				servActivityList: [
				{
					code: 7,
					name: '官方正品（需展示代理授权书）'
				},{
					code: 8,
					name: '授权正品（需展示代理授权书）'
				},{
					code: 1,
					name: '甄选好货'
				}, {
					code: 2,
					name: '定制预售'
				}, {
					code: 3,
					name: '特惠团购'
				}, {
					code: 4,
					name: '会员专享'
				}, {
					code: 5,
					name: '分享0元购'
				}, {
					code: 6,
					name: '二手商品'
				}, {
					code: 9,
					name: '尾货大甩卖'
				}, {
					code: 10,
					name: '库存大清仓'
				}, {
					code: 11,
					name: '集中采购'
				}, {
					code: 12,
					name: '大库存散批'
				}],
				warrantyPeriodList: [{
					code: 1,
					name: '即时验收'
				}, {
					code: 2,
					name: '验收后离店'
				}, {
					code: 3,
					name: '完工24小时'
				}, {
					code: 4,
					name: '3天'
				}, {
					code: 5,
					name: '7天'
				}, {
					code: 6,
					name: '15天'
				}, {
					code: 7,
					name: '30天'
				}, {
					code: 8,
					name: '45天'
				}, {
					code: 9,
					name: '3个月'
				}, {
					code: 10,
					name: '6个月'
				}, {
					code: 11,
					name: '12个月'
				}, {
					code: 12,
					name: '24个月'
				}],
				expectDurationList: [
					{
						name: '同城即送'
					},{
						name: '同城30分钟即送'
					},{
						name: '同城1小时快送'
					},{
						name: '同城2小时快送'
					},{
						name: '同城3小时送达'
					},{
						name: '同城自提'
					},{
						name: '15点前下单，当天发货'
					},{
						name: '17点前下单，当天发货'
					},{
						name: '今天下单，次日发货'
					},{
						name: '今天下单，3日内发货'
					},{
						name: '预售品，3天内发货'
					},{
						name: '预售品，5天内发货'
					},{
						name: '预售品，7天内发货'
					},{
						name: '预售品，15天内发货'
					}],
				storeServiceList: [
					{
						code: 1,
						name: '到店服务'
					}, {
						code: 2,
						name: '到店+配送（服务）'
					}, {
						code: 3,
						name: '到店+上门（服务）'
					}
				],
				curUserInfo: {},
				bankCard: null,
				certifyInfo: null,
				myShopList: [],
				storageSpecList: []
			}
		},
		onLoad(options) {
			if (options && options.goodId) {
				this.goodsId = options.goodId;
			}
			if(options && options.type) {
				this.type = options.type
			}
			this.loadData(this.goodsId);
		},
		onShow() {
			this.loadShopList();
		},
		methods: {
			async loadData(goodId) {
				this.sysInfo = uni.getSystemInfoSync();
				this.curUserInfo = this.$request.getCurUserInfo();
				if (goodId) {
					this.getCurGoodsInfo(goodId);
				}
				this.checkBankAndCertify();
				this.loadCategoryList();
				this.loadRegionList();
				// TODO 如果存在goodId说明是修改，需要查询good信息进行回显
				// this.categoryList = await this.$api.data('categoryList');
				// this.regionList = await this.$api.data('regionList');
			},
			async loadShopList() {
				let res = await this.$request.getMasterShopAddressList(this.$request.getCurUserInfo().workerId);
				this.myShopList = res.data.map(item => {return {name: item.shopName, code: item.shopId}});
			},
			goToShopList() {
				uni.navigateTo({
					url: '/pages/my/shop-list'
				})
			},
			async getCurGoodsInfo(goodsId) {
				let res1 = await this.$request.qryProductDetail({
					goodsId: goodsId
				});
				let goods = res1.data;

				// 选中规则转map
				let chosenGoodsStandardMap = new Map();
				goods.goodsStandardList.forEach(o => {
					chosenGoodsStandardMap.set(o.deptGoodsCategoryId, o);
				});
				// 查询选中的第三级类目下的所有规格
				let res2 = await this.$request.listByStep({
					type: this.type,
					goodsCategoryId: goods.deptGoodsCategoryId
				});
				let specsList = res2.data;
				let newSpecsList = [];
				specsList.forEach(o => {
					if (chosenGoodsStandardMap.has(o.deptGoodsCategoryId)) {
						o = chosenGoodsStandardMap.get(o.deptGoodsCategoryId);
						o.checked = true;
					}
					newSpecsList.push(o);
				});

				// 选中地区转map
				let chosenAreaMap = new Map();
				goods.goodsAreaList.forEach(o => {
					chosenAreaMap.set(o.countryAreaId, o);
				});
				// 查询选中的第二级区域下的第三级区域
				let res3 = await this.$request.areaListByStep({
					parentCode: goods.parentAreaId
				});
				let areaList = res3.data;
				let newAreaList = [];
				areaList.forEach(o => {
					if (chosenAreaMap.has(o.areaId)) {
						o = chosenAreaMap.get(o.areaId);
						o.checked = true;
						o.areaId = o.countryAreaId;
						o.areaCode = o.countryAreaId;
					}
					newAreaList.push(o);
				});
				console.log(newAreaList)
				
				let stopService = null
				if(goods.storeService) {
					stopService = this.storeServiceList.find(i => i.code == goods.storeService)
				}

				this.formData = {
					servName: goods.goodsName,
					servDesc: goods.goodsDesc,
					categoryConcatName: goods.categoryConcatName,
					deptGoodsCategoryId: goods.deptGoodsCategoryId,
					specsList: newSpecsList,
					goodsUnit: {
						name: goods.goodsUnit
					},
					warrantyPeriod: {
						name: goods.warrantyPeriod
					},
					servActivity: {
						name: goods.servActivity === '官方正品' || goods.servActivity === '授权正品' ? goods.servActivity + '（需展示代理授权书）' : goods.servActivity
					},
					expectDuration: {
						name: goods.expectDuration
					},
					areaConcatName: goods.areaConcatName,
					districtList: newAreaList,
					detailDesc: goods.remark,
					areaDesc: goods.areaDesc,
					coverImgList: [goods.goodsImgUrl],
					imgList: goods.lbUrl,
					descImgList: goods.detailUrl,
					videoList: goods.goodsVideoUrl ? [goods.goodsVideoUrl] : [],
					// status: 0,
					shopId: goods.shopId ? {code: goods.shopId, name: goods.shopName} : null,
					storeService: goods.storeService ? stopService : null,
					installService: goods.installService,
					deliveryService: goods.deliveryService
				}
			},
			changeServiceRadio(e) {
				this.formData.installService = e.detail.value;
			},
			changeDeliveryRaio(e) {
				this.formData.deliveryService = e.detail.value;
			},
			async checkBankAndCertify() {
				// 查询账户绑定信息
				// let bankCardRes = await this.$request.getBindBankCardByWorkerId({
				// workerId: this.curUserInfo.workerId
				// });
				// this.bankCard = bankCardRes.data;
				// 查询实名信息
				let certifyInfoRes = await this.$request.getWorkerCertify();
				this.certifyInfo = certifyInfoRes.data;
				// if (!this.bankCard || !this.bankCard.bankNum) {
				// this.$refs.vertifyBankBind.showModal();
				// return false;
				if (!this.certifyInfo || !this.certifyInfo.workerCertificationId) {
					this.$refs.vertifyCertify.showModal();
					return false;
				}
				return true;
			},
			async loadCategoryList(idArr) {
				let typeList = await this.$request.listByStep({
					type: this.type
				});
				typeList = typeList.data;
				let col1Id = idArr ? idArr[0] : typeList[0].goodsCategoryId;
				let subTypeList = await this.$request.listByStep({
					type: this.type,
					goodsCategoryId: col1Id
				});
				subTypeList = subTypeList.data;
				let col2Id = idArr ? idArr[1] : subTypeList[0].goodsCategoryId;
				let subSubTypeList = await this.$request.listByStep({
					type: this.type,
					goodsCategoryId: col2Id
				});
				subSubTypeList = subSubTypeList.data;
				let col3Id = idArr ? idArr[2] : subSubTypeList[0].goodsCategoryId;
				let thirdTypeList = await this.$request.listByStep({
					type: this.type,
					goodsCategoryId: col3Id
				});
				thirdTypeList = thirdTypeList.data;
				// this.categoryList.push(typeList);
				this.categoryList.push(subTypeList);
				this.categoryList.push(subSubTypeList);
				this.categoryList.push(thirdTypeList);
			},
			async loadRegionList() {
				let regionList = await this.$request.areaListByStep();
				regionList = regionList.data;
				let subRegionList = [];
				if (regionList && regionList.length > 0) {
					subRegionList = await this.$request.areaListByStep({
						parentCode: regionList[0].areaCode
					});
					subRegionList = subRegionList.data;
				}
				this.regionList.push(regionList);
				this.regionList.push(subRegionList);
			},
			async categoryChange(e) {
				this.categoryMultiIndex = e.detail.value;
				let chosenCategory = [];
				for (let i = 0; i < this.categoryList.length; i++) {
					chosenCategory.push(this.categoryList[i][this.categoryMultiIndex[i]]);
				}
				this.formData.category = chosenCategory;
				this.formData.deptGoodsCategoryId = this.formData.category[this.formData.category.length - 1]
					.goodsCategoryId;

				// 查询最后一级品类
				let res = await this.$request.listByStep({
					type: this.type,
					goodsCategoryId: chosenCategory[chosenCategory.length - 1].goodsCategoryId
				});
				if(res.data.length >= 3) {
					this.storageSpecList = res.data.slice(2,-1);
					this.formData.specsList = res.data.slice(0,3);
				} else {
					this.formData.specsList = res.data;
				}
			},
			addSpec() {
				const removeItem = this.storageSpecList.splice(0,1)
				this.formData.specsList.push(removeItem[0])
			},
			async categoryColChange(e) {
				let colObj = e.detail;
				if (colObj.column == 0) {
					// 通过一级查询二级，通过二级查三级
					let subTypeList = await this.$request.listByStep({
						type: this.type,
						goodsCategoryId: this.categoryList[0][colObj.value].goodsCategoryId
					});
					subTypeList = subTypeList.data;
					let subSubTypeList = [];
					if (subTypeList && subTypeList.length) {
						subSubTypeList = await this.$request.listByStep({
							type: this.type,
							goodsCategoryId: subTypeList[0].goodsCategoryId
						});
						subSubTypeList = subSubTypeList.data;
					}
					this.categoryList.pop();
					this.categoryList.pop();
					this.categoryList.push(subTypeList);
					this.categoryList.push(subSubTypeList);
					this.categoryMultiIndex = [colObj.value, 0, 0];
				} else if (colObj.column == 1) {
					// 通过二级查三级
					let subSubTypeList = await this.$request.listByStep({
						type: this.type,
						goodsCategoryId: this.categoryList[1][colObj.value].goodsCategoryId
					});
					subSubTypeList = subSubTypeList.data;
					this.categoryList.pop();
					this.categoryList.push(subSubTypeList);
					this.categoryMultiIndex = [this.categoryMultiIndex[0], colObj.value, 0];
				}
			},
			async regionChange(e) {
				this.regionMultiIndex = e.detail.value;
				let chosenRegion = [];
				for (let i = 0; i < this.regionList.length; i++) {
					chosenRegion.push(this.regionList[i][this.regionMultiIndex[i]]);
				}
				this.formData.region = chosenRegion;

				// 查询最后一级区域
				let areaList = await this.$request.areaListByStep({
					parentCode: chosenRegion[1].areaCode
				});
				this.formData.districtList = areaList.data;
			},
			async multiRegionChange(e, regionIndex) {
				this.servArea[regionIndex].regionMultiIndex = e.detail.value;
				let chosenRegion = [];
				for (let i = 0; i < this.servArea[regionIndex].regionList.length; i++) {
					chosenRegion.push(this.servArea[regionIndex].regionList[i][this.servArea[regionIndex]
						.regionMultiIndex[i]
					]);
				}
				this.servArea[regionIndex].region = chosenRegion;

				// 查询最后一级区域
				let areaList = await this.$request.areaListByStep({
					parentCode: chosenRegion[1].areaCode
				});
				this.servArea[regionIndex].districtList = areaList.data;
			},
			async regionColChange(e) {
				let colObj = e.detail;
				if (colObj.column == 0) {
					// 通过一级查二级
					let subAreaList = await this.$request.areaListByStep({
						parentCode: this.regionList[0][colObj.value].areaCode
					});
					subAreaList = subAreaList.data;
					this.regionList.pop();
					this.regionList.push(subAreaList);
					this.regionMultiIndex = [colObj.value, 0];
				}
			},
			async multiRegionColChange(e, regionIndex) {
				let colObj = e.detail;
				if (colObj.column == 0) {
					// 通过一级查二级
					let subAreaList = await this.$request.areaListByStep({
						parentCode: this.regionList[0][colObj.value].areaCode
					});
					subAreaList = subAreaList.data;
					this.servArea[regionIndex].regionList.pop();
					this.servArea[regionIndex].regionList.push(subAreaList);
					this.servArea[regionIndex].regionMultiIndex = [colObj.value, 0];
				}
			},
			checkSpecs(e) {
				let checkedIndexArr = e.detail.value;
				for (let i = 0; i < this.formData.specsList.length; i++) {
					if (checkedIndexArr.indexOf(String(i)) !== -1) {
						this.formData.specsList[i].checked = true;
					} else {
						this.formData.specsList[i].checked = false;
					}
				}
			},
			inputSpecs(e, index, field) {
				this.formData.specsList[index][field] = e.detail.value;
			},
			showAllSpecs() {
				this.isShowAllSpecs = !this.isShowAllSpecs;
			},
			hideTips(tipName, index) {
				if (typeof index === 'number' && index >= 0) {
					this.$refs[tipName][index].close();
				} else {
					this.$refs[tipName].close();
				}
			},
			checkDistirct(e) {
				let checkedIndexArr = e.detail.value;
				for (let i = 0; i < this.formData.districtList.length; i++) {
					if (checkedIndexArr.indexOf(String(i)) !== -1) {
						this.formData.districtList[i].checked = true;
					} else {
						this.formData.districtList[i].checked = false;
					}
				}
			},
			multiAreaCheckDistirct(e, index) {
				let checkedIndexArr = e.detail.value;
				for (let i = 0; i < this.servArea[index].districtList.length; i++) {
					if (checkedIndexArr.indexOf(String(i)) !== -1) {
						this.servArea[index].districtList[i].checked = true;
					} else {
						this.servArea[index].districtList[i].checked = false;
					}
				}
			},
			chooseImgList(e, imgListField, cropWidth, cropHeight) {
				this.cropWidth = cropWidth && cropWidth > 0 ? cropWidth : this.sysInfo.windowWidth * 2;
				this.cropHeight = cropHeight && cropHeight > 0 ? cropHeight : this.sysInfo.windowWidth * 2 * 1.15;
				uni.chooseMedia({
					count: 1, //默认9
					mediaType: ['image'],
					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图，默认二者都有
					sourceType: ['album'], //从相册选择
					success: (res) => {
						res.tempFiles.forEach((fileObj, index) => {
							this.url2Crop = fileObj.tempFilePath;
							this.curImgListField = imgListField;
						});
					}
				});
			},
			onok(ev) {
				uni.showLoading({
					title: '上传中',
					mask: true
				});
				this.$request.uploadFile(ev.path).then((url) => {
					if(this.curImgListField.indexOf('specsList') > -1) {
						// 规格上传图片
						const specsListIndex = this.curImgListField.split(':')[1]
						const temp = this.formData.specsList[specsListIndex]
						temp.imageUrl = url
						this.$set(this.formData.specsList, specsListIndex, temp)
					} else {
						this.formData[this.curImgListField].push(url);
					}
					uni.hideLoading();
				});
				// url设置为空，隐藏控件
				this.url2Crop = "";
			},
			oncancel() {
				// url设置为空，隐藏控件
				this.url2Crop = "";
			},
			chooseImgNoCrop(e, imgListField) {
				uni.chooseMedia({
					count: 9, //默认9
					mediaType: ['image'],
					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图，默认二者都有
					sourceType: ['album'], //从相册选择
					success: (res) => {
						uni.showLoading({
							title: '上传中',
							mask: true
						});
						res.tempFiles.forEach((fileObj, index) => {
							this.$request.uploadFile(fileObj.tempFilePath).then((url) => {
								this.formData[imgListField].push(url);
								if (index === res.tempFiles.length - 1) {
									uni.hideLoading();
								}
							});
						});
					}
				});
			},
			viewImage(e, imgList) {
				uni.previewImage({
					urls: imgList,
					current: e.currentTarget.dataset.url
				});
			},
			delImg(e, imgList) {
				uni.showModal({
					title: '',
					content: '确定要删除这张图片吗？',
					cancelText: '取消',
					confirmText: '确定',
					success: res => {
						if (res.confirm) {
							imgList.splice(e.currentTarget.dataset.index, 1)
						}
					}
				})
			},
			chooseVideo() {
				let _this = this;
				uni.chooseVideo({
					sourceType: ['camera', 'album'],
					success: function(res) {
						uni.showLoading({
							title: '上传中',
							mask: true
						});
						_this.$request.uploadFile(res.tempFilePath).then((url) => {
							uni.hideLoading();
							_this.formData.videoList.push(url);
						});
					}
				});
			},
			// async selectVideo(e) {
			// 	uni.showLoading({
			// 		title: '上传中',
			// 		mask: true
			// 	});
			// 	this.formData.video = await this.$request.uploadFile(e.tempFilePaths[0]);
			// 	uni.hideLoading();
			// },
			validData(data) {
				let errMsg = "";
				if (!data.servName) {
					errMsg = '商品名称不能为空';
				} else if (!data.servDesc) {
					errMsg = '搜索关键词不能为空';
				} else if ((!data.category || !data.category.length) && (!data.categoryConcatName)) {
					errMsg = '请选择类目';
				} else if (!data.goodsStandardList || !data.goodsStandardList.length) {
					errMsg = '至少勾选一个规格';
				} else if (!this.validSpecData(data.goodsStandardList)) {
					return false;
				} else if (!data.goodsUnit) {
					errMsg = '商品单位不能为空';
				} else if (!data.warrantyPeriod) {
					errMsg = '质保期不能为空';
				} else if (!data.servActivity) {
					errMsg = '货品活动不能为空';
				} else if (!data.expectDuration) {
					errMsg = '发货时效不能为空';
				} else if(data.storeService && !data.shopId) {
					errMsg = '到店店铺不能为空';
				} else if (!data.goodsAreaList || !data.goodsAreaList.length) {
					errMsg = '上架区域填写不完整';
				} else if (!data.areaDesc) {
					errMsg = '区域描述不能为空';
				} else if (!data.coverImgList || !data.coverImgList.length) {
					errMsg = '封面图不能为空';
				} else if (!data.descImgList || !data.descImgList.length) {
					errMsg = '详情图不能为空';
				} else if (!data.imgList || !data.imgList.length) {
					errMsg = '轮播图不能为空';
				}
				if (errMsg) {
					uni.showToast({
						icon: 'none',
						title: errMsg,
						duration: 2500
					})
					return false;
				}
				return true;
			},
			validSpecData(goodsStandardList) {
				let errMsg = "";
				for (let i = 0; i < goodsStandardList.length; i++) {
					let spec = goodsStandardList[i];
					if (!spec.goodsPrice) {
						errMsg = '已勾选规格的价格不能为空';
					} else if (!spec.goodsNum) {
						errMsg = '已勾选规格的库存不能为空';
					}
					if (errMsg) {
						uni.showToast({
							icon: 'none',
							title: errMsg,
							duration: 2500
						})
						break;
					}
				}
				if (errMsg) {
					return false;
				}
				return true;
			},
			validMultiAreaList(data) {
				let errMsg = null;
				if (!data.goodsAreaList || !data.goodsAreaList.length || !data.areaDesc) {
					errMsg = '上架区域填写不完整';
				}
				if (errMsg) {
					uni.showToast({
						icon: 'none',
						title: errMsg,
						duration: 2500
					})
					return false;
				}
				return true;
			},
			async submit() {
				// 多城市上架区域校验
				let multiServAreaChecked = true;
				let multiServAreaList = [];
				for (let x of this.servArea) {
					let oneCheckedAreaList = null;
					if (x && x.districtList && x.districtList.length) {
						oneCheckedAreaList = x.districtList.filter((item) => {
							if (item.checked) {
								item.countryAreaId = item.areaId;
								return item;
							}
						});
					}
					let oneServAreaObj = {
						goodsAreaList: oneCheckedAreaList,
						areaDesc: x.areaDesc
					}
					if (!this.validMultiAreaList(oneServAreaObj)) {
						multiServAreaChecked = false;
						break;
					}
					multiServAreaList.push(oneServAreaObj);
				}
				if (!multiServAreaChecked) {
					return;
				}

				let goodsStandardList = this.formData.specsList.filter((item) => {
					if (item.checked) {
						if (!item.goodsStandardName) {
							item.goodsStandardName = item.goodsCategoryName;
						}
						return item;
					}
				});
				let goodsAreaList = this.formData.districtList.filter((item) => {
					if (item.checked) {
						item.countryAreaId = item.areaId;
						return item;
					}
				});
				let data2Valid = {
					...this.formData,
					goodsStandardList: goodsStandardList,
					goodsAreaList: goodsAreaList
				}
				if (!this.validData(data2Valid)) {
					return;
				}

				// let checkRes = await this.checkBankAndCertify();
				// if (!checkRes) {
				// 	return;
				// }

				// 0是轮播图，1是详情图
				let goodsImgsList = [];
				this.formData.imgList.forEach((url) => {
					goodsImgsList.push({
						imgUrl: url,
						imgType: 0
					});
				});
				this.formData.descImgList.forEach((url) => {
					goodsImgsList.push({
						imgUrl: url,
						imgType: 1
					});
				});
				let goodsVideoUrl = this.formData.videoList.length ? this.formData.videoList[0] : '';

				let params = {
					goodsName: this.formData.servName,
					goodsDesc: this.formData.servDesc,
					goodsUnit: this.formData.goodsUnit.name,
					warrantyPeriod: this.formData.warrantyPeriod.name,
					servActivity: this.formData.servActivity.name.indexOf('代理授权书') > -1 ? this.formData.servActivity.name.split('（')[0] : this.formData.servActivity.name,
					expectDuration: this.formData.expectDuration.name,
					deptGoodsCategoryId: this.formData.deptGoodsCategoryId,
					goodsStandardList: goodsStandardList,
					goodsAreaList: goodsAreaList,
					goodsImgUrl: this.formData.coverImgList[0],
					goodsImgsList: goodsImgsList,
					goodsVideoUrl: goodsVideoUrl,
					status: 0,
					remark: this.formData.detailDesc,
					areaDesc: this.formData.areaDesc,
					type: this.type,
					shopId: this.formData.storeService ? (this.formData.shopId ? this.formData.shopId.code : '') : '',
					shopName: this.formData.storeService ? (this.formData.shopId ? this.formData.shopId.name : '') : '',
					storeService: this.formData.storeService ? this.formData.storeService.code : '',
					installService: this.formData.installService,
					deliveryService: this.formData.deliveryService
				}
				
				let res = null;
				if (this.goodsId) {
					res = await this.$request.editGoods({
						...params,
						goodsId: this.goodsId
					});
				} else {
					res = await this.$request.addGoods(params);
				}
				// 如果选了多城市，添加多个服务
				let index = 0;
				while (index < multiServAreaList.length && res && res.code === 0) {
					res = await this.$request.addGoods({
						...params,
						goodsAreaList: multiServAreaList[index].goodsAreaList,
						areaDesc: multiServAreaList[index].areaDesc
					});
					index++;
				}
				if (res && res.code === 0) {
					uni.showToast({
						icon: 'success'
					})
					uni.reLaunch({
						url: '/pages/index/index?menuCode=supplyChainPage'
					})
				}
			},
			async addServArea() {
				let subRegionList = await this.$request.areaListByStep({
					parentCode: this.regionList[0][0].areaCode
				});
				subRegionList = subRegionList.data;

				this.servArea.push({
					region: [],
					districtList: [],
					areaDesc: null,
					regionList: [this.regionList[0], subRegionList],
					regionMultiIndex: [0, 0]
				});
			},
			delServArea(index) {
				this.servArea.splice(index, 1);
			}
		},
	}
</script>

<style scoped>
	.cu-form-group picker::after {
		display: none;
	}

	.cu-form-group .title {
		flex-basis: 26%;
		text-align: justify;
		padding-right: 10rpx;
		font-size: 30rpx;
		position: relative;
		height: 60rpx;
		line-height: 60rpx;
	}

	.certern-height {
		max-height: 520rpx;
		overflow: hidden;
		position: relative;
	}

	.long-btn {
		width: 95%;
	}

	.form-val-area {
		flex-basis: 75% !important;
	}

	.radius-input.xs {
		font-size: 23rpx;
	}

	.radius-input.sm {
		font-size: 25rpx;
	}
</style>
