于宏哲PHP 1 year ago
parent
commit
245ec0f013
  1. 10
      admin/src/addon/zhjw/api/staff.ts
  2. 6
      admin/src/addon/zhjw/api/students.ts
  3. 4
      admin/src/addon/zhjw/lang/zh-cn/staff.staff.json
  4. 2
      admin/src/addon/zhjw/lang/zh-cn/staff.staff_edit.json
  5. 59
      admin/src/addon/zhjw/views/staff/staff.vue
  6. 44
      admin/src/addon/zhjw/views/staff/staff_edit.vue
  7. 8
      admin/src/addon/zhjw/views/students/students.vue
  8. 8
      admin/src/addon/zhjw/views/students/students_edit.vue
  9. 10
      niucloud/addon/zhjw/admin/api/staff.ts
  10. 6
      niucloud/addon/zhjw/admin/api/students.ts
  11. 4
      niucloud/addon/zhjw/admin/lang/zh-cn/staff.staff.json
  12. 2
      niucloud/addon/zhjw/admin/lang/zh-cn/staff.staff_edit.json
  13. 59
      niucloud/addon/zhjw/admin/views/staff/staff.vue
  14. 44
      niucloud/addon/zhjw/admin/views/staff/staff_edit.vue
  15. 8
      niucloud/addon/zhjw/admin/views/students/students.vue
  16. 8
      niucloud/addon/zhjw/admin/views/students/students_edit.vue
  17. 16
      niucloud/addon/zhjw/app/adminapi/controller/staff/Staff.php
  18. 4
      niucloud/addon/zhjw/app/adminapi/controller/students/Students.php
  19. 166
      niucloud/addon/zhjw/app/adminapi/route/route.php
  20. 30
      niucloud/addon/zhjw/app/model/staff/Staff.php
  21. 6
      niucloud/addon/zhjw/app/model/students/Students.php
  22. 17
      niucloud/addon/zhjw/app/service/admin/staff/StaffService.php
  23. 12
      niucloud/addon/zhjw/app/service/admin/students/StudentsService.php
  24. 13
      niucloud/addon/zhjw/app/validate/staff/Staff.php
  25. 1
      niucloud/app/api/route/member.php
  26. 6
      niucloud/app/common.php
  27. 5
      niucloud/app/service/api/login/LoginService.php
  28. 11
      niucloud/app/service/api/member/MemberService.php

10
admin/src/addon/zhjw/api/staff.ts

