Browse Source

Merge branch 'master' of ssh://gitlab.frkj.cc:222/php/zhjwxt

yuhongzhe
王泽彦 11 months ago
parent
commit
f47ba959b4
  1. 6
      admin/components.d.ts
  2. 12
      admin/src/app/api/campus_person_role.ts
  3. 6
      admin/src/app/api/customer_resources.ts
  4. 6
      admin/src/app/api/departments.ts
  5. 56
      admin/src/app/api/market_performance.ts
  6. 10
      admin/src/app/api/six_speed_modification_log.ts
  7. 10
      admin/src/app/api/sys.ts
  8. 20
      admin/src/app/lang/zh-cn/campus_person_role.campus_person_role.json
  9. 4
      admin/src/app/lang/zh-cn/departments.departments.json
  10. 13
      admin/src/app/lang/zh-cn/market_performance.market_performance.json
  11. 8
      admin/src/app/lang/zh-cn/six_speed_modification_log.six_speed_modification_log.json
  12. 94
      admin/src/app/views/campus_person_role/campus_person_role.vue
  13. 92
      admin/src/app/views/campus_person_role/components/campus-person-role-edit.vue
  14. 38
      admin/src/app/views/customer_resources/components/customer-resources-edit.vue
  15. 7
      admin/src/app/views/customer_resources/customer_resources.vue
  16. 17
      admin/src/app/views/departments/components/departments-edit.vue
  17. 20
      admin/src/app/views/departments/departments.vue
  18. 189
      admin/src/app/views/market_performance/components/market-performance-edit.vue
  19. 186
      admin/src/app/views/market_performance/market_performance.vue
  20. 32
      admin/src/app/views/six_speed_modification_log/components/six-speed-modification-log-edit.vue
  21. 45
      admin/src/app/views/six_speed_modification_log/six_speed_modification_log.vue
  22. 107
      admin/src/app/views/yjpz_config/yjpz_config.vue
  23. 29
      niucloud/app/adminapi/controller/campus_person_role/CampusPersonRole.php
  24. 9
      niucloud/app/adminapi/controller/customer_resources/CustomerResources.php
  25. 4
      niucloud/app/adminapi/controller/departments/Departments.php
  26. 718
      niucloud/app/adminapi/controller/lesson_course_teaching/LessonCourseTeaching.php
  27. 99
      niucloud/app/adminapi/controller/market_performance/MarketPerformance.php
  28. 14
      niucloud/app/adminapi/controller/six_speed_modification_log/SixSpeedModificationLog.php
  29. 18
      niucloud/app/adminapi/controller/sys/System.php
  30. 9
      niucloud/app/adminapi/route/campus_person_role.php
  31. 3
      niucloud/app/adminapi/route/customer_resources.php
  32. 27
      niucloud/app/adminapi/route/departments.php
  33. 122
      niucloud/app/adminapi/route/lesson_course_teaching.php
  34. 41
      niucloud/app/adminapi/route/market_performance.php
  35. 6
      niucloud/app/adminapi/route/six_speed_modification_log.php
  36. 4
      niucloud/app/adminapi/route/sys.php
  37. 21
      niucloud/app/common.php
  38. 60
      niucloud/app/model/campus_person_role/CampusPersonRole.php
  39. 6
      niucloud/app/model/customer_resources/CustomerResources.php
  40. 22
      niucloud/app/model/departments/Departments.php
  41. 124
      niucloud/app/model/lesson_course_teaching/LessonCourseTeaching.php
  42. 86
      niucloud/app/model/market_performance/MarketPerformance.php
  43. 55
      niucloud/app/model/personnel_data/PersonnelData.php
  44. 58
      niucloud/app/model/six_speed_modification_log/SixSpeedModificationLog.php
  45. 28
      niucloud/app/service/admin/campus_person_role/CampusPersonRoleService.php
  46. 10
      niucloud/app/service/admin/customer_resources/CustomerResourcesService.php
  47. 14
      niucloud/app/service/admin/departments/DepartmentsService.php
  48. 634
      niucloud/app/service/admin/lesson_course_teaching/LessonCourseTeachingService.php
  49. 111
      niucloud/app/service/admin/market_performance/MarketPerformanceService.php
  50. 16
      niucloud/app/service/admin/six_speed_modification_log/SixSpeedModificationLogService.php
  51. 19
      niucloud/app/service/admin/sys/SystemService.php
  52. 4
      niucloud/app/validate/campus_person_role/CampusPersonRole.php
  53. 35
      niucloud/app/validate/lesson_course_teaching/LessonCourseTeaching.php
  54. 35
      niucloud/app/validate/market_performance/MarketPerformance.php

6
admin/components.d.ts

