chenjj пре 1 месец
родитељ
комит
044c26a944

+ 20 - 11
components/cust-form/index.vue

@@ -1,14 +1,14 @@
 <template>
     <view class="cust-form">
         <up-form labelPosition="left" :model="formData" ref="form_ref">
-            <view v-for="item in column" :key="item.key + 'cust-form'">
+            <view v-for="item in column" :key="item.key + 'cust-form'" class="cust-form-item">
                 <up-form-item v-if="item.type === 'input'" :label="item.label" :prop="item.key" borderBottom
-                    labelWidth="94">
-                    <up-input v-model="formData[item.key]" border="none" :placeholder="'请输入' + item.label"></up-input>
+                    labelWidth="94" :required="item.required">
+                   <up-input v-model="formData[item.key]" border="none" :placeholder="'请输入' + item.label"></up-input>
                 </up-form-item>
 
                 <up-form-item v-if="item.type === 'select'" :label="item.label" :prop="item.key" borderBottom
-                    labelWidth="94">
+                    labelWidth="94" :required="item.required">
                     <view @click.self="() => openActionSheet(item)">
                         <up-input v-model="formData[item.key]" disabled disabledColor="#ffffff"
                             :placeholder="'请选择' + item.label" border="none"></up-input>
@@ -27,7 +27,7 @@
                             message: '请填写11位手机号',
                             trigger: ['blur']
                         }
-                    ]">
+                    ]" :required="true">
                         <up-input v-model="formData.phonenumber" border="none" placeholder="请输入手机号"></up-input>
                     </up-form-item>
 
@@ -39,7 +39,7 @@
                             message: '请填写4位验证码',
                             trigger: ['blur']
                         }
-                    ]">
+                    ]" :required="true">
                         <up-input v-model="formData.code" border="none" placeholder="请填写验证码"></up-input>
                         <template #right>
                             <up-button @tap="getCode" :text="code_data.tips" type="success" size="mini"
@@ -48,12 +48,12 @@
 
                     </up-form-item>
                 </view>
-                <up-form-item v-if="item.type === 'textarea'" :label="item.label" :prop="item.key" labelWidth="94">
+                <up-form-item v-if="item.type === 'textarea'" :label="item.label" :prop="item.key" labelWidth="94" :required="item.required">
                     <up-textarea :placeholder="'请输入' + item.label" v-model="formData[item.key]" count></up-textarea>
                 </up-form-item>
 
                 <up-form-item v-if="item.type === 'face'" :label="item.label" :prop="item.key" borderBottom
-                    labelWidth="94">
+                    labelWidth="94" :required="item.required">
                     <up-button size="small" type="primary" text="前往人脸识别" @click="startFace"></up-button>
                 </up-form-item>
             </view>
@@ -80,14 +80,14 @@ const props = defineProps({
 
 const formData = reactive({
     sex: null,
-    city: null
+    city: null,
 
     // address: "永川区",
     // age: "1",
     // city: "重庆",
     // code: "1111",
     // idCard: "5002302000000000001",
-    // name: "陈陈2",
+    // name: "陈陈",
     // phonenumber: "18696601933",
     // sex: '男',
     // skillDescribe: "测试备注",
@@ -193,4 +193,13 @@ defineExpose({
     onResetField,//表单重置
 })
 </script>
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+// .cust-form-item{
+//     position: relative;
+// }
+// .required-icon {
+//     color: red;
+//     position: absolute;
+// }
+
+</style>

+ 4 - 3
components/updata-imgs/index.vue

@@ -1,7 +1,7 @@
 <template>
     <view class="updata-img">
         <view class="updata-title-box">
-            <view class="updata-title-title font-title ">{{ data.title }}</view>
+            <view class="updata-title-title font-title ">{{ data.title }} <span style="color: #f56c6c;" v-if="data.required">*</span> </view>
             <view class="updata-title-text font-text ">{{ data.text }}</view>
         </view>
         <view class="updata-img-box" @click="updataFile">
@@ -58,8 +58,9 @@ function updataFile() {
                         'Authorization': 'Bearer ' + getToken(),   // 自定义请求头
                     },
                     success(res) {
-                        file.value = res.data.url;
-                        emit('onSubmit',{key: props.data.key,url: toRaw(file.value)})
+                        const data = JSON.parse(res.data);
+                        file.value = data.url;                        
+                        emit('onSubmit',{key: props.data.key,url: data.url})
                         fs.readFile({
                             filePath: tempFilePath,
                             encoding: 'base64', // 指定编码格式 

+ 1 - 1
config.js

@@ -3,7 +3,7 @@ const config = {
 	// baseUrl: 'https://vue.ruoyi.vip/prod-api',
 	//cloud后台网关地址
 	// baseUrl: 'http://192.168.10.3:8080',
-	baseUrl: 'http://192.168.100.101:9527',
+	baseUrl: 'http://192.168.100.102:9527',
 	// 应用信息
 	appInfo: {
 		// 应用名称

+ 17 - 30
pages/register/data.js

@@ -56,51 +56,41 @@ const chatting = [
         label: "姓名",
         key: "name",
         type: "input",
-        rules: rules.name
+        rules: rules.name,
+        required:true
     },
     {
         label: "性别",
         key: "sex",
         type: "select",
         option: sex_option,
-        rules: rules.sex
+        rules: rules.sex,
+        required:true
     },
     {
         label: "年龄",
         key: "age",
         type: "input",
-        rules: rules.age
+        rules: rules.age,
     },
     {
         label: "手机号",
         key: "phonenumber",
         type: "phone-code",
     },
-    {
-        label: "证件号",
-        key: "idCard",
-        type: "input",
-    },
-    {
-        label: "服务区域",
-        key: "",
-        type: "select",
-        option: city_option,
-        rules: rules.city
-    },
-    {
-        label: "服务类型",
-        key: "",
-        type: "select",
-        option: city_option,
-        rules: rules.city
-    },
+    // {
+    //     label: "服务类型",
+    //     key: "",
+    //     type: "select",
+    //     option: city_option,
+    //     rules: rules.city
+    // },
     {
         label: "地区",
         key: "city",
         type: "select",
         option: city_option,
-        rules: rules.city
+        rules: rules.city,
     },
     {
         label: "详细地址",
@@ -113,11 +103,6 @@ const chatting = [
         key: "skillDescribe",
         type: "textarea",
     },
-    {
-        label: "人脸识别",
-        key: "face",
-        type: "face",
-    },
 ]
 
 //家庭辅导(教育)2
@@ -126,14 +111,16 @@ const education = [
         label: "姓名",
         key: "name",
         type: "input",
-        rules: rules.name
+        rules: rules.name,
+        required:true
     },
     {
         label: "性别",
         key: "sex",
         type: "select",
         option: sex_option,
-        rules: rules.sex
+        rules: rules.sex,
+        required:true
     },
     {
         label: "年龄",

+ 45 - 29
pages/register/register.vue

@@ -42,7 +42,8 @@ const updata_list = [
 		img: '/static/img/updata-user-img.png',
 		key: 'volunteerPicture',
 		ref: userImg,
-		permission: [1, 2]
+		permission: [1, 2],
+		required: true
 	},
 	{
 		title: '个人身份证',
@@ -50,23 +51,26 @@ const updata_list = [
 		img: '/static/img/updata-user-img.png',
 		key: 'idCardPicture',
 		ref: zsImg,
-		permission: [1, 2]
+		permission: [1, 2],
+		required: true
 	},
-	// {
-	// 	title: '职业、资质证书',
-	// 	text: '上传您的职业、资质证书',
-	// 	img: '/static/img/updata-user-img.png',
-	// 	key: 'certificationPicture',
-	// 	ref: zsImg,
-	// 	permission: [1]
-	// }
+	{
+		title: '职业、资质证书',
+		text: '上传您的职业、资质证书',
+		img: '/static/img/updata-user-img.png',
+		key: 'certificationPicture',
+		ref: zsImg,
+		permission: [1],
+		required: false
+	}
 ]
 
 const cust_form_ref = ref(null);
 
 const data = ref(null);
 
-const file_url=ref({});
+const file_url=reactive({});
+
 
 const sex_status = {
 	'男': 0,
@@ -88,29 +92,39 @@ function onSubmit() {
 		// 校验表单并获取数据
 		// const res = await ;
 		cust_form_ref.value.onSubmit().then(async (res) => {
-			console.log('===res===>', res);
-			const parmas = {};
-			for (const key in res) {
-				parmas[key] = key == 'sex' ? sex_status[res[key]] : res[key];
+			console.log('===res===>', res,file_url);
+
+			//文件必传校验
+			for (let i = 0; i < updata_list.length; i++) {
+				const element = updata_list[i];
+				console.log(element.required , element.permission.includes(data.value.key) , file_url[element.key]);
+				
+				
+				const type = element.required && element.permission.includes(data.value.key) && !file_url[element.key];
+				console.log('element',element,type);
+
+				if (type) {
+					uni.showToast({
+						title: '请上传' + element.title,
+						icon: 'error'
+					})
+					return;
+				}
 			}
-			// const idCardPicture = await userImg.value.getFile();
-			// idCardPicture && (parmas.idCardPicture = idCardPicture);
-			// const volunteerPicture = await zsImg.value.getFile();
-			// volunteerPicture && (parmas.volunteerPicture = volunteerPicture);
 
-			console.log('xxxx', {
-				...parmas,
+			const parmas = {
 				serviceCategory: data.value.key,
-				...file_url.value
-			});
+				...file_url
+			};
+			for (const key in res) {
+				parmas[key] = key == 'sex' ? sex_status[res[key]] : res[key];
+			}
 
+			console.log('提交',parmas);
+			
 			// return;
 			// 提交接口,注册人员
-			const submit_res = await add({
-				...parmas,
-				serviceCategory: data.value.key,
-				...file_url.value
-			});
+			const submit_res = await add(parmas);
 			if(submit_res.code == 200){
 				uni.showToast({
 					title: '注册成功',
@@ -138,7 +152,9 @@ function onSubmit() {
 
 function onChange({key,url}) {
 	console.log('onChange', key,url);
-	file_url.value[key] = url;
+	Object.assign(file_url,{
+		[key]:url
+	})
 }
 
 

+ 4 - 0
static/scss/global.scss

@@ -102,4 +102,8 @@
   font-weight: 700;
   line-height: 17.38px;
   color: rgba(153, 153, 153, 1);
+}
+
+.u-form-item__body__left {
+  padding-left: 8px;
 }