zs 1 gadu atpakaļ
vecāks
revīzija
23f4b2f731
25 mainītis faili ar 4630 papildinājumiem un 171 dzēšanām
  1. 1 0
      App.vue
  2. 78 57
      components/login.vue
  3. 13 0
      node_modules/.vite/deps_temp_a7c94658/_metadata.json
  4. 1 0
      node_modules/.vite/deps_temp_a7c94658/package.json
  5. 3586 0
      node_modules/.vite/deps_temp_a7c94658/uview-plus.js
  6. 7 0
      node_modules/.vite/deps_temp_a7c94658/uview-plus.js.map
  7. 169 15
      pagesMy/account/index.vue
  8. 46 0
      pagesMy/account/path/student.vue
  9. 217 0
      pagesMy/account/path/teacher.vue
  10. 1 0
      unpackage/dist/dev/mp-weixin/app.wxss
  11. 1 0
      unpackage/dist/dev/mp-weixin/common/vendor.js
  12. 94 75
      unpackage/dist/dev/mp-weixin/components/login.js
  13. 1 1
      unpackage/dist/dev/mp-weixin/components/login.wxml
  14. 6 1
      unpackage/dist/dev/mp-weixin/components/login.wxss
  15. 143 19
      unpackage/dist/dev/mp-weixin/pagesMy/account/index.js
  16. 2 2
      unpackage/dist/dev/mp-weixin/pagesMy/account/index.json
  17. 1 1
      unpackage/dist/dev/mp-weixin/pagesMy/account/index.wxml
  18. 47 0
      unpackage/dist/dev/mp-weixin/pagesMy/account/path/student.js
  19. 4 0
      unpackage/dist/dev/mp-weixin/pagesMy/account/path/student.json
  20. 1 0
      unpackage/dist/dev/mp-weixin/pagesMy/account/path/student.wxml
  21. 0 0
      unpackage/dist/dev/mp-weixin/pagesMy/account/path/student.wxss
  22. 147 0
      unpackage/dist/dev/mp-weixin/pagesMy/account/path/teacher.js
  23. 8 0
      unpackage/dist/dev/mp-weixin/pagesMy/account/path/teacher.json
  24. 1 0
      unpackage/dist/dev/mp-weixin/pagesMy/account/path/teacher.wxml
  25. 55 0
      unpackage/dist/dev/mp-weixin/pagesMy/account/path/teacher.wxss

+ 1 - 0
App.vue

@@ -116,6 +116,7 @@
 		--fcColor: #cccccc;
 		--f00Color: #000000;
 		--fffColor: #ffffff;
+		--ff0Color:	#FF0000;
 		--3c9Color: #3c9cff;
 		--262Color: #262D3D;
 	}

+ 78 - 57
components/login.vue

@@ -18,6 +18,7 @@
 								:key="index" :label="item.label" :name="item.value">
 							</up-radio>
 						</up-radio-group>
+						<span v-if="errors.type" class="error-message">{{ errors.type }}</span>
 					</view>
 				</view>
 				<view class="other">
@@ -25,12 +26,14 @@
 					<view class="right">
 						<up-input v-model="form.nick_name" placeholder="请输入昵称" border="surround"
 							shape="circle"></up-input>
+						<span v-if="errors.nick_name" class="error-message">{{ errors.nick_name }}</span>
 					</view>
 				</view>
 				<view class="other">
 					<view class="left">手机号</view>
 					<view class="right">
 						<up-input v-model="form.phone" placeholder="请输入手机号" border="surround" shape="circle"></up-input>
+						<span v-if="errors.phone" class="error-message">{{ errors.phone }}</span>
 					</view>
 				</view>
 				<view class="agree">
@@ -69,6 +72,7 @@
 	const roleList = ref([]);
 	// 用户协议
 	const agree = ref(false);
+	const errors = ref({});
 	// openid
 	const openid = computed(() => {
 		return uni.getStorageSync('openid');
@@ -81,7 +85,7 @@
 		return uni.getStorageSync('config');
 	})
 	onShow(async () => {
-		await searchOther();
+		if (!user.value) await searchOther();
 	})
 	// 其他查询信息
 	const searchOther = async () => {
@@ -112,69 +116,80 @@
 		agree.value = false
 		emit("showChange", false);
 	}