@ -10,6 +10,7 @@ declare module '@vue/runtime-core' {
Attachment: typeof import('./src/components/upload-attachment/attachment.vue')['default']
DiyLink: typeof import('./src/components/diy-link/index.vue')['default']
Editor: typeof import('./src/components/editor/index.vue')['default']
ElAlert: typeof import('element-plus/es')['ElAlert']
ElAside: typeof import('element-plus/es')['ElAside']
ElAvatar: typeof import('element-plus/es')['ElAvatar']
ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
@ -17,6 +18,7 @@ declare module '@vue/runtime-core' {
ElButton: typeof import('element-plus/es')['ElButton']
ElCard: typeof import('element-plus/es')['ElCard']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
ElCol: typeof import('element-plus/es')['ElCol']
ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
@ -27,6 +29,7 @@ declare module '@vue/runtime-core' {
ElDropdown: typeof import('element-plus/es')['ElDropdown']
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
ElEmpty: typeof import('element-plus/es')['ElEmpty']
ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElHeader: typeof import('element-plus/es')['ElHeader']
@ -35,15 +38,18 @@ declare module '@vue/runtime-core' {
ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
ElInput: typeof import('element-plus/es')['ElInput']
ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
ElLink: typeof import('element-plus/es')['ElLink']
ElMain: typeof import('element-plus/es')['ElMain']
ElMenu: typeof import('element-plus/es')['ElMenu']
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElOption: typeof import('element-plus/es')['ElOption']
ElOptionGroup: typeof import('element-plus/es')['ElOptionGroup']
ElPageHeader: typeof import('element-plus/es')['ElPageHeader']
ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopover: typeof import('element-plus/es')['ElPopover']
ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElResult: typeof import('element-plus/es')['ElResult']
ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect']

12
admin/src/app/api/campus_person_role.ts

@ -2,6 +2,8 @@ import request from '@/utils/request'
// USER_CODE_BEGIN -- campus_person_role
/**
*
@ -49,6 +51,14 @@ export function deleteCampusPersonRole(id: number) {
return request.delete(`campus_person_role/campus_person_role/${id}`, { showErrorMessage: true, showSuccessMessage: true })
}
export function getWithCampusList(params: Record<string,any>){
return request.get('campus_person_role/campus_all', {params})
}export function getWithPersonnelList(params: Record<string,any>){
return request.get('campus_person_role/personnel_all', {params})
}export function getWithSysRoleList(params: Record<string,any>){
return request.get('campus_person_role/sys_role_all', {params})
}export function getWithDepartmentsList(params: Record<string,any>){
return request.get('campus_person_role/departments_all', {params})
}
// USER_CODE_END -- campus_person_role

6
admin/src/app/api/customer_resources.ts

@ -6,6 +6,8 @@ import request from '@/utils/request'
// USER_CODE_BEGIN -- customer_resources
/**
*
@ -53,6 +55,8 @@ export function deleteCustomerResources(id: number) {
return request.delete(`customer_resources/customer_resources/${id}`, { showErrorMessage: true, showSuccessMessage: true })
}
export function getWithCampusList(params: Record<string,any>){
return request.get('customer_resources/campus_all', {params})
}
// USER_CODE_END -- customer_resources

6
admin/src/app/api/departments.ts

@ -1,5 +1,7 @@
import request from '@/utils/request'
// USER_CODE_BEGIN -- departments
/**
*
@ -47,6 +49,8 @@ export function deleteDepartments(id: number) {
return request.delete(`departments/departments/${id}`, { showErrorMessage: true, showSuccessMessage: true })
}
export function getWithDepartmentsList(params: Record<string,any>){
return request.get('departments/departments_all', {params})
}
// USER_CODE_END -- departments

56
admin/src/app/api/market_performance.ts

@ -0,0 +1,56 @@
import request from '@/utils/request'
// USER_CODE_BEGIN -- market_performance
/**
*
* @param params
* @returns
*/
export function getMarketPerformanceList(params: Record<string, any>) {
return request.get(`market_performance/market_performance`, {params})
}
/**
*
* @param id id
* @returns
*/
export function getMarketPerformanceInfo(id: number) {
return request.get(`market_performance/market_performance/${id}`);
}
/**
*
* @param params
* @returns
*/
export function addMarketPerformance(params: Record<string, any>) {
return request.post('market_performance/market_performance', params, { showErrorMessage: true, showSuccessMessage: true })
}
/**
*
* @param id
* @param params
* @returns
*/
export function editMarketPerformance(params: Record<string, any>) {
return request.put(`market_performance/market_performance/${params.id}`, params, { showErrorMessage: true, showSuccessMessage: true })
}
/**
*
* @param id
* @returns
*/
export function deleteMarketPerformance(id: number) {
return request.delete(`market_performance/market_performance/${id}`, { showErrorMessage: true, showSuccessMessage: true })
}
export function getWithPersonnelList(params: Record<string,any>){
return request.get('market_performance/personnel_all', {params})
}export function getWithCampusList(params: Record<string,any>){
return request.get('market_performance/campus_all', {params})
}
// USER_CODE_END -- market_performance

10
admin/src/app/api/six_speed_modification_log.ts

@ -1,5 +1,9 @@
import request from '@/utils/request'
// USER_CODE_BEGIN -- six_speed_modification_log
/**
*
@ -47,6 +51,10 @@ export function deleteSixSpeedModificationLog(id: number) {
return request.delete(`six_speed_modification_log/six_speed_modification_log/${id}`, { showErrorMessage: true, showSuccessMessage: true })
}
export function getWithCampusList(params: Record<string,any>){
return request.get('six_speed_modification_log/campus_all', {params})
}export function getWithPersonnelList(params: Record<string,any>){
return request.get('six_speed_modification_log/personnel_all', {params})
}
// USER_CODE_END -- six_speed_modification_log

10
admin/src/app/api/sys.ts

@ -754,3 +754,13 @@ export function deleteExport(id: number) {
export function getInstallConfig() {
return request.get('sys/install/config')
}
//业绩配置
export function getYjpzConfig() {
return request.get('sys/get_yjpz_config')
}
export function yjpzConfig(params: Record<string, any>) {
return request.post(`sys/yjpz_config`, params)
}

20
admin/src/app/lang/zh-cn/campus_person_role.campus_person_role.json

@ -1,20 +1,14 @@
{
"id":"关系编号",
"idPlaceholder":"请输入关系编号",
"campusId":"校区ID",
"campusIdPlaceholder":"请输入校区ID",
"personId":"人员ID",
"personIdPlaceholder":"请输入人员ID",
"roleId":"角色ID",
"roleIdPlaceholder":"请输入角色ID",
"campusId":"校区",
"campusIdPlaceholder":"全部",
"personId":"人员",
"personIdPlaceholder":"全部",
"roleId":"角色",
"roleIdPlaceholder":"全部",
"deptId":"部门表",
"deptIdPlaceholder":"请输入部门表",
"createdAt":"创建时间",
"createdAtPlaceholder":"请输入创建时间",
"updatedAt":"更新时间",
"updatedAtPlaceholder":"请输入更新时间",
"deletedAt":"逻辑删除时间",
"deletedAtPlaceholder":"请输入逻辑删除时间",
"deptIdPlaceholder":"全部",
"addCampusPersonRole":"添加角色关系",
"updateCampusPersonRole":"编辑角色关系",
"campusPersonRoleDeleteTips":"确定要删除该数据吗?",

4
admin/src/app/lang/zh-cn/departments.departments.json

@ -3,8 +3,8 @@
"idPlaceholder":"请输入部门编号",
"departmentName":"部门名称",
"departmentNamePlaceholder":"请输入部门名称",
"parentDepartmentId":"上级部门",
"parentDepartmentIdPlaceholder":"请输入上级部门",
"parentDepartmentId":"上级部门ID",
"parentDepartmentIdPlaceholder":"全部",
"addDepartments":"添加部门",
"updateDepartments":"编辑部门",
"departmentsDeleteTips":"确定要删除该数据吗?",

13
admin/src/app/lang/zh-cn/market_performance.market_performance.json

@ -0,0 +1,13 @@
{
"personnelId":"人员",
"personnelIdPlaceholder":"请输入人员",
"campusId":"校区",
"campusIdPlaceholder":"全部",
"performanceAmount":"绩效金额",
"performanceAmountPlaceholder":"请输入绩效金额",
"addMarketPerformance":"添加市场绩效",
"updateMarketPerformance":"编辑市场绩效",
"marketPerformanceDeleteTips":"确定要删除该数据吗?",
"startDate":"请选择开始时间",
"endDate":"请选择结束时间"
}

8
admin/src/app/lang/zh-cn/six_speed_modification_log.six_speed_modification_log.json

@ -1,10 +1,10 @@
{
"id":"编号",
"idPlaceholder":"请输入编号",
"campusId":"校区ID",
"campusIdPlaceholder":"请输入校区ID",
"staffId":"人员ID",
"staffIdPlaceholder":"请输入人员ID",
"campusId":"校区",
"campusIdPlaceholder":"全部",
"staffId":"人员",
"staffIdPlaceholder":"请输入人员",
"modifiedField":"修改的字段",
"modifiedFieldPlaceholder":"请输入修改的字段",
"oldValue":"修改前的值",

94
admin/src/app/views/campus_person_role/campus_person_role.vue

@ -11,27 +11,54 @@
<el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never">
<el-form :inline="true" :model="campusPersonRoleTable.searchParam" ref="searchFormRef">
<el-form-item :label="t('campusId')" prop="campus_id">
<el-input v-model="campusPersonRoleTable.searchParam.campus_id" :placeholder="t('campusIdPlaceholder')" />
<el-select class="w-[280px]" v-model="campusPersonRoleTable.searchParam.campus_id" clearable :placeholder="t('campusIdPlaceholder')">
<el-option
v-for="(item, index) in campusIdList"
:key="index"
:label="item['campus_name']"
:value="item['id']"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('personId')" prop="person_id">
<el-input v-model="campusPersonRoleTable.searchParam.person_id" :placeholder="t('personIdPlaceholder')" />
<el-select class="w-[280px]" v-model="campusPersonRoleTable.searchParam.person_id" clearable :placeholder="t('personIdPlaceholder')">
<el-option
v-for="(item, index) in personIdList"
:key="index"
:label="item['name']"
:value="item['id']"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('roleId')" prop="role_id">
<el-input v-model="campusPersonRoleTable.searchParam.role_id" :placeholder="t('roleIdPlaceholder')" />
<el-select class="w-[280px]" v-model="campusPersonRoleTable.searchParam.role_id" clearable :placeholder="t('roleIdPlaceholder')">
<el-option
v-for="(item, index) in roleIdList"
:key="index"
:label="item['role_name']"
:value="item['role_id']"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('deptId')" prop="dept_id">
<el-input v-model="campusPersonRoleTable.searchParam.dept_id" :placeholder="t('deptIdPlaceholder')" />
</el-form-item>
<el-form-item :label="t('createdAt')" prop="created_at">
<el-input v-model="campusPersonRoleTable.searchParam.created_at" :placeholder="t('createdAtPlaceholder')" />
</el-form-item>
<el-form-item :label="t('updatedAt')" prop="updated_at">
<el-input v-model="campusPersonRoleTable.searchParam.updated_at" :placeholder="t('updatedAtPlaceholder')" />
</el-form-item>
<el-form-item :label="t('deletedAt')" prop="deleted_at">
<el-input v-model="campusPersonRoleTable.searchParam.deleted_at" :placeholder="t('deletedAtPlaceholder')" />
<el-select class="w-[280px]" v-model="campusPersonRoleTable.searchParam.dept_id" clearable :placeholder="t('deptIdPlaceholder')">
<el-option
v-for="(item, index) in deptIdList"
:key="index"
:label="item['department_name']"
:value="item['id']"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="loadCampusPersonRoleList()">{{ t('search') }}</el-button>
<el-button @click="resetForm(searchFormRef)">{{ t('reset') }}</el-button>
@ -44,19 +71,13 @@
<template #empty>
<span>{{ !campusPersonRoleTable.loading ? t('emptyData') : '' }}</span>
</template>
<el-table-column prop="campus_id" :label="t('campusId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="person_id" :label="t('personId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="role_id" :label="t('roleId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="dept_id" :label="t('deptId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="campus_id_name" :label="t('campusId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="created_at" :label="t('createdAt')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="person_id_name" :label="t('personId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="updated_at" :label="t('updatedAt')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="role_id_name" :label="t('roleId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="deleted_at" :label="t('deletedAt')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="dept_id_name" :label="t('deptId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column :label="t('operation')" fixed="right" min-width="120">
<template #default="{ row }">
@ -82,7 +103,7 @@
import { reactive, ref, watch } from 'vue'
import { t } from '@/lang'
import { useDictionary } from '@/app/api/dict'
import { getCampusPersonRoleList, deleteCampusPersonRole } from '@/app/api/campus_person_role'
import { getCampusPersonRoleList, deleteCampusPersonRole, getWithCampusList, getWithPersonnelList, getWithSysRoleList, getWithDepartmentsList } from '@/app/api/campus_person_role'
import { img } from '@/utils/common'
import { ElMessageBox,FormInstance } from 'element-plus'
import Edit from '@/app/views/campus_person_role/components/campus-person-role-edit.vue'
@ -100,10 +121,7 @@ let campusPersonRoleTable = reactive({
"campus_id":"",
"person_id":"",
"role_id":"",
"dept_id":"",
"created_at":"",
"updated_at":"",
"deleted_at":""
"dept_id":""
}
})
@ -174,6 +192,26 @@ const deleteEvent = (id: number) => {
}
const campusIdList = ref([])
const setCampusIdList = async () => {
campusIdList.value = await (await getWithCampusList({})).data
}
setCampusIdList()
const personIdList = ref([])
const setPersonIdList = async () => {
personIdList.value = await (await getWithPersonnelList({})).data
}
setPersonIdList()
const roleIdList = ref([])
const setRoleIdList = async () => {
roleIdList.value = await (await getWithSysRoleList({})).data
}
setRoleIdList()
const deptIdList = ref([])
const setDeptIdList = async () => {
deptIdList.value = await (await getWithDepartmentsList({})).data
}
setDeptIdList()
const resetForm = (formEl: FormInstance | undefined) => {
if (!formEl) return

92
admin/src/app/views/campus_person_role/components/campus-person-role-edit.vue

@ -2,31 +2,51 @@
<el-dialog v-model="showDialog" :title="formData.id ? t('updateCampusPersonRole') : t('addCampusPersonRole')" width="50%" class="diy-dialog-wrap" :destroy-on-close="true">
<el-form :model="formData" label-width="120px" ref="formRef" :rules="formRules" class="page-form" v-loading="loading">
<el-form-item :label="t('campusId')" prop="campus_id">
<el-input v-model="formData.campus_id" clearable :placeholder="t('campusIdPlaceholder')" class="input-width" />
<el-select class="input-width" v-model="formData.campus_id" clearable :placeholder="t('campusIdPlaceholder')">
<el-option label="请选择" value=""></el-option>
<el-option
v-for="(item, index) in campusIdList"
:key="index"
:label="item['campus_name']"
:value="item['id']"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('personId')" prop="person_id">
<el-input v-model="formData.person_id" clearable :placeholder="t('personIdPlaceholder')" class="input-width" />
<el-select class="input-width" v-model="formData.person_id" clearable :placeholder="t('personIdPlaceholder')">
<el-option label="请选择" value=""></el-option>
<el-option
v-for="(item, index) in personIdList"
:key="index"
:label="item['name']"
:value="item['id']"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('roleId')" prop="role_id">
<el-input v-model="formData.role_id" clearable :placeholder="t('roleIdPlaceholder')" class="input-width" />
<el-select class="input-width" v-model="formData.role_id" clearable :placeholder="t('roleIdPlaceholder')">
<el-option label="请选择" value=""></el-option>
<el-option
v-for="(item, index) in roleIdList"
:key="index"
:label="item['role_name']"
:value="item['role_id']"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('deptId')" >
<el-input v-model="formData.dept_id" clearable :placeholder="t('deptIdPlaceholder')" class="input-width" />
</el-form-item>
<el-form-item :label="t('createdAt')" >
<el-input v-model="formData.created_at" clearable :placeholder="t('createdAtPlaceholder')" class="input-width" />
</el-form-item>
<el-form-item :label="t('updatedAt')" >
<el-input v-model="formData.updated_at" clearable :placeholder="t('updatedAtPlaceholder')" class="input-width" />
</el-form-item>
<el-form-item :label="t('deletedAt')" >
<el-input v-model="formData.deleted_at" clearable :placeholder="t('deletedAtPlaceholder')" class="input-width" />
<el-select class="input-width" v-model="formData.dept_id" clearable :placeholder="t('deptIdPlaceholder')">
<el-option label="请选择" value=""></el-option>
<el-option
v-for="(item, index) in deptIdList"
:key="index"
:label="item['department_name']"
:value="item['id']"
/>
</el-select>
</el-form-item>
</el-form>
@ -47,7 +67,7 @@ import { ref, reactive, computed, watch } from 'vue'
import { useDictionary } from '@/app/api/dict'
import { t } from '@/lang'
import type { FormInstance } from 'element-plus'
import { addCampusPersonRole, editCampusPersonRole, getCampusPersonRoleInfo } from '@/app/api/campus_person_role'
import { addCampusPersonRole, editCampusPersonRole, getCampusPersonRoleInfo, getWithCampusList, getWithPersonnelList, getWithSysRoleList, getWithDepartmentsList } from '@/app/api/campus_person_role'
let showDialog = ref(false)
const loading = ref(false)
@ -61,9 +81,6 @@ const initialFormData = {
person_id: '',
role_id: '',
dept_id: '',
created_at: '',
updated_at: '',
deleted_at: '',
}
const formData: Record<string, any> = reactive({ ...initialFormData })
@ -90,21 +107,6 @@ const formRules = computed(() => {
dept_id: [
{ required: true, message: t('deptIdPlaceholder'), trigger: 'blur' },
]
,
created_at: [
{ required: true, message: t('createdAtPlaceholder'), trigger: 'blur' },
]
,
updated_at: [
{ required: true, message: t('updatedAtPlaceholder'), trigger: 'blur' },
]
,
deleted_at: [
{ required: true, message: t('deletedAtPlaceholder'), trigger: 'blur' },
]
,
}
@ -141,6 +143,26 @@ const confirm = async (formEl: FormInstance | undefined) => {
const campusIdList = ref([] as any[])
const setCampusIdList = async () => {
campusIdList.value = await (await getWithCampusList({})).data
}
setCampusIdList()
const personIdList = ref([] as any[])
const setPersonIdList = async () => {
personIdList.value = await (await getWithPersonnelList({})).data
}
setPersonIdList()
const roleIdList = ref([] as any[])
const setRoleIdList = async () => {
roleIdList.value = await (await getWithSysRoleList({})).data
}
setRoleIdList()
const deptIdList = ref([] as any[])
const setDeptIdList = async () => {
deptIdList.value = await (await getWithDepartmentsList({})).data
}
setDeptIdList()
const setFormData = async (row: any = null) => {
Object.assign(formData, initialFormData)
loading.value = true

38
admin/src/app/views/customer_resources/components/customer-resources-edit.vue

@ -13,7 +13,7 @@
</el-select>
</el-form-item>
<el-form-item :label="t('sourceChannel')" >
<el-form-item :label="t('sourceChannel')" v-if="formData.source == 1">
<el-select class="input-width" v-model="formData.source_channel" clearable :placeholder="t('sourceChannelPlaceholder')">
<el-option label="请选择" value=""></el-option>
<el-option
@ -30,7 +30,7 @@
</el-form-item>
<el-form-item :label="t('age')" prop="age">
<el-input-number v-model="formData.age" clearable :placeholder="t('agePlaceholder')" class="input-width" :min = "3" max = "80" />
<el-input-number v-model="formData.age" clearable :placeholder="t('agePlaceholder')" class="input-width" :min = "3" :max = "80" />
</el-form-item>
<el-form-item :label="t('gender')" prop="gender">
@ -107,7 +107,15 @@
</el-form-item>
<el-form-item :label="t('campus')" prop="campus">
<el-input v-model="formData.campus" clearable :placeholder="t('campusPlaceholder')" class="input-width" />
<el-select class="input-width" v-model="formData.campus" clearable :placeholder="t('campusPlaceholder')">
<el-option label="请选择" value=""></el-option>
<el-option
v-for="(item, index) in campusList"
:key="index"
:label="item['campus_name']"
:value="item['campus_name']"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('status')" prop="status">
@ -140,7 +148,7 @@ import { ref, reactive, computed, watch } from 'vue'
import { useDictionary } from '@/app/api/dict'
import { t } from '@/lang'
import type { FormInstance } from 'element-plus'
import { addCustomerResources, editCustomerResources, getCustomerResourcesInfo } from '@/app/api/customer_resources'
import { addCustomerResources, editCustomerResources, getCustomerResourcesInfo, getWithCampusList } from '@/app/api/customer_resources'
let showDialog = ref(false)
const loading = ref(false)
@ -188,10 +196,21 @@ const formRules = computed(() => {
]
,
age: [
age: [
{ required: true, message: t('agePlaceholder'), trigger: 'blur' },
{ validator: (rule: any, value: string, callback: any) => { if (value && !/^\d{3,80}$/.test(value)) { callback(new Error(t('generateBetween')))} else { callback() }}},
]
{
validator: (rule: any, value: number, callback: any) => {
if (value === undefined || value === null || value === '') {
callback();
} else if (value < 3 || value > 80) {
callback(new Error(t('generateBetween')));
} else {
callback();
}
},
trigger: 'blur'
}
]
,
gender: [
{ required: true, message: t('genderPlaceholder'), trigger: 'blur' },
@ -323,6 +342,11 @@ const confirm = async (formEl: FormInstance | undefined) => {
watch(() => statusList.value, () => { formData.status = statusList.value[0].value })
const campusList = ref([] as any[])
const setCampusList = async () => {
campusList.value = await (await getWithCampusList({})).data
}
setCampusList()
const setFormData = async (row: any = null) => {
Object.assign(formData, initialFormData)
loading.value = true

7
admin/src/app/views/customer_resources/customer_resources.vue

@ -79,7 +79,7 @@
import { reactive, ref, watch } from 'vue'
import { t } from '@/lang'
import { useDictionary } from '@/app/api/dict'
import { getCustomerResourcesList, deleteCustomerResources } from '@/app/api/customer_resources'
import { getCustomerResourcesList, deleteCustomerResources, getWithCampusList } from '@/app/api/customer_resources'
import { img } from '@/utils/common'
import { ElMessageBox,FormInstance } from 'element-plus'
import Edit from '@/app/views/customer_resources/components/customer-resources-edit.vue'
@ -200,6 +200,11 @@ const deleteEvent = (id: number) => {
}
const campusList = ref([])
const setCampusList = async () => {
campusList.value = await (await getWithCampusList({})).data
}
setCampusList()
const resetForm = (formEl: FormInstance | undefined) => {
if (!formEl) return

17
admin/src/app/views/departments/components/departments-edit.vue

@ -6,7 +6,15 @@
</el-form-item>
<el-form-item :label="t('parentDepartmentId')" >
<el-input v-model="formData.parent_department_id" clearable :placeholder="t('parentDepartmentIdPlaceholder')" class="input-width" />
<el-select class="input-width" v-model="formData.parent_department_id" clearable :placeholder="t('parentDepartmentIdPlaceholder')">
<el-option label="请选择" value=""></el-option>
<el-option
v-for="(item, index) in parentDepartmentIdList"
:key="index"
:label="item['department_name']"
:value="item['id']"
/>
</el-select>
</el-form-item>
</el-form>
@ -27,7 +35,7 @@ import { ref, reactive, computed, watch } from 'vue'
import { useDictionary } from '@/app/api/dict'
import { t } from '@/lang'
import type { FormInstance } from 'element-plus'
import { addDepartments, editDepartments, getDepartmentsInfo } from '@/app/api/departments'
import { addDepartments, editDepartments, getDepartmentsInfo, getWithDepartmentsList } from '@/app/api/departments'
let showDialog = ref(false)
const loading = ref(false)
@ -91,6 +99,11 @@ const confirm = async (formEl: FormInstance | undefined) => {
const parentDepartmentIdList = ref([] as any[])
const setParentDepartmentIdList = async () => {
parentDepartmentIdList.value = await (await getWithDepartmentsList({})).data
}
setParentDepartmentIdList()
const setFormData = async (row: any = null) => {
Object.assign(formData, initialFormData)
loading.value = true

20
admin/src/app/views/departments/departments.vue

@ -14,9 +14,18 @@
<el-form-item :label="t('departmentName')" prop="department_name">
<el-input v-model="departmentsTable.searchParam.department_name" :placeholder="t('departmentNamePlaceholder')" />
</el-form-item>
<el-form-item :label="t('parentDepartmentId')" prop="parent_department_id">
<el-input v-model="departmentsTable.searchParam.parent_department_id" :placeholder="t('parentDepartmentIdPlaceholder')" />
<el-select class="w-[280px]" v-model="departmentsTable.searchParam.parent_department_id" clearable :placeholder="t('parentDepartmentIdPlaceholder')">
<el-option
v-for="(item, index) in parentDepartmentIdList"
:key="index"
:label="item['department_name']"
:value="item['id']"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="loadDepartmentsList()">{{ t('search') }}</el-button>
<el-button @click="resetForm(searchFormRef)">{{ t('reset') }}</el-button>
@ -31,7 +40,7 @@
</template>
<el-table-column prop="department_name" :label="t('departmentName')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="parent_department_id" :label="t('parentDepartmentId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="parent_department_id_name" :label="t('parentDepartmentId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column :label="t('operation')" fixed="right" min-width="120">
<template #default="{ row }">
@ -57,7 +66,7 @@
import { reactive, ref, watch } from 'vue'
import { t } from '@/lang'
import { useDictionary } from '@/app/api/dict'
import { getDepartmentsList, deleteDepartments } from '@/app/api/departments'
import { getDepartmentsList, deleteDepartments, getWithDepartmentsList } from '@/app/api/departments'
import { img } from '@/utils/common'
import { ElMessageBox,FormInstance } from 'element-plus'
import Edit from '@/app/views/departments/components/departments-edit.vue'
@ -144,6 +153,11 @@ const deleteEvent = (id: number) => {
}
const parentDepartmentIdList = ref([])
const setParentDepartmentIdList = async () => {
parentDepartmentIdList.value = await (await getWithDepartmentsList({})).data
}
setParentDepartmentIdList()
const resetForm = (formEl: FormInstance | undefined) => {
if (!formEl) return

189
admin/src/app/views/market_performance/components/market-performance-edit.vue

@ -0,0 +1,189 @@
<template>
<el-dialog v-model="showDialog" :title="formData.id ? t('updateMarketPerformance') : t('addMarketPerformance')" width="50%" class="diy-dialog-wrap" :destroy-on-close="true">
<el-form :model="formData" label-width="120px" ref="formRef" :rules="formRules" class="page-form" v-loading="loading">
<el-form-item :label="t('personnelId')" >
<el-select class="input-width" v-model="formData.personnel_id" clearable :placeholder="t('personnelIdPlaceholder')">
<el-option label="请选择" value=""></el-option>
<el-option
v-for="(item, index) in personnelIdList"
:key="index"
:label="item['name']"
:value="item['id']"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('campusId')" >
<el-select class="input-width" v-model="formData.campus_id" clearable :placeholder="t('campusIdPlaceholder')">
<el-option label="请选择" value=""></el-option>
<el-option
v-for="(item, index) in campusIdList"
:key="index"
:label="item['campus_name']"
:value="item['id']"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('performanceAmount')" >
<el-input v-model="formData.performance_amount" clearable :placeholder="t('performanceAmountPlaceholder')" class="input-width" />
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button>
<el-button type="primary" :loading="loading" @click="confirm(formRef)">{{
t('confirm')
}}</el-button>
</span>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import { ref, reactive, computed, watch } from 'vue'
import { useDictionary } from '@/app/api/dict'
import { t } from '@/lang'
import type { FormInstance } from 'element-plus'
import { addMarketPerformance, editMarketPerformance, getMarketPerformanceInfo, getWithPersonnelList, getWithCampusList } from '@/app/api/market_performance'
let showDialog = ref(false)
const loading = ref(false)
/**
* 表单数据
*/
const initialFormData = {
id: '',
personnel_id: '',
campus_id: '',
performance_amount: '',
}
const formData: Record<string, any> = reactive({ ...initialFormData })
const formRef = ref<FormInstance>()
//
const formRules = computed(() => {
return {
personnel_id: [
{ required: true, message: t('personnelIdPlaceholder'), trigger: 'blur' },
]
,
campus_id: [
{ required: true, message: t('campusIdPlaceholder'), trigger: 'blur' },
]
,
performance_amount: [
{ required: true, message: t('performanceAmountPlaceholder'), trigger: 'blur' },
]
,
}
})
const emit = defineEmits(['complete'])
/**
* 确认
* @param formEl
*/
const confirm = async (formEl: FormInstance | undefined) => {
if (loading.value || !formEl) return
let save = formData.id ? editMarketPerformance : addMarketPerformance
await formEl.validate(async (valid) => {
if (valid) {
loading.value = true
let data = formData
save(data).then(res => {
loading.value = false
showDialog.value = false
emit('complete')
}).catch(err => {
loading.value = false
})
}
})
}
//
const personnelIdList = ref([] as any[])
const setPersonnelIdList = async () => {
personnelIdList.value = await (await getWithPersonnelList({})).data
}
setPersonnelIdList()
const campusIdList = ref([] as any[])
const setCampusIdList = async () => {
campusIdList.value = await (await getWithCampusList({})).data
}
setCampusIdList()
const setFormData = async (row: any = null) => {
Object.assign(formData, initialFormData)
loading.value = true
if(row){
const data = await (await getMarketPerformanceInfo(row.id)).data
if (data) Object.keys(formData).forEach((key: string) => {
if (data[key] != undefined) formData[key] = data[key]
})
}
loading.value = false
}
//
const mobileVerify = (rule: any, value: any, callback: any) => {
if (value && !/^1[3-9]\d{9}$/.test(value)) {
callback(new Error(t('generateMobile')))
} else {
callback()
}
}
//
const idCardVerify = (rule: any, value: any, callback: any) => {
if (value && !/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(value)) {
callback(new Error(t('generateIdCard')))
} else {
callback()
}
}
//
const emailVerify = (rule: any, value: any, callback: any) => {
if (value && !/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/.test(value)) {
callback(new Error(t('generateEmail')))
} else {
callback()
}
}
//
const numberVerify = (rule: any, value: any, callback: any) => {
if (!Number.isInteger(value)) {
callback(new Error(t('generateNumber')))
} else {
callback()
}
}
defineExpose({
showDialog,
setFormData
})
</script>
<style lang="scss" scoped></style>
<style lang="scss">
.diy-dialog-wrap .el-form-item__label{
height: auto !important;
}
</style>

186
admin/src/app/views/market_performance/market_performance.vue

@ -0,0 +1,186 @@
<template>
<div class="main-container">
<el-card class="box-card !border-none" shadow="never">
<div class="flex justify-between items-center">
<span class="text-lg">{{pageName}}</span>
<!-- <el-button type="primary" @click="addEvent">
{{ t('addMarketPerformance') }}
</el-button> -->
</div>
<el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never">
<el-form :inline="true" :model="marketPerformanceTable.searchParam" ref="searchFormRef">
<el-form-item :label="t('campusId')" prop="campus_id">
<el-select class="w-[280px]" v-model="marketPerformanceTable.searchParam.campus_id" clearable :placeholder="t('campusIdPlaceholder')">
<el-option
v-for="(item, index) in campusIdList"
:key="index"
:label="item['campus_name']"
:value="item['id']"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('performanceAmount')" prop="performance_amount">
<el-input v-model="marketPerformanceTable.searchParam.performance_amount" :placeholder="t('performanceAmountPlaceholder')" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="loadMarketPerformanceList()">{{ t('search') }}</el-button>
<el-button @click="resetForm(searchFormRef)">{{ t('reset') }}</el-button>
</el-form-item>
</el-form>
</el-card>
<div class="mt-[10px]">
<el-table :data="marketPerformanceTable.data" size="large" v-loading="marketPerformanceTable.loading">
<template #empty>
<span>{{ !marketPerformanceTable.loading ? t('emptyData') : '' }}</span>
</template>
<el-table-column prop="personnel_id_name" :label="t('personnelId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="campus_id_name" :label="t('campusId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="performance_amount" :label="t('performanceAmount')" min-width="120" :show-overflow-tooltip="true"/>
<!--
<el-table-column :label="t('operation')" fixed="right" min-width="120">
<template #default="{ row }">
<el-button type="primary" link @click="editEvent(row)">{{ t('edit') }}</el-button>
<el-button type="primary" link @click="deleteEvent(row.id)">{{ t('delete') }}</el-button>
</template>
</el-table-column> -->
</el-table>
<div class="mt-[16px] flex justify-end">
<el-pagination v-model:current-page="marketPerformanceTable.page" v-model:page-size="marketPerformanceTable.limit"
layout="total, sizes, prev, pager, next, jumper" :total="marketPerformanceTable.total"
@size-change="loadMarketPerformanceList()" @current-change="loadMarketPerformanceList" />
</div>
</div>
<edit ref="editMarketPerformanceDialog" @complete="loadMarketPerformanceList" />
</el-card>
</div>
</template>
<script lang="ts" setup>
import { reactive, ref, watch } from 'vue'
import { t } from '@/lang'
import { useDictionary } from '@/app/api/dict'
import { getMarketPerformanceList, deleteMarketPerformance, getWithPersonnelList, getWithCampusList } from '@/app/api/market_performance'
import { img } from '@/utils/common'
import { ElMessageBox,FormInstance } from 'element-plus'
import Edit from '@/app/views/market_performance/components/market-performance-edit.vue'
import { useRoute } from 'vue-router'
const route = useRoute()
const pageName = route.meta.title;
let marketPerformanceTable = reactive({
page: 1,
limit: 10,
total: 0,
loading: true,
data: [],
searchParam:{
"campus_id":"",
"performance_amount":""
}
})
const searchFormRef = ref<FormInstance>()
//
const selectData = ref<any[]>([])
//
/**
* 获取市场绩效列表
*/
const loadMarketPerformanceList = (page: number = 1) => {
marketPerformanceTable.loading = true
marketPerformanceTable.page = page
getMarketPerformanceList({
page: marketPerformanceTable.page,
limit: marketPerformanceTable.limit,
...marketPerformanceTable.searchParam
}).then(res => {
marketPerformanceTable.loading = false
marketPerformanceTable.data = res.data.data
marketPerformanceTable.total = res.data.total
}).catch(() => {
marketPerformanceTable.loading = false
})
}
loadMarketPerformanceList()
const editMarketPerformanceDialog: Record<string, any> | null = ref(null)
/**
* 添加市场绩效
*/
const addEvent = () => {
editMarketPerformanceDialog.value.setFormData()
editMarketPerformanceDialog.value.showDialog = true
}
/**
* 编辑市场绩效
* @param data
*/
const editEvent = (data: any) => {
editMarketPerformanceDialog.value.setFormData(data)
editMarketPerformanceDialog.value.showDialog = true
}
/**
* 删除市场绩效
*/
const deleteEvent = (id: number) => {
ElMessageBox.confirm(t('marketPerformanceDeleteTips'), t('warning'),
{
confirmButtonText: t('confirm'),
cancelButtonText: t('cancel'),
type: 'warning',
}
).then(() => {
deleteMarketPerformance(id).then(() => {
loadMarketPerformanceList()
}).catch(() => {
})
})
}
const personnelIdList = ref([])
const setPersonnelIdList = async () => {
personnelIdList.value = await (await getWithPersonnelList({})).data
}
setPersonnelIdList()
const campusIdList = ref([])
const setCampusIdList = async () => {
campusIdList.value = await (await getWithCampusList({})).data
}
setCampusIdList()
const resetForm = (formEl: FormInstance | undefined) => {
if (!formEl) return
formEl.resetFields()
loadMarketPerformanceList()
}
</script>
<style lang="scss" scoped>
/* 多行超出隐藏 */
.multi-hidden {
word-break: break-all;
text-overflow: ellipsis;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
</style>

32
admin/src/app/views/six_speed_modification_log/components/six-speed-modification-log-edit.vue

@ -2,11 +2,27 @@
<el-dialog v-model="showDialog" :title="formData.id ? t('updateSixSpeedModificationLog') : t('addSixSpeedModificationLog')" width="50%" class="diy-dialog-wrap" :destroy-on-close="true">
<el-form :model="formData" label-width="120px" ref="formRef" :rules="formRules" class="page-form" v-loading="loading">
<el-form-item :label="t('campusId')" prop="campus_id">
<el-input v-model="formData.campus_id" clearable :placeholder="t('campusIdPlaceholder')" class="input-width" />
<el-select class="input-width" v-model="formData.campus_id" clearable :placeholder="t('campusIdPlaceholder')">
<el-option label="请选择" value=""></el-option>
<el-option
v-for="(item, index) in campusIdList"
:key="index"
:label="item['campus_name']"
:value="item['id']"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('staffId')" prop="staff_id">
<el-input v-model="formData.staff_id" clearable :placeholder="t('staffIdPlaceholder')" class="input-width" />
<el-select class="input-width" v-model="formData.staff_id" clearable :placeholder="t('staffIdPlaceholder')">
<el-option label="请选择" value=""></el-option>
<el-option
v-for="(item, index) in staffIdList"
:key="index"
:label="item['name']"
:value="item['id']"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('modifiedField')" prop="modified_field">
@ -39,7 +55,7 @@ import { ref, reactive, computed, watch } from 'vue'
import { useDictionary } from '@/app/api/dict'
import { t } from '@/lang'
import type { FormInstance } from 'element-plus'
import { addSixSpeedModificationLog, editSixSpeedModificationLog, getSixSpeedModificationLogInfo } from '@/app/api/six_speed_modification_log'
import { addSixSpeedModificationLog, editSixSpeedModificationLog, getSixSpeedModificationLogInfo, getWithCampusList, getWithPersonnelList } from '@/app/api/six_speed_modification_log'
let showDialog = ref(false)
const loading = ref(false)
@ -121,6 +137,16 @@ const confirm = async (formEl: FormInstance | undefined) => {
const campusIdList = ref([] as any[])
const setCampusIdList = async () => {
campusIdList.value = await (await getWithCampusList({})).data
}
setCampusIdList()
const staffIdList = ref([] as any[])
const setStaffIdList = async () => {
staffIdList.value = await (await getWithPersonnelList({})).data
}
setStaffIdList()
const setFormData = async (row: any = null) => {
Object.assign(formData, initialFormData)
loading.value = true

45
admin/src/app/views/six_speed_modification_log/six_speed_modification_log.vue

@ -11,21 +11,18 @@
<el-card class="box-card !border-none my-[10px] table-search-wrap" shadow="never">
<el-form :inline="true" :model="sixSpeedModificationLogTable.searchParam" ref="searchFormRef">
<el-form-item :label="t('campusId')" prop="campus_id">
<el-input v-model="sixSpeedModificationLogTable.searchParam.campus_id" :placeholder="t('campusIdPlaceholder')" />
</el-form-item>
<el-form-item :label="t('staffId')" prop="staff_id">
<el-input v-model="sixSpeedModificationLogTable.searchParam.staff_id" :placeholder="t('staffIdPlaceholder')" />
</el-form-item>
<el-form-item :label="t('modifiedField')" prop="modified_field">
<el-input v-model="sixSpeedModificationLogTable.searchParam.modified_field" :placeholder="t('modifiedFieldPlaceholder')" />
</el-form-item>
<el-form-item :label="t('oldValue')" prop="old_value">
<el-input v-model="sixSpeedModificationLogTable.searchParam.old_value" :placeholder="t('oldValuePlaceholder')" />
</el-form-item>
<el-form-item :label="t('newValue')" prop="new_value">
<el-input v-model="sixSpeedModificationLogTable.searchParam.new_value" :placeholder="t('newValuePlaceholder')" />
<el-select class="w-[280px]" v-model="sixSpeedModificationLogTable.searchParam.campus_id" clearable :placeholder="t('campusIdPlaceholder')">
<el-option
v-for="(item, index) in campusIdList"
:key="index"
:label="item['campus_name']"
:value="item['id']"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="loadSixSpeedModificationLogList()">{{ t('search') }}</el-button>
<el-button @click="resetForm(searchFormRef)">{{ t('reset') }}</el-button>
@ -38,9 +35,9 @@
<template #empty>
<span>{{ !sixSpeedModificationLogTable.loading ? t('emptyData') : '' }}</span>
</template>
<el-table-column prop="campus_id" :label="t('campusId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="campus_id_name" :label="t('campusId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="staff_id" :label="t('staffId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="staff_id_name" :label="t('staffId')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column prop="modified_field" :label="t('modifiedField')" min-width="120" :show-overflow-tooltip="true"/>
@ -72,7 +69,7 @@
import { reactive, ref, watch } from 'vue'
import { t } from '@/lang'
import { useDictionary } from '@/app/api/dict'
import { getSixSpeedModificationLogList, deleteSixSpeedModificationLog } from '@/app/api/six_speed_modification_log'
import { getSixSpeedModificationLogList, deleteSixSpeedModificationLog, getWithCampusList, getWithPersonnelList } from '@/app/api/six_speed_modification_log'
import { img } from '@/utils/common'
import { ElMessageBox,FormInstance } from 'element-plus'
import Edit from '@/app/views/six_speed_modification_log/components/six-speed-modification-log-edit.vue'
@ -87,11 +84,7 @@ let sixSpeedModificationLogTable = reactive({
loading: true,
data: [],
searchParam:{
"campus_id":"",
"staff_id":"",
"modified_field":"",
"old_value":"",
"new_value":""
"campus_id":""
}
})
@ -162,6 +155,16 @@ const deleteEvent = (id: number) => {
}
const campusIdList = ref([])
const setCampusIdList = async () => {
campusIdList.value = await (await getWithCampusList({})).data
}
setCampusIdList()
const staffIdList = ref([])
const setStaffIdList = async () => {
staffIdList.value = await (await getWithPersonnelList({})).data
}
setStaffIdList()
const resetForm = (formEl: FormInstance | undefined) => {
if (!formEl) return

107
admin/src/app/views/yjpz_config/yjpz_config.vue

@ -0,0 +1,107 @@
<template>
<div class="main-container">
<el-card class="box-card !border-none" shadow="never">
<el-form
class="page-form"
:model="formData"
label-width="150px"
ref="ruleFormRef"
:rules="formRules"
v-loading="loading"
>
<el-form-item
v-for="day in weekDays"
:key="day.key"
:label="day.label"
:prop="`priceRules.${day.key}`"
>
<span style="margin: 0 8px;">每个</span>
<el-input
v-model.number="formData.priceRules[day.key].basePrice"
placeholder="请输入"
class="input-width"
clearable
/>
<span style="margin: 0 8px;"> 超过</span>
<el-input
v-model.number="formData.priceRules[day.key].limitCount"
placeholder="请输入"
class="input-width"
clearable
/>
<span style="margin: 0 8px;"></span>
<el-input
v-model.number="formData.priceRules[day.key].extraPrice"
placeholder="请输入"
class="input-width"
clearable
/>
<span style="margin-left: 4px;"></span>
</el-form-item>
</el-form>
</el-card>
<div class="fixed-footer-wrap">
<div class="fixed-footer">
<el-button type="primary" @click="onSave()">提交</el-button>
</div>
</div>
</div>
</template>
<script lang="ts" setup>
import { reactive, ref } from 'vue'
import { t } from '@/lang'
import { FormInstance, FormRules } from 'element-plus'
import { yjpzConfig,getYjpzConfig} from '@/app/api/sys'
const loading = ref(true)
const formData = reactive({
priceRules: {
mon: { basePrice: 0, limitCount: 0, extraPrice: 0 },
tue: { basePrice: 0, limitCount: 0, extraPrice: 0 },
wed: { basePrice: 0, limitCount: 0, extraPrice: 0 },
thu: { basePrice: 0, limitCount: 0, extraPrice: 0 },
fri: { basePrice: 0, limitCount: 0, extraPrice: 0 },
sat: { basePrice: 0, limitCount: 0, extraPrice: 0 },
sun: { basePrice: 0, limitCount: 0, extraPrice: 0 },
}
})
const weekDays = [
{ key: 'mon', label: '周一' },
{ key: 'tue', label: '周二' },
{ key: 'wed', label: '周三' },
{ key: 'thu', label: '周四' },
{ key: 'fri', label: '周五' },
{ key: 'sat', label: '周六' },
{ key: 'sun', label: '周日' },
]
const formRules = reactive<FormRules>({})
const setFormData = async () => {
const data = await (await getYjpzConfig()).data
formData['priceRules'] = data;
loading.value = false
}
setFormData();
const onSave = async () => {
yjpzConfig(formData)
.then(() => {
loading.value = true
setFormData();
})
.catch(() => {
loading.value = false
})
}
</script>
<style lang="scss" scoped></style>

29
niucloud/app/adminapi/controller/campus_person_role/CampusPersonRole.php

@ -31,10 +31,7 @@ class CampusPersonRole extends BaseAdminController
["campus_id",""],
["person_id",""],
["role_id",""],
["dept_id",""],
["created_at",""],
["updated_at",""],
["deleted_at",""]
["dept_id",""]
]);
return success((new CampusPersonRoleService())->getPage($data));
}
@ -58,9 +55,7 @@ class CampusPersonRole extends BaseAdminController
["person_id",0],
["role_id",0],
["dept_id",0],
["created_at",1747386167],
["updated_at",1747386167],
["deleted_at",1747386167]
]);
$this->validate($data, 'app\validate\campus_person_role\CampusPersonRole.add');
$id = (new CampusPersonRoleService())->add($data);
@ -78,9 +73,7 @@ class CampusPersonRole extends BaseAdminController
["person_id",0],
["role_id",0],
["dept_id",0],
["created_at",1747386167],
["updated_at",1747386167],
["deleted_at",1747386167]
]);
$this->validate($data, 'app\validate\campus_person_role\CampusPersonRole.edit');
(new CampusPersonRoleService())->edit($id, $data);
@ -98,4 +91,20 @@ class CampusPersonRole extends BaseAdminController
}
public function getCampusAll(){
return success(( new CampusPersonRoleService())->getCampusAll());
}
public function getPersonnelAll(){
return success(( new CampusPersonRoleService())->getPersonnelAll());
}
public function getSysRoleAll(){
return success(( new CampusPersonRoleService())->getSysRoleAll());
}
public function getDepartmentsAll(){
return success(( new CampusPersonRoleService())->getDepartmentsAll());
}
}

9
niucloud/app/adminapi/controller/customer_resources/CustomerResources.php

@ -63,8 +63,11 @@ class CustomerResources extends BaseAdminController
["decision_maker",""],
["initial_intent",""],
["campus",""],
["status",""]
["status",""],
["create_year_month",date("Y-m")],
["create_date",date("Y-m-d")]
]);
$this->validate($data, 'app\validate\customer_resources\CustomerResources.add');
$id = (new CustomerResourcesService())->add($data);
return success('ADD_SUCCESS', ['id' => $id]);
@ -109,4 +112,8 @@ class CustomerResources extends BaseAdminController
}
public function getCampusAll(){
return success(( new CustomerResourcesService())->getCampusAll());
}
}

