于宏哲PHP 10 months ago
parent
commit
42e91c9c39
  1. 19
      admin/src/app/lang/zh-cn/customer_resources.customer_resources.json
  2. 92
      admin/src/app/views/binding_personnel/binding_personnel.vue
  3. 10
      admin/src/app/views/campus_person_role/components/campus-person-role-edit.vue
  4. 8
      admin/src/app/views/communication_records/communication_records.vue
  5. 10
      admin/src/app/views/customer_resource_changes/customer_resource_changes.vue
  6. 6
      admin/src/app/views/customer_resources/components/UserProfile.vue
  7. 41
      admin/src/app/views/customer_resources/components/customer-resources-edit.vue
  8. 10
      admin/src/app/views/customer_resources/customer_resources.vue
  9. 1
      admin/src/app/views/lesson_course_teaching/components/lesson-course-teaching-edit.vue
  10. 226
      admin/src/app/views/lesson_course_teaching/lesson_course_teaching.vue
  11. 998
      admin/src/app/views/personnel/components/personnel-edit.vue
  12. 7
      admin/src/app/views/six_speed_modification_log/six_speed_modification_log.vue
  13. 3
      niucloud/app/adminapi/controller/communication_records/CommunicationRecords.php
  14. 4
      niucloud/app/adminapi/controller/lesson_course_teaching/LessonCourseTeaching.php
  15. 3
      niucloud/app/adminapi/controller/personnel/Personnel.php
  16. 5
      niucloud/app/common.php
  17. 41
      niucloud/app/model/personnel/PersonnelInfo.php
  18. 5
      niucloud/app/service/admin/communication_records/CommunicationRecordsService.php
  19. 52
      niucloud/app/service/admin/lesson_course_teaching/LessonCourseTeachingService.php
  20. 14
      niucloud/app/service/admin/personnel/PersonnelService.php

19
admin/src/app/lang/zh-cn/customer_resources.customer_resources.json

@ -101,5 +101,24 @@
"updatePhysicalTest": "编辑体测", "updatePhysicalTest": "编辑体测",
"physicalTestDeleteTips": "确定要删除该数据吗?", "physicalTestDeleteTips": "确定要删除该数据吗?",
"startDate": "请选择开始时间", "startDate": "请选择开始时间",
"endDate": "请选择结束时间",
"resourceId": "资源",
"resourceIdPlaceholder": "全部",
"resourceType": "资源类型",
"resourceTypePlaceholder": "请输入资源类型",
"communicationType": "沟通类型",
"communicationTypePlaceholder": "请输入沟通类型",
"communicationResult": "沟通结果",
"communicationResultPlaceholder": "请输入沟通结果",
"communicationTime": "沟通时间",
"communicationTimePlaceholder": "请输入沟通时间",
"remarks": "备注",
"remarksPlaceholder": "请输入备注",
"tag": "标签",
"tagPlaceholder": "请输入标签",
"addCommunicationRecords": "添加沟通记录",
"updateCommunicationRecords": "编辑沟通记录",
"communicationRecordsDeleteTips": "确定要删除该数据吗?",
"startDate": "请选择开始时间",
"endDate": "请选择结束时间" "endDate": "请选择结束时间"
} }

92
admin/src/app/views/binding_personnel/binding_personnel.vue

@ -23,6 +23,44 @@
:placeholder="t('userPhone')" :placeholder="t('userPhone')"
/> />
</el-form-item> </el-form-item>
<el-form-item label="角色" prop="role_id">
<el-select
class="input-width"
v-model="lessonCourseTeachingTable.searchParam.role_id"
clearable
placeholder="请选择角色"
>
<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="部门">
<el-select
class="input-width"
v-model="lessonCourseTeachingTable.searchParam.dept_id"
clearable
placeholder="请选择部门"
>
<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-item> <el-form-item>
<el-button type="primary" @click="loadLessonCourseTeachingList()">{{ <el-button type="primary" @click="loadLessonCourseTeachingList()">{{
t('search') t('search')
@ -35,6 +73,7 @@
<div class="mt-[10px]"> <div class="mt-[10px]">
<el-table <el-table
ref="lessonCourseTableRef"
:data="lessonCourseTeachingTable.data" :data="lessonCourseTeachingTable.data"
size="large" size="large"
v-loading="lessonCourseTeachingTable.loading" v-loading="lessonCourseTeachingTable.loading"
@ -83,16 +122,7 @@
:show-overflow-tooltip="true" :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, 1)">{{-->
<!-- t('delete')-->
<!-- }}</el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table> </el-table>
<div class="mt-[16px] flex justify-end"> <div class="mt-[16px] flex justify-end">
<el-pagination <el-pagination
@ -155,7 +185,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, reactive, computed, watch } from 'vue' import { ref, reactive, computed, watch,nextTick } from 'vue'
import { useDictionary } from '@/app/api/dict' import { useDictionary } from '@/app/api/dict'
import { t } from '@/lang' import { t } from '@/lang'
import type { FormInstance } from 'element-plus' import type { FormInstance } from 'element-plus'
@ -167,6 +197,12 @@ import {
getWithPersonnelDataList, getWithPersonnelDataList,
setBindingModule, setBindingModule,
} from '@/app/api/lesson_course_teaching' } from '@/app/api/lesson_course_teaching'
import {
role_all,
departments_all,
} from '@/app/api/sys'
import { ElMessage, ElMessageBox } from 'element-plus'; import { ElMessage, ElMessageBox } from 'element-plus';
let showDialog = ref(false) let showDialog = ref(false)
const loading = ref(false) const loading = ref(false)
@ -180,9 +216,42 @@ let lessonCourseTeachingTable = reactive({
searchParam: { searchParam: {
name: '', name: '',
phone: '', phone: '',
dept_id:'',
role_id:''
}, },
}) })
const lessonCourseTableRef = ref()
watch(
() => lessonCourseTeachingTable.data,
async (newData) => {
if (newData.length > 0) {
await nextTick()
newData.forEach((row) => {
lessonCourseTableRef.value.toggleRowSelection(row, false)
if(lessonCourseTeachingTable.searchParam.dept_id || lessonCourseTeachingTable.searchParam.role_id){
lessonCourseTableRef.value.toggleRowSelection(row, true)
}
})
}
},
{ deep: true }
)
const roleIdList = ref([] as any[])
const setRoleIdList = async () => {
roleIdList.value = await (await role_all({})).data
}
setRoleIdList()
const deptIdList = ref([] as any[])
const setDeptIdList = async () => {
deptIdList.value = await (await departments_all({})).data
}
setDeptIdList()
const multipleSelection = ref<[]>([]) const multipleSelection = ref<[]>([])
const binding_module = ref('') const binding_module = ref('')
const handleSelectionChange = (val: []) => { const handleSelectionChange = (val: []) => {
@ -190,6 +259,7 @@ const handleSelectionChange = (val: []) => {
} }
const loadLessonCourseTeachingList = (page: number = 1) => { const loadLessonCourseTeachingList = (page: number = 1) => {
multipleSelection.value = [];
lessonCourseTeachingTable.loading = true lessonCourseTeachingTable.loading = true
lessonCourseTeachingTable.page = page lessonCourseTeachingTable.page = page

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

@ -31,7 +31,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="人员" prop="person_id" v-if="!formData.person_id"> <el-form-item label="人员" prop="person_id" v-if="!person_id">
<el-select <el-select
class="input-width" class="input-width"
v-model="formData.person_id" v-model="formData.person_id"
@ -160,9 +160,6 @@ const formRef = ref<FormInstance>()
// //
const formRules = computed(() => { const formRules = computed(() => {
return { return {
campus_id: [
{ required: true, message: "请选择校区", trigger: 'blur' },
],
person_id: [ person_id: [
{ required: true, message: "请选择人员", trigger: 'blur' }, { required: true, message: "请选择人员", trigger: 'blur' },
], ],
@ -223,13 +220,18 @@ const setDeptIdList = async () => {
deptIdList.value = await (await getWithDepartmentsList({})).data deptIdList.value = await (await getWithDepartmentsList({})).data
} }
setDeptIdList() setDeptIdList()
const person_id = ref('')
const setFormData = async (row: any = null) => { const setFormData = async (row: any = null) => {
person_id.value = '';
console.log(person_id.value)
Object.assign(formData, initialFormData) Object.assign(formData, initialFormData)
if (row.dept_id) { if (row.dept_id) {
formData.dept_id = parseInt(row.dept_id) formData.dept_id = parseInt(row.dept_id)
} }
if (row.person_id) { if (row.person_id) {
formData.person_id = parseInt(row.person_id) formData.person_id = parseInt(row.person_id)
person_id.value = parseInt(row.person_id)
} }
loading.value = true loading.value = true
if (row.id) { if (row.id) {

8
admin/src/app/views/communication_records/communication_records.vue

@ -2,7 +2,7 @@
<div class="main-container"> <div class="main-container">
<el-card class="box-card !border-none" shadow="never"> <el-card class="box-card !border-none" shadow="never">
<div class="flex justify-between items-center"> <div class="flex justify-between items-center">
<span class="text-lg">{{ pageName }}</span> <!-- <span class="text-lg">{{ pageName }}</span> -->
<!-- <el-button type="primary" @click="addEvent"> <!-- <el-button type="primary" @click="addEvent">
{{ t('addCommunicationRecords') }} {{ t('addCommunicationRecords') }}
</el-button> --> </el-button> -->
@ -209,6 +209,11 @@ import { useRoute } from 'vue-router'
const route = useRoute() const route = useRoute()
const pageName = route.meta.title const pageName = route.meta.title
const props = defineProps({
customer_resource_id: [String, Number]
})
let communicationRecordsTable = reactive({ let communicationRecordsTable = reactive({
page: 1, page: 1,
limit: 10, limit: 10,
@ -216,6 +221,7 @@ let communicationRecordsTable = reactive({
loading: true, loading: true,
data: [], data: [],
searchParam: { searchParam: {
customer_resource_id: props.customer_resource_id,
name: '', name: '',
phone_number: '', phone_number: '',
campus: '', campus: '',

10
admin/src/app/views/customer_resource_changes/customer_resource_changes.vue

@ -3,8 +3,11 @@
<el-card class="box-card !border-none" shadow="never"> <el-card class="box-card !border-none" shadow="never">
<div class="flex justify-between items-center"> <div class="flex justify-between items-center">
<span class="text-lg">{{ pageName }}</span> <span class="text-lg">{{ pageName }}</span>
<el-button type="default" @click="goBack">返回</el-button>
</div> </div>
<div class="mt-[10px]"> <div class="mt-[10px]">
<el-table <el-table
:data="customerResourceChangesTable.data" :data="customerResourceChangesTable.data"
@ -72,10 +75,13 @@ import {
import { img } from '@/utils/common' import { img } from '@/utils/common'
import { ElMessageBox, FormInstance } from 'element-plus' import { ElMessageBox, FormInstance } from 'element-plus'
import Edit from '@/app/views/customer_resource_changes/components/customer-resource-changes-edit.vue' import Edit from '@/app/views/customer_resource_changes/components/customer-resource-changes-edit.vue'
import { useRoute } from 'vue-router' import { useRoute,useRouter } from 'vue-router'
const route = useRoute() const route = useRoute()
const pageName = route.meta.title const pageName = route.meta.title
const router = useRouter()
const goBack = () => {
router.go(-1)// router.go(-1)
}
const props = defineProps({ const props = defineProps({
value: Number value: Number
}) })

6
admin/src/app/views/customer_resources/components/UserProfile.vue

@ -28,6 +28,7 @@
<el-tab-pane label="修改日志" name="log" /> <el-tab-pane label="修改日志" name="log" />
<el-tab-pane label="学生情况" name="student" /> <el-tab-pane label="学生情况" name="student" />
<el-tab-pane label="订单列表" name="orders" /> <el-tab-pane label="订单列表" name="orders" />
<el-tab-pane label="沟通记录列表" name="communication_records" />
</el-tabs> </el-tabs>
<!-- 六要素信息卡片 --> <!-- 六要素信息卡片 -->
@ -80,6 +81,10 @@
<orders :value="user.id"/> <orders :value="user.id"/>
</el-card> </el-card>
<el-card v-if="activeTab === 'communication_records'">
<CommunicationRecords :customer_resource_id="user.id"/>
</el-card>
</el-dialog> </el-dialog>
</template> </template>
@ -90,6 +95,7 @@
import Log from '@/app/views/customer_resources/components/log.vue' import Log from '@/app/views/customer_resources/components/log.vue'
import Student from '@/app/views/customer_resources/components/student_courses.vue' import Student from '@/app/views/customer_resources/components/student_courses.vue'
import Orders from '@/app/views/customer_resources/components/order_table.vue' import Orders from '@/app/views/customer_resources/components/order_table.vue'
import CommunicationRecords from '@/app/views/communication_records/communication_records.vue'
let showDialog = ref(false) let showDialog = ref(false)

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

@ -110,18 +110,29 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="t('distance')" prop="distance"> <el-form-item :label="t('distance')" prop="distance">
<el-input v-model="formData.distance" clearable <el-select class="input-width" v-model="formData.distance" clearable
:placeholder="t('distancePlaceholder')" class="input-width" /> :placeholder="t('distancePlaceholder')">
<el-option label="远60分钟以上路程" value="远60分钟以上路程"></el-option>
<el-option label="适中20-60分钟路程" value="适中20-60分钟路程"></el-option>
<el-option label="近20分钟以内" value="近20分钟以内"></el-option>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="t('decisionMaker')" prop="decision_maker"> <el-form-item :label="t('decisionMaker')" prop="decision_maker">
<el-input v-model="formData.decision_maker" clearable <el-select class="input-width" v-model="formData.decision_maker" clearable
:placeholder="t('decisionMakerPlaceholder')" class="input-width" /> :placeholder="t('decisionMakerPlaceholder')">
</el-form-item> <el-option label="妈妈" value="妈妈"></el-option>
<el-option label="爸爸" value="爸爸"></el-option>
<el-option label="双亲" value="双亲"></el-option>
<el-option label="长辈" value="长辈"></el-option>
<el-option label="其他亲属" value="其他亲属"></el-option>
<el-option label="不详" value="不详"></el-option>
</el-select>
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
@ -138,7 +149,7 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="t('campus')" prop="campus"> <el-form-item :label="t('campus')" prop="campus">
<el-select class="input-width" v-model="formData.campus" clearable <el-select class="input-width" v-model="formData.campus" clearable
:placeholder="t('campusPlaceholder')"> :placeholder="t('campusPlaceholder')" :disabled="!!campus">
<el-option label="请选择" value=""></el-option> <el-option label="请选择" value=""></el-option>
<el-option v-for="(item, index) in campusList" :key="index" <el-option v-for="(item, index) in campusList" :key="index"
:label="item['campus_name']" :value="item['id']" /> :label="item['campus_name']" :value="item['id']" />
@ -172,11 +183,11 @@
</el-form> </el-form>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="客户六要素" name="sixElements"> <el-tab-pane label="客户六要素" name="sixElements" v-if="pageName != '客户资源列表'">
<!-- 客户六要素表单内容 --> <!-- 客户六要素表单内容 -->
<el-form :model="formData" label-width="120px"> <el-form :model="formData" label-width="120px">
<el-row :gutter="20"> <!-- <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="需求购买力" prop="purchase_power"> <el-form-item label="需求购买力" prop="purchase_power">
@ -217,7 +228,7 @@
class="input-width" /> class="input-width" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row> -->
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="沟通备注" prop="communication"> <el-form-item label="沟通备注" prop="communication">
@ -271,7 +282,7 @@
</el-col> </el-col>
</el-row> </el-row>
<el-form-item label="是否关单" prop="is_closed"> <el-form-item label="是否关单" prop="is_closed">
<el-select class="input-width" v-model="formData.is_closed" clearable placeholder="请选择是否关单"> <el-select class="input-width" v-model="formData.is_closed" clearable placeholder="请选择是否关单" disabled >
<el-option label="请选择" value=""></el-option> <el-option label="请选择" value=""></el-option>
<el-option v-for="(item, index) in is_closedList" :key="index" :label="item.name" <el-option v-for="(item, index) in is_closedList" :key="index" :label="item.name"
:value="Number(item.value)" /> :value="Number(item.value)" />
@ -314,6 +325,9 @@
getSixSpeedInfo, getSixSpeedInfo,
getWithCustomerResourcesList, getWithCustomerResourcesList,
} from '@/app/api/six_speed' } from '@/app/api/six_speed'
import { useRouter, useRoute } from 'vue-router'
const route = useRoute()
const pageName = route.meta.title;
const activeTab = ref('base') const activeTab = ref('base')
let showDialog = ref(false) let showDialog = ref(false)
@ -614,6 +628,7 @@
resourceIdList.value = await (await getWithCustomerResourcesList({})).data resourceIdList.value = await (await getWithCustomerResourcesList({})).data
} }
setResourceIdList() setResourceIdList()
const campus = ref('')
const setFormData = async (row : any = null) => { const setFormData = async (row : any = null) => {
Object.assign(formData, initialFormData) Object.assign(formData, initialFormData)
@ -625,6 +640,8 @@
if (data[key] != undefined) formData[key] = data[key] if (data[key] != undefined) formData[key] = data[key]
}) })
} }
campus.value = formData.campus;
loading.value = false loading.value = false
} }

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

@ -153,9 +153,12 @@
</el-table-column> </el-table-column>
<el-table-column :label="t('operation')" fixed="right" min-width="300" <el-table-column :label="t('operation')" fixed="right" min-width="350"
v-if="customerResourcesTable.searchParam.type == 'zylb'"> v-if="customerResourcesTable.searchParam.type == 'zylb'">
<template #default="{ row }"> <template #default="{ row }">
<el-button type="primary" link @click="UserPro(row)">客户详情</el-button>
<el-button type="primary" link @click="editEvent(row)">{{ t('edit') }}</el-button> <el-button type="primary" link @click="editEvent(row)">{{ t('edit') }}</el-button>
<el-button type="primary" link @click="orderList(row.id)">订单列表</el-button> <el-button type="primary" link @click="orderList(row.id)">订单列表</el-button>
@ -256,6 +259,11 @@
} }
} }
const UserPro = (row) => {
UserProfile(row)
}
// const type = pageName == '' ? 'yjfp' : 'khzy'; // const type = pageName == '' ? 'yjfp' : 'khzy';
// //

1
admin/src/app/views/lesson_course_teaching/components/lesson-course-teaching-edit.vue

@ -129,6 +129,7 @@ const initialFormData = {
type: '', type: '',
content: '', content: '',
status: '', status: '',
url:''
// user_permission: [], // user_permission: [],
} }
const formData: Record<string, any> = reactive({ ...initialFormData }) const formData: Record<string, any> = reactive({ ...initialFormData })

226
admin/src/app/views/lesson_course_teaching/lesson_course_teaching.vue

@ -98,6 +98,8 @@
<el-avatar v-else icon="UserFilled" /> <el-avatar v-else icon="UserFilled" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
:label="t('type')" :label="t('type')"
min-width="180" min-width="180"
@ -111,6 +113,35 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="预览" width="100" align="left">
<template #default="{ row }">
<template v-if="row.type == '3'">
<el-image
:src="row.url"
style="width: 60px; height: 60px; cursor: pointer"
:preview-src-list="[row.url]"
preview-teleported
/>
</template>
<template v-else-if="row.type == '1'">
<el-button type="primary" text @click="previewVideo(row.url)">预览视频</el-button>
</template>
<template v-else-if="row.type == '2'">
<el-button type="success" text @click="openFile(row.url)">打开文件</el-button>
</template>
</template>
</el-table-column>
<el-table-column <el-table-column
:label="t('status')" :label="t('status')"
min-width="180" min-width="180"
@ -277,6 +308,29 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="预览" width="100" align="left">
<template #default="{ row }">
<template v-if="row.type == '3'">
<el-image
:src="row.url"
style="width: 60px; height: 60px; cursor: pointer"
:preview-src-list="[row.url]"
preview-teleported
/>
</template>
<template v-else-if="row.type == '1'">
<el-button type="primary" text @click="previewVideo(row.url)">预览视频</el-button>
</template>
<template v-else-if="row.type == '2'">
<el-button type="success" text @click="openFile(row.url)">打开文件</el-button>
</template>
</template>
</el-table-column>
<el-table-column <el-table-column
:label="t('status')" :label="t('status')"
min-width="180" min-width="180"
@ -448,6 +502,29 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="预览" width="100" align="left">
<template #default="{ row }">
<template v-if="row.type == '3'">
<el-image
:src="row.url"
style="width: 60px; height: 60px; cursor: pointer"
:preview-src-list="[row.url]"
preview-teleported
/>
</template>
<template v-else-if="row.type == '1'">
<el-button type="primary" text @click="previewVideo(row.url)">预览视频</el-button>
</template>
<template v-else-if="row.type == '2'">
<el-button type="success" text @click="openFile(row.url)">打开文件</el-button>
</template>
</template>
</el-table-column>
<el-table-column <el-table-column
:label="t('status')" :label="t('status')"
min-width="250" min-width="250"
@ -623,6 +700,29 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="预览" width="100" align="left">
<template #default="{ row }">
<template v-if="row.type == '3'">
<el-image
:src="row.url"
style="width: 60px; height: 60px; cursor: pointer"
:preview-src-list="[row.url]"
preview-teleported
/>
</template>
<template v-else-if="row.type == '1'">
<el-button type="primary" text @click="previewVideo(row.url)">预览视频</el-button>
</template>
<template v-else-if="row.type == '2'">
<el-button type="success" text @click="openFile(row.url)">打开文件</el-button>
</template>
</template>
</el-table-column>
<el-table-column <el-table-column
:label="t('status')" :label="t('status')"
min-width="180" min-width="180"
@ -794,6 +894,29 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="预览" width="100" align="left">
<template #default="{ row }">
<template v-if="row.type == '3'">
<el-image
:src="row.url"
style="width: 60px; height: 60px; cursor: pointer"
:preview-src-list="[row.url]"
preview-teleported
/>
</template>
<template v-else-if="row.type == '1'">
<el-button type="primary" text @click="previewVideo(row.url)">预览视频</el-button>
</template>
<template v-else-if="row.type == '2'">
<el-button type="success" text @click="openFile(row.url)">打开文件</el-button>
</template>
</template>
</el-table-column>
<el-table-column <el-table-column
:label="t('status')" :label="t('status')"
min-width="180" min-width="180"
@ -965,6 +1088,30 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="预览" width="100" align="left">
<template #default="{ row }">
<template v-if="row.type == '3'">
<el-image
:src="row.url"
style="width: 60px; height: 60px; cursor: pointer"
:preview-src-list="[row.url]"
preview-teleported
/>
</template>
<template v-else-if="row.type == '1'">
<el-button type="primary" text @click="previewVideo(row.url)">预览视频</el-button>
</template>
<template v-else-if="row.type == '2'">
<el-button type="success" text @click="openFile(row.url)">打开文件</el-button>
</template>
</template>
</el-table-column>
<el-table-column <el-table-column
:label="t('status')" :label="t('status')"
min-width="250" min-width="250"
@ -1136,6 +1283,29 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="预览" width="100" align="left">
<template #default="{ row }">
<template v-if="row.type == '3'">
<el-image
:src="row.url"
style="width: 60px; height: 60px; cursor: pointer"
:preview-src-list="[row.url]"
preview-teleported
/>
</template>
<template v-else-if="row.type == '1'">
<el-button type="primary" text @click="previewVideo(row.url)">预览视频</el-button>
</template>
<template v-else-if="row.type == '2'">
<el-button type="success" text @click="openFile(row.url)">打开文件</el-button>
</template>
</template>
</el-table-column>
<el-table-column <el-table-column
:label="t('status')" :label="t('status')"
min-width="180" min-width="180"
@ -1307,6 +1477,29 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="预览" width="100" align="left">
<template #default="{ row }">
<template v-if="row.type == '3'">
<el-image
:src="row.url"
style="width: 60px; height: 60px; cursor: pointer"
:preview-src-list="[row.url]"
preview-teleported
/>
</template>
<template v-else-if="row.type == '1'">
<el-button type="primary" text @click="previewVideo(row.url)">预览视频</el-button>
</template>
<template v-else-if="row.type == '2'">
<el-button type="success" text @click="openFile(row.url)">打开文件</el-button>
</template>
</template>
</el-table-column>
<el-table-column <el-table-column
:label="t('status')" :label="t('status')"
min-width="250" min-width="250"
@ -1383,7 +1576,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { reactive, ref, watch } from 'vue' import { reactive, ref, watch,h } from 'vue'
import { t } from '@/lang' import { t } from '@/lang'
import { useDictionary } from '@/app/api/dict' import { useDictionary } from '@/app/api/dict'
import { import {
@ -1415,6 +1608,37 @@ const route = useRoute()
const pageName = route.meta.title const pageName = route.meta.title
const active = 'CourseSyllabus' const active = 'CourseSyllabus'
const previewVideo = (url: string) => {
// 使 el-dialog + video
ElMessageBox({
title: '视频预览',
message: h('video', {
src: url,
controls: true,
style: 'width: 100%',
autoplay: true
}),
customClass: 'video-preview-box',
showCancelButton: false,
showConfirmButton: false,
dangerouslyUseHTMLString: true,
});
};
const openFile = (url: string) => {
window.open(`${import.meta.env.VITE_IMG_DOMAIN}/${url}`, '_blank');
};
const downloadFile = (url: string) => {
const a = document.createElement('a');
a.href = `${import.meta.env.VITE_IMG_DOMAIN}/${url}`;
a.download = '';
a.click();
};
let lessonCourseTeachingTable = reactive({ let lessonCourseTeachingTable = reactive({
page: 1, page: 1,
limit: 10, limit: 10,

998
admin/src/app/views/personnel/components/personnel-edit.vue

File diff suppressed because it is too large

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

@ -3,6 +3,7 @@
<el-card class="box-card !border-none" shadow="never"> <el-card class="box-card !border-none" shadow="never">
<div class="flex justify-between items-center"> <div class="flex justify-between items-center">
<span class="text-lg">六要素修改记录</span> <span class="text-lg">六要素修改记录</span>
<el-button type="default" @click="goBack">返回</el-button>
</div> </div>
<!-- <el-card <!-- <el-card
@ -111,9 +112,13 @@ import {
import { img } from '@/utils/common' import { img } from '@/utils/common'
import { ElMessageBox, FormInstance } from 'element-plus' import { ElMessageBox, FormInstance } from 'element-plus'
import Edit from '@/app/views/six_speed_modification_log/components/six-speed-modification-log-edit.vue' import Edit from '@/app/views/six_speed_modification_log/components/six-speed-modification-log-edit.vue'
import { useRoute } from 'vue-router' import { useRoute,useRouter } from 'vue-router'
const route = useRoute() const route = useRoute()
const pageName = route.meta.title const pageName = route.meta.title
const router = useRouter()
const goBack = () => {
router.go(-1)// router.go(-1)
}
let sixSpeedModificationLogTable = reactive({ let sixSpeedModificationLogTable = reactive({
page: 1, page: 1,

3
niucloud/app/adminapi/controller/communication_records/CommunicationRecords.php

@ -31,7 +31,8 @@ class CommunicationRecords extends BaseAdminController
["name",""], ["name",""],
["phone_number",""], ["phone_number",""],
["campus",""], ["campus",""],
["communication_type",""] ["communication_type",""],
["customer_resource_id",""]
]); ]);
return success((new CommunicationRecordsService())->getPage($data)); return success((new CommunicationRecordsService())->getPage($data));
} }

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

@ -754,7 +754,9 @@ class LessonCourseTeaching extends BaseAdminController
public function getPersonnelDataAll(){ public function getPersonnelDataAll(){
$data = $this->request->params([ $data = $this->request->params([
["name",""], ["name",""],
["phone",""] ["phone",""],
["role_id",""],
["dept_id",""]
]); ]);
return success((new LessonCourseTeachingService())->getPersonnelDataAll($data)); return success((new LessonCourseTeachingService())->getPersonnelDataAll($data));
} }

3
niucloud/app/adminapi/controller/personnel/Personnel.php

@ -68,7 +68,7 @@ class Personnel extends BaseAdminController
["id_card_back",""], ["id_card_back",""],
["status",0], ["status",0],
["is_sys_user",0], ["is_sys_user",0],
["info",[]],
]); ]);
$this->validate($data, 'app\validate\personnel\Personnel.add'); $this->validate($data, 'app\validate\personnel\Personnel.add');
$id = (new PersonnelService())->add($data); $id = (new PersonnelService())->add($data);
@ -95,6 +95,7 @@ class Personnel extends BaseAdminController
["id_card_back",""], ["id_card_back",""],
["status",0], ["status",0],
["is_sys_user",0], ["is_sys_user",0],
["info",[]],
]); ]);
$this->validate($data, 'app\validate\personnel\Personnel.edit'); $this->validate($data, 'app\validate\personnel\Personnel.edit');

5
niucloud/app/common.php

@ -1037,8 +1037,11 @@ function get_campus_where($user_id,$field="campus_id")
if($user_id > 1){ if($user_id > 1){
$person_id = $person->where(['sys_user_id' => $user_id])->value("id"); $person_id = $person->where(['sys_user_id' => $user_id])->value("id");
$role_info = $campusPersonRole->where(['person_id' => $person_id])->find(); $role_info = $campusPersonRole->where(['person_id' => $person_id])->find();
if (!in_array($role_info['role_id'], [1,7,8])) { if (!in_array($role_info['role_id'], [1,7,8])) {
$where[] = [$field,'=',$role_info['campus_id']]; if($role_info['campus_id']){
$where[] = [$field,'=',$role_info['campus_id']];
}
} }
} }
return $where; return $where;

41
niucloud/app/model/personnel/PersonnelInfo.php

@ -0,0 +1,41 @@
<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\model\personnel;
use core\base\BaseModel;
use think\model\concern\SoftDelete;
use think\model\relation\HasMany;
use think\model\relation\HasOne;
/**
* 人力资源-人员模型
* Class Personnel
* @package app\model\personnel
*/
class PersonnelInfo extends BaseModel
{
/**
* 数据表主键
* @var string
*/
protected $pk = 'id';
/**
* 模型名称
* @var string
*/
protected $name = 'personnel_info';
}

5
niucloud/app/service/admin/communication_records/CommunicationRecordsService.php

@ -57,6 +57,11 @@ class CommunicationRecordsService extends BaseAdminService
$where[] = ['a.communication_type','=',$data['communication_type']]; $where[] = ['a.communication_type','=',$data['communication_type']];
} }
if($data['customer_resource_id']){
$where[] = ['b.id','=',$data['customer_resource_id']];
}
$search_model = $this->model $search_model = $this->model
->alias("a") ->alias("a")
->join(['school_customer_resources' => 'b'],'a.resource_id = b.id','left') ->join(['school_customer_resources' => 'b'],'a.resource_id = b.id','left')

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

@ -38,7 +38,7 @@ class LessonCourseTeachingService extends BaseAdminService
*/ */
public function getPage(array $where = []) public function getPage(array $where = [])
{ {
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id'; $field = 'id,title,image,type,url,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id';
$order = 'id desc'; $order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order); $search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order);
@ -85,7 +85,7 @@ class LessonCourseTeachingService extends BaseAdminService
*/ */
public function jumpPetPage(array $where = []) public function jumpPetPage(array $where = [])
{ {
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id'; $field = 'id,title,image,type,url,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id';
$order = 'id desc'; $order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order); $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); $list = $this->pageQuery($search_model);
@ -129,7 +129,7 @@ class LessonCourseTeachingService extends BaseAdminService
*/ */
public function enPetPage(array $where = []) public function enPetPage(array $where = [])
{ {
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id'; $field = 'id,title,image,type,url,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id';
$order = 'id desc'; $order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order); $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); $list = $this->pageQuery($search_model);
@ -174,7 +174,7 @@ class LessonCourseTeachingService extends BaseAdminService
*/ */
public function basketballPetPage(array $where = []) public function basketballPetPage(array $where = [])
{ {
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id'; $field = 'id,title,image,type,url,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id';
$order = 'id desc'; $order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order); $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); $list = $this->pageQuery($search_model);
@ -218,7 +218,7 @@ class LessonCourseTeachingService extends BaseAdminService
*/ */
public function strengPetPage(array $where = []) public function strengPetPage(array $where = [])
{ {
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id'; $field = 'id,title,image,type,url,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id';
$order = 'id desc'; $order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order); $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); $list = $this->pageQuery($search_model);
@ -262,7 +262,7 @@ class LessonCourseTeachingService extends BaseAdminService
*/ */
public function ninjaPetPage(array $where = []) public function ninjaPetPage(array $where = [])
{ {
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id'; $field = 'id,title,image,type,url,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id';
$order = 'id desc'; $order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order); $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); $list = $this->pageQuery($search_model);
@ -306,7 +306,7 @@ class LessonCourseTeachingService extends BaseAdminService
*/ */
public function securityPetPage(array $where = []) public function securityPetPage(array $where = [])
{ {
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id'; $field = 'id,title,image,type,url,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id';
$order = 'id desc'; $order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order); $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); $list = $this->pageQuery($search_model);
@ -350,7 +350,7 @@ class LessonCourseTeachingService extends BaseAdminService
*/ */
public function physicalPetPage(array $where = []) public function physicalPetPage(array $where = [])
{ {
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id'; $field = 'id,title,image,type,url,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id';
$order = 'id desc'; $order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order); $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); $list = $this->pageQuery($search_model);
@ -398,7 +398,7 @@ class LessonCourseTeachingService extends BaseAdminService
*/ */
public function actionPetPage(array $where = []) public function actionPetPage(array $where = [])
{ {
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id'; $field = 'id,title,image,type,url,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id';
$order = 'id desc'; $order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order); $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); $list = $this->pageQuery($search_model);
@ -443,7 +443,7 @@ class LessonCourseTeachingService extends BaseAdminService
*/ */
public function gamesPetPage(array $where = []) public function gamesPetPage(array $where = [])
{ {
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id'; $field = 'id,title,image,type,url,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id';
$order = 'id desc'; $order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order); $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); $list = $this->pageQuery($search_model);
@ -489,7 +489,7 @@ class LessonCourseTeachingService extends BaseAdminService
*/ */
public function fitnessPetPage(array $where = []) public function fitnessPetPage(array $where = [])
{ {
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id'; $field = 'id,title,image,type,url,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id';
$order = 'id desc'; $order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order); $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); $list = $this->pageQuery($search_model);
@ -534,7 +534,7 @@ class LessonCourseTeachingService extends BaseAdminService
*/ */
public function relaxationPetPage(array $where = []) public function relaxationPetPage(array $where = [])
{ {
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id'; $field = 'id,title,image,type,url,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id';
$order = 'id desc'; $order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order); $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); $list = $this->pageQuery($search_model);
@ -574,7 +574,7 @@ class LessonCourseTeachingService extends BaseAdminService
public function publicPetPage(array $where = []) public function publicPetPage(array $where = [])
{ {
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id'; $field = 'id,title,image,type,url,content,status,create_time,update_time,delete_time,table_type,user_permission,exam_papers_id';
$order = 'id desc'; $order = 'id desc';
$search_model = $this->model->withSearch(["title","status","create_time","update_time","table_type"], $where)->with(['personnelData'])->field($field)->order($order); $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); $list = $this->pageQuery($search_model);
@ -611,7 +611,7 @@ class LessonCourseTeachingService extends BaseAdminService
*/ */
public function getInfo(int $id) public function getInfo(int $id)
{ {
$field = 'id,title,image,type,content,status,create_time,update_time,delete_time,table_type,user_permission,url,exam_papers_id'; $field = 'id,title,image,type,url,content,status,create_time,update_time,delete_time,table_type,user_permission,url,exam_papers_id';
$info = $this->model->field($field)->where([['id', "=", $id]])->with(['personnelData'])->findOrEmpty()->toArray(); $info = $this->model->field($field)->where([['id', "=", $id]])->with(['personnelData'])->findOrEmpty()->toArray();
$info['status'] = strval($info['status']); $info['status'] = strval($info['status']);
$info['type'] = strval($info['type']); $info['type'] = strval($info['type']);
@ -633,16 +633,29 @@ class LessonCourseTeachingService extends BaseAdminService
public function getPersonnelDataAll(array $where = []){ public function getPersonnelDataAll(array $where = []){
$personnelDataModel = new PersonnelData(); $personnelDataModel = new PersonnelData();
$field = 'id,name,gender,phone,status,status,sys_user_id,create_time,update_time'; // $field = 'id,name,gender,phone,status,status,sys_user_id,create_time,update_time';
$order = 'id desc'; $order = 'a.id desc';
$whereArr = []; $whereArr = [];
if (!empty($where['name'])) { if (!empty($where['name'])) {
$whereArr[] = ['name','like',"'%'".$where['name']."'%'"]; $whereArr[] = ['a.name','like',"'%'".$where['name']."'%'"];
} }
if (!empty($where['phone'])) { if (!empty($where['phone'])) {
$whereArr[] = ['phone','like',"'%'".$where['phone']."'%'"]; $whereArr[] = ['a.phone','like',"'%'".$where['phone']."'%'"];
}
if (!empty($where['role_id'])) {
$whereArr[] = ['b.role_id','=',$where['role_id']];
} }
$search_model = $personnelDataModel->where('is_sys_user', 1)->where($whereArr)->field($field)->order($order); if (!empty($where['dept_id'])) {
$whereArr[] = ['b.dept_id','=',$where['dept_id']];
}
$search_model = $personnelDataModel
->alias("a")
->join(['school_campus_person_role' => 'b'],'a.id = b.person_id','left')
->where('a.is_sys_user', 1)
->field("a.*,b.role_id,b.dept_id")
->where($whereArr)->order($order);
$list = $this->pageQuery($search_model); $list = $this->pageQuery($search_model);
return $list; return $list;
} }
@ -660,6 +673,7 @@ class LessonCourseTeachingService extends BaseAdminService
} }
$search_model = $ExamPapersModel->where($whereArr)->field($field)->order($order); $search_model = $ExamPapersModel->where($whereArr)->field($field)->order($order);
$list = $this->pageQuery($search_model); $list = $this->pageQuery($search_model);
return $list; return $list;
} }