-	// 验证手机号
-	const isValidPhoneNumber = (phoneNumber) => {
-		const regex = /^1[3456789]\d{9}$/;
-		return regex.test(phoneNumber);
+	// 自定义的验证函数
+	const validateObject = (obj : any) => {
+		const errors : any = {};
+		if (!obj.type || obj.type.trim() === '') {
+			errors.type = '请选择身份类型!';
+		}
+		// 检查name属性是否填写
+		if (!obj.nick_name || obj.nick_name.trim() === '') {
+			errors.nick_name = '请填写昵称!';
+		}
+		// 检查email属性是否填写
+		if (!obj.phone || obj.phone.trim() === '') {
+			errors.phone = '请填写手机号!';
+		} else {
+			const regex = /^1[3456789]\d{9}$/;
+			if (!regex.test(obj.phone)) errors.phone = '请填写正确的手机号码!';
+		}
+		// 如果有错误,返回错误对象
+		if (Object.keys(errors).length > 0) {
+			return errors;
+		}
+		// 如果没有错误,返回null或undefined
+		return null;
 	}
 	// 登录
 	const toLogin = async () => {
 		if (agree.value) {
 			if (openid.value) {
-				if (form.value.type) {
-					if (form.value.phone) {
-						if (isValidPhoneNumber(form.value.phone)) {
-							uni.getUserProfile({
-								desc: '用于展示',
-								success: async function (res) {
-									const type = form.value.type
-									delete form.value.type
-									let parmas = {
-										openid: openid.value,
-										status: '1',
-									}
-									if (!form.value.nick_name) parmas.nick_name = res.userInfo.nickName + moment().valueOf()
-									if (!form.value.icon || form.value.icon.length === 0) parmas.icon = config.value.icon
-									let arr;
-									if (type == '0') arr = await $api(`teacher`, 'POST', { ...form.value, ...parmas, is_show: '1' });
-									else arr = await $api(`student`, 'POST', { ...form.value, ...parmas });
-									if (arr.errcode == '0') {
-										let role_type;
-										if (type == '0') role_type = 'Teacher'
-										else role_type = 'Student'
-										uni.setStorageSync('user', { ...arr.data, role_type });
-										uni.showToast({
-											title: '登录成功',
-											icon: 'success'
-										});
-										await toCancel()
-									} else {
-										uni.showToast({
-											title: arr.errmsg,
-											icon: 'error'
-										});
-									}
-								},
-								fail: function (err) {
-									console.log(err);
-								}
-							})
-						} else {
-							uni.showToast({
-								title: '请输入正确的手机号!',
-								icon: 'none'
-							})
+				// 调用验证函数
+				const errorsInfo = await validateObject(form.value);
+				// 检查是否有错误
+				if (errorsInfo) {
+					errors.value = errorsInfo
+					// 遍历错误对象并显示错误信息
+					for (const key in errorsInfo) {
+						if (errorsInfo.hasOwnProperty(key)) {
+							console.error(`${key} 错误: ${errorsInfo[key]}`);
 						}
-					} else {
-						uni.showToast({
-							title: '请输入手机号!',
-							icon: 'none'
-						})
 					}
 				} else {
-					uni.showToast({
-						title: '请选择用户身份!',
-						icon: 'none'
+					uni.getUserProfile({
+						desc: '用于展示',
+						success: async function (res) {
+							const type = form.value.type
+							delete form.value.type
+							let parmas = {
+								openid: openid.value,
+								status: '1',
+							}
+							if (!form.value.nick_name) parmas.nick_name = res.userInfo.nickName + moment().valueOf()
+							if (!form.value.icon || form.value.icon.length === 0) parmas.icon = config.value.icon
+							let arr;
+							if (type == '0') arr = await $api(`teacher`, 'POST', { ...form.value, ...parmas, is_show: '1' });
+							else arr = await $api(`student`, 'POST', { ...form.value, ...parmas });
+							if (arr.errcode == '0') {
+								let role_type;
+								if (type == '0') role_type = 'Teacher'
+								else role_type = 'Student'
+								uni.setStorageSync('user', { ...arr.data, role_type });
+								uni.showToast({
+									title: '登录成功',
+									icon: 'success'
+								});
+								await toCancel()
+							} else {
+								uni.showToast({
+									title: arr.errmsg,
+									icon: 'error'
+								});
+							}
+						},
+						fail: function (err) {
+							console.log(err);
+						}
 					})
 				}
 			} else {
@@ -212,7 +227,7 @@
 
 	.rect {
 		width: 90%;
-		height: 380px;
+		min-height: 380px;
 		border-radius: 5px;
 		padding: 3vw;
 		background-color: #fff;
@@ -253,6 +268,12 @@
 
 				.right {
 					width: 85%;
+
+					.error-message {
+						margin: 5px 0 0 0;
+						color: var(--ff0Color);
+						font-size: var(--font12Size);
+					}
 				}
 			}
 

+ 13 - 0
node_modules/.vite/deps_temp_a7c94658/_metadata.json

@@ -0,0 +1,13 @@
+{
+  "hash": "b3601ed5",
+  "browserHash": "e8c86b87",
+  "optimized": {
+    "uview-plus": {
+      "src": "../../uview-plus/index.js",
+      "file": "uview-plus.js",
+      "fileHash": "3f30f27e",
+      "needsInterop": false
+    }
+  },
+  "chunks": {}
+}

+ 1 - 0
node_modules/.vite/deps_temp_a7c94658/package.json

@@ -0,0 +1 @@
+{"type":"module"}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 3586 - 0
node_modules/.vite/deps_temp_a7c94658/uview-plus.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 7 - 0
node_modules/.vite/deps_temp_a7c94658/uview-plus.js.map


+ 169 - 15
pagesMy/account/index.vue

@@ -1,47 +1,201 @@
 <template>
 	<view class="content">
-		账号设置
-		<up-overlay :show="show">
-			<login @showChange='showChange'></login>
-		</up-overlay>
+		<view class="one" v-show="user.role_type=='Teacher'">
+			<teacher></teacher>
+		</view>
+		<view class="two" v-show="user.role_type=='Student'">
+			<student></student>
+		</view>
 	</view>
 </template>
 
 <script setup lang="ts">
-	import login from "@/components/login.vue"
-	import { inject, computed, ref } from 'vue';
+	import teacher from "./path/teacher.vue"
+	import student from "./path/student.vue"
+	import { inject, provide, computed, ref } from 'vue';
 	//该依赖已内置不需要单独安装
 	import { onShow, onPullDownRefresh } from "@dcloudio/uni-app";
 	// 请求接口
 	const $api = inject('$api');
 	const $config = inject('$config');
+	const $apifile = inject('$apifile');
 	// 基本信息
 	const config = ref({ logo: [], file: [] });
-	const list = ref([]);
-	const total = ref(0);
-	// 遮罩层
-	const show = ref(false);
+	const form = ref({ icon: [] });
+	const errors = ref({});
 	// user
 	const user = computed(() => {
 		return uni.getStorageSync('user');
 	})
+	// 字典表
+	const genderList = ref([])
+	const educationList = ref([])
+	const learnStatusList = ref([])
+	const gradeList = ref([])
+	const cardTypeList = ref([])
+	const subjectList = ref([])
+	const showList = ref([])
 	onShow(async () => {
 		await searchConfig();
 		await searchOther();
 		await search();
-		if (!user.value) show.value = true
 	})
 	// config信息
 	const searchConfig = async () => {
 		config.value = uni.getStorageSync('config');
 	};
 	// 其他查询信息
-	const searchOther = async () => { };
+	const searchOther = async () => {
+		let res;
+		// 性别
+		res = await $api(`dictData`, 'GET', { code: 'gender', is_use: '0' });
+		if (res.errcode === 0) genderList.value = res.data;
+		// 学历
+		res = await $api(`dictData`, 'GET', { code: 'education', is_use: '0' });
+		if (res.errcode === 0) educationList.value = res.data;
+		// 年级
+		res = await $api(`dictData`, 'GET', { code: 'grade', is_use: '0' });
+		if (res.errcode === 0) gradeList.value = res.data;
+		// 学业状态
+		res = await $api(`dictData`, 'GET', { code: 'learnStatus', is_use: '0' });
+		if (res.errcode === 0) learnStatusList.value = res.data;
+		// 身份证类型
+		res = await $api(`dictData`, 'GET', { code: 'cardType', is_use: '0' });
+		if (res.errcode === 0) cardTypeList.value = res.data;
+		// 学科
+		res = await $api(`dictData`, 'GET', { code: 'subject', is_use: '0' });
+		if (res.errcode === 0) subjectList.value = res.data;
+		// 是否公开
+		res = await $api(`dictData`, 'GET', { code: 'show', is_use: '0' });
+		if (res.errcode === 0) showList.value = res.data;
+	};
 	// 查询
-	const search = async () => { };
-	const showChange = () => {
-		show.value = false
+	const search = async () => {
+		if (user && user.value._id) {
+			let res;
+			if (user.value.role_type == 'Teacher') res = await $api(`teacher/${user.value._id}`, 'GET', {});
+			else res = await $api(`student/${user.value._id}`, 'GET', {});
+			if (res.errcode == '0') form.value = res.data
+		}
+	};
+	// 删除图片
+	const deletePic = (event) => {
+		form.value.icon = []
+	};
+	// 新增图片
+	const afterRead = async (event) => {
+		const url = event.file[0].url
+		const result = await $apifile(`/web/learn_user/upload`, 'file', url, 'file');
+		if (result.errcode === 0) form.value.icon = [result]
+	};
+	// 身份类型选择
+	const cardChange = (e) => {
+		const data = cardTypeList.value[e.detail.value]
+		if (data) {
+			form.value.cardType = data.value
+			form.value.cardType_name = data.label
+		}
+	};
+	// 学历类型选择
+	const educationChange = (e) => {
+		const data = educationList.value[e.detail.value]
+		if (data) {
+			form.value.education = data.value
+			form.value.education_name = data.label
+		}
+	};
+	// 学业状态类型选择
+	const learnStatusChange = (e) => {
+		const data = learnStatusList.value[e.detail.value]
+		if (data) {
+			form.value.learnStatus = data.value
+			form.value.learnStatus_name = data.label
+		}
+	};
+	// 年级类型选择
+	const gradeChange = (e) => {
+		const data = gradeList.value[e.detail.value]
+		if (data) {
+			form.value.grade = data.value
+			form.value.grade_name = data.label
+		}
+	};
+	// 学科类型选择
+	const subjectChange = (e) => {
+		const data = subjectList.value[e.detail.value]
+		if (data) {
+			form.value.subject = data.value
+			form.value.subject_name = data.label
+		}
+	};
+	// 自定义的验证函数
+	const validateObject = (obj : any) => {
+		const errors : any = {};
+		// 检查name属性是否填写
+		if (!obj.nick_name || obj.nick_name.trim() === '') {
+			errors.nick_name = '请填写昵称!';
+		}
+		// 检查email属性是否填写
+		if (!obj.age || obj.age.trim() === '') {
+			errors.age = '请填写年龄!';
+		}
+		// 检查email属性是否填写
+		if (!obj.gender || obj.gender.trim() === '') {
+			errors.gender = '请填写性别!';
+		}
+		// 检查email属性是否填写
+		if (!obj.card || obj.card.trim() === '') {
+			errors.card = '请填写身份证号码!';
+		}
+		// 检查email属性是否填写
+		if (!obj.phone || obj.phone.trim() === '') {
+			errors.phone = '请填写手机号!';
+		}
+		// 如果有错误,返回错误对象
+		if (Object.keys(errors).length > 0) {
+			return errors;
+		}
+		// 如果没有错误,返回null或undefined
+		return null;
 	}
+
+	// 保存
+	const formSubmit = async (e) => {
+		// 调用验证函数
+		const errorsInfo = await validateObject(form.value);
+		// 检查是否有错误
+		if (errorsInfo) {
+			errors.value = errorsInfo
+			// 遍历错误对象并显示错误信息
+			for (const key in errorsInfo) {
+				if (errorsInfo.hasOwnProperty(key)) {
+					console.error(`${key} 错误: ${errorsInfo[key]}`);
+				}
+			}
+		} else {
+			console.log('所有字段都已填写');
+			console.log(form.value);
+		}
+	};
+	// provide
+	provide('form', form)
+	provide('errors', errors)
+	provide('deletePic', deletePic)
+	provide('afterRead', afterRead)
+	provide('formSubmit', formSubmit)
+	provide('cardChange', cardChange)
+	provide('educationChange', educationChange)
+	provide('learnStatusChange', learnStatusChange)
+	provide('gradeChange', gradeChange)
+	provide('subjectChange', subjectChange)
+	// 字典
+	provide('showList', showList)
+	provide('genderList', genderList)
+	provide('gradeList', gradeList)
+	provide('subjectList', subjectList)
+	provide('learnStatusList', learnStatusList)
+	provide('cardTypeList', cardTypeList)
+	provide('educationList', educationList)
 </script>
 <style lang="scss" scoped>
 	.content {

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

@@ -0,0 +1,46 @@
+<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>

+ 217 - 0
pagesMy/account/path/teacher.vue

@@ -0,0 +1,217 @@
+<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">
+						<picker @change="cardChange" :range="cardTypeList" range-key='label'>
+							<view class="picker">{{form.cardType_name||'请选择身份证类型'}}</view>
+						</picker>
+					</view>
+				</view>
+				<view class="value other">
+					<view class="title">身份证号码</view>
+					<view class="label">
+						<input name="card" class="input" :value="form.card" placeholder="请输入身份证号码" />
+						<span v-if="errors.card" class="error-message">{{ errors.card }}</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">
+					<view class="title">学历</view>
+					<view class="label">
+						<picker @change="educationChange" :range="educationList" range-key='label'>
+							<view class="picker">{{form.education_name||'请选择学历'}}</view>
+						</picker>
+					</view>
+				</view>
+				<view class="value other">
+					<view class="title">院校</view>
+					<view class="label">
+						<input name="college" class="input" :value="form.college" placeholder="请输入院校" />
+					</view>
+				</view>
+				<view class="value other">
+					<view class="title">学业状态</view>
+					<view class="label">
+						<picker @change="learnStatusChange" :range="learnStatusList" range-key='label'>
+							<view class="picker">{{form.learnStatus_name||'请选择学业状态'}}</view>
+						</picker>
+					</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="value other">
+					<view class="title">学科</view>
+					<view class="label">
+						<picker @change="subjectChange" :range="subjectList" range-key='label'>
+							<view class="picker">{{form.subject_name||'请选择学科'}}</view>
+						</picker>
+					</view>
+				</view>
+				<view class="value other">
+					<view class="title">是否公开</view>
+					<view class="label">
+						<up-radio-group v-model="form.is_show" placement="row">
+							<up-radio :customStyle="{marginRight: '16px'}" v-for="(item, index) in showList"
+								:key="index" :label="item.label" :name="item.value">
+							</up-radio>
+						</up-radio-group>
+					</view>
+				</view>
+				<view class="brief other margin">
+					<view class="title">简介</view>
+					<view class="label">
+						<textarea :value="form.brief" 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 cardTypeList = inject('cardTypeList')
+	const educationList = inject('educationList')
+	const learnStatusList = inject('learnStatusList')
+	const subjectList = inject('subjectList')
+	const showList = inject('showList')
+
+	const deletePic = inject('deletePic');
+	const afterRead = inject('afterRead');
+	const formSubmit = inject('formSubmit');
+	const cardChange = inject('cardChange');
+	const educationChange = inject('educationChange');
+	const learnStatusChange = inject('learnStatusChange');
+	const gradeChange = inject('gradeChange');
+	const subjectChange = inject('subjectChange');
+</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>

+ 1 - 0
unpackage/dist/dev/mp-weixin/app.wxss

@@ -5524,6 +5524,7 @@ page {
   --fcColor: #cccccc;
   --f00Color: #000000;
   --fffColor: #ffffff;
+  --ff0Color:	#FF0000;
   --3c9Color: #3c9cff;
   --262Color: #262D3D;
 }page{--status-bar-height:25px;--top-window-height:0px;--window-top:0px;--window-bottom:0px;--window-left:0px;--window-right:0px;--window-magin:0px}[data-c-h="true"]{display: none !important;}

+ 1 - 0
unpackage/dist/dev/mp-weixin/common/vendor.js

@@ -16249,6 +16249,7 @@ exports.props$6 = props$f;
 exports.props$7 = props$e;
 exports.props$8 = props$d;
 exports.props$9 = props$c;
+exports.provide = provide;
 exports.random = random;
 exports.ref = ref;
 exports.resolveComponent = resolveComponent;

+ 94 - 75
unpackage/dist/dev/mp-weixin/components/login.js

@@ -24,17 +24,19 @@ const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
     const form = common_vendor.ref({});
     const roleList = common_vendor.ref([]);
     const agree = common_vendor.ref(false);
+    const errors = common_vendor.ref({});
     const openid = common_vendor.computed(() => {
       return common_vendor.index.getStorageSync("openid");
     });
-    common_vendor.computed(() => {
+    const user = common_vendor.computed(() => {
       return common_vendor.index.getStorageSync("user");
     });
     const config = common_vendor.computed(() => {
       return common_vendor.index.getStorageSync("config");
     });
     common_vendor.onShow(async () => {
-      await searchOther();
+      if (!user.value)
+        await searchOther();
     });
     const searchOther = async () => {
       let res;
@@ -57,73 +59,78 @@ const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
       agree.value = false;
       emit("showChange", false);
     };
-    const isValidPhoneNumber = (phoneNumber) => {
-      const regex = /^1[3456789]\d{9}$/;
-      return regex.test(phoneNumber);
+    const validateObject = (obj) => {
+      const errors2 = {};
+      if (!obj.type || obj.type.trim() === "") {
+        errors2.type = "请选择身份类型!";
+      }
+      if (!obj.nick_name || obj.nick_name.trim() === "") {
+        errors2.nick_name = "请填写昵称!";
+      }
+      if (!obj.phone || obj.phone.trim() === "") {
+        errors2.phone = "请填写手机号!";
+      } else {
+        const regex = /^1[3456789]\d{9}$/;
+        if (!regex.test(obj.phone))
+          errors2.phone = "请填写正确的手机号码!";
+      }
+      if (Object.keys(errors2).length > 0) {
+        return errors2;
+      }
+      return null;
     };
     const toLogin = async () => {
       if (agree.value) {
         if (openid.value) {
-          if (form.value.type) {
-            if (form.value.phone) {
-              if (isValidPhoneNumber(form.value.phone)) {
-                common_vendor.index.getUserProfile({
-                  desc: "用于展示",
-                  success: async function(res) {
-                    const type = form.value.type;
-                    delete form.value.type;
-                    let parmas = {
-                      openid: openid.value,
-                      status: "1"
-                    };
-                    if (!form.value.nick_name)
-                      parmas.nick_name = res.userInfo.nickName + common_vendor.hooks().valueOf();
-                    if (!form.value.icon || form.value.icon.length === 0)
-                      parmas.icon = config.value.icon;
-                    let arr;
-                    if (type == "0")
-                      arr = await $api(`teacher`, "POST", { ...form.value, ...parmas, is_show: "1" });
-                    else
-                      arr = await $api(`student`, "POST", { ...form.value, ...parmas });
-                    if (arr.errcode == "0") {
-                      let role_type;
-                      if (type == "0")
-                        role_type = "Teacher";
-                      else
-                        role_type = "Student";
-                      common_vendor.index.setStorageSync("user", { ...arr.data, role_type });
-                      common_vendor.index.showToast({
-                        title: "登录成功",
-                        icon: "success"
-                      });
-                      await toCancel();
-                    } else {
-                      common_vendor.index.showToast({
-                        title: arr.errmsg,
-                        icon: "error"
-                      });
-                    }
-                  },
-                  fail: function(err) {
-                    console.log(err);
-                  }
-                });
-              } else {
-                common_vendor.index.showToast({
-                  title: "请输入正确的手机号!",
-                  icon: "none"
-                });
+          const errorsInfo = await validateObject(form.value);
+          if (errorsInfo) {
+            errors.value = errorsInfo;
+            for (const key in errorsInfo) {
+              if (errorsInfo.hasOwnProperty(key)) {
+                console.error(`${key} 错误: ${errorsInfo[key]}`);
               }
-            } else {
-              common_vendor.index.showToast({
-                title: "请输入手机号!",
-                icon: "none"
-              });
             }
           } else {
-            common_vendor.index.showToast({
-              title: "请选择用户身份!",
-              icon: "none"
+            common_vendor.index.getUserProfile({
+              desc: "用于展示",
+              success: async function(res) {
+                const type = form.value.type;
+                delete form.value.type;
+                let parmas = {
+                  openid: openid.value,
+                  status: "1"
+                };
+                if (!form.value.nick_name)
+                  parmas.nick_name = res.userInfo.nickName + common_vendor.hooks().valueOf();
+                if (!form.value.icon || form.value.icon.length === 0)
+                  parmas.icon = config.value.icon;
+                let arr;
+                if (type == "0")
+                  arr = await $api(`teacher`, "POST", { ...form.value, ...parmas, is_show: "1" });
+                else
+                  arr = await $api(`student`, "POST", { ...form.value, ...parmas });
+                if (arr.errcode == "0") {
+                  let role_type;
+                  if (type == "0")
+                    role_type = "Teacher";
+                  else
+                    role_type = "Student";
+                  common_vendor.index.setStorageSync("user", { ...arr.data, role_type });
+                  common_vendor.index.showToast({
+                    title: "登录成功",
+                    icon: "success"
+                  });
+                  await toCancel();
+                } else {
+                  common_vendor.index.showToast({
+                    title: arr.errmsg,
+                    icon: "error"
+                  });
+                }
+              },
+              fail: function(err) {
+                console.log(err);
+              }
             });
           }
         } else {
@@ -148,7 +155,7 @@ const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
       agree.value = !agree.value;
     };
     return (_ctx, _cache) => {
-      return {
+      return common_vendor.e({
         a: common_vendor.t(common_vendor.unref(config).title || "学吧"),
         b: common_vendor.o(afterRead),
         c: common_vendor.o(deletePic),
@@ -176,29 +183,41 @@ const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
           placement: "row",
           modelValue: form.value.type
         }),
-        h: common_vendor.o(($event) => form.value.nick_name = $event),
-        i: common_vendor.p({
+        h: errors.value.type
+      }, errors.value.type ? {
+        i: common_vendor.t(errors.value.type)
+      } : {}, {
+        j: common_vendor.o(($event) => form.value.nick_name = $event),
+        k: common_vendor.p({
           placeholder: "请输入昵称",
           border: "surround",
           shape: "circle",
           modelValue: form.value.nick_name
         }),
-        j: common_vendor.o(($event) => form.value.phone = $event),
-        k: common_vendor.p({
+        l: errors.value.nick_name
+      }, errors.value.nick_name ? {
+        m: common_vendor.t(errors.value.nick_name)
+      } : {}, {
+        n: common_vendor.o(($event) => form.value.phone = $event),
+        o: common_vendor.p({
           placeholder: "请输入手机号",
           border: "surround",
           shape: "circle",
           modelValue: form.value.phone
         }),
-        l: agree.value,
-        m: common_vendor.t(common_vendor.unref(config).title || "学吧"),
-        n: common_vendor.o(($event) => toAgree()),
-        o: common_vendor.o(changeAgree),
-        p: common_vendor.o(toCancel),
-        q: common_vendor.o(toLogin),
-        r: common_vendor.o(() => {
+        p: errors.value.phone
+      }, errors.value.phone ? {
+        q: common_vendor.t(errors.value.phone)
+      } : {}, {
+        r: agree.value,
+        s: common_vendor.t(common_vendor.unref(config).title || "学吧"),
+        t: common_vendor.o(($event) => toAgree()),
+        v: common_vendor.o(changeAgree),
+        w: common_vendor.o(toCancel),
+        x: common_vendor.o(toLogin),
+        y: common_vendor.o(() => {
         })
-      };
+      });
     };
   }
 });

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
unpackage/dist/dev/mp-weixin/components/login.wxml


+ 6 - 1
unpackage/dist/dev/mp-weixin/components/login.wxss

@@ -8,7 +8,7 @@
 }
 .rect.data-v-b3197993 {
   width: 90%;
-  height: 380px;
+  min-height: 380px;
   border-radius: 5px;
   padding: 3vw;
   background-color: #fff;
@@ -44,6 +44,11 @@
 .rect .rectTwo .other .right.data-v-b3197993 {
   width: 85%;
 }
+.rect .rectTwo .other .right .error-message.data-v-b3197993 {
+  margin: 5px 0 0 0;
+  color: var(--ff0Color);
+  font-size: var(--font12Size);
+}
 .rect .rectTwo .agree.data-v-b3197993 {
   padding: 2vw;
   text-align: center;

+ 143 - 19
unpackage/dist/dev/mp-weixin/pagesMy/account/index.js

@@ -1,49 +1,173 @@
 "use strict";
 const common_vendor = require("../../common/vendor.js");
-if (!Array) {
-  const _easycom_up_overlay2 = common_vendor.resolveComponent("up-overlay");
-  _easycom_up_overlay2();
-}
-const _easycom_up_overlay = () => "../../node-modules/uview-plus/components/u-overlay/u-overlay.js";
 if (!Math) {
-  (login + _easycom_up_overlay)();
+  (teacher + student)();
 }
-const login = () => "../../components/login.js";
+const teacher = () => "./path/teacher.js";
+const student = () => "./path/student.js";
 const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
   __name: "index",
   setup(__props) {
-    common_vendor.inject("$api");
+    const $api = common_vendor.inject("$api");
     common_vendor.inject("$config");
+    const $apifile = common_vendor.inject("$apifile");
     const config = common_vendor.ref({ logo: [], file: [] });
-    common_vendor.ref([]);
-    common_vendor.ref(0);
-    const show = common_vendor.ref(false);
+    const form = common_vendor.ref({ icon: [] });
+    const errors = common_vendor.ref({});
     const user = common_vendor.computed(() => {
       return common_vendor.index.getStorageSync("user");
     });
+    const genderList = common_vendor.ref([]);
+    const educationList = common_vendor.ref([]);
+    const learnStatusList = common_vendor.ref([]);
+    const gradeList = common_vendor.ref([]);
+    const cardTypeList = common_vendor.ref([]);
+    const subjectList = common_vendor.ref([]);
+    const showList = common_vendor.ref([]);
     common_vendor.onShow(async () => {
       await searchConfig();
       await searchOther();
       await search();
-      if (!user.value)
-        show.value = true;
     });
     const searchConfig = async () => {
       config.value = common_vendor.index.getStorageSync("config");
     };
     const searchOther = async () => {
+      let res;
+      res = await $api(`dictData`, "GET", { code: "gender", is_use: "0" });
+      if (res.errcode === 0)
+        genderList.value = res.data;
+      res = await $api(`dictData`, "GET", { code: "education", is_use: "0" });
+      if (res.errcode === 0)
+        educationList.value = res.data;
+      res = await $api(`dictData`, "GET", { code: "grade", is_use: "0" });
+      if (res.errcode === 0)
+        gradeList.value = res.data;
+      res = await $api(`dictData`, "GET", { code: "learnStatus", is_use: "0" });
+      if (res.errcode === 0)
+        learnStatusList.value = res.data;
+      res = await $api(`dictData`, "GET", { code: "cardType", is_use: "0" });
+      if (res.errcode === 0)
+        cardTypeList.value = res.data;
+      res = await $api(`dictData`, "GET", { code: "subject", is_use: "0" });
+      if (res.errcode === 0)
+        subjectList.value = res.data;
+      res = await $api(`dictData`, "GET", { code: "show", is_use: "0" });
+      if (res.errcode === 0)
+        showList.value = res.data;
     };
     const search = async () => {
+      if (user && user.value._id) {
+        let res;
+        if (user.value.role_type == "Teacher")
+          res = await $api(`teacher/${user.value._id}`, "GET", {});
+        else
+          res = await $api(`student/${user.value._id}`, "GET", {});
+        if (res.errcode == "0")
+          form.value = res.data;
+      }
+    };
+    const deletePic = (event) => {
+      form.value.icon = [];
+    };
+    const afterRead = async (event) => {
+      const url = event.file[0].url;
+      const result = await $apifile(`/web/learn_user/upload`, "file", url, "file");
+      if (result.errcode === 0)
+        form.value.icon = [result];
+    };
+    const cardChange = (e) => {
+      const data = cardTypeList.value[e.detail.value];
+      if (data) {
+        form.value.cardType = data.value;
+        form.value.cardType_name = data.label;
+      }
+    };
+    const educationChange = (e) => {
+      const data = educationList.value[e.detail.value];
+      if (data) {
+        form.value.education = data.value;
+        form.value.education_name = data.label;
+      }
+    };
+    const learnStatusChange = (e) => {
+      const data = learnStatusList.value[e.detail.value];
+      if (data) {
+        form.value.learnStatus = data.value;
+        form.value.learnStatus_name = data.label;
+      }
+    };
+    const gradeChange = (e) => {
+      const data = gradeList.value[e.detail.value];
+      if (data) {
+        form.value.grade = data.value;
+        form.value.grade_name = data.label;
+      }
+    };
+    const subjectChange = (e) => {
+      const data = subjectList.value[e.detail.value];
+      if (data) {
+        form.value.subject = data.value;
+        form.value.subject_name = data.label;
+      }
+    };
+    const validateObject = (obj) => {
+      const errors2 = {};
+      if (!obj.nick_name || obj.nick_name.trim() === "") {
+        errors2.nick_name = "请填写昵称!";
+      }
+      if (!obj.age || obj.age.trim() === "") {
+        errors2.age = "请填写年龄!";
+      }
+      if (!obj.gender || obj.gender.trim() === "") {
+        errors2.gender = "请填写性别!";
+      }
+      if (!obj.card || obj.card.trim() === "") {
+        errors2.card = "请填写身份证号码!";
+      }
+      if (!obj.phone || obj.phone.trim() === "") {
+        errors2.phone = "请填写手机号!";
+      }
+      if (Object.keys(errors2).length > 0) {
+        return errors2;
+      }
+      return null;
     };
-    const showChange = () => {
-      show.value = false;
+    const formSubmit = async (e) => {
+      const errorsInfo = await validateObject(form.value);
+      if (errorsInfo) {
+        errors.value = errorsInfo;
+        for (const key in errorsInfo) {
+          if (errorsInfo.hasOwnProperty(key)) {
+            console.error(`${key} 错误: ${errorsInfo[key]}`);
+          }
+        }
+      } else {
+        console.log("所有字段都已填写");
+        console.log(form.value);
+      }
     };
+    common_vendor.provide("form", form);
+    common_vendor.provide("errors", errors);
+    common_vendor.provide("deletePic", deletePic);
+    common_vendor.provide("afterRead", afterRead);
+    common_vendor.provide("formSubmit", formSubmit);
+    common_vendor.provide("cardChange", cardChange);
+    common_vendor.provide("educationChange", educationChange);
+    common_vendor.provide("learnStatusChange", learnStatusChange);
+    common_vendor.provide("gradeChange", gradeChange);
+    common_vendor.provide("subjectChange", subjectChange);
+    common_vendor.provide("showList", showList);
+    common_vendor.provide("genderList", genderList);
+    common_vendor.provide("gradeList", gradeList);
+    common_vendor.provide("subjectList", subjectList);
+    common_vendor.provide("learnStatusList", learnStatusList);
+    common_vendor.provide("cardTypeList", cardTypeList);
+    common_vendor.provide("educationList", educationList);
     return (_ctx, _cache) => {
       return {
-        a: common_vendor.o(showChange),
-        b: common_vendor.p({
-          show: show.value
-        })
+        a: common_vendor.unref(user).role_type == "Teacher",
+        b: common_vendor.unref(user).role_type == "Student"
       };
     };
   }

+ 2 - 2
unpackage/dist/dev/mp-weixin/pagesMy/account/index.json

@@ -1,7 +1,7 @@
 {
   "navigationBarTitleText": "账号设置",
   "usingComponents": {
-    "up-overlay": "../../node-modules/uview-plus/components/u-overlay/u-overlay",
-    "login": "../../components/login"
+    "teacher": "./path/teacher",
+    "student": "./path/student"
   }
 }

+ 1 - 1
unpackage/dist/dev/mp-weixin/pagesMy/account/index.wxml

@@ -1 +1 @@
-<view class="content data-v-e33b06dd"> 账号设置 <up-overlay wx:if="{{b}}" class="data-v-e33b06dd" u-s="{{['d']}}" u-i="e33b06dd-0" bind:__l="__l" u-p="{{b}}"><login class="data-v-e33b06dd" bindshowChange="{{a}}" u-i="e33b06dd-1,e33b06dd-0" bind:__l="__l"></login></up-overlay></view>
+<view class="content data-v-e33b06dd"><view class="one data-v-e33b06dd" hidden="{{!a}}"><teacher class="data-v-e33b06dd" u-i="e33b06dd-0" bind:__l="__l"></teacher></view><view class="two data-v-e33b06dd" hidden="{{!b}}"><student class="data-v-e33b06dd" u-i="e33b06dd-1" bind:__l="__l"></student></view></view>

+ 47 - 0
unpackage/dist/dev/mp-weixin/pagesMy/account/path/student.js

@@ -0,0 +1,47 @@
+"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("表单验证失败");
+          }
+        });
+      });
+    }
+  }
+};
+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"]]);
+wx.createComponent(Component);

+ 4 - 0
unpackage/dist/dev/mp-weixin/pagesMy/account/path/student.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/pagesMy/account/path/student.wxml

@@ -0,0 +1 @@
+<view><form ref="formRef" rules="{{f}}" catchsubmit="{{g}}"><input type="text" name="username" placeholder="请输入用户名" value="{{a}}" bindinput="{{b}}"/><input type="password" name="password" placeholder="请输入密码" value="{{c}}" bindinput="{{d}}"/><button type="primary" bindtap="{{e}}">提交</button></form></view>

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


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

@@ -0,0 +1,147 @@
+"use strict";
+const common_vendor = require("../../../common/vendor.js");
+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: "teacher",
+  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 cardTypeList = common_vendor.inject("cardTypeList");
+    const educationList = common_vendor.inject("educationList");
+    const learnStatusList = common_vendor.inject("learnStatusList");
+    const subjectList = common_vendor.inject("subjectList");
+    const showList = common_vendor.inject("showList");
+    const deletePic = common_vendor.inject("deletePic");
+    const afterRead = common_vendor.inject("afterRead");
+    const formSubmit = common_vendor.inject("formSubmit");
+    const cardChange = common_vendor.inject("cardChange");
+    const educationChange = common_vendor.inject("educationChange");
+    const learnStatusChange = common_vendor.inject("learnStatusChange");
+    const gradeChange = common_vendor.inject("gradeChange");
+    const subjectChange = common_vendor.inject("subjectChange");
+    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: "70f918ed-2-" + i0 + ",70f918ed-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.t(common_vendor.unref(form).cardType_name || "请选择身份证类型"),
+        q: common_vendor.o(
+          //@ts-ignore
+          (...args) => common_vendor.unref(cardChange) && common_vendor.unref(cardChange)(...args)
+        ),
+        r: common_vendor.unref(cardTypeList),
+        s: common_vendor.unref(form).card,
+        t: common_vendor.unref(errors).card
+      }, common_vendor.unref(errors).card ? {
+        v: common_vendor.t(common_vendor.unref(errors).card)
+      } : {}, {
+        w: common_vendor.unref(form).phone,
+        x: common_vendor.unref(errors).phone
+      }, common_vendor.unref(errors).phone ? {
+        y: common_vendor.t(common_vendor.unref(errors).phone)
+      } : {}, {
+        z: common_vendor.t(common_vendor.unref(form).education_name || "请选择学历"),
+        A: common_vendor.o(
+          //@ts-ignore
+          (...args) => common_vendor.unref(educationChange) && common_vendor.unref(educationChange)(...args)
+        ),
+        B: common_vendor.unref(educationList),
+        C: common_vendor.unref(form).college,
+        D: common_vendor.t(common_vendor.unref(form).learnStatus_name || "请选择学业状态"),
+        E: common_vendor.o(
+          //@ts-ignore
+          (...args) => common_vendor.unref(learnStatusChange) && common_vendor.unref(learnStatusChange)(...args)
+        ),
+        F: common_vendor.unref(learnStatusList),
+        G: common_vendor.t(common_vendor.unref(form).grade_name || "请选择所教年级"),
+        H: common_vendor.o(
+          //@ts-ignore
+          (...args) => common_vendor.unref(gradeChange) && common_vendor.unref(gradeChange)(...args)
+        ),
+        I: common_vendor.unref(gradeList),
+        J: common_vendor.t(common_vendor.unref(form).subject_name || "请选择学科"),
+        K: common_vendor.o(
+          //@ts-ignore
+          (...args) => common_vendor.unref(subjectChange) && common_vendor.unref(subjectChange)(...args)
+        ),
+        L: common_vendor.unref(subjectList),
+        M: common_vendor.f(common_vendor.unref(showList), (item, index, i0) => {
+          return {
+            a: index,
+            b: "70f918ed-4-" + i0 + ",70f918ed-3",
+            c: common_vendor.p({
+              customStyle: {
+                marginRight: "16px"
+              },
+              label: item.label,
+              name: item.value
+            })
+          };
+        }),
+        N: common_vendor.o(($event) => common_vendor.unref(form).is_show = $event),
+        O: common_vendor.p({
+          placement: "row",
+          modelValue: common_vendor.unref(form).is_show
+        }),
+        P: common_vendor.unref(form).brief,
+        Q: common_vendor.o(
+          //@ts-ignore
+          (...args) => common_vendor.unref(formSubmit) && common_vendor.unref(formSubmit)(...args)
+        )
+      });
+    };
+  }
+});
+const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-70f918ed"], ["__file", "D:/project/学吧/learn_applet/pagesMy/account/path/teacher.vue"]]);
+wx.createComponent(Component);

+ 8 - 0
unpackage/dist/dev/mp-weixin/pagesMy/account/path/teacher.json

@@ -0,0 +1,8 @@
+{
+  "component": true,
+  "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"
+  }
+}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 0
unpackage/dist/dev/mp-weixin/pagesMy/account/path/teacher.wxml


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

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