@ -2,6 +2,12 @@ import request from '@/utils/request'
// USER_CODE_BEGIN -- staff // USER_CODE_BEGIN -- staff
/** /**
* *
@ -49,8 +55,8 @@ export function deleteStaff(id: number) {
return request.delete(`zhjw/staff/${id}`, { showErrorMessage: true, showSuccessMessage: true }) return request.delete(`zhjw/staff/${id}`, { showErrorMessage: true, showSuccessMessage: true })
} }
export function getWithRolesList(params: Record<string,any>){ export function getWithMemberList(params: Record<string,any>){
return request.get('zhjw/roles_all', {params}) return request.get('zhjw/member_all', {params})
} }
// USER_CODE_END -- staff // USER_CODE_END -- staff

6
admin/src/addon/zhjw/api/students.ts

@ -8,6 +8,8 @@ import request from '@/utils/request'
// USER_CODE_BEGIN -- zhjw_students // USER_CODE_BEGIN -- zhjw_students
/** /**
* *
@ -55,8 +57,8 @@ export function deleteStudents(id: number) {
return request.delete(`zhjw/students/${id}`, { showErrorMessage: true, showSuccessMessage: true }) return request.delete(`zhjw/students/${id}`, { showErrorMessage: true, showSuccessMessage: true })
} }
export function getWithMemberList(params: Record<string,any>){ export function getWithStaffList(params: Record<string,any>){
return request.get('zhjw/member_all', {params}) return request.get('zhjw/staff_all', {params})
} }
// USER_CODE_END -- zhjw_students // USER_CODE_END -- zhjw_students

4
admin/src/addon/zhjw/lang/zh-cn/staff.staff.json

@ -1,6 +1,9 @@
{ {
"memberId":"关联会员",
"memberIdPlaceholder":"全部",
"name":"姓名", "name":"姓名",
"namePlaceholder":"请输入姓名", "namePlaceholder":"请输入姓名",
"header":"头像",
"gender":"性别", "gender":"性别",
"genderPlaceholder":"请输入性别", "genderPlaceholder":"请输入性别",
"phone":"联系方式", "phone":"联系方式",
@ -12,7 +15,6 @@
"status":"状态", "status":"状态",
"statusPlaceholder":"请输入状态", "statusPlaceholder":"请输入状态",
"roleId":"角色关系", "roleId":"角色关系",
"roleIdPlaceholder":"全部",
"addStaff":"添加人员管理", "addStaff":"添加人员管理",
"updateStaff":"编辑人员管理", "updateStaff":"编辑人员管理",
"staffDeleteTips":"确定要删除该数据吗?", "staffDeleteTips":"确定要删除该数据吗?",

2
admin/src/addon/zhjw/lang/zh-cn/staff.staff_edit.json

@ -1,4 +1,5 @@
{ {
"memberId":"关联会员",
"name":"姓名", "name":"姓名",
"header":"头像", "header":"头像",
"gender":"性别", "gender":"性别",
@ -7,6 +8,7 @@
"position":"职位", "position":"职位",
"status":"状态", "status":"状态",
"roleId":"角色关系", "roleId":"角色关系",
"memberIdPlaceholder":"请选择关联会员",
"namePlaceholder":"请输入姓名", "namePlaceholder":"请输入姓名",
"headerPlaceholder":"请上传头像", "headerPlaceholder":"请上传头像",
"genderPlaceholder":"请输入性别", "genderPlaceholder":"请输入性别",

59
admin/src/addon/zhjw/views/staff/staff.vue

@ -11,6 +11,18 @@
<el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never"> <el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never">
<el-form :inline="true" :model="staffTable.searchParam" ref="searchFormRef"> <el-form :inline="true" :model="staffTable.searchParam" ref="searchFormRef">
<el-form-item :label="t('memberId')" prop="member_id">
<el-select class="w-[280px]" v-model="staffTable.searchParam.member_id" clearable :placeholder="t('memberIdPlaceholder')">
<el-option
v-for="(item, index) in memberIdList"
:key="index"
:label="item['username']"
:value="item['member_id']"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('name')" prop="name"> <el-form-item :label="t('name')" prop="name">
<el-input v-model="staffTable.searchParam.name" :placeholder="t('namePlaceholder')" /> <el-input v-model="staffTable.searchParam.name" :placeholder="t('namePlaceholder')" />
</el-form-item> </el-form-item>
@ -49,18 +61,6 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="t('roleId')" prop="role_id">
<el-select class="w-[280px]" v-model="staffTable.searchParam.role_id" clearable :placeholder="t('roleIdPlaceholder')">
<el-option
v-for="(item, index) in roleIdList"
:key="index"
:label="item['description']"
:value="item['id']"
/>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="loadStaffList()">{{ t('search') }}</el-button> <el-button type="primary" @click="loadStaffList()">{{ t('search') }}</el-button>
<el-button @click="resetForm(searchFormRef)">{{ t('reset') }}</el-button> <el-button @click="resetForm(searchFormRef)">{{ t('reset') }}</el-button>
@ -73,8 +73,16 @@
<template #empty> <template #empty>
<span>{{ !staffTable.loading ? t('emptyData') : '' }}</span> <span>{{ !staffTable.loading ? t('emptyData') : '' }}</span>
</template> </template>
<el-table-column prop="member_id_name" :label="t('memberId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="name" :label="t('name')" min-width="120" :show-overflow-tooltip="true"/> <el-table-column prop="name" :label="t('name')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column :label="t('header')" width="100" align="left">
<template #default="{ row }">
<el-avatar v-if="row.header" :src="img(row.header)" />
<el-avatar v-else icon="UserFilled" />
</template>
</el-table-column>
<el-table-column :label="t('gender')" min-width="180" align="center" :show-overflow-tooltip="true"> <el-table-column :label="t('gender')" min-width="180" align="center" :show-overflow-tooltip="true">
<template #default="{ row }"> <template #default="{ row }">
<div v-for="(item, index) in genderList"> <div v-for="(item, index) in genderList">
@ -97,7 +105,13 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="role_id_name" :label="t('roleId')" min-width="120" :show-overflow-tooltip="true"/> <el-table-column :label="t('roleId')" min-width="180" align="center" :show-overflow-tooltip="true">
<template #default="{ row }">
<div v-for="(item, index) in role_idList">
<div v-if="item.value == row.role_id">{{ item.name }}</div>
</div>
</template>
</el-table-column>
<el-table-column :label="t('operation')" fixed="right" min-width="120"> <el-table-column :label="t('operation')" fixed="right" min-width="120">
<template #default="{ row }"> <template #default="{ row }">
@ -123,7 +137,7 @@
import { reactive, ref, watch } from 'vue' import { reactive, ref, watch } from 'vue'
import { t } from '@/lang' import { t } from '@/lang'
import { useDictionary } from '@/app/api/dict' import { useDictionary } from '@/app/api/dict'
import { getStaffList, deleteStaff, getWithRolesList } from '@/addon/zhjw/api/staff' import { getStaffList, deleteStaff, getWithMemberList } from '@/addon/zhjw/api/staff'
import { img } from '@/utils/common' import { img } from '@/utils/common'
import { ElMessageBox,FormInstance } from 'element-plus' import { ElMessageBox,FormInstance } from 'element-plus'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
@ -138,13 +152,13 @@ let staffTable = reactive({
loading: true, loading: true,
data: [], data: [],
searchParam:{ searchParam:{
"member_id":"",
"name":"", "name":"",
"gender":"", "gender":"",
"phone":"", "phone":"",
"email":"", "email":"",
"position":"", "position":"",
"status":"", "status":""
"role_id":""
} }
}) })
@ -164,6 +178,11 @@ const selectData = ref<any[]>([])
statusList.value = await (await useDictionary('zz_status')).data.dictionary statusList.value = await (await useDictionary('zz_status')).data.dictionary
} }
statusDictList(); statusDictList();
const role_idList = ref([] as any[])
const role_idDictList = async () => {
role_idList.value = await (await useDictionary('roles_name')).data.dictionary
}
role_idDictList();
/** /**
* 获取人员管理列表 * 获取人员管理列表
@ -222,11 +241,11 @@ const deleteEvent = (id: number) => {
} }
const roleIdList = ref([]) const memberIdList = ref([])
const setRoleIdList = async () => { const setMemberIdList = async () => {
roleIdList.value = await (await getWithRolesList({})).data memberIdList.value = await (await getWithMemberList({})).data
} }
setRoleIdList() setMemberIdList()
const resetForm = (formEl: FormInstance | undefined) => { const resetForm = (formEl: FormInstance | undefined) => {
if (!formEl) return if (!formEl) return

44
admin/src/addon/zhjw/views/staff/staff_edit.vue

@ -10,6 +10,18 @@
</div> </div>
<el-card class="box-card !border-none" shadow="never"> <el-card class="box-card !border-none" shadow="never">
<el-form :model="formData" label-width="90px" ref="formRef" :rules="formRules" class="page-form"> <el-form :model="formData" label-width="90px" ref="formRef" :rules="formRules" class="page-form">
<el-form-item :label="t('memberId')" prop="member_id">
<el-select class="input-width" v-model="formData.member_id" clearable :placeholder="t('memberIdPlaceholder')">
<el-option label="请选择" value=""></el-option>
<el-option
v-for="(item, index) in memberIdList"
:key="index"
:label="item['username']"
:value="item['member_id']"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('name')" prop="name"> <el-form-item :label="t('name')" prop="name">
<el-input v-model="formData.name" clearable :placeholder="t('namePlaceholder')" class="input-width" /> <el-input v-model="formData.name" clearable :placeholder="t('namePlaceholder')" class="input-width" />
</el-form-item> </el-form-item>
@ -50,14 +62,12 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item :label="t('roleId')" prop="role_id"> <el-form-item :label="t('roleId')" prop="role_id">
<el-radio-group v-model="formData.role_id" :placeholder="t('roleIdPlaceholder')"> <el-radio-group v-model="formData.role_id" :placeholder="t('roleIdPlaceholder')">
<el-radio <el-radio
v-for="(item, index) in roleIdList" v-for="(item, index) in role_idList"
:key="index" :key="index" :label="item.value">
:label="item['id']"> {{ item.name }}
{{ item['description'] }}
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
@ -78,7 +88,7 @@ import { ref, reactive, computed, watch } from 'vue'
import { t } from '@/lang' import { t } from '@/lang'
import { useDictionary } from '@/app/api/dict' import { useDictionary } from '@/app/api/dict'
import type { FormInstance } from 'element-plus' import type { FormInstance } from 'element-plus'
import { getStaffInfo,addStaff,editStaff, getWithRolesList } from '@/addon/zhjw/api/staff'; import { getStaffInfo,addStaff,editStaff, getWithMemberList } from '@/addon/zhjw/api/staff';
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
const route = useRoute() const route = useRoute()
@ -93,6 +103,7 @@ const pageName = route.meta.title
*/ */
const initialFormData = { const initialFormData = {
id: 0, id: 0,
member_id: '',
name: '', name: '',
header: '', header: '',
gender: '', gender: '',
@ -100,7 +111,7 @@ const initialFormData = {
email: '', email: '',
position: '', position: '',
status: '', status: '',
role_id: '', role_id: 0,
} }
const formData: Record<string, any> = reactive({ ...initialFormData }) const formData: Record<string, any> = reactive({ ...initialFormData })
@ -130,16 +141,27 @@ const selectData = ref<any[]>([])
} }
statusDictList(); statusDictList();
watch(() => statusList.value, () => { formData.status = statusList.value[0].value }) watch(() => statusList.value, () => { formData.status = statusList.value[0].value })
let role_idList = ref([])
const role_idDictList = async () => {
role_idList.value = await (await useDictionary('roles_name')).data.dictionary
}
role_idDictList();
watch(() => role_idList.value, () => { formData.role_id = role_idList.value[0].value })
const roleIdList = ref([] as any[]) const memberIdList = ref([] as any[])
const setRoleIdList = async () => { const setMemberIdList = async () => {
roleIdList.value = await (await getWithRolesList({})).data memberIdList.value = await (await getWithMemberList({})).data
} }
setRoleIdList() setMemberIdList()
// //
const formRules = computed(() => { const formRules = computed(() => {
return { return {
member_id: [
{ required: true, message: t('memberIdPlaceholder'), trigger: 'blur' },
]
,
name: [ name: [
{ required: true, message: t('namePlaceholder'), trigger: 'blur' }, { required: true, message: t('namePlaceholder'), trigger: 'blur' },

8
admin/src/addon/zhjw/views/students/students.vue

@ -20,8 +20,8 @@
<el-option <el-option
v-for="(item, index) in userIdList" v-for="(item, index) in userIdList"
:key="index" :key="index"
:label="item['mobile']" :label="item['name']"
:value="item['member_id']" :value="item['id']"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -128,7 +128,7 @@
import { reactive, ref, watch } from 'vue' import { reactive, ref, watch } from 'vue'
import { t } from '@/lang' import { t } from '@/lang'
import { useDictionary } from '@/app/api/dict' import { useDictionary } from '@/app/api/dict'
import { getStudentsList, deleteStudents, getWithMemberList } from '@/addon/zhjw/api/students' import { getStudentsList, deleteStudents, getWithStaffList } from '@/addon/zhjw/api/students'
import { img } from '@/utils/common' import { img } from '@/utils/common'
import { ElMessageBox,FormInstance } from 'element-plus' import { ElMessageBox,FormInstance } from 'element-plus'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
@ -225,7 +225,7 @@ const deleteEvent = (id: number) => {
const userIdList = ref([]) const userIdList = ref([])
const setUserIdList = async () => { const setUserIdList = async () => {
userIdList.value = await (await getWithMemberList({})).data userIdList.value = await (await getWithStaffList({})).data
} }
setUserIdList() setUserIdList()

8
admin/src/addon/zhjw/views/students/students_edit.vue

@ -20,8 +20,8 @@
<el-option <el-option
v-for="(item, index) in userIdList" v-for="(item, index) in userIdList"
:key="index" :key="index"
:label="item['mobile']" :label="item['name']"
:value="item['member_id']" :value="item['id']"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -70,7 +70,7 @@ import { ref, reactive, computed, watch } from 'vue'
import { t } from '@/lang' import { t } from '@/lang'
import { useDictionary } from '@/app/api/dict' import { useDictionary } from '@/app/api/dict'
import type { FormInstance } from 'element-plus' import type { FormInstance } from 'element-plus'
import { getStudentsInfo,addStudents,editStudents, getWithMemberList } from '@/addon/zhjw/api/students'; import { getStudentsInfo,addStudents,editStudents, getWithStaffList } from '@/addon/zhjw/api/students';
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
const route = useRoute() const route = useRoute()
@ -119,7 +119,7 @@ const selectData = ref<any[]>([])
const userIdList = ref([] as any[]) const userIdList = ref([] as any[])
const setUserIdList = async () => { const setUserIdList = async () => {
userIdList.value = await (await getWithMemberList({})).data userIdList.value = await (await getWithStaffList({})).data
} }
setUserIdList() setUserIdList()
// //

10
niucloud/addon/zhjw/admin/api/staff.ts

@ -2,6 +2,12 @@ import request from '@/utils/request'
// USER_CODE_BEGIN -- staff // USER_CODE_BEGIN -- staff
/** /**
* *
@ -49,8 +55,8 @@ export function deleteStaff(id: number) {
return request.delete(`zhjw/staff/${id}`, { showErrorMessage: true, showSuccessMessage: true }) return request.delete(`zhjw/staff/${id}`, { showErrorMessage: true, showSuccessMessage: true })
} }
export function getWithRolesList(params: Record<string,any>){ export function getWithMemberList(params: Record<string,any>){
return request.get('zhjw/roles_all', {params}) return request.get('zhjw/member_all', {params})
} }
// USER_CODE_END -- staff // USER_CODE_END -- staff

6
niucloud/addon/zhjw/admin/api/students.ts

@ -8,6 +8,8 @@ import request from '@/utils/request'
// USER_CODE_BEGIN -- zhjw_students // USER_CODE_BEGIN -- zhjw_students
/** /**
* *
@ -55,8 +57,8 @@ export function deleteStudents(id: number) {
return request.delete(`zhjw/students/${id}`, { showErrorMessage: true, showSuccessMessage: true }) return request.delete(`zhjw/students/${id}`, { showErrorMessage: true, showSuccessMessage: true })
} }
export function getWithMemberList(params: Record<string,any>){ export function getWithStaffList(params: Record<string,any>){
return request.get('zhjw/member_all', {params}) return request.get('zhjw/staff_all', {params})
} }
// USER_CODE_END -- zhjw_students // USER_CODE_END -- zhjw_students

4
niucloud/addon/zhjw/admin/lang/zh-cn/staff.staff.json

@ -1,6 +1,9 @@
{ {
"memberId":"关联会员",
"memberIdPlaceholder":"全部",
"name":"姓名", "name":"姓名",
"namePlaceholder":"请输入姓名", "namePlaceholder":"请输入姓名",
"header":"头像",
"gender":"性别", "gender":"性别",
"genderPlaceholder":"请输入性别", "genderPlaceholder":"请输入性别",
"phone":"联系方式", "phone":"联系方式",
@ -12,7 +15,6 @@
"status":"状态", "status":"状态",
"statusPlaceholder":"请输入状态", "statusPlaceholder":"请输入状态",
"roleId":"角色关系", "roleId":"角色关系",
"roleIdPlaceholder":"全部",
"addStaff":"添加人员管理", "addStaff":"添加人员管理",
"updateStaff":"编辑人员管理", "updateStaff":"编辑人员管理",
"staffDeleteTips":"确定要删除该数据吗?", "staffDeleteTips":"确定要删除该数据吗?",

2
niucloud/addon/zhjw/admin/lang/zh-cn/staff.staff_edit.json

@ -1,4 +1,5 @@
{ {
"memberId":"关联会员",
"name":"姓名", "name":"姓名",
"header":"头像", "header":"头像",
"gender":"性别", "gender":"性别",
@ -7,6 +8,7 @@
"position":"职位", "position":"职位",
"status":"状态", "status":"状态",
"roleId":"角色关系", "roleId":"角色关系",
"memberIdPlaceholder":"请选择关联会员",
"namePlaceholder":"请输入姓名", "namePlaceholder":"请输入姓名",
"headerPlaceholder":"请上传头像", "headerPlaceholder":"请上传头像",
"genderPlaceholder":"请输入性别", "genderPlaceholder":"请输入性别",

59
niucloud/addon/zhjw/admin/views/staff/staff.vue

@ -11,6 +11,18 @@
<el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never"> <el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never">
<el-form :inline="true" :model="staffTable.searchParam" ref="searchFormRef"> <el-form :inline="true" :model="staffTable.searchParam" ref="searchFormRef">
<el-form-item :label="t('memberId')" prop="member_id">
<el-select class="w-[280px]" v-model="staffTable.searchParam.member_id" clearable :placeholder="t('memberIdPlaceholder')">
<el-option
v-for="(item, index) in memberIdList"
:key="index"
:label="item['username']"
:value="item['member_id']"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('name')" prop="name"> <el-form-item :label="t('name')" prop="name">
<el-input v-model="staffTable.searchParam.name" :placeholder="t('namePlaceholder')" /> <el-input v-model="staffTable.searchParam.name" :placeholder="t('namePlaceholder')" />
</el-form-item> </el-form-item>
@ -49,18 +61,6 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="t('roleId')" prop="role_id">
<el-select class="w-[280px]" v-model="staffTable.searchParam.role_id" clearable :placeholder="t('roleIdPlaceholder')">
<el-option
v-for="(item, index) in roleIdList"
:key="index"
:label="item['description']"
:value="item['id']"
/>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="loadStaffList()">{{ t('search') }}</el-button> <el-button type="primary" @click="loadStaffList()">{{ t('search') }}</el-button>
<el-button @click="resetForm(searchFormRef)">{{ t('reset') }}</el-button> <el-button @click="resetForm(searchFormRef)">{{ t('reset') }}</el-button>
@ -73,8 +73,16 @@
<template #empty> <template #empty>
<span>{{ !staffTable.loading ? t('emptyData') : '' }}</span> <span>{{ !staffTable.loading ? t('emptyData') : '' }}</span>
</template> </template>
<el-table-column prop="member_id_name" :label="t('memberId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="name" :label="t('name')" min-width="120" :show-overflow-tooltip="true"/> <el-table-column prop="name" :label="t('name')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column :label="t('header')" width="100" align="left">
<template #default="{ row }">
<el-avatar v-if="row.header" :src="img(row.header)" />
<el-avatar v-else icon="UserFilled" />
</template>
</el-table-column>
<el-table-column :label="t('gender')" min-width="180" align="center" :show-overflow-tooltip="true"> <el-table-column :label="t('gender')" min-width="180" align="center" :show-overflow-tooltip="true">
<template #default="{ row }"> <template #default="{ row }">
<div v-for="(item, index) in genderList"> <div v-for="(item, index) in genderList">
@ -97,7 +105,13 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="role_id_name" :label="t('roleId')" min-width="120" :show-overflow-tooltip="true"/> <el-table-column :label="t('roleId')" min-width="180" align="center" :show-overflow-tooltip="true">
<template #default="{ row }">
<div v-for="(item, index) in role_idList">
<div v-if="item.value == row.role_id">{{ item.name }}</div>
</div>
</template>
</el-table-column>
<el-table-column :label="t('operation')" fixed="right" min-width="120"> <el-table-column :label="t('operation')" fixed="right" min-width="120">
<template #default="{ row }"> <template #default="{ row }">
@ -123,7 +137,7 @@
import { reactive, ref, watch } from 'vue' import { reactive, ref, watch } from 'vue'
import { t } from '@/lang' import { t } from '@/lang'
import { useDictionary } from '@/app/api/dict' import { useDictionary } from '@/app/api/dict'
import { getStaffList, deleteStaff, getWithRolesList } from '@/addon/zhjw/api/staff' import { getStaffList, deleteStaff, getWithMemberList } from '@/addon/zhjw/api/staff'
import { img } from '@/utils/common' import { img } from '@/utils/common'
import { ElMessageBox,FormInstance } from 'element-plus' import { ElMessageBox,FormInstance } from 'element-plus'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
@ -138,13 +152,13 @@ let staffTable = reactive({
loading: true, loading: true,
data: [], data: [],
searchParam:{ searchParam:{
"member_id":"",
"name":"", "name":"",
"gender":"", "gender":"",
"phone":"", "phone":"",
"email":"", "email":"",
"position":"", "position":"",
"status":"", "status":""
"role_id":""
} }
}) })
@ -164,6 +178,11 @@ const selectData = ref<any[]>([])
statusList.value = await (await useDictionary('zz_status')).data.dictionary statusList.value = await (await useDictionary('zz_status')).data.dictionary
} }
statusDictList(); statusDictList();
const role_idList = ref([] as any[])
const role_idDictList = async () => {
role_idList.value = await (await useDictionary('roles_name')).data.dictionary
}
role_idDictList();
/** /**
* 获取人员管理列表 * 获取人员管理列表
@ -222,11 +241,11 @@ const deleteEvent = (id: number) => {
} }
const roleIdList = ref([]) const memberIdList = ref([])
const setRoleIdList = async () => { const setMemberIdList = async () => {
roleIdList.value = await (await getWithRolesList({})).data memberIdList.value = await (await getWithMemberList({})).data
} }
setRoleIdList() setMemberIdList()
const resetForm = (formEl: FormInstance | undefined) => { const resetForm = (formEl: FormInstance | undefined) => {
if (!formEl) return if (!formEl) return

44
niucloud/addon/zhjw/admin/views/staff/staff_edit.vue

@ -10,6 +10,18 @@
</div> </div>
<el-card class="box-card !border-none" shadow="never"> <el-card class="box-card !border-none" shadow="never">
<el-form :model="formData" label-width="90px" ref="formRef" :rules="formRules" class="page-form"> <el-form :model="formData" label-width="90px" ref="formRef" :rules="formRules" class="page-form">
<el-form-item :label="t('memberId')" prop="member_id">
<el-select class="input-width" v-model="formData.member_id" clearable :placeholder="t('memberIdPlaceholder')">
<el-option label="请选择" value=""></el-option>
<el-option
v-for="(item, index) in memberIdList"
:key="index"
:label="item['username']"
:value="item['member_id']"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('name')" prop="name"> <el-form-item :label="t('name')" prop="name">
<el-input v-model="formData.name" clearable :placeholder="t('namePlaceholder')" class="input-width" /> <el-input v-model="formData.name" clearable :placeholder="t('namePlaceholder')" class="input-width" />
</el-form-item> </el-form-item>
@ -50,14 +62,12 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item :label="t('roleId')" prop="role_id"> <el-form-item :label="t('roleId')" prop="role_id">
<el-radio-group v-model="formData.role_id" :placeholder="t('roleIdPlaceholder')"> <el-radio-group v-model="formData.role_id" :placeholder="t('roleIdPlaceholder')">
<el-radio <el-radio
v-for="(item, index) in roleIdList" v-for="(item, index) in role_idList"
:key="index" :key="index" :label="item.value">
:label="item['id']"> {{ item.name }}
{{ item['description'] }}
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
@ -78,7 +88,7 @@ import { ref, reactive, computed, watch } from 'vue'
import { t } from '@/lang' import { t } from '@/lang'
import { useDictionary } from '@/app/api/dict' import { useDictionary } from '@/app/api/dict'
import type { FormInstance } from 'element-plus' import type { FormInstance } from 'element-plus'
import { getStaffInfo,addStaff,editStaff, getWithRolesList } from '@/addon/zhjw/api/staff'; import { getStaffInfo,addStaff,editStaff, getWithMemberList } from '@/addon/zhjw/api/staff';
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
const route = useRoute() const route = useRoute()
@ -93,6 +103,7 @@ const pageName = route.meta.title
*/ */
const initialFormData = { const initialFormData = {
id: 0, id: 0,
member_id: '',
name: '', name: '',
header: '', header: '',
gender: '', gender: '',
@ -100,7 +111,7 @@ const initialFormData = {
email: '', email: '',
position: '', position: '',
status: '', status: '',
role_id: '', role_id: 0,
} }
const formData: Record<string, any> = reactive({ ...initialFormData }) const formData: Record<string, any> = reactive({ ...initialFormData })
@ -130,16 +141,27 @@ const selectData = ref<any[]>([])
} }
statusDictList(); statusDictList();
watch(() => statusList.value, () => { formData.status = statusList.value[0].value }) watch(() => statusList.value, () => { formData.status = statusList.value[0].value })
let role_idList = ref([])
const role_idDictList = async () => {
role_idList.value = await (await useDictionary('roles_name')).data.dictionary
}
role_idDictList();
watch(() => role_idList.value, () => { formData.role_id = role_idList.value[0].value })
const roleIdList = ref([] as any[]) const memberIdList = ref([] as any[])
const setRoleIdList = async () => { const setMemberIdList = async () => {
roleIdList.value = await (await getWithRolesList({})).data memberIdList.value = await (await getWithMemberList({})).data
} }
setRoleIdList() setMemberIdList()
// //
const formRules = computed(() => { const formRules = computed(() => {
return { return {
member_id: [
{ required: true, message: t('memberIdPlaceholder'), trigger: 'blur' },
]
,
name: [ name: [
{ required: true, message: t('namePlaceholder'), trigger: 'blur' }, { required: true, message: t('namePlaceholder'), trigger: 'blur' },

8
niucloud/addon/zhjw/admin/views/students/students.vue

@ -20,8 +20,8 @@
<el-option <el-option
v-for="(item, index) in userIdList" v-for="(item, index) in userIdList"
:key="index" :key="index"
:label="item['mobile']" :label="item['name']"
:value="item['member_id']" :value="item['id']"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -128,7 +128,7 @@
import { reactive, ref, watch } from 'vue' import { reactive, ref, watch } from 'vue'
import { t } from '@/lang' import { t } from '@/lang'
import { useDictionary } from '@/app/api/dict' import { useDictionary } from '@/app/api/dict'
import { getStudentsList, deleteStudents, getWithMemberList } from '@/addon/zhjw/api/students' import { getStudentsList, deleteStudents, getWithStaffList } from '@/addon/zhjw/api/students'
import { img } from '@/utils/common' import { img } from '@/utils/common'
import { ElMessageBox,FormInstance } from 'element-plus' import { ElMessageBox,FormInstance } from 'element-plus'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
@ -225,7 +225,7 @@ const deleteEvent = (id: number) => {
const userIdList = ref([]) const userIdList = ref([])
const setUserIdList = async () => { const setUserIdList = async () => {
userIdList.value = await (await getWithMemberList({})).data userIdList.value = await (await getWithStaffList({})).data
} }
setUserIdList() setUserIdList()

8
niucloud/addon/zhjw/admin/views/students/students_edit.vue

@ -20,8 +20,8 @@
<el-option <el-option
v-for="(item, index) in userIdList" v-for="(item, index) in userIdList"
:key="index" :key="index"
:label="item['mobile']" :label="item['name']"
:value="item['member_id']" :value="item['id']"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -70,7 +70,7 @@ import { ref, reactive, computed, watch } from 'vue'
import { t } from '@/lang' import { t } from '@/lang'
import { useDictionary } from '@/app/api/dict' import { useDictionary } from '@/app/api/dict'
import type { FormInstance } from 'element-plus' import type { FormInstance } from 'element-plus'
import { getStudentsInfo,addStudents,editStudents, getWithMemberList } from '@/addon/zhjw/api/students'; import { getStudentsInfo,addStudents,editStudents, getWithStaffList } from '@/addon/zhjw/api/students';
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
const route = useRoute() const route = useRoute()
@ -119,7 +119,7 @@ const selectData = ref<any[]>([])
const userIdList = ref([] as any[]) const userIdList = ref([] as any[])
const setUserIdList = async () => { const setUserIdList = async () => {
userIdList.value = await (await getWithMemberList({})).data userIdList.value = await (await getWithStaffList({})).data
} }
setUserIdList() setUserIdList()
// //

16
niucloud/addon/zhjw/app/adminapi/controller/staff/Staff.php

@ -28,13 +28,13 @@ class Staff extends BaseAdminController
*/ */
public function lists(){ public function lists(){
$data = $this->request->params([ $data = $this->request->params([
["member_id",""],
["name",""], ["name",""],
["gender",""], ["gender",""],
["phone",""], ["phone",""],
["email",""], ["email",""],
["position",""], ["position",""],
["status",""], ["status",""]
["role_id",""]
]); ]);
return success((new StaffService())->getPage($data)); return success((new StaffService())->getPage($data));
} }
@ -54,6 +54,7 @@ class Staff extends BaseAdminController
*/ */
public function add(){ public function add(){
$data = $this->request->params([ $data = $this->request->params([
["member_id",0],
["name",""], ["name",""],
["header",""], ["header",""],
["gender",""], ["gender",""],
@ -61,7 +62,8 @@ class Staff extends BaseAdminController
["email",""], ["email",""],
["position",""], ["position",""],
["status",""], ["status",""],
["role_id",0] ["role_id",0],
]); ]);
$this->validate($data, 'addon\zhjw\app\validate\staff\Staff.add'); $this->validate($data, 'addon\zhjw\app\validate\staff\Staff.add');
$id = (new StaffService())->add($data); $id = (new StaffService())->add($data);
@ -75,6 +77,7 @@ class Staff extends BaseAdminController
*/ */
public function edit(int $id){ public function edit(int $id){
$data = $this->request->params([ $data = $this->request->params([
["member_id",0],
["name",""], ["name",""],
["header",""], ["header",""],
["gender",""], ["gender",""],
@ -82,7 +85,8 @@ class Staff extends BaseAdminController
["email",""], ["email",""],
["position",""], ["position",""],
["status",""], ["status",""],
["role_id",0] ["role_id",0],
]); ]);
$this->validate($data, 'addon\zhjw\app\validate\staff\Staff.edit'); $this->validate($data, 'addon\zhjw\app\validate\staff\Staff.edit');
(new StaffService())->edit($id, $data); (new StaffService())->edit($id, $data);
@ -100,8 +104,8 @@ class Staff extends BaseAdminController
} }
public function getRolesAll(){ public function getMemberAll(){
return success(( new StaffService())->getRolesAll()); return success(( new StaffService())->getMemberAll());
} }
} }

4
niucloud/addon/zhjw/app/adminapi/controller/students/Students.php

@ -101,8 +101,8 @@ class Students extends BaseAdminController
} }
public function getMemberAll(){ public function getStaffAll(){
return success(( new StudentsService())->getMemberAll()); return success(( new StudentsService())->getStaffAll());
} }
} }

166
niucloud/addon/zhjw/app/adminapi/route/route.php

@ -122,29 +122,6 @@ Route::group('zhjw', function () {
]); ]);
// USER_CODE_END -- roles // USER_CODE_END -- roles
// USER_CODE_BEGIN -- staff
Route::group('zhjw', function () {
//人员管理列表
Route::get('staff', 'addon\zhjw\app\adminapi\controller\staff\Staff@lists');
//人员管理详情
Route::get('staff/:id', 'addon\zhjw\app\adminapi\controller\staff\Staff@info');
//添加人员管理
Route::post('staff', 'addon\zhjw\app\adminapi\controller\staff\Staff@add');
//编辑人员管理
Route::put('staff/:id', 'addon\zhjw\app\adminapi\controller\staff\Staff@edit');
//删除人员管理
Route::delete('staff/:id', 'addon\zhjw\app\adminapi\controller\staff\Staff@del');
Route::get('roles_all','addon\zhjw\app\adminapi\controller\staff\Staff@getRolesAll');
})->middleware([
AdminCheckToken::class,
AdminCheckRole::class,
AdminLog::class
]);
// USER_CODE_END -- staff
@ -228,99 +205,6 @@ Route::group('zhjw', function () {
]); ]);
// USER_CODE_END -- zhjw_schedules // USER_CODE_END -- zhjw_schedules
// USER_CODE_BEGIN -- zhjw_students
Route::group('zhjw', function () {
//学员管理列表
Route::get('students', 'addon\zhjw\app\adminapi\controller\students\Students@lists');
//学员管理详情
Route::get('students/:id', 'addon\zhjw\app\adminapi\controller\students\Students@info');
//添加学员管理
Route::post('students', 'addon\zhjw\app\adminapi\controller\students\Students@add');
//编辑学员管理
Route::put('students/:id', 'addon\zhjw\app\adminapi\controller\students\Students@edit');
//删除学员管理
Route::delete('students/:id', 'addon\zhjw\app\adminapi\controller\students\Students@del');
Route::get('member_all','addon\zhjw\app\adminapi\controller\students\Students@getMemberAll');
})->middleware([
AdminCheckToken::class,
AdminCheckRole::class,
AdminLog::class
]);
Route::group('zhjw', function () {
//智慧教务-订单管理列表
Route::get('orders', 'addon\zhjw\app\adminapi\controller\orders\Orders@lists');
//智慧教务-订单管理详情
Route::get('orders/:id', 'addon\zhjw\app\adminapi\controller\orders\Orders@info');
//添加智慧教务-订单管理
Route::post('orders', 'addon\zhjw\app\adminapi\controller\orders\Orders@add');
//编辑智慧教务-订单管理
Route::put('orders/:id', 'addon\zhjw\app\adminapi\controller\orders\Orders@edit');
//删除智慧教务-订单管理
Route::delete('orders/:id', 'addon\zhjw\app\adminapi\controller\orders\Orders@del');
Route::get('students_all','addon\zhjw\app\adminapi\controller\orders\Orders@getStudentsAll');
Route::get('contracts_all','addon\zhjw\app\adminapi\controller\orders\Orders@getContractsAll');
})->middleware([
AdminCheckToken::class,
AdminCheckRole::class,
AdminLog::class
]);
Route::group('zhjw', function () {
//文章管理列表
Route::get('articles', 'addon\zhjw\app\adminapi\controller\articles\Articles@lists');
//文章管理详情
Route::get('articles/:id', 'addon\zhjw\app\adminapi\controller\articles\Articles@info');
//添加文章管理
Route::post('articles', 'addon\zhjw\app\adminapi\controller\articles\Articles@add');
//编辑文章管理
Route::put('articles/:id', 'addon\zhjw\app\adminapi\controller\articles\Articles@edit');
//删除文章管理
Route::delete('articles/:id', 'addon\zhjw\app\adminapi\controller\articles\Articles@del');
Route::get('sys_user_all','addon\zhjw\app\adminapi\controller\articles\Articles@getSysUserAll');
})->middleware([
AdminCheckToken::class,
AdminCheckRole::class,
AdminLog::class
]);
Route::group('zhjw', function () {
//合同管理列表
Route::get('contracts', 'addon\zhjw\app\adminapi\controller\contracts\Contracts@lists');
//合同管理详情
Route::get('contracts/:id', 'addon\zhjw\app\adminapi\controller\contracts\Contracts@info');
//添加合同管理
Route::post('contracts', 'addon\zhjw\app\adminapi\controller\contracts\Contracts@add');
//编辑合同管理
Route::put('contracts/:id', 'addon\zhjw\app\adminapi\controller\contracts\Contracts@edit');
//删除合同管理
Route::delete('contracts/:id', 'addon\zhjw\app\adminapi\controller\contracts\Contracts@del');
Route::get('students_all','addon\zhjw\app\adminapi\controller\contracts\Contracts@getStudentsAll');
})->middleware([
AdminCheckToken::class,
AdminCheckRole::class,
AdminLog::class
]);
// USER_CODE_END -- zhjw_students
// USER_CODE_BEGIN -- timetables // USER_CODE_BEGIN -- timetables
@ -474,3 +358,53 @@ Route::group('zhjw', function () {
AdminLog::class AdminLog::class
]); ]);
// USER_CODE_END -- feedback // USER_CODE_END -- feedback
// USER_CODE_BEGIN -- zhjw_students
Route::group('zhjw', function () {
//学员管理列表
Route::get('students', 'addon\zhjw\app\adminapi\controller\students\Students@lists');
//学员管理详情
Route::get('students/:id', 'addon\zhjw\app\adminapi\controller\students\Students@info');
//添加学员管理
Route::post('students', 'addon\zhjw\app\adminapi\controller\students\Students@add');
//编辑学员管理
Route::put('students/:id', 'addon\zhjw\app\adminapi\controller\students\Students@edit');
//删除学员管理
Route::delete('students/:id', 'addon\zhjw\app\adminapi\controller\students\Students@del');
Route::get('staff_all','addon\zhjw\app\adminapi\controller\students\Students@getStaffAll');
})->middleware([
AdminCheckToken::class,
AdminCheckRole::class,
AdminLog::class
]);
// USER_CODE_END -- zhjw_students
// USER_CODE_BEGIN -- staff
Route::group('zhjw', function () {
//人员管理列表
Route::get('staff', 'addon\zhjw\app\adminapi\controller\staff\Staff@lists');
//人员管理详情
Route::get('staff/:id', 'addon\zhjw\app\adminapi\controller\staff\Staff@info');
//添加人员管理
Route::post('staff', 'addon\zhjw\app\adminapi\controller\staff\Staff@add');
//编辑人员管理
Route::put('staff/:id', 'addon\zhjw\app\adminapi\controller\staff\Staff@edit');
//删除人员管理
Route::delete('staff/:id', 'addon\zhjw\app\adminapi\controller\staff\Staff@del');
Route::get('member_all','addon\zhjw\app\adminapi\controller\staff\Staff@getMemberAll');
})->middleware([
AdminCheckToken::class,
AdminCheckRole::class,
AdminLog::class
]);
// USER_CODE_END -- staff

30
niucloud/addon/zhjw/app/model/staff/Staff.php

@ -16,7 +16,7 @@ use think\model\concern\SoftDelete;
use think\model\relation\HasMany; use think\model\relation\HasMany;
use think\model\relation\HasOne; use think\model\relation\HasOne;
use addon\zhjw\app\model\roles\Roles; use app\model\member\Member;
/** /**
* 人员管理模型 * 人员管理模型
@ -52,6 +52,18 @@ class Staff extends BaseModel
*/ */
protected $defaultSoftDelete = 0; protected $defaultSoftDelete = 0;
/**
* 搜索器:人员管理关联会员
* @param $value
* @param $data
*/
public function searchMemberIdAttr($query, $value, $data)
{
if ($value) {
$query->where("member_id", $value);
}
}
/** /**
* 搜索器:人员管理姓名 * 搜索器:人员管理姓名
* @param $value * @param $value
@ -124,25 +136,13 @@ class Staff extends BaseModel
} }
} }
/**
* 搜索器:人员管理角色关系
* @param $value
* @param $data
*/
public function searchRoleIdAttr($query, $value, $data)
{
if ($value) {
$query->where("role_id", $value);
}
}
public function roles(){ public function member(){
return $this->hasOne(Roles::class, 'id', 'role_id')->joinType('left')->withField('description,id')->bind(['role_id_name'=>'description']); return $this->hasOne(Member::class, 'member_id', 'member_id')->joinType('left')->withField('username,member_id')->bind(['member_id_name'=>'username']);
} }
} }

6
niucloud/addon/zhjw/app/model/students/Students.php

@ -16,7 +16,7 @@ use think\model\concern\SoftDelete;
use think\model\relation\HasMany; use think\model\relation\HasMany;
use think\model\relation\HasOne; use think\model\relation\HasOne;
use app\model\member\Member; use addon\zhjw\app\model\staff\Staff;
/** /**
* 学员管理模型 * 学员管理模型
@ -171,8 +171,8 @@ class Students extends BaseModel
public function member(){ public function staff(){
return $this->hasOne(Member::class, 'member_id', 'user_id')->joinType('left')->withField('mobile,member_id')->bind(['user_id_name'=>'mobile']); return $this->hasOne(Staff::class, 'id', 'user_id')->joinType('left')->withField('name,id')->bind(['user_id_name'=>'name']);
} }
} }

17
niucloud/addon/zhjw/app/service/admin/staff/StaffService.php

@ -12,7 +12,7 @@
namespace addon\zhjw\app\service\admin\staff; namespace addon\zhjw\app\service\admin\staff;
use addon\zhjw\app\model\staff\Staff; use addon\zhjw\app\model\staff\Staff;
use addon\zhjw\app\model\roles\Roles; use app\model\member\Member;
use core\base\BaseAdminService; use core\base\BaseAdminService;
@ -37,10 +37,10 @@ class StaffService extends BaseAdminService
*/ */
public function getPage(array $where = []) public function getPage(array $where = [])
{ {
$field = 'id,is_deleted,created_by,created_role,created_time,updated_by,updated_role,updated_time,name,header,gender,phone,email,position,status,role_id'; $field = 'id,created_by,created_role,created_time,updated_by,updated_role,updated_time,member_id,name,header,gender,phone,email,position,status,role_id,is_deleted';
$order = 'id desc'; $order = 'id desc';
$search_model = $this->model->withSearch(["name","gender","phone","email","position","status","role_id"], $where)->with(['roles'])->field($field)->order($order); $search_model = $this->model->withSearch(["member_id","name","gender","phone","email","position","status"], $where)->with(['member'])->field($field)->order($order);
$list = $this->pageQuery($search_model); $list = $this->pageQuery($search_model);
return $list; return $list;
} }
@ -52,11 +52,12 @@ class StaffService extends BaseAdminService
*/ */
public function getInfo(int $id) public function getInfo(int $id)
{ {
$field = 'id,is_deleted,created_by,created_role,created_time,updated_by,updated_role,updated_time,name,header,gender,phone,email,position,status,role_id'; $field = 'id,created_by,created_role,created_time,updated_by,updated_role,updated_time,member_id,name,header,gender,phone,email,position,status,role_id,is_deleted';
$info = $this->model->field($field)->where([['id', "=", $id]])->with(['roles'])->findOrEmpty()->toArray(); $info = $this->model->field($field)->where([['id', "=", $id]])->with(['member'])->findOrEmpty()->toArray();
$info['gender'] = strval($info['gender']); $info['gender'] = strval($info['gender']);
$info['status'] = strval($info['status']); $info['status'] = strval($info['status']);
$info['role_id'] = strval($info['role_id']);
return $info; return $info;
} }
@ -98,9 +99,9 @@ class StaffService extends BaseAdminService
} }
public function getRolesAll(){ public function getMemberAll(){
$rolesModel = new Roles(); $memberModel = new Member();
return $rolesModel->select()->toArray(); return $memberModel->select()->toArray();
} }

12
niucloud/addon/zhjw/app/service/admin/students/StudentsService.php

@ -12,7 +12,7 @@
namespace addon\zhjw\app\service\admin\students; namespace addon\zhjw\app\service\admin\students;
use addon\zhjw\app\model\students\Students; use addon\zhjw\app\model\students\Students;
use app\model\member\Member; use addon\zhjw\app\model\staff\Staff;
use core\base\BaseAdminService; use core\base\BaseAdminService;
@ -40,7 +40,7 @@ class StudentsService extends BaseAdminService
$field = 'id,name,user_id,have_study_time,end_study_time,emergency_contact,level,status,create_time,update_time,is_deleted,created_by,created_role,updated_by,updated_role'; $field = 'id,name,user_id,have_study_time,end_study_time,emergency_contact,level,status,create_time,update_time,is_deleted,created_by,created_role,updated_by,updated_role';
$order = 'id desc'; $order = 'id desc';
$search_model = $this->model->withSearch(["name","user_id","have_study_time","end_study_time","emergency_contact","level","status","create_time"], $where)->with(['member'])->field($field)->order($order); $search_model = $this->model->withSearch(["name","user_id","have_study_time","end_study_time","emergency_contact","level","status","create_time"], $where)->with(['staff'])->field($field)->order($order);
$list = $this->pageQuery($search_model); $list = $this->pageQuery($search_model);
return $list; return $list;
} }
@ -54,7 +54,7 @@ class StudentsService extends BaseAdminService
{ {
$field = 'id,name,user_id,have_study_time,end_study_time,emergency_contact,level,status,create_time,update_time,is_deleted,created_by,created_role,updated_by,updated_role'; $field = 'id,name,user_id,have_study_time,end_study_time,emergency_contact,level,status,create_time,update_time,is_deleted,created_by,created_role,updated_by,updated_role';
$info = $this->model->field($field)->where([['id', "=", $id]])->with(['member'])->findOrEmpty()->toArray(); $info = $this->model->field($field)->where([['id', "=", $id]])->with(['staff'])->findOrEmpty()->toArray();
return $info; return $info;
} }
@ -96,9 +96,9 @@ class StudentsService extends BaseAdminService
} }
public function getMemberAll(){ public function getStaffAll(){
$memberModel = new Member(); $staffModel = new Staff();
return $memberModel->select()->toArray(); return $staffModel->select()->toArray();
} }

