| 
					
				 | 
			
			
				@@ -1,11 +1,14 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   <Dialog title="活动奖品配置" v-model="dialogVisible" style="width: 70%;"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    <div class="text-right mb-20px"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div class="text-right"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <el-button type="primary" plain @click="handleAddPrize"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <Icon icon="ep:plus" class="mr-5px" /> 新增奖品 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     <div style="display: inline-block; width: 100%;"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class="mb-20px" style="color: var(--el-color-warning)"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        提示:抽奖概率 =(奖品权重 × 奖品数量)÷ 总权重,计算结果四舍五入保留两位小数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <el-table v-loading="loading" :data="list" :stripe="true"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <el-table-column label="奖品名称" align="center" prop="name" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <el-table-column label="奖品图片" align="center" min-width="80" prop="image"> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -13,16 +16,19 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           <img :src="scope.row.image" alt="" class="h-70px" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <el-table-column label="奖品数量" align="center" prop="total" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <el-table-column label="权重" align="center" prop="chance" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <el-table-column label="类型" align="center" prop="type"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <template #default="scope"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           <dict-tag :type="DICT_TYPE.PROMOTION_LUCK_PRIZE_TYPE" :value="scope.row.type" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <el-table-column label="提示语" align="center" prop="prompt" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-table-column label="奖品数量" align="center" prop="total" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-table-column label="权重" align="center" prop="chance" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-table-column label="抽奖概率" align="center" prop="probability"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <template #default="scope">{{ scope.row.probability }}%</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <el-table-column label="排序" align="center" prop="sort" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <el-table-column label="操作" align="center"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-table-column label="操作" align="center" fixed="right" min-width="110"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <template #default="scope"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           <el-button link type="primary" @click="handleEdit(scope.row.id)">编辑</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           <el-button link type="danger" @click="handleDelete(scope.row.id)">删除</el-button> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -38,45 +44,61 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   </Dialog> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   <Dialog title="添加奖品" v-model="showAddPrize"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    <el-form 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ref="formRef" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      :model="addPrizeData" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      :rules="addPrizeFormRules" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      label-width="80px" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <el-form-item label="奖品" prop="type"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <el-form ref="formRef" :model="addPrizeData" label-width="80px"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item label="奖品" prop="type" :rules="[{ required: true, message: '奖品类型不能为空', trigger: 'change' }]"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <el-radio-group v-model="addPrizeData.type"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <el-radio v-for="dict in getIntDictOptions(DICT_TYPE.PROMOTION_LUCK_PRIZE_TYPE)" :key="dict.value" :value="dict.value.toString()" @change="handleChangeType">{{ dict.label }}</el-radio> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-radio v-for="dict in getIntDictOptions(DICT_TYPE.PROMOTION_LUCK_PRIZE_TYPE)" :key="dict.value" :value="dict.value.toString()" @change="handleChangePrizeType">{{ dict.label }}</el-radio> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </el-radio-group> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <el-form-item v-if="isShowSpu" label="商品" prop="productId"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <div style="width: 100%;"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <el-image v-if="Object.keys(spu).length && spu?.id" class="w-100px h-100px" :src="spu?.picUrl" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item v-if="prizeType === '6'" label="商品" prop="productId"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div class="w-full"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-image v-if="spu && Object.keys(spu).length && spu?.id" class="w-100px h-100px" :src="spu?.picUrl" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <el-button :icon="Plus" type="primary" @click.stop="spuQueryParams.pageNo = 1,showSpu = true">选择商品</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <el-form-item label="奖品名称" prop="name"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item label="奖品名称" prop="name" :rules="[{ required: true, message: '奖品名称不能为空', trigger: 'blur' }]"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <el-input v-model="addPrizeData.name" placeholder="请输入奖品名称" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <el-form-item label="奖品图片" prop="image"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <UploadImg v-model="addPrizeData.image" :validSpecifications="true" height="150px" width="150px" :fileSize="10" :maxWidth="150" :maxHeight="150" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item label="奖品图片" prop="image" :rules="[{ required: true, message: '奖品图片不能为空', trigger: 'change' }]"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <UploadImg v-model="addPrizeData.image" :validSpecifications="true" height="150px" width="150px" :fileSize="10" :maxWidth="800" :maxHeight="800" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <el-form-item label="排序" prop="sort"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <el-input-number v-model="addPrizeData.sort" :min="1" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-input-number v-model="addPrizeData.sort" :min="0" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <el-form-item label="奖品数量" prop="total"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <el-input-number v-model="addPrizeData.total" :min="1" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item label="奖品数量" prop="total" :rules="[{ required: true, message: '商品数量不能为空', trigger: 'blur' }]"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-input-number v-model="addPrizeData.total" :min="0" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <el-form-item label="奖品权重" prop="chance"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <el-input-number v-model="addPrizeData.chance" :min="1" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item label="奖品权重" prop="chance" :rules="[{ required: true, message: '奖品权重不能为空', trigger: 'blur' }]"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-input-number v-model="addPrizeData.chance" :min="0" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <el-form-item label="提示语" prop="prompt"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item label="提示语" prop="prompt" :rules="[{ required: true, message: '提示语不能为空', trigger: 'blur' }]"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <el-input v-model="addPrizeData.prompt" placeholder="请输入提示语" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div v-if="prizeType === '99'"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="省市区" required> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-cascader  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ref="areaRef"  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            v-model="area" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            class="w-full" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            clearable  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            placeholder="省市区 *"  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :props="{ value: 'id', label: 'name', emitPath: false }"  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :options="areaTreeData"  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @change="handleChangeArea" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @clear="handleClearArea" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="集团名称" prop="extend.bloc" :rules="[{ required: true, message: '集团名称不能为空', trigger: 'blur' }]"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-input v-model="addPrizeData.extend.bloc" placeholder="请输入集团名称" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="品牌名称" prop="extend.brand" :rules="[{ required: true, message: '品牌名称不能为空', trigger: 'blur' }]"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-input v-model="addPrizeData.extend.brand" placeholder="请输入品牌名称" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     </el-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     <template #footer> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <el-button @click="submitPrize" type="primary">确 定</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <el-button @click="showAddPrize = false, spu = {}">取 消</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-button @click="showAddPrize = false; spu = {}">取 消</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   </Dialog> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -96,6 +118,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   import { LuckLotteryApi } from '@/api/mall/promotion/lottery/config' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   import * as ProductSpuApi from '@/api/mall/product/spu' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   import SpuList from './components/spuList.vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  import { getDict } from '@/hooks/web/useDictionaries' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   /** 幸运抽奖-活动 表单 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   defineOptions({ name: 'LuckLotteryForm' }) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -111,6 +134,22 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     pageSize: 10, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     lotteryId: undefined as any 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const area = ref() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const areaRef = ref() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const areaTreeData = ref([]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const getDictData = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const { data } = await getDict('areaTreeData', {}, 'areaTreeData') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const obj = data.find(e => e.name === '中国') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const list = obj?.children ? obj.children.map(e =>{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 市辖区直接显示区 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const municipality = e.children && e.children.length && e.children[0].name === '市辖区' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (municipality && e.children[0].children?.length) e.children = e.children[0].children 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return e 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) : [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    areaTreeData.value = list || [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  getDictData() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // 获取奖品分页 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const getList = async () => { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -118,7 +157,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       const res = await LuckLotteryApi.getLuckLotteryPrizePage(queryParams) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       list.value = res.list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      total.value = res.total 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // total.value = res.total 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       loading.value = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -143,6 +182,35 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       spuLoading.value = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 地区选择 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const handleChangeArea = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const key = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      value: ['provinceId', 'cityId', 'districtId'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      label: ['provinceName', 'cityName', 'districtName'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const node = areaRef.value.getCheckedNodes() ? areaRef.value.getCheckedNodes()[0] : null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (!node) return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for (let i in addPrizeData.value.extend) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const index = key.value.indexOf(i) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (index > -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        addPrizeData.value.extend[i] = node.pathValues[index] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        addPrizeData.value.extend[key.label[index]] = node.pathLabels[index] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const handleClearArea = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    addPrizeData.value.extend = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      bloc: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      brand: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      provinceId: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      provinceName: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cityId: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cityName: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      districtId: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      districtName: undefined 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   /** 打开弹窗 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const open = async (id: number) => { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -172,7 +240,20 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       const data = await LuckLotteryApi.getLuckLotteryPrize(id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       addPrizeData.value = data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       spu.value = data.spu 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      isShowSpu.value = data.type === '6' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      prizeType.value = data.type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 没有自定义参数,则初始化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!data.extend || !Object.keys(data.extend).length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        addPrizeData.value.extend = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          bloc: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          brand: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          provinceId: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          provinceName: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          cityId: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          cityName: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          districtId: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          districtName: undefined 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       showAddPrize.value = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } catch {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -182,45 +263,57 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     type: '1', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     productId: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     name: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    total: 10, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    chance: 10, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    total: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    chance: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     prompt: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     image: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     status: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sort: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    lotteryId: undefined as any 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    lotteryId: undefined as any, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    extend: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      bloc: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      brand: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      provinceId: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      provinceName: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cityId: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cityName: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      districtId: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      districtName: undefined 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const showAddPrize = ref(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const formRef = ref() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const addPrizeFormRules = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    type: [{ required: true, message: '奖品类型不能为空', trigger: 'change' }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    name: [{ required: true, message: '奖品名称不能为空', trigger: 'blur' }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    chance: [{ required: true, message: '奖品权重不能为空', trigger: 'blur' }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    image: [{ required: true, message: '奖品图片不能为空', trigger: 'blur' }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    total: [{ required: true, message: '商品数量不能为空', trigger: 'blur' }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    prompt: [{ required: true, message: '提示语不能为空', trigger: 'blur' }] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const handleAddPrize = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     formType.value = 'add' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    isShowSpu.value = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    prizeType.value = '1' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     resetForm() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     showAddPrize.value = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     await getSpuList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // 只有站内商品才展示商品信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const isShowSpu = ref(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const handleChangeType = (val: string) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    isShowSpu.value = val === '6' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const prizeType = ref('1') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const handleChangePrizeType = (val: string) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    prizeType.value = val 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const submitPrize = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log(addPrizeData.value, 'submit'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 校验表单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     await formRef.value.validate() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (isShowSpu.value && !Object.keys(spu.value).length && !spu.value?.id) return message.warning('请选择商品') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (prizeType.value === '6' && !Object.keys(spu.value).length && !spu.value?.id) return message.warning('请选择商品') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (prizeType.value !== '99') handleClearArea() // 奖品类型不是自定义时清空extend数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 奖品类型为自定义时,效验是否有选省市区 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (prizeType.value === '99' && !addPrizeData.value.extend.provinceId) return message.warning('请选择省市区') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     addPrizeData.value.lotteryId = queryParams.lotteryId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    addPrizeData.value.productId = spu.value.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    addPrizeData.value.image = spu.value?.picUrl 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (prizeType.value === '6') addPrizeData.value.productId = spu.value.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (addPrizeData.value.type === '6' && !addPrizeData.value.image) addPrizeData.value.image = spu.value?.picUrl 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     delete addPrizeData.value.spu 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       formType.value === 'add' ? await LuckLotteryApi.createLuckLotteryPrize(addPrizeData.value) : await LuckLotteryApi.updateLuckLotteryPrize(addPrizeData.value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       message.success(formType.value === 'add' ? '添加成功' : '修改成功') 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -236,13 +329,23 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       type: '1', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       productId: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       name: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      total: 10, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      chance: 10, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      total: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      chance: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       prompt: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       image: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       status: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       sort: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      lotteryId: undefined as any 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      lotteryId: undefined as any, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      extend: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bloc: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        brand: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        provinceId: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        provinceName: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cityId: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cityName: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        districtId: undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        districtName: undefined 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |