于宏哲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
/**
*
@ -49,8 +55,8 @@ export function deleteStaff(id: number) {
return request.delete(`zhjw/staff/${id}`, { showErrorMessage: true, showSuccessMessage: true })
}
export function getWithRolesList(params: Record<string,any>){
return request.get('zhjw/roles_all', {params})
export function getWithMemberList(params: Record<string,any>){
return request.get('zhjw/member_all', {params})
}
// 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
/**
*
@ -55,8 +57,8 @@ export function deleteStudents(id: number) {
return request.delete(`zhjw/students/${id}`, { showErrorMessage: true, showSuccessMessage: true })
}
export function getWithMemberList(params: Record<string,any>){
return request.get('zhjw/member_all', {params})
export function getWithStaffList(params: Record<string,any>){
return request.get('zhjw/staff_all', {params})
}
// USER_CODE_END -- zhjw_students

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

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

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

@ -1,4 +1,5 @@
{
"memberId":"关联会员",
"name":"姓名",
"header":"头像",
"gender":"性别",
@ -7,6 +8,7 @@
"position":"职位",
"status":"状态",
"roleId":"角色关系",
"memberIdPlaceholder":"请选择关联会员",
"namePlaceholder":"请输入姓名",
"headerPlaceholder":"请上传头像",
"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-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-input v-model="staffTable.searchParam.name" :placeholder="t('namePlaceholder')" />
</el-form-item>
@ -49,18 +61,6 @@
</el-select>
</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-button type="primary" @click="loadStaffList()">{{ t('search') }}</el-button>
<el-button @click="resetForm(searchFormRef)">{{ t('reset') }}</el-button>
@ -73,8 +73,16 @@
<template #empty>
<span>{{ !staffTable.loading ? t('emptyData') : '' }}</span>
</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 :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">
<template #default="{ row }">
<div v-for="(item, index) in genderList">
@ -97,7 +105,13 @@
</template>
</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">
<template #default="{ row }">
@ -123,7 +137,7 @@
import { reactive, ref, watch } from 'vue'
import { t } from '@/lang'
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 { ElMessageBox,FormInstance } from 'element-plus'
import { useRouter } from 'vue-router'
@ -138,13 +152,13 @@ let staffTable = reactive({
loading: true,
data: [],
searchParam:{
"member_id":"",
"name":"",
"gender":"",
"phone":"",
"email":"",
"position":"",
"status":"",
"role_id":""
"status":""
}
})
@ -164,6 +178,11 @@ const selectData = ref<any[]>([])
statusList.value = await (await useDictionary('zz_status')).data.dictionary
}
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 setRoleIdList = async () => {
roleIdList.value = await (await getWithRolesList({})).data
const memberIdList = ref([])
const setMemberIdList = async () => {
memberIdList.value = await (await getWithMemberList({})).data
}
setRoleIdList()
setMemberIdList()
const resetForm = (formEl: FormInstance | undefined) => {
if (!formEl) return

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

@ -10,6 +10,18 @@
</div>
<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-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-input v-model="formData.name" clearable :placeholder="t('namePlaceholder')" class="input-width" />
</el-form-item>
@ -50,14 +62,12 @@
</el-radio-group>
</el-form-item>
<el-form-item :label="t('roleId')" prop="role_id">
<el-radio-group v-model="formData.role_id" :placeholder="t('roleIdPlaceholder')">
<el-radio
v-for="(item, index) in roleIdList"
:key="index"
:label="item['id']">
{{ item['description'] }}
v-for="(item, index) in role_idList"
:key="index" :label="item.value">
{{ item.name }}
</el-radio>
</el-radio-group>
</el-form-item>
@ -78,7 +88,7 @@ import { ref, reactive, computed, watch } from 'vue'
import { t } from '@/lang'
import { useDictionary } from '@/app/api/dict'
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'
const route = useRoute()
@ -93,6 +103,7 @@ const pageName = route.meta.title
*/
const initialFormData = {
id: 0,
member_id: '',
name: '',
header: '',
gender: '',
@ -100,7 +111,7 @@ const initialFormData = {
email: '',
position: '',
status: '',
role_id: '',
role_id: 0,
}
const formData: Record<string, any> = reactive({ ...initialFormData })
@ -130,16 +141,27 @@ const selectData = ref<any[]>([])
}
statusDictList();
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 setRoleIdList = async () => {
roleIdList.value = await (await getWithRolesList({})).data
const memberIdList = ref([] as any[])
const setMemberIdList = async () => {
memberIdList.value = await (await getWithMemberList({})).data
}
setRoleIdList()
setMemberIdList()
//
const formRules = computed(() => {
return {
member_id: [
{ required: true, message: t('memberIdPlaceholder'), trigger: 'blur' },
]
,
name: [
{ required: true, message: t('namePlaceholder'), trigger: 'blur' },

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

@ -20,8 +20,8 @@
<el-option
v-for="(item, index) in userIdList"
:key="index"
:label="item['mobile']"
:value="item['member_id']"
:label="item['name']"
:value="item['id']"
/>
</el-select>
</el-form-item>
@ -128,7 +128,7 @@
import { reactive, ref, watch } from 'vue'
import { t } from '@/lang'
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 { ElMessageBox,FormInstance } from 'element-plus'
import { useRouter } from 'vue-router'
@ -225,7 +225,7 @@ const deleteEvent = (id: number) => {
const userIdList = ref([])
const setUserIdList = async () => {
userIdList.value = await (await getWithMemberList({})).data
userIdList.value = await (await getWithStaffList({})).data
}
setUserIdList()

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

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

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

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

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

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

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

@ -1,4 +1,5 @@
{
"memberId":"关联会员",
"name":"姓名",
"header":"头像",
"gender":"性别",
@ -7,6 +8,7 @@
"position":"职位",
"status":"状态",
"roleId":"角色关系",
"memberIdPlaceholder":"请选择关联会员",
"namePlaceholder":"请输入姓名",
"headerPlaceholder":"请上传头像",
"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-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-input v-model="staffTable.searchParam.name" :placeholder="t('namePlaceholder')" />
</el-form-item>
@ -49,18 +61,6 @@
</el-select>
</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-button type="primary" @click="loadStaffList()">{{ t('search') }}</el-button>
<el-button @click="resetForm(searchFormRef)">{{ t('reset') }}</el-button>
@ -73,8 +73,16 @@
<template #empty>
<span>{{ !staffTable.loading ? t('emptyData') : '' }}</span>
</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 :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">
<template #default="{ row }">
<div v-for="(item, index) in genderList">
@ -97,7 +105,13 @@
</template>
</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">
<template #default="{ row }">
@ -123,7 +137,7 @@
import { reactive, ref, watch } from 'vue'
import { t } from '@/lang'
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 { ElMessageBox,FormInstance } from 'element-plus'
import { useRouter } from 'vue-router'
@ -138,13 +152,13 @@ let staffTable = reactive({
loading: true,
data: [],
searchParam:{
"member_id":"",
"name":"",
"gender":"",
"phone":"",
"email":"",
"position":"",
"status":"",
"role_id":""
"status":""
}
})
@ -164,6 +178,11 @@ const selectData = ref<any[]>([])
statusList.value = await (await useDictionary('zz_status')).data.dictionary
}
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 setRoleIdList = async () => {
roleIdList.value = await (await getWithRolesList({})).data
const memberIdList = ref([])
const setMemberIdList = async () => {
memberIdList.value = await (await getWithMemberList({})).data
}
setRoleIdList()
setMemberIdList()
const resetForm = (formEl: FormInstance | undefined) => {
if (!formEl) return

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

@ -10,6 +10,18 @@
</div>
<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-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-input v-model="formData.name" clearable :placeholder="t('namePlaceholder')" class="input-width" />
</el-form-item>
@ -50,14 +62,12 @@
</el-radio-group>
</el-form-item>
<el-form-item :label="t('roleId')" prop="role_id">
<el-radio-group v-model="formData.role_id" :placeholder="t('roleIdPlaceholder')">
<el-radio
v-for="(item, index) in roleIdList"
:key="index"
:label="item['id']">
{{ item['description'] }}
v-for="(item, index) in role_idList"
:key="index" :label="item.value">
{{ item.name }}
</el-radio>
</el-radio-group>
</el-form-item>
@ -78,7 +88,7 @@ import { ref, reactive, computed, watch } from 'vue'
import { t } from '@/lang'
import { useDictionary } from '@/app/api/dict'
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'
const route = useRoute()
@ -93,6 +103,7 @@ const pageName = route.meta.title
*/
const initialFormData = {
id: 0,
member_id: '',
name: '',
header: '',
gender: '',
@ -100,7 +111,7 @@ const initialFormData = {
email: '',
position: '',
status: '',
role_id: '',
role_id: 0,
}
const formData: Record<string, any> = reactive({ ...initialFormData })
@ -130,16 +141,27 @@ const selectData = ref<any[]>([])
}
statusDictList();
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 setRoleIdList = async () => {
roleIdList.value = await (await getWithRolesList({})).data
const memberIdList = ref([] as any[])
const setMemberIdList = async () => {
memberIdList.value = await (await getWithMemberList({})).data
}
setRoleIdList()
setMemberIdList()
//
const formRules = computed(() => {
return {
member_id: [
{ required: true, message: t('memberIdPlaceholder'), trigger: 'blur' },
]
,
name: [
{ required: true, message: t('namePlaceholder'), trigger: 'blur' },

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

@ -20,8 +20,8 @@
<el-option
v-for="(item, index) in userIdList"
:key="index"
:label="item['mobile']"
:value="item['member_id']"
:label="item['name']"
:value="item['id']"
/>
</el-select>
</el-form-item>
@ -128,7 +128,7 @@
import { reactive, ref, watch } from 'vue'
import { t } from '@/lang'
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 { ElMessageBox,FormInstance } from 'element-plus'
import { useRouter } from 'vue-router'
@ -225,7 +225,7 @@ const deleteEvent = (id: number) => {
const userIdList = ref([])
const setUserIdList = async () => {
userIdList.value = await (await getWithMemberList({})).data
userIdList.value = await (await getWithStaffList({})).data
}
setUserIdList()

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

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

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

@ -28,13 +28,13 @@ class Staff extends BaseAdminController
*/
public function lists(){
$data = $this->request->params([
["member_id",""],
["name",""],
["gender",""],
["phone",""],
["email",""],
["position",""],
["status",""],
["role_id",""]
["status",""]
]);
return success((new StaffService())->getPage($data));
}
@ -54,6 +54,7 @@ class Staff extends BaseAdminController
*/
public function add(){
$data = $this->request->params([
["member_id",0],
["name",""],
["header",""],
["gender",""],
@ -61,7 +62,8 @@ class Staff extends BaseAdminController
["email",""],
["position",""],
["status",""],
["role_id",0]
["role_id",0],
]);
$this->validate($data, 'addon\zhjw\app\validate\staff\Staff.add');
$id = (new StaffService())->add($data);
@ -75,6 +77,7 @@ class Staff extends BaseAdminController
*/
public function edit(int $id){
$data = $this->request->params([
["member_id",0],
["name",""],
["header",""],
["gender",""],
@ -82,7 +85,8 @@ class Staff extends BaseAdminController
["email",""],
["position",""],
["status",""],
["role_id",0]
["role_id",0],
]);
$this->validate($data, 'addon\zhjw\app\validate\staff\Staff.edit');
(new StaffService())->edit($id, $data);
@ -100,8 +104,8 @@ class Staff extends BaseAdminController
}
public function getRolesAll(){
return success(( new StaffService())->getRolesAll());
public function getMemberAll(){
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(){
return success(( new StudentsService())->getMemberAll());
public function getStaffAll(){
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_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_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
@ -474,3 +358,53 @@ Route::group('zhjw', function () {
AdminLog::class
]);
// 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\HasOne;
use addon\zhjw\app\model\roles\Roles;
use app\model\member\Member;
/**
* 人员管理模型
@ -52,6 +52,18 @@ class Staff extends BaseModel
*/
protected $defaultSoftDelete = 0;
/**
* 搜索器:人员管理关联会员
* @param $value
* @param $data
*/
public function searchMemberIdAttr($query, $value, $data)
{
if ($value) {
$query->where("member_id", $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(){
return $this->hasOne(Roles::class, 'id', 'role_id')->joinType('left')->withField('description,id')->bind(['role_id_name'=>'description']);
public function member(){
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\HasOne;
use app\model\member\Member;
use addon\zhjw\app\model\staff\Staff;
/**
* 学员管理模型
@ -171,8 +171,8 @@ class Students extends BaseModel
public function member(){
return $this->hasOne(Member::class, 'member_id', 'user_id')->joinType('left')->withField('mobile,member_id')->bind(['user_id_name'=>'mobile']);
public function staff(){
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;
use addon\zhjw\app\model\staff\Staff;
use addon\zhjw\app\model\roles\Roles;
use app\model\member\Member;
use core\base\BaseAdminService;
@ -37,10 +37,10 @@ class StaffService extends BaseAdminService
*/
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';
$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);
return $list;
}
@ -52,11 +52,12 @@ class StaffService extends BaseAdminService
*/
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['status'] = strval($info['status']);
$info['role_id'] = strval($info['role_id']);
return $info;
}
@ -98,9 +99,9 @@ class StaffService extends BaseAdminService
}
public function getRolesAll(){
$rolesModel = new Roles();
return $rolesModel->select()->toArray();
public function getMemberAll(){
$memberModel = new Member();
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;
use addon\zhjw\app\model\students\Students;
use app\model\member\Member;
use addon\zhjw\app\model\staff\Staff;
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';
$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);
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';
$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;
}
@ -96,9 +96,9 @@ class StudentsService extends BaseAdminService
}
public function getMemberAll(){
$memberModel = new Member();
return $memberModel->select()->toArray();
public function getStaffAll(){
$staffModel = new Staff();
return $staffModel->select()->toArray();
}

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

@ -20,33 +20,32 @@ class Staff extends BaseValidate
{
protected $rule = [
'member_id' => 'require',
'name' => 'require',
'header' => 'require',
'gender' => 'require',
'phone' => 'require|mobile',
'email' => 'require|email',
'phone' => 'require',
'email' => 'require',
'position' => 'require',
'status' => 'require',
'role_id' => 'require',
];
protected $message = [
'member_id.require' => ['common_validate.require', ['member_id']],
'name.require' => ['common_validate.require', ['name']],
'header.require' => ['common_validate.require', ['header']],
'gender.require' => ['common_validate.require', ['gender']],
'phone.require' => ['common_validate.require', ['phone']],
'phone.mobile' => ['common_validate.mobile', ['phone']],
'email.require' => ['common_validate.require', ['email']],
'email.email' => ['common_validate.email', ['email']],
'position.require' => ['common_validate.require', ['position']],
'status.require' => ['common_validate.require', ['status']],
'role_id.require' => ['common_validate.require', ['role_id']],
];
protected $scene = [
"add" => ['name', 'gender', 'phone', 'email', 'position', 'status', 'role_id'],
"edit" => ['name', 'gender', 'phone', 'email', 'position', 'status', 'role_id']
"add" => ['member_id', 'name', 'gender', 'phone', 'email', 'position', 'status', 'role_id'],
"edit" => ['member_id', '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');
})->middleware(ApiChannel::class)
->middleware(ApiCheckToken::class, true)
->middleware(ApiLog::class);

6
niucloud/app/common.php

@ -1025,3 +1025,9 @@ function get_last_time($time = null)
}
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_count++;
$member_info->last_visit_time = time();
$role_id = get_user_type($member_info->member_id);
$member_info->save();
$token_info = $this->createToken($member_info);
event("MemberLogin", $member_info);
$roleArr = [1=>3,2=>2,3=>1];
return [
'userType' => $roleArr[$role_id],
'token' => $token_info[ 'token' ],
'expires_time' => $token_info[ 'params' ][ 'exp' ],
'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\courses\Courses;
use addon\zhjw\app\model\staff\Staff;
use addon\zhjw\app\model\students\Students;
use addon\zhjw\app\model\timetables\Timetables;
use addon\zhjw\app\model\venues\Venues;
@ -72,7 +73,12 @@ class MemberService extends BaseApiService
->field($field)
->append(['sex_name'])
->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['weight'] = $data['weight'];
$info['score'] = $data['score'];
@ -93,6 +99,9 @@ class MemberService extends BaseApiService
->group("d.id")
->column("d.name");
$info['classes_list'] = implode(",", $classes_list);
}
return $info;
}

Loading…
Cancel
Save