zs 1 anno fa
parent
commit
2fb9f036eb

+ 21 - 7
pagesMy/account/index.vue

@@ -167,16 +167,30 @@
 			errors.gender = '请填写性别!';
 		}
 		// 检查email属性是否填写
-		if (!obj.card || obj.card.trim() === '') {
-			errors.card = '请填写身份证号码!';
-		}
-		// 检查email属性是否填写
 		if (!obj.phone || obj.phone.trim() === '') {
 			errors.phone = '请填写手机号!';
+		} else {
+			const regex = /^1[3456789]\d{9}$/;
+			if (!regex.test(obj.phone)) errors.phone = '请填写正确的手机号码!';
 		}
-		// 检查email属性是否填写
-		if (!obj.is_show || obj.is_show.trim() === '') {
-			errors.is_show = '请选择是否公开!';
+		if (user.value.role_type == 'Teacher') {
+			// 检查email属性是否填写
+			if (!obj.cardType || obj.cardType.trim() === '') {
+				errors.cardType = '请选择证件类型!';
+			}
+			// 检查email属性是否填写
+			if (!obj.card || obj.card.trim() === '') {
+				errors.card = '请填写证件号码!';
+			} else {
+				let regex;
+				if (obj.cardType == '0') regex = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}([0-9]|X)$/;
+				else regex = /^\d{9}$/;
+				if (!regex.test(obj.card)) errors.card = '请填写正确的证件号码!';
+			}
+			// 检查email属性是否填写
+			if (!obj.is_show || obj.is_show.trim() === '') {
+				errors.is_show = '请选择是否公开!';
+			}
 		}
 		// 如果有错误,返回错误对象
 		if (Object.keys(errors).length > 0) {

+ 153 - 46
pagesMy/account/path/student.vue

@@ -1,46 +1,153 @@
-<template>
-  <view>
-    <form ref="formRef" :rules="rules" @submit.prevent="handleSubmit">
-      <input v-model="form.username" type="text" name="username" placeholder="请输入用户名" />
-      <input v-model="form.password" type="password" name="password" placeholder="请输入密码" />
-      <button type="primary" @click="handleSubmit">提交</button>
-    </form>
-  </view>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      form: {
-        username: '',
-        password: ''
-      },
-      rules: {
-        username: [
-          { required: true, message: '请输入用户名', trigger: 'blur' }
-        ],
-        password: [
-          { required: true, message: '请输入密码', trigger: 'blur' },
-          { min: 6, max: 12, message: '密码长度在 6 到 12 个字符', trigger: 'blur' }
-        ]
-      }
-    };
-  },
-  methods: {
-    handleSubmit() {
-      this.$nextTick(() => {
-        this.$refs.formRef.validate((valid) => {
-          if (valid) {
-            console.log('表单验证通过,可以提交数据');
-            // 提交表单逻辑
-          } else {
-            console.log('表单验证失败');
-            // 处理验证失败逻辑
-          }
-        });
-      });
-    }
-  }
-};
-</script>
+<template>
+	<view class="teacher">
+		<view class="one">
+			<form @submit="formSubmit">
+				<view class="value other" style="display: none;">
+					<view class="title">id</view>
+					<view class="label">
+						<input name="_id" class="input" :value="form._id" placeholder="请输入id" />
+					</view>
+				</view>
+				<view class="value icon">
+					<view class="title">头像</view>
+					<view class="label">
+						<up-upload :fileList="form.icon" @afterRead="afterRead" @delete="deletePic" name="icon" multiple
+							:maxCount="1"></up-upload>
+					</view>
+				</view>
+				<view class="value other">
+					<view class="title">昵称</view>
+					<view class="label">
+						<input name="nick_name" class="input" :value="form.nick_name" placeholder="请输入昵称" />
+						<span v-if="errors.nick_name" class="error-message">{{ errors.nick_name }}</span>
+					</view>
+				</view>
+				<view class="value other margin">
+					<view class="title">性别</view>
+					<view class="label">
+						<up-radio-group v-model="form.gender" placement="row">
+							<up-radio :customStyle="{marginRight: '16px'}" v-for="(item, index) in genderList"
+								:key="index" :label="item.label" :name="item.value">
+							</up-radio>
+						</up-radio-group>
+						<span v-if="errors.gender" class="error-message">{{ errors.gender }}</span>
+					</view>
+				</view>
+				<view class="value other">
+					<view class="title">年龄</view>
+					<view class="label">
+						<input name="age" class="input" :value="form.age" placeholder="请输入年龄" />
+						<span v-if="errors.age" class="error-message">{{ errors.age }}</span>
+					</view>
+				</view>
+				<view class="value other">
+					<view class="title">手机号</view>
+					<view class="label">
+						<input name="phone" class="input" :value="form.phone" placeholder="请输入手机号" />
+						<span v-if="errors.phone" class="error-message">{{ errors.phone }}</span>
+					</view>
+				</view>
+				<view class="value other margin">
+					<view class="title">年级</view>
+					<view class="label">
+						<picker @change="gradeChange" :range="gradeList" range-key='label'>
+							<view class="picker">{{form.grade_name||'请选择年级'}}</view>
+						</picker>
+					</view>
+				</view>
+				<view class="brief other margin">
+					<view class="title">家庭住址</view>
+					<view class="label">
+						<textarea name='address' :value="form.address" placeholder="请输入家庭住址" auto-height />
+					</view>
+				</view>
+				<view class="button">
+					<button type="warn" size="mini" form-type="submit">保存</button>
+				</view>
+			</form>
+		</view>
+	</view>
+</template>
+
+<script setup lang="ts">
+	import { inject } from 'vue';
+	const form = inject('form');
+	const errors = inject('errors');
+	// 字典表
+	const genderList = inject('genderList')
+	const gradeList = inject('gradeList')
+
+	const deletePic = inject('deletePic');
+	const afterRead = inject('afterRead');
+	const formSubmit = inject('formSubmit');
+	const gradeChange = inject('gradeChange');
+</script>
+<style lang="scss" scoped>
+	.teacher {
+		display: flex;
+		flex-direction: column;
+		background-color: var(--footColor);
+
+		.one {
+			.icon {
+				padding: 2vw;
+			}
+
+			.margin {
+				margin: 3vw 0 0 0;
+			}
+
+			.other {
+				padding: 3vw 2vw;
+				border-bottom: 1px solid var(--footColor);
+			}
+
+			.value {
+				display: flex;
+				justify-content: space-between;
+				align-items: center;
+				background-color: var(--mainColor);
+
+				.label {
+					text-align: right;
+
+					.input {
+						text-align: right;
+					}
+
+					.image {
+						width: 15vw;
+						height: 15vw;
+						border-radius: 20vw;
+					}
+
+					.error-message {
+						margin: 5px 0 0 0;
+						color: var(--ff0Color);
+						font-size: var(--font12Size);
+					}
+				}
+			}
+
+			.brief {
+				background-color: var(--mainColor);
+
+				.title {
+					margin: 0 0 2vw 0;
+				}
+			}
+
+			.button {
+				margin: 2vw 0 0 0;
+				text-align: center;
+
+				button {
+					color: var(--mainColor);
+					background-color: var(--3c9Color);
+					font-size: var(--font14Size);
+					border-radius: 2vw;
+				}
+			}
+		}
+	}
+</style>

