浏览代码

日期判断优化,添加重复校验,弹框关闭

shasha 3 月之前
父节点
当前提交
2899e14af2

+ 35 - 8
snowy-admin-web/src/views/biz/goodsConf/addForm.vue

@@ -10,7 +10,7 @@
 			<a-row :gutter="24">
 				<a-col :span="24">
 					<a-form-item label="提货时间段:" name="confStartEndTime">
-						<a-range-picker v-model:value="formData.confStartEndTime" value-format="YYYY-MM-DD HH:mm" show-time style="width: 100%" />
+						<a-range-picker v-model:value="formData.confStartEndTime" value-format="YYYY-MM-DD HH:mm" show-time :disabled-date="disabledDate" style="width: 100%" />
 					</a-form-item>
 				</a-col>
 			</a-row>
@@ -68,9 +68,11 @@
 
 <script setup name="goodsConfForm">
 	import { cloneDeep } from 'lodash-es'
+	import { message } from 'ant-design-vue'
 	import { required } from '@/utils/formRules'
 	import goodsApi from '@/api/biz/goodsApi'
 	import goodsConfApi from '@/api/biz/goodsConfApi'
+	import dayjs from 'dayjs'
 
 	// 抽屉状态
 	const open = ref(false)
@@ -85,6 +87,15 @@
 	const labelCol = ref({ span: 4})
 	const wrapperCol = ref({ span: 16})
 
+	// 当前时间
+	const nowTime = ref(new Date())
+	// 禁用时间范围
+	const disabledDate = (current) => {
+		return (
+			(current && current < dayjs(nowTime.value).startOf('time'))
+		)
+	}
+	
 	// 打开抽屉
 	const onOpen = (record) => {
 		open.value = true
@@ -111,8 +122,10 @@
 	}
 	// 关闭抽屉
 	const onClose = () => {
-		formRef.value.resetFields()
-		formData.value = {}
+		formData.value = {
+			confStartEndTime: '',
+			goodsJson: []
+		}
 		open.value = false
 	}
 	// 默认要校验的
@@ -140,15 +153,28 @@
 		formRef.value
 			.validate()
 			.then(() => {
+				let goodsFlag = true;
 				// 因为不切断,我下面转换数据格式,影响上面表单会报错
 				let formDatas = JSON.parse(JSON.stringify(formData.value))
 				// 判断货品信息:至少选择一个
 				if (formDatas.goodsJson && formDatas.goodsJson.length > 0) {
+					// 判断当前货品列表选择是否存在重复的
+					let goodsId = []
+					formDatas.goodsJson.map((item, index) => {
+						if(goodsId.indexOf(item.goodsId)==-1){
+							goodsId.push(item.goodsId)
+						}else{
+							goodsFlag = false
+						}
+					})
+				}else{
+					goodsFlag = false
+				}
+				
+				if(goodsFlag){
 					formDatas.goodsJson = JSON.stringify(formDatas.goodsJson)
-
 					const formDataParam = cloneDeep(formData.value)
 					submitLoading.value = true
-
 					formDatas.confStartTime = formDataParam.confStartEndTime[0]+":00"
 					formDatas.confEndTime = formDataParam.confStartEndTime[1]+":00"
 					goodsConfApi
@@ -160,10 +186,11 @@
 						.finally(() => {
 							submitLoading.value = false
 						})
-				} else {
-					// 不允许提交  提示信息
-
+				}else{
+					message.error('货品信息存在重复情况,请处理!')
+					return
 				}
+				
 			})
 			.catch(() => {})
 	}

+ 12 - 2
snowy-admin-web/src/views/biz/goodsConf/editForm.vue

@@ -13,10 +13,10 @@
 
 		<a-form ref="formRef" :model="formData" :rules="formRules" :wrapper-col="wrapperCol" :label-col="labelCol">
 			<a-form-item label="提货开始时间:" name="confStartTime">
-				<a-date-picker v-model:value="formData.confStartTime" value-format="YYYY-MM-DD HH:mm" show-time style="width: 100%" />
+				<a-date-picker v-model:value="formData.confStartTime" value-format="YYYY-MM-DD HH:mm" show-time :disabled-date="disabledDate" style="width: 100%" />
 			</a-form-item>
 			<a-form-item label="提货结束时间:" name="confEndTime">
-				<a-date-picker v-model:value="formData.confEndTime" value-format="YYYY-MM-DD HH:mm" show-time style="width: 100%" />
+				<a-date-picker v-model:value="formData.confEndTime" value-format="YYYY-MM-DD HH:mm" show-time :disabled-date="disabledDate" style="width: 100%" />
 			</a-form-item>
 			<a-form-item label="最大提货重量(KG):" name="confWeight">
 				<a-input-number v-model:value="formData.confWeight" :min="formData.usedWeight" style="width: 100%;" placeholder="请输入最大提货重量" allow-clear />
@@ -35,6 +35,7 @@
 	import { message } from 'ant-design-vue'
 	import { required } from '@/utils/formRules'
 	import goodsConfApi from '@/api/biz/goodsConfApi'
+	import dayjs from 'dayjs'
 
 	// 抽屉状态
 	const open = ref(false)
@@ -48,6 +49,15 @@
 	const labelCol = ref({ span: 5})
 	const wrapperCol = ref({ span: 16})
 
+	// 当前时间
+	const nowTime = ref(new Date())
+	// 禁用时间范围
+	const disabledDate = (current) => {
+		return (
+			(current && current < dayjs(nowTime.value).startOf('time'))
+		)
+	}
+
 	// 打开抽屉
 	const onOpen = (record) => {
 		open.value = true

+ 1 - 1
snowy-admin-web/src/views/biz/goodsConf/index.vue

@@ -56,7 +56,7 @@
 							<a-button type="link" danger size="small" v-if="hasPerm('goodsConfDelete') && Number(record.usedWeight) == 0">删除</a-button>
 						</a-popconfirm>
 
-						<a-divider type="vertical" v-if="hasPerm(['goodsConfEdit', 'goodsConfWeight'], 'and')" />
+						<a-divider type="vertical" v-if="(hasPerm(['goodsConfEdit', 'goodsConfDelete'], 'or') && Number(record.usedWeight) == 0) && hasPerm('goodsConfWeight')" />
 						<a @click="weightFormRef.onOpen(record)" v-if="hasPerm('goodsConfWeight')">重量</a>
 					</a-space>
 				</template>