4
niucloud/app/adminapi/controller/departments/Departments.php

@ -85,4 +85,8 @@ class Departments extends BaseAdminController
}
public function getDepartmentsAll(){
return success(( new DepartmentsService())->getDepartmentsAll());
}
}

718
niucloud/app/adminapi/controller/lesson_course_teaching/LessonCourseTeaching.php

@ -0,0 +1,718 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\adminapi\controller\lesson_course_teaching;
use core\base\BaseAdminController;
use app\service\admin\lesson_course_teaching\LessonCourseTeachingService;
/**
* 教研管理控制器
* Class LessonCourseTeaching
* @package app\adminapi\controller\lesson_course_teaching
*/
class LessonCourseTeaching extends BaseAdminController
{
/**
* 获取教研管理列表
* @return \think\Response
*/
public function lists(){
$data = $this->request->params([
["title",""],
["status",""],
["create_time",["",""]],
["update_time",["",""]],
["table_type",1]
]);
return success((new LessonCourseTeachingService())->getPage($data));
}
/**
* 添加教研管理
* @return \think\Response
*/
public function add(){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
["table_type",1]
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.add');
$id = (new LessonCourseTeachingService())->add($data);
return success('ADD_SUCCESS', ['id' => $id]);
}
/**
* 教研管理编辑
* @param $id 教研管理id
* @return \think\Response
*/
public function edit(int $id){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.edit');
(new LessonCourseTeachingService())->edit($id, $data);
return success('EDIT_SUCCESS');
}
/**
* 获取跳绳教案库列表
* @return \think\Response
*/
public function jumpLists(){
$data = $this->request->params([
["title",""],
["status",""],
["create_time",["",""]],
["update_time",["",""]],
["table_type",2]
]);
return success((new LessonCourseTeachingService())->jumpPetPage($data));
}
/**
* 添加跳绳教案库
* @return \think\Response
*/
public function jumpAdd(){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
["table_type",2]
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.add');
$id = (new LessonCourseTeachingService())->jumpAdd($data);
return success('ADD_SUCCESS', ['id' => $id]);
}
/**
* 跳绳教案库编辑
* @param $id 教研管理id
* @return \think\Response
*/
public function jumpEdit(int $id){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.edit');
(new LessonCourseTeachingService())->jumpEdit($id, $data);
return success('EDIT_SUCCESS');
}
/**
* 获取增高教案库列表
* @return \think\Response
*/
public function enLists(){
$data = $this->request->params([
["title",""],
["status",""],
["create_time",["",""]],
["update_time",["",""]],
["table_type",3]
]);
return success((new LessonCourseTeachingService())->enPetPage($data));
}
/**
* 添加增高教案库
* @return \think\Response
*/
public function enAdd(){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
["table_type",3]
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.add');
$id = (new LessonCourseTeachingService())->enAdd($data);
return success('ADD_SUCCESS', ['id' => $id]);
}
/**
* 跳绳增高教案库
* @param $id 教研管理id
* @return \think\Response
*/
public function enEdit(int $id){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.edit');
(new LessonCourseTeachingService())->enEdit($id, $data);
return success('EDIT_SUCCESS');
}
/**
* 获取篮球教案库列表
* @return \think\Response
*/
public function basketballLists(){
$data = $this->request->params([
["title",""],
["status",""],
["create_time",["",""]],
["update_time",["",""]],
["table_type",4]
]);
return success((new LessonCourseTeachingService())->basketballPetPage($data));
}
/**
* 添加篮球教案库
* @return \think\Response
*/
public function basketballAdd(){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
["table_type",4]
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.add');
$id = (new LessonCourseTeachingService())->basketballAdd($data);
return success('ADD_SUCCESS', ['id' => $id]);
}
/**
* 跳绳篮球教案库
* @param $id 教研管理id
* @return \think\Response
*/
public function basketballEdit(int $id){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.edit');
(new LessonCourseTeachingService())->basketballEdit($id, $data);
return success('EDIT_SUCCESS');
}
/**
* 获取强化教案库列表
* @return \think\Response
*/
public function strengLists(){
$data = $this->request->params([
["title",""],
["status",""],
["create_time",["",""]],
["update_time",["",""]],
["table_type",5]
]);
return success((new LessonCourseTeachingService())->strengPetPage($data));
}
/**
* 添加强化教案库
* @return \think\Response
*/
public function strengAdd(){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
["table_type",5]
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.add');
$id = (new LessonCourseTeachingService())->strengAdd($data);
return success('ADD_SUCCESS', ['id' => $id]);
}
/**
* 跳绳强化教案库
* @param $id 教研管理id
* @return \think\Response
*/
public function strengEdit(int $id){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.edit');
(new LessonCourseTeachingService())->strengEdit($id, $data);
return success('EDIT_SUCCESS');
}
/**
* 获取空中忍者教案库列表
* @return \think\Response
*/
public function ninjaLists(){
$data = $this->request->params([
["title",""],
["status",""],
["create_time",["",""]],
["update_time",["",""]],
["table_type",6]
]);
return success((new LessonCourseTeachingService())->ninjaPetPage($data));
}
/**
* 添加空中忍者教案库
* @return \think\Response
*/
public function ninjaAdd(){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
["table_type",6]
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.add');
$id = (new LessonCourseTeachingService())->ninjaAdd($data);
return success('ADD_SUCCESS', ['id' => $id]);
}
/**
* 跳绳空中忍者教案库
* @param $id 教研管理id
* @return \think\Response
*/
public function ninjaEdit(int $id){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.edit');
(new LessonCourseTeachingService())->ninjaEdit($id, $data);
return success('EDIT_SUCCESS');
}
/**
* 获取空中忍者教案库列表
* @return \think\Response
*/
public function securityLists(){
$data = $this->request->params([
["title",""],
["status",""],
["create_time",["",""]],
["update_time",["",""]],
["table_type",7]
]);
return success((new LessonCourseTeachingService())->securityPetPage($data));
}
/**
* 添加空中忍者教案库
* @return \think\Response
*/
public function securityAdd(){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
["table_type",7]
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.add');
$id = (new LessonCourseTeachingService())->securityAdd($data);
return success('ADD_SUCCESS', ['id' => $id]);
}
/**
* 跳绳空中忍者教案库
* @param $id 教研管理id
* @return \think\Response
*/
public function securityEdit(int $id){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.edit');
(new LessonCourseTeachingService())->securityEdit($id, $data);
return success('EDIT_SUCCESS');
}
/**
* 获取体能教案库列表
* @return \think\Response
*/
public function physicalLists(){
$data = $this->request->params([
["title",""],
["status",""],
["create_time",["",""]],
["update_time",["",""]],
["table_type",8]
]);
return success((new LessonCourseTeachingService())->physicalPetPage($data));
}
/**
* 添加体能教案库
* @return \think\Response
*/
public function physicalAdd(){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
["table_type",8]
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.add');
$id = (new LessonCourseTeachingService())->physicalAdd($data);
return success('ADD_SUCCESS', ['id' => $id]);
}
/**
* 跳绳体能教案库
* @param $id 教研管理id
* @return \think\Response
*/
public function physicalEdit(int $id){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.edit');
(new LessonCourseTeachingService())->physicalEdit($id, $data);
return success('EDIT_SUCCESS');
}
/**
* 获取体能教案库列表
* @return \think\Response
*/
public function actionLists(){
$data = $this->request->params([
["title",""],
["status",""],
["create_time",["",""]],
["update_time",["",""]],
["table_type",9]
]);
return success((new LessonCourseTeachingService())->actionPetPage($data));
}
/**
* 热身动作
* @return \think\Response
*/
public function actionAdd(){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
["table_type",9]
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.add');
$id = (new LessonCourseTeachingService())->actionAdd($data);
return success('ADD_SUCCESS', ['id' => $id]);
}
/**
* 热身动作
* @param $id 教研管理id
* @return \think\Response
*/
public function actionEdit(int $id){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.edit');
(new LessonCourseTeachingService())->actionEdit($id, $data);
return success('EDIT_SUCCESS');
}
/**
* 获取体能教案库列表
* @return \think\Response
*/
public function fitnessLists(){
$data = $this->request->params([
["title",""],
["status",""],
["create_time",["",""]],
["update_time",["",""]],
["table_type",10]
]);
return success((new LessonCourseTeachingService())->fitnessPetPage($data));
}
/**
* 热身动作
* @return \think\Response
*/
public function fitnessAdd(){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
["table_type",10]
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.add');
$id = (new LessonCourseTeachingService())->fitnessAdd($data);
return success('ADD_SUCCESS', ['id' => $id]);
}
/**
* 热身动作
* @param $id 教研管理id
* @return \think\Response
*/
public function fitnessEdit(int $id){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.edit');
(new LessonCourseTeachingService())->fitnessEdit($id, $data);
return success('EDIT_SUCCESS');
}
/**
* 获取体能教案库列表
* @return \think\Response
*/
public function gamesLists(){
$data = $this->request->params([
["title",""],
["status",""],
["create_time",["",""]],
["update_time",["",""]],
["table_type",11]
]);
return success((new LessonCourseTeachingService())->gamesPetPage($data));
}
/**
* 热身动作
* @return \think\Response
*/
public function gamesAdd(){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
["table_type",11]
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.add');
$id = (new LessonCourseTeachingService())->gamesAdd($data);
return success('ADD_SUCCESS', ['id' => $id]);
}
/**
* 热身动作
* @param $id 教研管理id
* @return \think\Response
*/
public function gamesEdit(int $id){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.edit');
(new LessonCourseTeachingService())->gamesEdit($id, $data);
return success('EDIT_SUCCESS');
}
/**
* 获取体能教案库列表
* @return \think\Response
*/
public function relaxationLists(){
$data = $this->request->params([
["title",""],
["status",""],
["create_time",["",""]],
["update_time",["",""]],
["table_type",12]
]);
return success((new LessonCourseTeachingService())->relaxationPetPage($data));
}
/**
* 热身动作
* @return \think\Response
*/
public function relaxationAdd(){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
["table_type",12]
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.add');
$id = (new LessonCourseTeachingService())->relaxationAdd($data);
return success('ADD_SUCCESS', ['id' => $id]);
}
/**
* 热身动作
* @param $id 教研管理id
* @return \think\Response
*/
public function relaxationEdit(int $id){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.edit');
(new LessonCourseTeachingService())->relaxationEdit($id, $data);
return success('EDIT_SUCCESS');
}
public function publicLists(){
$data = $this->request->params([
["title",""],
["status",""],
["create_time",["",""]],
["update_time",["",""]],
["table_type",0],
]);
return success((new LessonCourseTeachingService())->publicPetPage($data));
}
public function publicAdd(){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
["table_type",0]
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.add');
$id = (new LessonCourseTeachingService())->publicAdd($data);
return success('ADD_SUCCESS', ['id' => $id]);
}
public function publicEdit(int $id){
$data = $this->request->params([
["title",""],
["image",""],
["type",0],
["content",""],
["status",0],
]);
$this->validate($data, 'app\validate\lesson_course_teaching\LessonCourseTeaching.edit');
(new LessonCourseTeachingService())->publicEdit($id, $data);
return success('EDIT_SUCCESS');
}
/**
* 教研管理详情
* @param int $id
* @return \think\Response
*/
public function info(int $id){
return success((new LessonCourseTeachingService())->getInfo($id));
}
/**
* 教研管理删除
* @param $id 教研管理id
* @return \think\Response
*/
public function del(int $id){
(new LessonCourseTeachingService())->del($id);
return success('DELETE_SUCCESS');
}
public function getPersonnelDataAll(){
return success(( new LessonCourseTeachingService())->getPersonnelDataAll());
}
}