+ 4 - 4
pagesMy/account/path/teacher.vue

@@ -41,17 +41,17 @@
 					</view>
 				</view>
 				<view class="value other">
-					<view class="title">身份证类型</view>
+					<view class="title">证类型</view>
 					<view class="label">
 						<picker @change="cardChange" :range="cardTypeList" range-key='label'>
-							<view class="picker">{{form.cardType_name||'请选择身份证类型'}}</view>
+							<view class="picker">{{form.cardType_name||'请选择证类型'}}</view>
 						</picker>
 					</view>
 				</view>
 				<view class="value other">
-					<view class="title">身份证号码</view>
+					<view class="title">证号码</view>
 					<view class="label">
-						<input name="card" class="input" :value="form.card" placeholder="请输入身份证号码" />
+						<input name="card" class="input" :value="form.card" placeholder="请输入证号码" />
 						<span v-if="errors.card" class="error-message">{{ errors.card }}</span>
 					</view>
 				</view>

+ 22 - 5
unpackage/dist/dev/mp-weixin/pagesMy/account/index.js

@@ -149,14 +149,31 @@ const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
       if (!obj.gender || obj.gender.trim() === "") {
         errors2.gender = "请填写性别!";
       }
-      if (!obj.card || obj.card.trim() === "") {
-        errors2.card = "请填写身份证号码!";
-      }
       if (!obj.phone || obj.phone.trim() === "") {
         errors2.phone = "请填写手机号!";
+      } else {
+        const regex = /^1[3456789]\d{9}$/;
+        if (!regex.test(obj.phone))
+          errors2.phone = "请填写正确的手机号码!";
       }
-      if (!obj.is_show || obj.is_show.trim() === "") {
-        errors2.is_show = "请选择是否公开!";
+      if (user.value.role_type == "Teacher") {
+        if (!obj.cardType || obj.cardType.trim() === "") {
+          errors2.cardType = "请选择证件类型!";
+        }
+        if (!obj.card || obj.card.trim() === "") {
+          errors2.card = "请填写证件号码!";
+        } else {
+          let regex;
+          if (obj.cardType == "0")
+            regex = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}([0-9]|X)$/;
+          else
+            regex = /^\d{9}$/;
+          if (!regex.test(obj.card))
+            errors2.card = "请填写正确的证件号码!";
+        }
+        if (!obj.is_show || obj.is_show.trim() === "") {
+          errors2.is_show = "请选择是否公开!";
+        }
       }
       if (Object.keys(errors2).length > 0) {
         return errors2;

+ 85 - 42
unpackage/dist/dev/mp-weixin/pagesMy/account/path/student.js

@@ -1,47 +1,90 @@
 "use strict";
 const common_vendor = require("../../../common/vendor.js");
-const _sfc_main = {
-  data() {
-    return {
-      form: {
-        username: "",
-        password: ""
-      },
-      rules: {
-        username: [
-          { required: true, message: "请输入用户名", trigger: "blur" }
-        ],
-        password: [
-          { required: true, message: "请输入密码", trigger: "blur" },
-          { min: 6, max: 12, message: "密码长度在 6 到 12 个字符", trigger: "blur" }
-        ]
-      }
-    };
-  },
-  methods: {
-    handleSubmit() {
-      this.$nextTick(() => {
-        this.$refs.formRef.validate((valid) => {
-          if (valid) {
-            console.log("表单验证通过,可以提交数据");
-          } else {
-            console.log("表单验证失败");
-          }
-        });
+if (!Array) {
+  const _easycom_up_upload2 = common_vendor.resolveComponent("up-upload");
+  const _easycom_up_radio2 = common_vendor.resolveComponent("up-radio");
+  const _easycom_up_radio_group2 = common_vendor.resolveComponent("up-radio-group");
+  (_easycom_up_upload2 + _easycom_up_radio2 + _easycom_up_radio_group2)();
+}
+const _easycom_up_upload = () => "../../../node-modules/uview-plus/components/u-upload/u-upload.js";
+const _easycom_up_radio = () => "../../../node-modules/uview-plus/components/u-radio/u-radio.js";
+const _easycom_up_radio_group = () => "../../../node-modules/uview-plus/components/u-radio-group/u-radio-group.js";
+if (!Math) {
+  (_easycom_up_upload + _easycom_up_radio + _easycom_up_radio_group)();
+}
+const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
+  __name: "student",
+  setup(__props) {
+    const form = common_vendor.inject("form");
+    const errors = common_vendor.inject("errors");
+    const genderList = common_vendor.inject("genderList");
+    const gradeList = common_vendor.inject("gradeList");
+    const deletePic = common_vendor.inject("deletePic");
+    const afterRead = common_vendor.inject("afterRead");
+    const formSubmit = common_vendor.inject("formSubmit");
+    const gradeChange = common_vendor.inject("gradeChange");
+    return (_ctx, _cache) => {
+      return common_vendor.e({
+        a: common_vendor.unref(form)._id,
+        b: common_vendor.o(common_vendor.unref(afterRead)),
+        c: common_vendor.o(common_vendor.unref(deletePic)),
+        d: common_vendor.p({
+          fileList: common_vendor.unref(form).icon,
+          name: "icon",
+          multiple: true,
+          maxCount: 1
+        }),
+        e: common_vendor.unref(form).nick_name,
+        f: common_vendor.unref(errors).nick_name
+      }, common_vendor.unref(errors).nick_name ? {
+        g: common_vendor.t(common_vendor.unref(errors).nick_name)
+      } : {}, {
+        h: common_vendor.f(common_vendor.unref(genderList), (item, index, i0) => {
+          return {
+            a: index,
+            b: "32b3405a-2-" + i0 + ",32b3405a-1",
+            c: common_vendor.p({
+              customStyle: {
+                marginRight: "16px"
+              },
+              label: item.label,
+              name: item.value
+            })
+          };
+        }),
+        i: common_vendor.o(($event) => common_vendor.unref(form).gender = $event),
+        j: common_vendor.p({
+          placement: "row",
+          modelValue: common_vendor.unref(form).gender
+        }),
+        k: common_vendor.unref(errors).gender
+      }, common_vendor.unref(errors).gender ? {
+        l: common_vendor.t(common_vendor.unref(errors).gender)
+      } : {}, {
+        m: common_vendor.unref(form).age,
+        n: common_vendor.unref(errors).age
+      }, common_vendor.unref(errors).age ? {
+        o: common_vendor.t(common_vendor.unref(errors).age)
+      } : {}, {
+        p: common_vendor.unref(form).phone,
+        q: common_vendor.unref(errors).phone
+      }, common_vendor.unref(errors).phone ? {
+        r: common_vendor.t(common_vendor.unref(errors).phone)
+      } : {}, {
+        s: common_vendor.t(common_vendor.unref(form).grade_name || "请选择年级"),
+        t: common_vendor.o(
+          //@ts-ignore
+          (...args) => common_vendor.unref(gradeChange) && common_vendor.unref(gradeChange)(...args)
+        ),
+        v: common_vendor.unref(gradeList),
+        w: common_vendor.unref(form).address,
+        x: common_vendor.o(
+          //@ts-ignore
+          (...args) => common_vendor.unref(formSubmit) && common_vendor.unref(formSubmit)(...args)
+        )
       });
-    }
+    };
   }
-};
-function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
-  return {
-    a: $data.form.username,
-    b: common_vendor.o(($event) => $data.form.username = $event.detail.value),
-    c: $data.form.password,
-    d: common_vendor.o(($event) => $data.form.password = $event.detail.value),
-    e: common_vendor.o((...args) => $options.handleSubmit && $options.handleSubmit(...args)),
-    f: $data.rules,
-    g: common_vendor.o((...args) => $options.handleSubmit && $options.handleSubmit(...args))
-  };
-}
-const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "D:/project/学吧/learn_applet/pagesMy/account/path/student.vue"]]);
+});
+const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-32b3405a"], ["__file", "D:/project/学吧/learn_applet/pagesMy/account/path/student.vue"]]);
 wx.createComponent(Component);

+ 5 - 1
unpackage/dist/dev/mp-weixin/pagesMy/account/path/student.json

@@ -1,4 +1,8 @@
 {
   "component": true,
-  "usingComponents": {}
+  "usingComponents": {
+    "up-upload": "../../../node-modules/uview-plus/components/u-upload/u-upload",
+    "up-radio": "../../../node-modules/uview-plus/components/u-radio/u-radio",
+    "up-radio-group": "../../../node-modules/uview-plus/components/u-radio-group/u-radio-group"
+  }
 }

File diff suppressed because it is too large
+ 1 - 1
unpackage/dist/dev/mp-weixin/pagesMy/account/path/student.wxml


+ 55 - 0
unpackage/dist/dev/mp-weixin/pagesMy/account/path/student.wxss

@@ -0,0 +1,55 @@
+/* 水平间距 */
+/* 水平间距 */
+.teacher.data-v-32b3405a {
+  display: flex;
+  flex-direction: column;
+  background-color: var(--footColor);
+}
+.teacher .one .icon.data-v-32b3405a {
+  padding: 2vw;
+}
+.teacher .one .margin.data-v-32b3405a {
+  margin: 3vw 0 0 0;
+}
+.teacher .one .other.data-v-32b3405a {
+  padding: 3vw 2vw;
+  border-bottom: 1px solid var(--footColor);
+}
+.teacher .one .value.data-v-32b3405a {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  background-color: var(--mainColor);
+}
+.teacher .one .value .label.data-v-32b3405a {
+  text-align: right;
+}
+.teacher .one .value .label .input.data-v-32b3405a {
+  text-align: right;
+}
+.teacher .one .value .label .image.data-v-32b3405a {
+  width: 15vw;
+  height: 15vw;
+  border-radius: 20vw;
+}
+.teacher .one .value .label .error-message.data-v-32b3405a {
+  margin: 5px 0 0 0;
+  color: var(--ff0Color);
+  font-size: var(--font12Size);
+}
+.teacher .one .brief.data-v-32b3405a {
+  background-color: var(--mainColor);
+}
+.teacher .one .brief .title.data-v-32b3405a {
+  margin: 0 0 2vw 0;
+}
+.teacher .one .button.data-v-32b3405a {
+  margin: 2vw 0 0 0;
+  text-align: center;
+}
+.teacher .one .button button.data-v-32b3405a {
+  color: var(--mainColor);
+  background-color: var(--3c9Color);
+  font-size: var(--font14Size);
+  border-radius: 2vw;
+}

+ 1 - 1
unpackage/dist/dev/mp-weixin/pagesMy/account/path/teacher.js

@@ -75,7 +75,7 @@ const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
       }, common_vendor.unref(errors).age ? {
         o: common_vendor.t(common_vendor.unref(errors).age)
       } : {}, {
-        p: common_vendor.t(common_vendor.unref(form).cardType_name || "请选择身份证类型"),
+        p: common_vendor.t(common_vendor.unref(form).cardType_name || "请选择证类型"),
         q: common_vendor.o(
           //@ts-ignore
           (...args) => common_vendor.unref(cardChange) && common_vendor.unref(cardChange)(...args)

File diff suppressed because it is too large
+ 1 - 1
unpackage/dist/dev/mp-weixin/pagesMy/account/path/teacher.wxml