13
niucloud/addon/zhjw/app/validate/staff/Staff.php

@ -20,33 +20,32 @@ class Staff extends BaseValidate
{ {
protected $rule = [ protected $rule = [
'member_id' => 'require',
'name' => 'require', 'name' => 'require',
'header' => 'require', 'header' => 'require',
'gender' => 'require', 'gender' => 'require',
'phone' => 'require|mobile', 'phone' => 'require',
'email' => 'require|email', 'email' => 'require',
'position' => 'require', 'position' => 'require',
'status' => 'require', 'status' => 'require',
'role_id' => 'require', 'role_id' => 'require',
]; ];
protected $message = [ protected $message = [
'member_id.require' => ['common_validate.require', ['member_id']],
'name.require' => ['common_validate.require', ['name']], 'name.require' => ['common_validate.require', ['name']],
'header.require' => ['common_validate.require', ['header']], 'header.require' => ['common_validate.require', ['header']],
'gender.require' => ['common_validate.require', ['gender']], 'gender.require' => ['common_validate.require', ['gender']],
'phone.require' => ['common_validate.require', ['phone']], 'phone.require' => ['common_validate.require', ['phone']],
'phone.mobile' => ['common_validate.mobile', ['phone']],
'email.require' => ['common_validate.require', ['email']], 'email.require' => ['common_validate.require', ['email']],
'email.email' => ['common_validate.email', ['email']],
'position.require' => ['common_validate.require', ['position']], 'position.require' => ['common_validate.require', ['position']],
'status.require' => ['common_validate.require', ['status']], 'status.require' => ['common_validate.require', ['status']],
'role_id.require' => ['common_validate.require', ['role_id']], 'role_id.require' => ['common_validate.require', ['role_id']],
]; ];
protected $scene = [ protected $scene = [
"add" => ['member_id', 'name', 'gender', 'phone', 'email', 'position', 'status', 'role_id'],
"add" => ['name', 'gender', 'phone', 'email', 'position', 'status', 'role_id'], "edit" => ['member_id', 'name', 'gender', 'phone', 'email', 'position', 'status', 'role_id']
"edit" => ['name', 'gender', 'phone', 'email', 'position', 'status', 'role_id']
]; ];
} }