99
niucloud/app/adminapi/controller/market_performance/MarketPerformance.php

@ -0,0 +1,99 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\adminapi\controller\market_performance;
use core\base\BaseAdminController;
use app\service\admin\market_performance\MarketPerformanceService;
/**
* 市场绩效控制器
* Class MarketPerformance
* @package app\adminapi\controller\market_performance
*/
class MarketPerformance extends BaseAdminController
{
/**
* 获取市场绩效列表
* @return \think\Response
*/
public function lists(){
$data = $this->request->params([
["campus_id",""],
["performance_amount",""]
]);
return success((new MarketPerformanceService())->getPage($data));
}
/**
* 市场绩效详情
* @param int $id
* @return \think\Response
*/
public function info(int $id){
return success((new MarketPerformanceService())->getInfo($id));
}
/**
* 添加市场绩效
* @return \think\Response
*/
public function add(){
$data = $this->request->params([
["personnel_id",0],
["campus_id",0],
["performance_amount",0.00],
]);
$this->validate($data, 'app\validate\market_performance\MarketPerformance.add');
$id = (new MarketPerformanceService())->add($data);
return success('ADD_SUCCESS', ['id' => $id]);
}
/**
* 市场绩效编辑
* @param $id 市场绩效id
* @return \think\Response
*/
public function edit(int $id){
$data = $this->request->params([
["personnel_id",0],
["campus_id",0],
["performance_amount",0.00],
]);
$this->validate($data, 'app\validate\market_performance\MarketPerformance.edit');
(new MarketPerformanceService())->edit($id, $data);
return success('EDIT_SUCCESS');
}
/**
* 市场绩效删除
* @param $id 市场绩效id
* @return \think\Response
*/
public function del(int $id){
(new MarketPerformanceService())->del($id);
return success('DELETE_SUCCESS');
}
public function getPersonnelAll(){
return success(( new MarketPerformanceService())->getPersonnelAll());
}
public function getCampusAll(){
return success(( new MarketPerformanceService())->getCampusAll());
}
}

