zs пре 1 година
родитељ
комит
4b1703a7c4

+ 1 - 1
index.html

@@ -4,7 +4,7 @@
     <meta charset="UTF-8">
     <link rel="icon" href="/favicon.ico">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>项目名</title>
+    <title>学吧管理平台</title>
   </head>
   <body>
     <div id="app" class="app"></div>

+ 7 - 4
src/lang/package/zh-cn/pages.js

@@ -55,6 +55,8 @@ export default {
   teacher: {
     dialogTitle: '用户信息',
     examDialogTitle: '用户审核',
+    icon:'头像',
+    openid: '微信标识',
     nick_name: '昵称',
     gender: '性别',
     age: '年龄',
@@ -68,18 +70,19 @@ export default {
     learnStatus: '学业状态',
     phone: '手机号',
     brief: '简介',
-    role:'角色',
+    role: '角色',
     status: '状态'
   },
   student: {
     dialogTitle: '用户信息',
     examDialogTitle: '用户审核',
-    openid:'微信标识',
+    icon:'头像',
+    openid: '微信标识',
     nick_name: '昵称',
     gender: '性别',
     age: '年龄',
     grade: '年级',
-    role:'角色',
+    role: '角色',
     address: '家庭地址',
     phone: '手机号',
     status: '状态'
@@ -126,7 +129,7 @@ export default {
     logo: 'logo图片',
     file: '首页轮播图',
     agreement: '用户协议',
-    brief: '关于我们',
+    brief: '关于我们'
   },
   video: {
     addDialogTitle: '新增视频',

+ 15 - 22
src/views/user/student/index.vue

@@ -16,11 +16,6 @@
       @exam="toExam"
       @delete="toDelete"
     >
-      <template #role="{ row }">
-        <div class="tags">
-          <el-tag type="primary">{{ getRole(row.role) }}</el-tag>
-        </div>
-      </template>
     </custom-table>
     <el-dialog
       v-model="dialog.show"
@@ -59,13 +54,11 @@
 import user from './parts/user.vue'
 // API 引用
 import { StudentStore } from '@/store/api/user/student'
-import { RoleStore } from '@/store/api/system/role'
 import { DictDataStore } from '@/store/api/system/dictData'
 import { cloneDeep, get } from 'lodash-es'
 const $checkRes = inject('$checkRes')
 const store = StudentStore()
 const dictDataStore = DictDataStore()
-const roleStore = RoleStore()
 const { t } = useI18n()
 const loading = ref(false)
 let skip = 0
@@ -79,12 +72,13 @@ onMounted(async () => {
   loading.value = false
 })
 const fields = [
+  { label: t('pages.student.openid'), model: 'openid' },
   { label: t('pages.student.nick_name'), model: 'nick_name', filter: true },
-  { label: t('pages.student.gender'), model: 'gender', filter: true },
+  { label: t('pages.student.gender'), model: 'gender', format: (i) => getDict(i, 'gender') },
   { label: t('pages.student.age'), model: 'age' },
   { label: t('pages.student.phone'), model: 'phone', filter: true },
-  { label: t('pages.student.grade'), model: 'role', custom: true },
-  { label: t('pages.student.status'), model: 'status', format: (i) => getDict(i) }
+  { label: t('pages.student.grade'), model: 'grade', format: (i) => getDict(i, 'grade') },
+  { label: t('pages.student.status'), model: 'status', format: (i) => getDict(i, 'status') }
 ]
 const opera = [
   { label: t('common.view'), method: 'view' },
@@ -118,7 +112,7 @@ const examRules = reactive({
 const examForm = ref({})
 // 字典表
 const statusList = ref([])
-const roleList = ref([])
+const gradeList = ref([])
 const genderList = ref([])
 const searchOther = async () => {
   let result
@@ -128,9 +122,9 @@ const searchOther = async () => {
   // 性别
   result = await dictDataStore.query({ code: 'gender', is_use: '0' })
   if ($checkRes(result)) genderList.value = result.data
-  // 角色
-  result = await roleStore.query({ is_use: '0' })
-  if ($checkRes(result)) roleList.value = result.data
+  // 年级
+  result = await dictDataStore.query({ code: 'grade', is_use: '0' })
+  if ($checkRes(result)) gradeList.value = result.data
 }
 
 const toDelete = async (data) => {
@@ -139,12 +133,12 @@ const toDelete = async (data) => {
     search({ skip: 0, limit })
   }
 }
-const getRole = (data) => {
-  const res = roleList.value.find((f) => f.code === data)
-  return get(res, 'name')
-}
-const getDict = (data) => {
-  const res = statusList.value.find((f) => f.value == data)
+
+const getDict = (data, model) => {
+  let res
+  if (model == 'status') res = statusList.value.find((f) => f.value == data)
+  else if (model == 'gender') res = genderList.value.find((f) => f.value == data)
+  else if (model == 'grade') res = gradeList.value.find((f) => f.value == data)
   return get(res, 'label')
 }
 // 查看
@@ -182,8 +176,7 @@ provide('form', form)
 // 字典
 provide('statusList', statusList)
 provide('genderList', genderList)
-// 方法
-provide('getRole', getRole)
+provide('gradeList', gradeList)
 </script>
 <style scoped lang="scss">
 .tags {

+ 15 - 18
src/views/user/student/parts/user.vue

@@ -1,19 +1,14 @@
 <template>
   <div class="index">
     <custom-form v-model="form" :fields="formFields" :useSave="false">
-      <template #role>
-        <div class="tags">
-          <el-tag type="primary">{{ getRole(form.role) }}</el-tag>
-        </div>
+      <template #icon>
+        <el-avatar v-if="form.icon && form.icon.length > 0" :src="form.icon[0].url"></el-avatar>
       </template>
       <template #gender>
-        <el-option
-          disabled
-          v-for="i in genderList"
-          :key="i._id"
-          :label="i.label"
-          :value="i.value"
-        ></el-option>
+        <el-option disabled v-for="i in genderList" :key="i._id" :label="i.label" :value="i.value"></el-option>
+      </template>
+      <template #grade>
+        <el-option disabled v-for="i in gradeList" :key="i._id" :label="i.label" :value="i.value"></el-option>
       </template>
     </custom-form>
   </div>
@@ -22,17 +17,19 @@
 // 基础
 const { t } = useI18n()
 const form = inject('form')
-const getRole = inject('getRole')
 const formFields = ref([
-  { label: t('pages.user.account'), model: 'account', options: { readonly: true } },
-  { label: t('pages.user.nick_name'), model: 'nick_name', options: { readonly: true } },
-  { label: t('pages.user.gender'), model: 'gender', type: 'select' },
-  { label: t('pages.user.email'), model: 'email', options: { readonly: true } },
-  { label: t('pages.user.phone'), model: 'phone', options: { readonly: true } },
-  { label: t('pages.user.role'), model: 'role', custom: true }
+  { label: t('pages.teacher.icon'), model: 'icon', custom: true },
+  { label: t('pages.teacher.opneid'), model: 'opneid' },
+  { label: t('pages.teacher.nick_name'), model: 'nick_name' },
+  { label: t('pages.teacher.gender'), model: 'gender', type: 'select' },
+  { label: t('pages.teacher.age'), model: 'age' },
+  { label: t('pages.teacher.phone'), model: 'phone' },
+  { label: t('pages.teacher.grade'), model: 'grade', type: 'select' },
+  { label: t('pages.teacher.address'), model: 'address' }
 ])
 // 字典表
 const genderList = inject('genderList')
+const gradeList = inject('gradeList')
 </script>
 <style scoped lang="scss">
 .tags {

+ 42 - 18
src/views/user/teacher/index.vue

@@ -59,13 +59,11 @@
 import user from './parts/user.vue'
 // API 引用
 import { TeacherStore } from '@/store/api/user/teacher'
-import { RoleStore } from '@/store/api/system/role'
 import { DictDataStore } from '@/store/api/system/dictData'
 import { cloneDeep, get } from 'lodash-es'
 const $checkRes = inject('$checkRes')
 const store = TeacherStore()
 const dictDataStore = DictDataStore()
-const roleStore = RoleStore()
 const { t } = useI18n()
 const loading = ref(false)
 let skip = 0
@@ -79,12 +77,23 @@ onMounted(async () => {
   loading.value = false
 })
 const fields = [
+  { label: t('pages.teacher.openid'), model: 'openid' },
   { label: t('pages.teacher.nick_name'), model: 'nick_name', filter: true },
-  { label: t('pages.teacher.gender'), model: 'gender', filter: true },
-  { label: t('pages.teacher.education'), model: 'education' },
+  { label: t('pages.teacher.gender'), model: 'gender', format: (i) => getDict(i, 'gender') },
+  { label: t('pages.teacher.card'), model: 'card' },
   { label: t('pages.teacher.phone'), model: 'phone', filter: true },
-  { label: t('pages.teacher.role'), model: 'role', custom: true },
-  { label: t('pages.teacher.status'), model: 'status', format: (i) => getDict(i) }
+  {
+    label: t('pages.teacher.education'),
+    model: 'education',
+    format: (i) => getDict(i, 'education')
+  },
+  { label: t('pages.teacher.college'), model: 'college', filter: true },
+  {
+    label: t('pages.teacher.learnStatus'),
+    model: 'learnStatus',
+    format: (i) => getDict(i, 'learnStatus')
+  },
+  { label: t('pages.teacher.status'), model: 'status', format: (i) => getDict(i, 'status') }
 ]
 const opera = [
   { label: t('common.view'), method: 'view' },
@@ -118,8 +127,12 @@ const examRules = reactive({
 const examForm = ref({})
 // 字典表
 const statusList = ref([])
-const roleList = ref([])
 const genderList = ref([])
+const educationList = ref([])
+const learnStatusList = ref([])
+const gradeList = ref([])
+const cardTypeList = ref([])
+
 const searchOther = async () => {
   let result
   // 状态
@@ -128,9 +141,18 @@ const searchOther = async () => {
   // 性别
   result = await dictDataStore.query({ code: 'gender', is_use: '0' })
   if ($checkRes(result)) genderList.value = result.data
-  // 角色
-  result = await roleStore.query({ is_use: '0' })
-  if ($checkRes(result)) roleList.value = result.data
+  // 学历
+  result = await dictDataStore.query({ code: 'education', is_use: '0' })
+  if ($checkRes(result)) educationList.value = result.data
+  // 学业状态
+  result = await dictDataStore.query({ code: 'learnStatus', is_use: '0' })
+  if ($checkRes(result)) learnStatusList.value = result.data
+  // 年级
+  result = await dictDataStore.query({ code: 'grade', is_use: '0' })
+  if ($checkRes(result)) gradeList.value = result.data
+  // 身份证类型
+  result = await dictDataStore.query({ code: 'cardType', is_use: '0' })
+  if ($checkRes(result)) cardTypeList.value = result.data
 }
 
 const toDelete = async (data) => {
@@ -139,12 +161,12 @@ const toDelete = async (data) => {
     search({ skip: 0, limit })
   }
 }
-const getRole = (data) => {
-  const res = roleList.value.find((f) => f.code === data)
-  return get(res, 'name')
-}
-const getDict = (data) => {
-  const res = statusList.value.find((f) => f.value == data)
+const getDict = (data, model) => {
+  let res
+  if (model == 'status') res = statusList.value.find((f) => f.value == data)
+  else if (model == 'gender') res = genderList.value.find((f) => f.value == data)
+  else if (model == 'education') res = educationList.value.find((f) => f.value == data)
+  else if (model == 'learnStatus') res = learnStatusList.value.find((f) => f.value == data)
   return get(res, 'label')
 }
 // 查看
@@ -182,8 +204,10 @@ provide('form', form)
 // 字典
 provide('statusList', statusList)
 provide('genderList', genderList)
-// 方法
-provide('getRole', getRole)
+provide('gradeList', gradeList)
+provide('learnStatusList', learnStatusList)
+provide('cardTypeList', cardTypeList)
+provide('educationList', educationList)
 </script>
 <style scoped lang="scss">
 .tags {

+ 57 - 11
src/views/user/teacher/parts/user.vue

@@ -1,10 +1,8 @@
 <template>
   <div class="index">
     <custom-form v-model="form" :fields="formFields" :useSave="false">
-      <template #role>
-        <div class="tags">
-          <el-tag type="primary">{{ getRole(form.role) }}</el-tag>
-        </div>
+      <template #icon>
+        <el-avatar v-if="form.icon && form.icon.length > 0" :src="form.icon[0].url"></el-avatar>
       </template>
       <template #gender>
         <el-option
@@ -15,6 +13,42 @@
           :value="i.value"
         ></el-option>
       </template>
+      <template #grade>
+        <el-option
+          disabled
+          v-for="i in gradeList"
+          :key="i._id"
+          :label="i.label"
+          :value="i.value"
+        ></el-option>
+      </template>
+      <template #cardType>
+        <el-option
+          disabled
+          v-for="i in cardTypeList"
+          :key="i._id"
+          :label="i.label"
+          :value="i.value"
+        ></el-option>
+      </template>
+      <template #education>
+        <el-option
+          disabled
+          v-for="i in educationList"
+          :key="i._id"
+          :label="i.label"
+          :value="i.value"
+        ></el-option>
+      </template>
+      <template #learnStatus>
+        <el-option
+          disabled
+          v-for="i in learnStatusList"
+          :key="i._id"
+          :label="i.label"
+          :value="i.value"
+        ></el-option>
+      </template>
     </custom-form>
   </div>
 </template>
@@ -22,17 +56,29 @@
 // 基础
 const { t } = useI18n()
 const form = inject('form')
-const getRole = inject('getRole')
 const formFields = ref([
-  { label: t('pages.user.account'), model: 'account', options: { readonly: true } },
-  { label: t('pages.user.nick_name'), model: 'nick_name', options: { readonly: true } },
-  { label: t('pages.user.gender'), model: 'gender', type: 'select' },
-  { label: t('pages.user.email'), model: 'email', options: { readonly: true } },
-  { label: t('pages.user.phone'), model: 'phone', options: { readonly: true } },
-  { label: t('pages.user.role'), model: 'role', custom: true }
+  { label: t('pages.teacher.icon'), model: 'icon', custom: true },
+  { label: t('pages.teacher.opneid'), model: 'opneid' },
+  { label: t('pages.teacher.nick_name'), model: 'nick_name' },
+  { label: t('pages.teacher.gender'), model: 'gender', type: 'select' },
+  { label: t('pages.teacher.age'), model: 'age' },
+  { label: t('pages.teacher.phone'), model: 'phone' },
+  { label: t('pages.teacher.grade'), model: 'grade', type: 'select' },
+  { label: t('pages.teacher.cardType'), model: 'cardType', type: 'select' },
+  { label: t('pages.teacher.card'), model: 'card' },
+  { label: t('pages.teacher.years'), model: 'years' },
+  { label: t('pages.teacher.education'), model: 'education', type: 'select' },
+  { label: t('pages.teacher.subject'), model: 'subject', type: 'select' },
+  { label: t('pages.teacher.college'), model: 'college' },
+  { label: t('pages.teacher.learnStatus'), model: 'learnStatus', type: 'select' },
+  { label: t('pages.teacher.brief'), model: 'brief', type: 'select' }
 ])
 // 字典表
 const genderList = inject('genderList')
+const gradeList = inject('gradeList')
+const cardTypeList = inject('cardTypeList')
+const educationList = inject('educationList')
+const learnStatusList = inject('learnStatusList')
 </script>
 <style scoped lang="scss">
 .tags {