1
niucloud/app/api/route/member.php

@ -116,6 +116,7 @@ Route::group('member', function () {
Route::get('index', 'member.Member/index'); Route::get('index', 'member.Member/index');
})->middleware(ApiChannel::class) })->middleware(ApiChannel::class)
->middleware(ApiCheckToken::class, true) ->middleware(ApiCheckToken::class, true)
->middleware(ApiLog::class); ->middleware(ApiLog::class);

6
niucloud/app/common.php

@ -1025,3 +1025,9 @@ function get_last_time($time = null)
} }
return $text; return $text;
} }
//role_id 1 学员 2教师 3教务 4教练
function get_user_type($member_id){
$role_id = (new \addon\zhjw\app\model\staff\Staff())->where(['member_id' => $member_id])->value("role_id");
return $role_id;
}

5
niucloud/app/service/api/login/LoginService.php

@ -71,10 +71,15 @@ class LoginService extends BaseApiService
$member_info->login_type = $login_type; $member_info->login_type = $login_type;
$member_info->login_count++; $member_info->login_count++;
$member_info->last_visit_time = time(); $member_info->last_visit_time = time();
$role_id = get_user_type($member_info->member_id);
$member_info->save(); $member_info->save();
$token_info = $this->createToken($member_info); $token_info = $this->createToken($member_info);
event("MemberLogin", $member_info); event("MemberLogin", $member_info);
$roleArr = [1=>3,2=>2,3=>1];
return [ return [
'userType' => $roleArr[$role_id],
'token' => $token_info[ 'token' ], 'token' => $token_info[ 'token' ],
'expires_time' => $token_info[ 'params' ][ 'exp' ], 'expires_time' => $token_info[ 'params' ][ 'exp' ],
'mobile' => $member_info->mobile 'mobile' => $member_info->mobile

11
niucloud/app/service/api/member/MemberService.php

@ -13,6 +13,7 @@ namespace app\service\api\member;
use addon\zhjw\app\model\classes\Classes; use addon\zhjw\app\model\classes\Classes;
use addon\zhjw\app\model\courses\Courses; use addon\zhjw\app\model\courses\Courses;
use addon\zhjw\app\model\staff\Staff;
use addon\zhjw\app\model\students\Students; use addon\zhjw\app\model\students\Students;
use addon\zhjw\app\model\timetables\Timetables; use addon\zhjw\app\model\timetables\Timetables;
use addon\zhjw\app\model\venues\Venues; use addon\zhjw\app\model\venues\Venues;
@ -72,7 +73,12 @@ class MemberService extends BaseApiService
->field($field) ->field($field)
->append(['sex_name']) ->append(['sex_name'])
->findOrEmpty()->toArray(); ->findOrEmpty()->toArray();
$data = (new Students())->where(['user_id' => $this->member_id])->find();
$role_id = get_user_type($this->member_id);
if($role_id == 1){
//学员信息
$staff_id = (new Staff())->where(['member_id' => $this->member_id])->value('id');
$data = (new Students())->where(['user_id' => $staff_id])->find();
$info['height'] = $data['height']; $info['height'] = $data['height'];
$info['weight'] = $data['weight']; $info['weight'] = $data['weight'];
$info['score'] = $data['score']; $info['score'] = $data['score'];
@ -93,6 +99,9 @@ class MemberService extends BaseApiService
->group("d.id") ->group("d.id")
->column("d.name"); ->column("d.name");
$info['classes_list'] = implode(",", $classes_list); $info['classes_list'] = implode(",", $classes_list);
}
return $info; return $info;
} }

Loading…
Cancel
Save