14
niucloud/app/adminapi/controller/six_speed_modification_log/SixSpeedModificationLog.php

@ -28,11 +28,7 @@ class SixSpeedModificationLog extends BaseAdminController
*/
public function lists(){
$data = $this->request->params([
["campus_id",""],
["staff_id",""],
["modified_field",""],
["old_value",""],
["new_value",""]
["campus_id",""]
]);
return success((new SixSpeedModificationLogService())->getPage($data));
}
@ -94,4 +90,12 @@ class SixSpeedModificationLog extends BaseAdminController
}
public function getCampusAll(){
return success(( new SixSpeedModificationLogService())->getCampusAll());
}
public function getPersonnelAll(){
return success(( new SixSpeedModificationLogService())->getPersonnelAll());
}
}

18
niucloud/app/adminapi/controller/sys/System.php

@ -106,4 +106,22 @@ class System extends BaseAdminController
{
return success(['app_debug' => env('app_debug', false)]);
}
public function get_yjpz_config(){
return success(data: (new SystemService())->get_yjpz_config());
}
public function yjpz_config(){
$data = $this->request->params([
['priceRules', []],
]);
return success(data: (new SystemService())->yjpz_config($data));
}
}

9
niucloud/app/adminapi/route/campus_person_role.php

@ -15,6 +15,7 @@ use app\adminapi\middleware\AdminCheckRole;
use app\adminapi\middleware\AdminCheckToken;
use app\adminapi\middleware\AdminLog;
// USER_CODE_BEGIN -- campus_person_role
Route::group('campus_person_role', function () {
@ -30,6 +31,14 @@ Route::group('campus_person_role', function () {
//删除角色关系
Route::delete('campus_person_role/:id', 'campus_person_role.CampusPersonRole/del');
Route::get('campus_all','campus_person_role.CampusPersonRole/getCampusAll');
Route::get('personnel_all','campus_person_role.CampusPersonRole/getPersonnelAll');
Route::get('sys_role_all','campus_person_role.CampusPersonRole/getSysRoleAll');
Route::get('departments_all','campus_person_role.CampusPersonRole/getDepartmentsAll');
})->middleware([
AdminCheckToken::class,
AdminCheckRole::class,

3
niucloud/app/adminapi/route/customer_resources.php

@ -17,6 +17,7 @@ use app\adminapi\middleware\AdminLog;
// USER_CODE_BEGIN -- customer_resources
Route::group('customer_resources', function () {
@ -32,6 +33,8 @@ Route::group('customer_resources', function () {
//删除客户资源
Route::delete('customer_resources/:id', 'customer_resources.CustomerResources/del');
Route::get('campus_all','customer_resources.CustomerResources/getCampusAll');
})->middleware([
AdminCheckToken::class,
AdminCheckRole::class,

27
niucloud/app/adminapi/route/departments.php

@ -14,6 +14,7 @@ use think\facade\Route;
use app\adminapi\middleware\AdminCheckRole;
use app\adminapi\middleware\AdminCheckToken;
use app\adminapi\middleware\AdminLog;
// USER_CODE_BEGIN -- departments
Route::group('departments', function () {
@ -29,6 +30,32 @@ Route::group('departments', function () {
//删除部门
Route::delete('departments/:id', 'departments.Departments/del');
Route::get('departments_all','departments.Departments/getDepartmentsAll');
})->middleware([
AdminCheckToken::class,
AdminCheckRole::class,
AdminLog::class
]);
// USER_CODE_END -- departments
// USER_CODE_BEGIN -- departments
Route::group('departments', function () {
//部门列表
Route::get('departments', 'departments.Departments/lists');
//部门详情
Route::get('departments/:id', 'departments.Departments/info');
//添加部门
Route::post('departments', 'departments.Departments/add');
//编辑部门
Route::put('departments/:id', 'departments.Departments/edit');
//删除部门
Route::delete('departments/:id', 'departments.Departments/del');
Route::get('departments_all','departments.Departments/getDepartmentsAll');
})->middleware([
AdminCheckToken::class,
AdminCheckRole::class,

122
niucloud/app/adminapi/route/lesson_course_teaching.php

@ -0,0 +1,122 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
use think\facade\Route;
use app\adminapi\middleware\AdminCheckRole;
use app\adminapi\middleware\AdminCheckToken;
use app\adminapi\middleware\AdminLog;
// USER_CODE_BEGIN -- lesson_course_teaching
Route::group('lesson_course_teaching', function () {
//课程教学大纲列表
Route::get('lesson_course_teaching', 'lesson_course_teaching.LessonCourseTeaching/lists');
//添加课程教学大纲
Route::post('lesson_course_teaching', 'lesson_course_teaching.LessonCourseTeaching/add');
//编辑课程教学大纲
Route::put('lesson_course_teaching/:id', 'lesson_course_teaching.LessonCourseTeaching/edit');
//跳绳教案库列表
Route::get('jump_lesson_library', 'lesson_course_teaching.LessonCourseTeaching/jumpLists');
//添加跳绳教案库
Route::post('jump_lesson_library', 'lesson_course_teaching.LessonCourseTeaching/jumpAdd');
//编辑跳绳教案库
Route::put('jump_lesson_library/:id', 'lesson_course_teaching.LessonCourseTeaching/jumpEdit');
//高数教案库列表
Route::get('en_teaching_library', 'lesson_course_teaching.LessonCourseTeaching/enLists');
//添加高数教案库
Route::post('en_teaching_library', 'lesson_course_teaching.LessonCourseTeaching/enAdd');
//编辑高数教案库
Route::put('en_teaching_library/:id', 'lesson_course_teaching.LessonCourseTeaching/enEdit');
//篮球教案库列表
Route::get('basketball_teaching_library', 'lesson_course_teaching.LessonCourseTeaching/basketballLists');
//添加篮球教案库
Route::post('basketball_teaching_library', 'lesson_course_teaching.LessonCourseTeaching/basketballAdd');
//编辑篮球教案库
Route::put('basketball_teaching_library/:id', 'lesson_course_teaching.LessonCourseTeaching/basketballEdit');
//强化教案库列表
Route::get('streng_teaching_library', 'lesson_course_teaching.LessonCourseTeaching/strengLists');
//添加强化教案库
Route::post('streng_teaching_library', 'lesson_course_teaching.LessonCourseTeaching/strengAdd');
//编辑强化教案库
Route::put('streng_teaching_library/:id', 'lesson_course_teaching.LessonCourseTeaching/strengEdit');
//空中忍者教案库列表
Route::get('ninja_teaching_library', 'lesson_course_teaching.LessonCourseTeaching/ninjaLists');
//添加空中忍者教案库
Route::post('ninja_teaching_library', 'lesson_course_teaching.LessonCourseTeaching/ninjaAdd');
//编辑空中忍者教案库
Route::put('ninja_teaching_library/:id', 'lesson_course_teaching.LessonCourseTeaching/ninjaEdit');
//少儿安防教案库列表
Route::get('security_teaching_library', 'lesson_course_teaching.LessonCourseTeaching/securityLists');
//添加少儿安防教案库
Route::post('security_teaching_library', 'lesson_course_teaching.LessonCourseTeaching/securityAdd');
//编辑少儿安防教案库
Route::put('security_teaching_library/:id', 'lesson_course_teaching.LessonCourseTeaching/securityEdit');
//体能教案库列表
Route::get('physical_teaching_library', 'lesson_course_teaching.LessonCourseTeaching/physicalLists');
//添加体能教案库
Route::post('physical_teaching_library', 'lesson_course_teaching.LessonCourseTeaching/physicalAdd');
//编辑体能教案库
Route::put('physical_teaching_library/:id', 'lesson_course_teaching.LessonCourseTeaching/physicalEdit');
//热身动作列表
Route::get('action_library', 'lesson_course_teaching.LessonCourseTeaching/actionLists');
//添加热身动作库
Route::post('action_library', 'lesson_course_teaching.LessonCourseTeaching/actionAdd');
//编辑热身动作库
Route::put('action_library/:id', 'lesson_course_teaching.LessonCourseTeaching/actionEdit');
//体能动作列表
Route::get('fitness_library', 'lesson_course_teaching.LessonCourseTeaching/fitnessLists');
//添加体能动作
Route::post('fitness_library', 'lesson_course_teaching.LessonCourseTeaching/fitnessAdd');
//编辑体能动作
Route::put('fitness_library/:id', 'lesson_course_teaching.LessonCourseTeaching/fitnessEdit');
//趣味游戏列表
Route::get('games_library', 'lesson_course_teaching.LessonCourseTeaching/gamesLists');
//趣味游戏动作
Route::post('games_library', 'lesson_course_teaching.LessonCourseTeaching/gamesAdd');
//趣味游戏动作
Route::put('games_library/:id', 'lesson_course_teaching.LessonCourseTeaching/gamesEdit');
//放松游戏列表
Route::get('relaxation_library', 'lesson_course_teaching.LessonCourseTeaching/relaxationLists');
//放松游戏
Route::post('relaxation_library', 'lesson_course_teaching.LessonCourseTeaching/relaxationAdd');
//放松游戏
Route::put('relaxation_library/:id', 'lesson_course_teaching.LessonCourseTeaching/relaxationEdit');
Route::get('public_library', 'lesson_course_teaching.LessonCourseTeaching/publicLists');
Route::post('public_library', 'lesson_course_teaching.LessonCourseTeaching/publicAdd');
Route::put('public_library/:id', 'lesson_course_teaching.LessonCourseTeaching/publicEdit');
//教研管理详情
Route::get('lesson_course_teaching/:id', 'lesson_course_teaching.LessonCourseTeaching/info');
//删除教研管理
Route::delete('lesson_course_teaching/:id', 'lesson_course_teaching.LessonCourseTeaching/del');
Route::get('personnel_data_all','lesson_course_teaching.LessonCourseTeaching/getPersonnelDataAll');
})->middleware([
AdminCheckToken::class,
AdminCheckRole::class,
AdminLog::class
]);
// USER_CODE_END -- lesson_course_teaching

41
niucloud/app/adminapi/route/market_performance.php

@ -0,0 +1,41 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
use think\facade\Route;
use app\adminapi\middleware\AdminCheckRole;
use app\adminapi\middleware\AdminCheckToken;
use app\adminapi\middleware\AdminLog;
// USER_CODE_BEGIN -- market_performance
Route::group('market_performance', function () {
//市场绩效列表
Route::get('market_performance', 'market_performance.MarketPerformance/lists');
//市场绩效详情
Route::get('market_performance/:id', 'market_performance.MarketPerformance/info');
//添加市场绩效
Route::post('market_performance', 'market_performance.MarketPerformance/add');
//编辑市场绩效
Route::put('market_performance/:id', 'market_performance.MarketPerformance/edit');
//删除市场绩效
Route::delete('market_performance/:id', 'market_performance.MarketPerformance/del');
Route::get('personnel_all','market_performance.MarketPerformance/getPersonnelAll');
Route::get('campus_all','market_performance.MarketPerformance/getCampusAll');
})->middleware([
AdminCheckToken::class,
AdminCheckRole::class,
AdminLog::class
]);
// USER_CODE_END -- market_performance

6
niucloud/app/adminapi/route/six_speed_modification_log.php

@ -14,6 +14,8 @@ use think\facade\Route;
use app\adminapi\middleware\AdminCheckRole;
use app\adminapi\middleware\AdminCheckToken;
use app\adminapi\middleware\AdminLog;
// USER_CODE_BEGIN -- six_speed_modification_log
Route::group('six_speed_modification_log', function () {
@ -29,6 +31,10 @@ Route::group('six_speed_modification_log', function () {
//删除六一速修改记录
Route::delete('six_speed_modification_log/:id', 'six_speed_modification_log.SixSpeedModificationLog/del');
Route::get('campus_all','six_speed_modification_log.SixSpeedModificationLog/getCampusAll');
Route::get('personnel_all','six_speed_modification_log.SixSpeedModificationLog/getPersonnelAll');
})->middleware([
AdminCheckToken::class,
AdminCheckRole::class,

4
niucloud/app/adminapi/route/sys.php

@ -326,6 +326,10 @@ Route::group('sys', function() {
// 打印小票内容
Route::post('printer/printticket', 'sys.Printer/printTicket');
//业绩配置
Route::get('get_yjpz_config', 'sys.System/get_yjpz_config');
Route::post('yjpz_config', 'sys.System/yjpz_config');
})->middleware([
AdminCheckToken::class,
AdminCheckRole::class,

21
niucloud/app/common.php

@ -1,5 +1,7 @@
<?php
use app\model\campus_person_role\CampusPersonRole;
use app\model\personnel\Personnel;
use think\Container;
use think\Response;
use think\facade\Lang;
@ -1025,3 +1027,22 @@ function get_last_time($time = null)
}
return $text;
}
function get_campus_where($user_id){
$where = [];
if($user_id == 1){
return $where;
}
$personnel = new Personnel();
$role = new CampusPersonRole();
$personnel_id = $personnel->where(['sys_user_id' => $user_id])->value('id');
if(!$personnel_id){
$where[] = ['campus_id','in',[]];
}
$campus_ids = $role->where(['person_id' => $personnel_id])->column('campus_id');
$where[] = ['campus_id','in',$campus_ids];
return $where;
}

60
niucloud/app/model/campus_person_role/CampusPersonRole.php

@ -16,6 +16,14 @@ use think\model\concern\SoftDelete;
use think\model\relation\HasMany;
use think\model\relation\HasOne;
use app\model\campus\Campus;
use app\model\personnel\Personnel;
use app\model\sys\SysRole;
use app\model\departments\Departments;
/**
* 角色关系模型
* Class CampusPersonRole
@ -63,7 +71,7 @@ class CampusPersonRole extends BaseModel
}
/**
* 搜索器:角色关系校区ID
* 搜索器:角色关系校区
* @param $value
* @param $data
*/
@ -75,7 +83,7 @@ class CampusPersonRole extends BaseModel
}
/**
* 搜索器:角色关系人员ID
* 搜索器:角色关系人员
* @param $value
* @param $data
*/
@ -87,7 +95,7 @@ class CampusPersonRole extends BaseModel
}
/**
* 搜索器:角色关系角色ID
* 搜索器:角色关系角色
* @param $value
* @param $data
*/
@ -110,45 +118,25 @@ class CampusPersonRole extends BaseModel
}
}
/**
* 搜索器:角色关系创建时间
* @param $value
* @param $data
*/
public function searchCreatedAtAttr($query, $value, $data)
{
if ($value) {
$query->where("created_at", $value);
}
}
/**
* 搜索器:角色关系更新时间
* @param $value
* @param $data
*/
public function searchUpdatedAtAttr($query, $value, $data)
{
if ($value) {
$query->where("updated_at", $value);
}
}
/**
* 搜索器:角色关系逻辑删除时间
* @param $value
* @param $data
*/
public function searchDeletedAtAttr($query, $value, $data)
{
if ($value) {
$query->where("deleted_at", $value);
}
}
public function campus(){
return $this->hasOne(Campus::class, 'id', 'campus_id')->joinType('left')->withField('campus_name,id')->bind(['campus_id_name'=>'campus_name']);
}
public function personnel(){
return $this->hasOne(Personnel::class, 'id', 'person_id')->joinType('left')->withField('name,id')->bind(['person_id_name'=>'name']);
}
public function sysRole(){
return $this->hasOne(SysRole::class, 'role_id', 'role_id')->joinType('left')->withField('role_name,role_id')->bind(['role_id_name'=>'role_name']);
}
public function departments(){
return $this->hasOne(Departments::class, 'id', 'dept_id')->joinType('left')->withField('department_name,id')->bind(['dept_id_name'=>'department_name']);
}
}

6
niucloud/app/model/customer_resources/CustomerResources.php

@ -16,6 +16,8 @@ use think\model\concern\SoftDelete;
use think\model\relation\HasMany;
use think\model\relation\HasOne;
use app\model\campus\Campus;
/**
* 客户资源模型
* Class CustomerResources
@ -79,4 +81,8 @@ class CustomerResources extends BaseModel
public function campus(){
return $this->hasOne(Campus::class, 'id', 'campus')->joinType('left')->withField('campus_name,id')->bind(['campus_name'=>'campus_name']);
}
}

22
niucloud/app/model/departments/Departments.php

@ -16,6 +16,8 @@ use think\model\concern\SoftDelete;
use think\model\relation\HasMany;
use think\model\relation\HasOne;
use app\model\departments\Departments;
/**
* 部门模型
* Class Departments
@ -24,7 +26,7 @@ use think\model\relation\HasOne;
class Departments extends BaseModel
{
use SoftDelete;
/**
* 数据表主键
@ -38,9 +40,17 @@ class Departments extends BaseModel
*/
protected $name = 'departments';
/**
* 定义软删除标记字段.
* @var string
*/
protected $deleteTime = 'deleted_at';
/**
* 定义软删除字段的默认值.
* @var int
*/
protected $defaultSoftDelete = 0;
/**
* 搜索器:部门部门编号
@ -67,7 +77,7 @@ class Departments extends BaseModel
}
/**
* 搜索器:部门上级部门
* 搜索器:部门上级部门ID
* @param $value
* @param $data
*/
@ -83,4 +93,8 @@ class Departments extends BaseModel
public function departments(){
return $this->hasOne(Departments::class, 'id', 'parent_department_id')->joinType('left')->withField('department_name,id')->bind(['parent_department_id_name'=>'department_name']);
}
}

124
niucloud/app/model/lesson_course_teaching/LessonCourseTeaching.php

@ -0,0 +1,124 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\model\lesson_course_teaching;
use core\base\BaseModel;
use think\model\concern\SoftDelete;
use think\model\relation\HasMany;
use think\model\relation\HasOne;
use app\model\personnel_data\PersonnelData;
/**
* 教研管理模型
* Class LessonCourseTeaching
* @package app\model\lesson_course_teaching
*/
class LessonCourseTeaching extends BaseModel
{
use SoftDelete;
/**
* 数据表主键
* @var string
*/
protected $pk = 'id';
/**
* 模型名称
* @var string
*/
protected $name = 'lesson_course_teaching';
/**
* 定义软删除标记字段.
* @var string
*/
protected $deleteTime = 'delete_time';
/**
* 定义软删除字段的默认值.
* @var int
*/
protected $defaultSoftDelete = 0;
/**
* 搜索器:教研管理课程标题
* @param $value
* @param $data
*/
public function searchTitleAttr($query, $value, $data)
{
if ($value) {
$query->where("title", "like", "%".$value."%");
}
}
/**
* 搜索器:教研管理状态
* @param $value
* @param $data
*/
public function searchStatusAttr($query, $value, $data)
{
if ($value) {
$query->where("status", $value);
}
}
/**
* 搜索器:教研管理创建时间
* @param $value
* @param $data
*/
public function searchCreateTimeAttr($query, $value, $data)
{
$start = empty($value[0]) ? 0 : strtotime($value[0]);
$end = empty($value[1]) ? 0 : strtotime($value[1]);
if ($start > 0 && $end > 0) {
$query->where([["create_time", "between", [$start, $end]]]);
} else if ($start > 0 && $end == 0) {
$query->where([["create_time", ">=", $start]]);
} else if ($start == 0 && $end > 0) {
$query->where([["create_time", "<=", $end]]);
}
}
/**
* 搜索器:教研管理修改时间
* @param $value
* @param $data
*/
public function searchUpdateTimeAttr($query, $value, $data)
{
$start = empty($value[0]) ? 0 : strtotime($value[0]);
$end = empty($value[1]) ? 0 : strtotime($value[1]);
if ($start > 0 && $end > 0) {
$query->where([["update_time", "between", [$start, $end]]]);
} else if ($start > 0 && $end == 0) {
$query->where([["update_time", ">=", $start]]);
} else if ($start == 0 && $end > 0) {
$query->where([["update_time", "<=", $end]]);
}
}
public function personnelData(){
return $this->hasOne(PersonnelData::class, 'sys_user_id', 'user_permission')->joinType('left')->withField('name,sys_user_id')->bind(['user_permission_name'=>'name']);
}
}

86
niucloud/app/model/market_performance/MarketPerformance.php

@ -0,0 +1,86 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\model\market_performance;
use core\base\BaseModel;
use think\model\concern\SoftDelete;
use think\model\relation\HasMany;
use think\model\relation\HasOne;
use app\model\personnel\Personnel;
use app\model\campus\Campus;
/**
* 市场绩效模型
* Class MarketPerformance
* @package app\model\market_performance
*/
class MarketPerformance extends BaseModel
{
/**
* 数据表主键
* @var string
*/
protected $pk = 'id';
/**
* 模型名称
* @var string
*/
protected $name = 'market_performance';
/**
* 搜索器:市场绩效校区
* @param $value
* @param $data
*/
public function searchCampusIdAttr($query, $value, $data)
{
if ($value) {
$query->where("campus_id", $value);
}
}
/**
* 搜索器:市场绩效绩效金额
* @param $value
* @param $data
*/
public function searchPerformanceAmountAttr($query, $value, $data)
{
if ($value) {
$query->where("performance_amount", $value);
}
}
public function personnel(){
return $this->hasOne(Personnel::class, 'id', 'personnel_id')->joinType('left')->withField('name,id')->bind(['personnel_id_name'=>'name']);
}
public function campus(){
return $this->hasOne(Campus::class, 'id', 'campus_id')->joinType('left')->withField('campus_name,id')->bind(['campus_id_name'=>'campus_name']);
}
}

55
niucloud/app/model/personnel_data/PersonnelData.php

@ -0,0 +1,55 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\model\personnel_data;
use core\base\BaseModel;
use think\model\concern\SoftDelete;
use think\model\relation\HasMany;
use think\model\relation\HasOne;
/**
* 课程教学大纲模型
* Class LessonCourseTeaching
* @package app\model\lesson_course_teaching
*/
class PersonnelData extends BaseModel
{
use SoftDelete;
/**
* 数据表主键
* @var string
*/
protected $pk = 'id';
/**
* 模型名称
* @var string
*/
protected $name = 'personnel';
/**
* 定义软删除标记字段.
* @var string
*/
protected $deleteTime = 'delete_time';
/**
* 定义软删除字段的默认值.
* @var int
*/
protected $defaultSoftDelete = 0;
}

58
niucloud/app/model/six_speed_modification_log/SixSpeedModificationLog.php

@ -16,6 +16,10 @@ use think\model\concern\SoftDelete;
use think\model\relation\HasMany;
use think\model\relation\HasOne;
use app\model\campus\Campus;
use app\model\personnel\Personnel;
/**
* 六一速修改记录模型
* Class SixSpeedModificationLog
@ -55,7 +59,7 @@ class SixSpeedModificationLog extends BaseModel
}
/**
* 搜索器:六一速修改记录校区ID
* 搜索器:六一速修改记录校区
* @param $value
* @param $data
*/
@ -66,57 +70,17 @@ class SixSpeedModificationLog extends BaseModel
}
}
/**
* 搜索器:六一速修改记录人员ID
* @param $value
* @param $data
*/
public function searchStaffIdAttr($query, $value, $data)
{
if ($value) {
$query->where("staff_id", $value);
}
}
/**
* 搜索器:六一速修改记录修改的字段
* @param $value
* @param $data
*/
public function searchModifiedFieldAttr($query, $value, $data)
{
if ($value) {
$query->where("modified_field", $value);
}
}
/**
* 搜索器:六一速修改记录修改前的值
* @param $value
* @param $data
*/
public function searchOldValueAttr($query, $value, $data)
{
if ($value) {
$query->where("old_value", $value);
}
}
/**
* 搜索器:六一速修改记录修改后的值
* @param $value
* @param $data
*/
public function searchNewValueAttr($query, $value, $data)
{
if ($value) {
$query->where("new_value", $value);
}
}
public function campus(){
return $this->hasOne(Campus::class, 'id', 'campus_id')->joinType('left')->withField('campus_name,id')->bind(['campus_id_name'=>'campus_name']);
}
public function personnel(){
return $this->hasOne(Personnel::class, 'id', 'staff_id')->joinType('left')->withField('name,id')->bind(['staff_id_name'=>'name']);
}
}

28
niucloud/app/service/admin/campus_person_role/CampusPersonRoleService.php

@ -12,6 +12,10 @@
namespace app\service\admin\campus_person_role;
use app\model\campus_person_role\CampusPersonRole;
use app\model\campus\Campus;
use app\model\personnel\Personnel;
use app\model\sys\SysRole;
use app\model\departments\Departments;
use core\base\BaseAdminService;
@ -39,7 +43,7 @@ class CampusPersonRoleService extends BaseAdminService
$field = 'id,campus_id,person_id,role_id,dept_id,created_at,updated_at,deleted_at';
$order = 'id desc';
$search_model = $this->model->withSearch(["id","campus_id","person_id","role_id","dept_id","created_at","updated_at","deleted_at"], $where)->field($field)->order($order);
$search_model = $this->model->withSearch(["id","campus_id","person_id","role_id","dept_id"], $where)->with(['campus','personnel','sysRole','departments'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
@ -53,7 +57,7 @@ class CampusPersonRoleService extends BaseAdminService
{
$field = 'id,campus_id,person_id,role_id,dept_id,created_at,updated_at,deleted_at';
$info = $this->model->field($field)->where([['id', "=", $id]])->findOrEmpty()->toArray();
$info = $this->model->field($field)->where([['id', "=", $id]])->with(['campus','personnel','sysRole','departments'])->findOrEmpty()->toArray();
return $info;
}
@ -95,5 +99,25 @@ class CampusPersonRoleService extends BaseAdminService
}
public function getCampusAll(){
$campusModel = new Campus();
return $campusModel->select()->toArray();
}
public function getPersonnelAll(){
$personnelModel = new Personnel();
return $personnelModel->select()->toArray();
}
public function getSysRoleAll(){
$sysRoleModel = new SysRole();
return $sysRoleModel->select()->toArray();
}
public function getDepartmentsAll(){
$departmentsModel = new Departments();
return $departmentsModel->select()->toArray();
}
}

10
niucloud/app/service/admin/customer_resources/CustomerResourcesService.php

@ -12,6 +12,7 @@
namespace app\service\admin\customer_resources;
use app\model\customer_resources\CustomerResources;
use app\model\campus\Campus;
use core\base\BaseAdminService;
@ -39,7 +40,7 @@ class CustomerResourcesService extends BaseAdminService
$field = 'id,create_year_month,create_date,source,source_channel,consultant,name,age,gender,phone_number,demand,purchasing_power,cognitive_idea,optional_class_time,distance,decision_maker,initial_intent,campus,created_at,updated_at,deleted_at,status';
$order = 'id desc';
$search_model = $this->model->withSearch(["name","phone_number"], $where)->field($field)->order($order);
$search_model = $this->model->where(get_campus_where($this->uid))->withSearch(["name","phone_number"], $where)->with(['campus'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
@ -64,6 +65,7 @@ class CustomerResourcesService extends BaseAdminService
*/
public function add(array $data)
{
$data['consultant'] = $this->username;
$res = $this->model->create($data);
return $res->id;
@ -78,6 +80,7 @@ class CustomerResourcesService extends BaseAdminService
public function edit(int $id, array $data)
{
$data['consultant'] = $this->username;
$this->model->where([['id', '=', $id]])->update($data);
return true;
}
@ -95,5 +98,10 @@ class CustomerResourcesService extends BaseAdminService
}
public function getCampusAll(){
$campusModel = new Campus();
return $campusModel->select()->toArray();
}
}

14
niucloud/app/service/admin/departments/DepartmentsService.php

@ -12,6 +12,7 @@
namespace app\service\admin\departments;
use app\model\departments\Departments;
use app\model\departments\Departments as Departments_copy;
use core\base\BaseAdminService;
@ -36,10 +37,10 @@ class DepartmentsService extends BaseAdminService
*/
public function getPage(array $where = [])
{
$field = 'id,department_name,parent_department_id,created_at,updated_at';
$field = 'id,department_name,parent_department_id,created_at,updated_at,deleted_at';
$order = 'id desc';
$search_model = $this->model->withSearch(["id","department_name","parent_department_id"], $where)->field($field)->order($order);
$search_model = $this->model->withSearch(["id","department_name","parent_department_id"], $where)->with(['departments'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
@ -51,9 +52,9 @@ class DepartmentsService extends BaseAdminService
*/
public function getInfo(int $id)
{
$field = 'id,department_name,parent_department_id,created_at,updated_at';
$field = 'id,department_name,parent_department_id,created_at,updated_at,deleted_at';
$info = $this->model->field($field)->where([['id', "=", $id]])->findOrEmpty()->toArray();
$info = $this->model->field($field)->where([['id', "=", $id]])->with(['departments'])->findOrEmpty()->toArray();
return $info;
}
@ -95,5 +96,10 @@ class DepartmentsService extends BaseAdminService
}
public function getDepartmentsAll(){
$departmentsModel = new Departments_copy();
return $departmentsModel->select()->toArray();
}
}

634
niucloud/app/service/admin/lesson_course_teaching/LessonCourseTeachingService.php

@ -0,0 +1,634 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\service\admin\lesson_course_teaching;
use app\model\lesson_course_teaching\LessonCourseTeaching;
use app\model\personnel_data\PersonnelData;
use core\base\BaseAdminService;
/**
* 教研管理服务层
* Class LessonCourseTeachingService
* @package app\service\admin\lesson_course_teaching
*/
class LessonCourseTeachingService extends BaseAdminService
{
public function __construct()
{
parent::__construct();
$this->model = new LessonCourseTeaching();
}
/**
* 获取课程教学大纲列表
* @param array $where
* @return array
*/
public function getPage(array $where = [])
{
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission';
$order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
/**
* 添加课程教学大纲
* @param array $data
* @return mixed
*/
public function add(array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$res = $this->model->create($data);
return $res->id;
}
/**
* 课程教学大纲编辑
* @param int $id
* @param array $data
* @return bool
*/
public function edit(int $id, array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$this->model->where([['id', '=', $id]])->update($data);
return true;
}
/**
* 获取跳绳教案库列表
* @param array $where
* @return array
*/
public function jumpPetPage(array $where = [])
{
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission';
$order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
/**
* 添加跳绳教案库
* @param array $data
* @return mixed
*/
public function jumpAdd(array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$res = $this->model->create($data);
return $res->id;
}
/**
* 跳绳教案库编辑
* @param int $id
* @param array $data
* @return bool
*/
public function jumpEdit(int $id, array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$this->model->where([['id', '=', $id]])->update($data);
return true;
}
/**
* 获取增高教案库列表
* @param array $where
* @return array
*/
public function enPetPage(array $where = [])
{
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission';
$order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
/**
* 添加增高教案库
* @param array $data
* @return mixed
*/
public function enAdd(array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$res = $this->model->create($data);
return $res->id;
}
/**
* 跳绳增高教案库
* @param int $id
* @param array $data
* @return bool
*/
public function enEdit(int $id, array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$this->model->where([['id', '=', $id]])->update($data);
return true;
}
/**
* 获取跳高教案库列表
* @param array $where
* @return array
*/
public function basketballPetPage(array $where = [])
{
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission';
$order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
/**
* 添加跳高教案库
* @param array $data
* @return mixed
*/
public function basketballAdd(array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$res = $this->model->create($data);
return $res->id;
}
/**
* 跳绳跳高教案库
* @param int $id
* @param array $data
* @return bool
*/
public function basketballEdit(int $id, array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$this->model->where([['id', '=', $id]])->update($data);
return true;
}
/**
* 获取跳高教案库列表
* @param array $where
* @return array
*/
public function strengPetPage(array $where = [])
{
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission';
$order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
/**
* 添加跳高教案库
* @param array $data
* @return mixed
*/
public function strengAdd(array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$res = $this->model->create($data);
return $res->id;
}
/**
* 跳绳跳高教案库
* @param int $id
* @param array $data
* @return bool
*/
public function strengEdit(int $id, array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$this->model->where([['id', '=', $id]])->update($data);
return true;
}
/**
* 获取跳高教案库列表
* @param array $where
* @return array
*/
public function ninjaPetPage(array $where = [])
{
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission';
$order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
/**
* 添加跳高教案库
* @param array $data
* @return mixed
*/
public function ninjaAdd(array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$res = $this->model->create($data);
return $res->id;
}
/**
* 跳绳跳高教案库
* @param int $id
* @param array $data
* @return bool
*/
public function ninjaEdit(int $id, array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$this->model->where([['id', '=', $id]])->update($data);
return true;
}
/**
* 获取跳高教案库列表
* @param array $where
* @return array
*/
public function securityPetPage(array $where = [])
{
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission';
$order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
/**
* 添加跳高教案库
* @param array $data
* @return mixed
*/
public function securityAdd(array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$res = $this->model->create($data);
return $res->id;
}
/**
* 跳绳跳高教案库
* @param int $id
* @param array $data
* @return bool
*/
public function securityEdit(int $id, array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$this->model->where([['id', '=', $id]])->update($data);
return true;
}
/**
* 获取体能教案库列表
* @param array $where
* @return array
*/
public function physicalPetPage(array $where = [])
{
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission';
$order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
/**
* 添加体能教案库
* @param array $data
* @return mixed
*/
public function physicalAdd(array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$res = $this->model->create($data);
return $res->id;
}
/**
* 跳绳体能教案库
* @param int $id
* @param array $data
* @return bool
*/
public function physicalEdit(int $id, array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$this->model->where([['id', '=', $id]])->update($data);
return true;
}
/**
* 获取热身动做列表
* @param array $where
* @return array
*/
public function actionPetPage(array $where = [])
{
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission';
$order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
/**
* 添加热身动做
* @param array $data
* @return mixed
*/
public function actionAdd(array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$res = $this->model->create($data);
return $res->id;
}
/**
* 热身动做
* @param int $id
* @param array $data
* @return bool
*/
public function actionEdit(int $id, array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$this->model->where([['id', '=', $id]])->update($data);
return true;
}
/**
* 获取趣味游戏列表
* @param array $where
* @return array
*/
public function gamesPetPage(array $where = [])
{
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission';
$order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
/**
* 添加趣味游戏
* @param array $data
* @return mixed
*/
public function gamesAdd(array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$res = $this->model->create($data);
return $res->id;
}
/**
* 趣味游戏
* @param int $id
* @param array $data
* @return bool
*/
public function gamesEdit(int $id, array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$this->model->where([['id', '=', $id]])->update($data);
return true;
}
/**
* 获取趣味游戏列表
* @param array $where
* @return array
*/
public function fitnessPetPage(array $where = [])
{
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission';
$order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
/**
* 添加趣味游戏
* @param array $data
* @return mixed
*/
public function fitnessAdd(array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$res = $this->model->create($data);
return $res->id;
}
/**
* 趣味游戏
* @param int $id
* @param array $data
* @return bool
*/
public function fitnessEdit(int $id, array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$this->model->where([['id', '=', $id]])->update($data);
return true;
}
/**
* 获取趣味游戏列表
* @param array $where
* @return array
*/
public function relaxationPetPage(array $where = [])
{
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission';
$order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
/**
* 添加趣味游戏
* @param array $data
* @return mixed
*/
public function relaxationAdd(array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$res = $this->model->create($data);
return $res->id;
}
/**
* 趣味游戏
* @param int $id
* @param array $data
* @return bool
*/
public function relaxationEdit(int $id, array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$this->model->where([['id', '=', $id]])->update($data);
return true;
}
public function publicPetPage(array $where = [])
{
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission';
$order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
public function publicAdd(array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$res = $this->model->create($data);
return $res->id;
}
public function publicEdit(int $id, array $data)
{
if (isset($data['user_permission']) && is_array($data['user_permission'])) {
$data['user_permission'] = implode(',', $data['user_permission']);
}
$this->model->where([['id', '=', $id]])->update($data);
return true;
}
/**
* 获取教研管理信息
* @param int $id
* @return array
*/
public function getInfo(int $id)
{
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission';
$info = $this->model->field($field)->where([['id', "=", $id]])->with(['personnelData'])->findOrEmpty()->toArray();
$info['status'] = strval($info['status']);
return $info;
}
/**
* 删除教研管理
* @param int $id
* @return bool
*/
public function del(int $id)
{
$model = $this->model->where([['id', '=', $id]])->find();
$res = $model->delete();
return $res;
}
public function getPersonnelDataAll(){
$personnelDataModel = new PersonnelData();
return $personnelDataModel->where('is_sys_user',1)->select()->toArray();
}
}

111
niucloud/app/service/admin/market_performance/MarketPerformanceService.php

@ -0,0 +1,111 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\service\admin\market_performance;
use app\model\market_performance\MarketPerformance;
use app\model\personnel\Personnel;
use app\model\campus\Campus;
use core\base\BaseAdminService;
/**
* 市场绩效服务层
* Class MarketPerformanceService
* @package app\service\admin\market_performance
*/
class MarketPerformanceService extends BaseAdminService
{
public function __construct()
{
parent::__construct();
$this->model = new MarketPerformance();
}
/**
* 获取市场绩效列表
* @param array $where
* @return array
*/
public function getPage(array $where = [])
{
$field = 'id,personnel_id,campus_id,performance_amount,resource_count,performance_date,performance_config,performance_algorithm,status,created_at,updated_at';
$order = 'id desc';
$search_model = $this->model->where(get_campus_where($this->uid))->withSearch(["campus_id","performance_amount"], $where)->with(['personnel','campus'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
/**
* 获取市场绩效信息
* @param int $id
* @return array
*/
public function getInfo(int $id)
{
$field = 'id,personnel_id,campus_id,performance_amount,resource_count,performance_date,performance_config,performance_algorithm,status,created_at,updated_at';
$info = $this->model->field($field)->where([['id', "=", $id]])->with(['personnel','campus'])->findOrEmpty()->toArray();
return $info;
}
/**
* 添加市场绩效
* @param array $data
* @return mixed
*/
public function add(array $data)
{
$res = $this->model->create($data);
return $res->id;
}
/**
* 市场绩效编辑
* @param int $id
* @param array $data
* @return bool
*/
public function edit(int $id, array $data)
{
$this->model->where([['id', '=', $id]])->update($data);
return true;
}
/**
* 删除市场绩效
* @param int $id
* @return bool
*/
public function del(int $id)
{
$model = $this->model->where([['id', '=', $id]])->find();
$res = $model->delete();
return $res;
}
public function getPersonnelAll(){
$personnelModel = new Personnel();
return $personnelModel->select()->toArray();
}
public function getCampusAll(){
$campusModel = new Campus();
return $campusModel->select()->toArray();
}
}

16
niucloud/app/service/admin/six_speed_modification_log/SixSpeedModificationLogService.php

@ -12,6 +12,8 @@
namespace app\service\admin\six_speed_modification_log;
use app\model\six_speed_modification_log\SixSpeedModificationLog;
use app\model\campus\Campus;
use app\model\personnel\Personnel;
use core\base\BaseAdminService;
@ -39,7 +41,7 @@ class SixSpeedModificationLogService extends BaseAdminService
$field = 'id,campus_id,staff_id,modified_field,old_value,new_value,is_rollback,rollback_time,created_at,updated_at';
$order = 'id desc';
$search_model = $this->model->withSearch(["id","campus_id","staff_id","modified_field","old_value","new_value"], $where)->field($field)->order($order);
$search_model = $this->model->withSearch(["id","campus_id"], $where)->with(['campus','personnel'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
return $list;
}
@ -53,7 +55,7 @@ class SixSpeedModificationLogService extends BaseAdminService
{
$field = 'id,campus_id,staff_id,modified_field,old_value,new_value,is_rollback,rollback_time,created_at,updated_at';
$info = $this->model->field($field)->where([['id', "=", $id]])->findOrEmpty()->toArray();
$info = $this->model->field($field)->where([['id', "=", $id]])->with(['campus','personnel'])->findOrEmpty()->toArray();
return $info;
}
@ -95,5 +97,15 @@ class SixSpeedModificationLogService extends BaseAdminService
}
public function getCampusAll(){
$campusModel = new Campus();
return $campusModel->select()->toArray();
}
public function getPersonnelAll(){
$personnelModel = new Personnel();
return $personnelModel->select()->toArray();
}
}

19
niucloud/app/service/admin/sys/SystemService.php

@ -12,6 +12,7 @@
namespace app\service\admin\sys;
use app\job\sys\CheckJob;
use app\model\sys\SysConfig;
use app\service\core\sys\CoreSysConfigService;
use core\base\BaseAdminService;
use think\facade\Db;
@ -169,4 +170,22 @@ class SystemService extends BaseAdminService
}
return false;
}
public function get_yjpz_config(){
$config = new SysConfig();
$data = $config->where(['config_key' => 'priceRules'])->value("value");
return $data;
}
public function yjpz_config(array $data){
$config = new SysConfig();
$config->where(['config_key' => 'priceRules'])->update([
'value' => json_encode($data['priceRules'])
]);
return true;
}
}

4
niucloud/app/validate/campus_person_role/CampusPersonRole.php

@ -32,8 +32,8 @@ class CampusPersonRole extends BaseValidate
];
protected $scene = [
"add" => ['campus_id', 'person_id', 'role_id', 'dept_id', 'created_at', 'updated_at', 'deleted_at'],
"edit" => ['campus_id', 'person_id', 'role_id', 'dept_id', 'created_at', 'updated_at', 'deleted_at']
"add" => ['campus_id', 'person_id', 'role_id', 'dept_id'],
"edit" => ['campus_id', 'person_id', 'role_id', 'dept_id']
];
}

35
niucloud/app/validate/lesson_course_teaching/LessonCourseTeaching.php

@ -0,0 +1,35 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\validate\lesson_course_teaching;
use core\base\BaseValidate;
/**
* 课程教学大纲验证器
* Class LessonCourseTeaching
* @package addon\app\validate\lesson_course_teaching
*/
class LessonCourseTeaching extends BaseValidate
{
protected $rule = [
];
protected $message = [
];
protected $scene = [
"add" => ['title', 'image', 'type', 'content', 'status'],
"edit" => ['title', 'image', 'type', 'content', 'status']
];
}

35
niucloud/app/validate/market_performance/MarketPerformance.php

@ -0,0 +1,35 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\validate\market_performance;
use core\base\BaseValidate;
/**
* 市场绩效验证器
* Class MarketPerformance
* @package addon\app\validate\market_performance
*/
class MarketPerformance extends BaseValidate
{
protected $rule = [
];
protected $message = [
];
protected $scene = [
"add" => ['personnel_id', 'campus_id', 'performance_amount'],
"edit" => ['personnel_id', 'campus_id', 'performance_amount']
];
}
Loading…
Cancel
Save