ソースを参照

志愿者字段优化

jiayubo 3 日 前
コミット
4f5988a296
共有3 個のファイルを変更した758 個の追加608 個の削除を含む
  1. 615 564
      components/its-calendar/its-calendar.vue
  2. 37 37
      pages_home/pages/register/data.js
  3. 106 7
      pages_home/pages/register/index.vue

File diff suppressed because it is too large
+ 615 - 564
components/its-calendar/its-calendar.vue


+ 37 - 37
pages_home/pages/register/data.js

@@ -101,14 +101,14 @@ const rules = {
       trigger: ['blur', 'change'],
     },
   ],
-  skillDescribe: [
-    {
-      type: 'string',
-      required: true,
-      message: '请填写技能简介',
-      trigger: ['blur', 'change'],
-    },
-  ],
+  // skillDescribe: [
+  //   {
+  //     type: 'string',
+  //     required: true,
+  //     message: '请填写技能简介',
+  //     trigger: ['blur', 'change'],
+  //   },
+  // ],
   businessManagementId: [
     {
       type: 'string',
@@ -178,34 +178,34 @@ const column = [
     rules: rules.address,
     required: true,
   },
-  {
-    label: '最少购买',
-    key: 'minQuantity',
-    type: 'input',
-    rules: rules.minQuantity,
-    required: true,
-  },
-  {
-    label: '购买单位',
-    key: 'businessUnit',
-    type: 'select',
-    option: business_unit_options,
-    rules: rules.businessUnit,
-    required: true,
-  },
-  {
-    label: '技能简介',
-    key: 'skillDescribe',
-    type: 'textarea',
-    rules: rules.skillDescribe,
-    required: true,
-  },
-  {
-    label: '服务描述',
-    key: 'businessDescribe',
-    type: 'textarea',
-    rules: rules.businessDescribe,
-    required: true,
-  },
+  // {
+  //   label: '最少购买',
+  //   key: 'minQuantity',
+  //   type: 'input',
+  //   rules: rules.minQuantity,
+  //   required: true,
+  // },
+  // {
+  //   label: '购买单位',
+  //   key: 'businessUnit',
+  //   type: 'select',
+  //   option: business_unit_options,
+  //   rules: rules.businessUnit,
+  //   required: true,
+  // },
+  // {
+  //   label: '技能简介',
+  //   key: 'skillDescribe',
+  //   type: 'textarea',
+  //   rules: rules.skillDescribe,
+  //   required: true,
+  // },
+  // {
+  //   label: '服务描述',
+  //   key: 'businessDescribe',
+  //   type: 'textarea',
+  //   rules: rules.businessDescribe,
+  //   required: true,
+  // },
 ]
 export { column }

+ 106 - 7
pages_home/pages/register/index.vue

@@ -38,12 +38,46 @@
 					<view class="font-title">服务时长(<text class="activeColor">{{ serviceKeys.threeKeyname ||
 						serviceKeys.itemKeyname ||
 						serviceKeys.classKeyname }}</text>)</view>
+					<view class="service-list price-box">
+						<up-input
+							v-model="serviceKeys.time"
+							placeholder="请输入服务时长"
+							@blur="validateTimeInput"
+							class="price-input"
+						>
+							<template #suffix>
+								<text>分钟</text>
+							</template>
+						</up-input>
+					</view>
+
+					<view class="font-title">最少购买</view>
+					<view class="service-list price-box">
+						<up-input
+							v-model="serviceKeys.minQuantity"
+							placeholder="最少购买数量"
+							class="price-input"
+							@blur="validateMinQuantity"
+						></up-input>
+					</view>
+
+					<view class="font-title">购买单位</view>
+					<view class="service-list price-box">
+						<up-input
+							v-model="serviceKeys.businessUnit"
+							placeholder="请输入购买单位,如:(1件、1次、1小时)"
+							class="price-input"
+						></up-input>
+					</view>
+
+					<view class="font-title">服务描述</view>
 					<view class="service-list">
-						<view v-for="item in timeList" :key="item.id" @click="serviceChange(item, 'time')"
-							:class="serviceKeys.time === item.id ? 'servicetab classActive' : 'servicetab'">
-							{{ item.lable }}
-						</view>
+						<up-textarea
+							v-model="serviceKeys.businessDescribe"
+							placeholder="服务描述内容,如:提供上门取衣、送衣服服务、您只需线上下单,我们工作人员便会按约定时间上门收取衣物"
+						></up-textarea>
 					</view>
+
 					<view class="font-title">服务价格(<text class="activeColor">{{ serviceKeys.threeKeyname ||
 						serviceKeys.itemKeyname ||
 						serviceKeys.classKeyname }}</text>)</view>
@@ -158,7 +192,10 @@ const serviceKeys = reactive({
 	threeKey: '',//服务项
 	threeKeyname: '',
 	time: '',//时间
-	price: '',//价格
+  price: '',//价格
+  minQuantity: '',//最小购买次数
+  businessUnit: '',//购买单位
+  businessDescribe: '',//服务描述
 })
 
 const timeList = [
@@ -206,6 +243,44 @@ const validatePriceInput = (value) => {
 	}
 };
 
+const validateTimeInput = (value) => {
+	// 确保输入是纯数字
+	if (!/^\d*$/.test(value)) {
+		serviceKeys.time = value.replace(/\D/g, ''); // 移除非数字字符
+		return;
+	}
+
+	const time = parseInt(serviceKeys.time, 10);
+
+	// 检查是否大于0
+	if (time <= 0) {
+		serviceKeys.time = null;
+		uni.showToast({
+			title: '请输入大于0的服务时长',
+			icon: 'none'
+		});
+	}
+};
+
+const validateMinQuantity = (value) => {
+	// 确保输入是纯数字
+	if (!/^\d*$/.test(value)) {
+		serviceKeys.minQuantity = value.replace(/\D/g, ''); // 移除非数字字符
+		return;
+	}
+
+	const quantity = parseInt(serviceKeys.minQuantity, 10);
+
+	// 检查是否大于0
+	if (quantity <= 0) {
+		serviceKeys.minQuantity = null;
+		uni.showToast({
+			title: '请输入大于0的购买数量',
+			icon: 'none'
+		});
+	}
+};
+
 //根据类型获取表单item 值
 const com_column = computed(() => {
 	let column_list = data.value ? column : [];
@@ -244,7 +319,7 @@ function onSubmit() {
 			}
 			if (!serviceKeys.time) {
 				uni.showToast({
-					title: '请选择服务时长',
+					title: '请输入服务时长',
 					icon: 'none'
 				})
 				return
@@ -256,13 +331,37 @@ function onSubmit() {
 				})
 				return
 			}
+			if (!serviceKeys.minQuantity) {
+				uni.showToast({
+					title: '请输入最少购买数量',
+					icon: 'none'
+				})
+				return
+			}
+			if (!serviceKeys.businessUnit) {
+				uni.showToast({
+					title: '请输入购买单位',
+					icon: 'none'
+				})
+				return
+			}
+			if (!serviceKeys.businessDescribe) {
+				uni.showToast({
+					title: '请输入服务描述',
+					icon: 'none'
+				})
+				return
+			}
 
 			const parmas = {
 				serviceCategory: data.value.key,
 				...file_url,
 				businessManagementId: serviceKeys.threeKey || serviceKeys.itemKey || serviceKeys.classKey,
 				businessPrice: serviceKeys.price,
-				businessDuration: serviceKeys.time
+				businessDuration: serviceKeys.time,
+				businessUnit: serviceKeys.businessUnit,
+				minQuantity: serviceKeys.minQuantity,
+				businessDescribe: serviceKeys.businessDescribe
 			};
 			for (const key in res) {
 				parmas[key] = key == 'sex' ? sex_status[res[key]] : res[key];