14
niucloud/app/service/admin/personnel/PersonnelService.php

@ -15,6 +15,7 @@ use app\dict\sys\UserDict;
use app\model\campus_person_role\CampusPersonRole; use app\model\campus_person_role\CampusPersonRole;
use app\model\personnel\Personnel; use app\model\personnel\Personnel;
use app\model\personnel\PersonnelInfo;
use app\model\sys\SysUser; use app\model\sys\SysUser;
use app\service\admin\user\UserService; use app\service\admin\user\UserService;
use core\base\BaseAdminService; use core\base\BaseAdminService;
@ -85,6 +86,8 @@ class PersonnelService extends BaseAdminService
$info['gender'] = strval($info['gender']); $info['gender'] = strval($info['gender']);
$info['status'] = strval($info['status']); $info['status'] = strval($info['status']);
$info['is_sys_user'] = strval($info['is_sys_user']); $info['is_sys_user'] = strval($info['is_sys_user']);
$info['info'] = (new PersonnelInfo())->where(['person_id' => $id])->findOrEmpty()->toArray();
return $info; return $info;
} }
@ -95,6 +98,9 @@ class PersonnelService extends BaseAdminService
*/ */
public function add(array $data) public function add(array $data)
{ {
$info = $data['info'];
unset($data['info']);
$status = $this->model->where('phone', $data['phone'])->value('id'); $status = $this->model->where('phone', $data['phone'])->value('id');
if ($status) { if ($status) {
throw new \Exception('手机号已存在'); throw new \Exception('手机号已存在');
@ -115,6 +121,9 @@ class PersonnelService extends BaseAdminService
// 员工编号 // 员工编号
$data['employee_number'] = getEmployeeNumber(); $data['employee_number'] = getEmployeeNumber();
$res = $this->model->create($data); $res = $this->model->create($data);
$info['person_id'] = $res->id;
(new PersonnelInfo())->insert($info);
Db::commit(); Db::commit();
return $res->id; return $res->id;
} catch (\Exception $e) { } catch (\Exception $e) {
@ -131,7 +140,9 @@ class PersonnelService extends BaseAdminService
*/ */
public function edit(int $id, array $data) public function edit(int $id, array $data)
{ {
$info = $data['info'];
unset($data['info']);
$status = $this->model->where('phone', $data['phone'])->value('id'); $status = $this->model->where('phone', $data['phone'])->value('id');
if ($status && $status != $id) { if ($status && $status != $id) {
throw new \Exception('手机号已存在'); throw new \Exception('手机号已存在');
@ -153,6 +164,9 @@ class PersonnelService extends BaseAdminService
} }
} }
$this->model->where([['id', '=', $id]])->update($data); $this->model->where([['id', '=', $id]])->update($data);
(new PersonnelInfo())->where(['person_id' => $id])->update($info);
Db::commit(); Db::commit();
} catch (\Exception $e) { } catch (\Exception $e) {
Db::rollback(); Db::rollback();

Loading…
Cancel
Save