Browse Source

合并yuhongzhe

wangzeyan
王泽彦 11 months ago
parent
commit
28dc2da7f0
  1. 4
      admin/src/app/api/customer_resources.ts
  2. 135
      admin/src/app/views/customer_resource_changes/customer_resource_changes.vue
  3. 112
      admin/src/app/views/customer_resources/components/fp.vue
  4. 51
      admin/src/app/views/customer_resources/customer_resources.vue
  5. 66
      admin/src/app/views/six_speed_modification_log/six_speed_modification_log.vue
  6. 1
      admin/src/app/views/yjfp/yjfp.vue
  7. 2
      niucloud/app/adminapi/controller/customer_resource_changes/CustomerResourceChanges.php
  8. 21
      niucloud/app/adminapi/controller/customer_resources/CustomerResources.php
  9. 7
      niucloud/app/adminapi/controller/six_speed_modification_log/SixSpeedModificationLog.php
  10. 5
      niucloud/app/adminapi/route/customer_resources.php
  11. 25
      niucloud/app/model/customer_resource_changes/CustomerResourceChanges.php
  12. 18
      niucloud/app/model/customer_resources/CustomerResources.php
  13. 18
      niucloud/app/model/six_speed_modification_log/SixSpeedModificationLog.php
  14. 29
      niucloud/app/service/admin/customer_resource_changes/CustomerResourceChangesService.php
  15. 62
      niucloud/app/service/admin/customer_resources/CustomerResourcesService.php
  16. 34
      niucloud/app/service/admin/six_speed_modification_log/SixSpeedModificationLogService.php

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

@ -58,3 +58,7 @@ export function getWithPersonnelList(params: Record<string,any>){
} }
// USER_CODE_END -- customer_resources // USER_CODE_END -- customer_resources
export function fpEdit(params: Record<string, any>) {
return request.post('customer_resources/fp_edit', params, { showErrorMessage: true, showSuccessMessage: true })
}

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

@ -3,75 +3,8 @@
<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">
{{ t('addCustomerResourceChanges') }}
</el-button>
</div> </div>
<el-card
class="box-card !border-none my-[10px] table-search-wrap"
shadow="never"
>
<el-form
:inline="true"
:model="customerResourceChangesTable.searchParam"
ref="searchFormRef"
>
<el-form-item
:label="t('customerResourceId')"
prop="customer_resource_id"
>
<el-input
v-model="
customerResourceChangesTable.searchParam.customer_resource_id
"
:placeholder="t('customerResourceIdPlaceholder')"
/>
</el-form-item>
<el-form-item :label="t('operatorId')" prop="operator_id">
<el-input
v-model="customerResourceChangesTable.searchParam.operator_id"
:placeholder="t('operatorIdPlaceholder')"
/>
</el-form-item>
<el-form-item :label="t('campusId')" prop="campus_id">
<el-input
v-model="customerResourceChangesTable.searchParam.campus_id"
:placeholder="t('campusIdPlaceholder')"
/>
</el-form-item>
<el-form-item :label="t('modifiedFields')" prop="modified_fields">
<el-input
v-model="customerResourceChangesTable.searchParam.modified_fields"
:placeholder="t('modifiedFieldsPlaceholder')"
/>
</el-form-item>
<el-form-item :label="t('oldValues')" prop="old_values">
<el-input
v-model="customerResourceChangesTable.searchParam.old_values"
:placeholder="t('oldValuesPlaceholder')"
/>
</el-form-item>
<el-form-item :label="t('newValues')" prop="new_values">
<el-input
v-model="customerResourceChangesTable.searchParam.new_values"
:placeholder="t('newValuesPlaceholder')"
/>
</el-form-item>
<el-form-item>
<el-button
type="primary"
@click="loadCustomerResourceChangesList()"
>{{ t('search') }}</el-button
>
<el-button @click="resetForm(searchFormRef)">{{
t('reset')
}}</el-button>
</el-form-item>
</el-form>
</el-card>
<div class="mt-[10px]"> <div class="mt-[10px]">
<el-table <el-table
:data="customerResourceChangesTable.data" :data="customerResourceChangesTable.data"
@ -83,61 +16,40 @@
!customerResourceChangesTable.loading ? t('emptyData') : '' !customerResourceChangesTable.loading ? t('emptyData') : ''
}}</span> }}</span>
</template> </template>
<el-table-column <el-table-column
prop="customer_resource_id" prop="created_at"
:label="t('customerResourceId')" label="修改时间"
min-width="120"
:show-overflow-tooltip="true"
/>
<el-table-column
prop="operator_id"
:label="t('operatorId')"
min-width="120"
:show-overflow-tooltip="true"
/>
<el-table-column
prop="campus_id"
:label="t('campusId')"
min-width="120"
:show-overflow-tooltip="true"
/> />
<el-table-column <el-table-column
prop="modified_fields" prop="name"
:label="t('modifiedFields')" label="客户名称"
min-width="120"
:show-overflow-tooltip="true"
/> />
<el-table-column <el-table-column
prop="old_values" prop="staff_id_name"
:label="t('oldValues')" label="修改人员"
min-width="120"
:show-overflow-tooltip="true"
/> />
<el-table-column <el-table-column
prop="new_values" prop="count"
:label="t('newValues')" label="修改字段数量"
min-width="120"
:show-overflow-tooltip="true"
/> />
<el-table-column <el-table-column
:label="t('operation')" :label="t('operation')"
fixed="right" fixed="right"
min-width="120" min-width="120"
> >
<template #default="{ row }"> <template #default="{ row }">
<el-button type="primary" link @click="editEvent(row)">{{ <el-button type="primary" link @click="deleteEvent(row.id)" v-if="row.is_rolled_back == 0">回滚</el-button>
t('edit')
}}</el-button>
<el-button type="primary" link @click="deleteEvent(row.id)">{{
t('delete')
}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="mt-[16px] flex justify-end"> <div class="mt-[16px] flex justify-end">
@ -182,12 +94,7 @@ let customerResourceChangesTable = reactive({
loading: true, loading: true,
data: [], data: [],
searchParam: { searchParam: {
customer_resource_id: '', customer_resource_id: route.query.id
operator_id: '',
campus_id: '',
modified_fields: '',
old_values: '',
new_values: '',
}, },
}) })
@ -244,7 +151,7 @@ const editEvent = (data: any) => {
* 删除客户资源表变更记录 * 删除客户资源表变更记录
*/ */
const deleteEvent = (id: number) => { const deleteEvent = (id: number) => {
ElMessageBox.confirm(t('customerResourceChangesDeleteTips'), t('warning'), { ElMessageBox.confirm("确定要回滚当前数据吗", t('warning'), {
confirmButtonText: t('confirm'), confirmButtonText: t('confirm'),
cancelButtonText: t('cancel'), cancelButtonText: t('cancel'),
type: 'warning', type: 'warning',

112
admin/src/app/views/customer_resources/components/fp.vue

@ -0,0 +1,112 @@
<template>
<el-dialog v-model="showDialog" title="业绩分配"
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="分配人员" prop="shared_by">
<el-select class="input-width" v-model="formData.shared_by" clearable placeholder="请选择分配人员">
<el-option label="请选择" value=""></el-option>
<el-option v-for="(item, index) in consultantList" :key="index" :label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
</el-form>
<!-- Footer -->
<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 { getWithPersonnelList,fpEdit } from '@/app/api/customer_resources'
let showDialog = ref(false)
const loading = ref(false)
const initialFormData = {
shared_id:'',
shared_by: '',
}
const formData : Record<string, any> = reactive({ ...initialFormData })
const formRef = ref<FormInstance>()
//
const formRules = computed(() => {
return {
shared_by: [
{ required: true, message: "请选择分配人员", trigger: 'blur' },
]
}
})
const emit = defineEmits(['complete'])
/**
* 确认
* @param formEl
*/
const confirm = async (formEl : FormInstance | undefined) => {
if (loading.value || !formEl) return
await formEl.validate(async (valid) => {
if (valid) {
loading.value = true
let data = formData
fpEdit(data).then(res => {
loading.value = false
showDialog.value = false
emit('complete')
}).catch(err => {
loading.value = false
})
}
})
}
const consultantList = ref([] as any[])
const setConsultantList = async () => {
consultantList.value = await (await getWithPersonnelList({'role_id':2})).data
}
setConsultantList()
const setFormData = async (row : any = null) => {
Object.assign(formData, row)
loading.value = false
}
defineExpose({
showDialog,
setFormData
})
</script>
<style lang="scss" scoped></style>
<style lang="scss">
.diy-dialog-wrap .el-form-item__label {
height: auto !important;
}
</style>

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

@ -4,7 +4,7 @@
<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" v-if="type == 'khzy'">
{{ t('addCustomerResources') }} {{ t('addCustomerResources') }}
</el-button> </el-button>
</div> </div>
@ -55,12 +55,24 @@
<el-table-column prop="decision_maker" :label="t('decisionMaker')" min-width="120" :show-overflow-tooltip="true"/> <el-table-column prop="decision_maker" :label="t('decisionMaker')" min-width="120" :show-overflow-tooltip="true"/>
<el-table-column :label="t('operation')" fixed="right" min-width="120"> <el-table-column :label="t('operation')" fixed="right" min-width="200" v-if="type == 'khzy'">
<template #default="{ row }"> <template #default="{ row }">
<el-button type="primary" link @click="editEvent(row)">{{ t('edit') }}</el-button> <el-button type="primary" link @click="modificationLog(row.id)">六要素修改记录</el-button>
<el-button type="primary" link @click="deleteEvent(row.id)">{{ t('delete') }}</el-button> <el-button type="primary" link @click="resourceChanges(row.id)">客户信息修改记录</el-button>
<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> </template>
</el-table-column> </el-table-column>
<el-table-column :label="t('operation')" fixed="right" min-width="200" v-if="type == 'yjfp'">
<template #default="{ row }">
<el-button type="primary" link @click="fpEvent(row)">分配</el-button>
</template>
</el-table-column>
</el-table> </el-table>
<div class="mt-[16px] flex justify-end"> <div class="mt-[16px] flex justify-end">
@ -71,6 +83,9 @@
</div> </div>
<edit ref="editCustomerResourcesDialog" @complete="loadCustomerResourcesList" /> <edit ref="editCustomerResourcesDialog" @complete="loadCustomerResourcesList" />
<fp ref="fpCustomerResourcesDialog" @complete="loadCustomerResourcesList" />
</el-card> </el-card>
</div> </div>
</template> </template>
@ -83,9 +98,24 @@ import { getCustomerResourcesList, deleteCustomerResources, getWithPersonnelList
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_resources/components/customer-resources-edit.vue' import Edit from '@/app/views/customer_resources/components/customer-resources-edit.vue'
import { useRoute } from 'vue-router' import Fp from '@/app/views/customer_resources/components/fp.vue'
import { useRouter, useRoute } from 'vue-router'
const route = useRoute() const route = useRoute()
const pageName = route.meta.title; const pageName = route.meta.title;
const router = useRouter()
const type = pageName == '业绩分配' ? 'yjfp' : 'khzy';
const modificationLog = (id: number) => {
router.push({ path: '/six_speed_modification_log/six_speed_modification_log', query: { id: id } })
}
const resourceChanges = (id: number) => {
router.push({ path: '/customer_resource_changes/customer_resource_changes', query: { id: id } })
}
let customerResourcesTable = reactive({ let customerResourcesTable = reactive({
page: 1, page: 1,
@ -95,7 +125,8 @@ let customerResourcesTable = reactive({
data: [], data: [],
searchParam:{ searchParam:{
"name":"", "name":"",
"phone_number":"" "phone_number":"",
'type':type
} }
}) })
@ -164,6 +195,8 @@ loadCustomerResourcesList()
const editCustomerResourcesDialog: Record<string, any> | null = ref(null) const editCustomerResourcesDialog: Record<string, any> | null = ref(null)
const fpCustomerResourcesDialog: Record<string, any> | null = ref(null)
/** /**
* 添加客户资源 * 添加客户资源
*/ */
@ -181,6 +214,12 @@ const editEvent = (data: any) => {
editCustomerResourcesDialog.value.showDialog = true editCustomerResourcesDialog.value.showDialog = true
} }
const fpEvent = (data: any) => {
fpCustomerResourcesDialog.value.setFormData(data)
fpCustomerResourcesDialog.value.showDialog = true
}
/** /**
* 删除客户资源 * 删除客户资源
*/ */

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

@ -2,13 +2,10 @@
<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">六要素修改记录</span>
<el-button type="primary" @click="addEvent">
{{ t('addSixSpeedModificationLog') }}
</el-button>
</div> </div>
<el-card <!-- <el-card
class="box-card !border-none my-[10px] table-search-wrap" class="box-card !border-none my-[10px] table-search-wrap"
shadow="never" shadow="never"
> >
@ -44,7 +41,7 @@
}}</el-button> }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-card> </el-card> -->
<div class="mt-[10px]"> <div class="mt-[10px]">
<el-table <el-table
@ -57,53 +54,41 @@
!sixSpeedModificationLogTable.loading ? t('emptyData') : '' !sixSpeedModificationLogTable.loading ? t('emptyData') : ''
}}</span> }}</span>
</template> </template>
<el-table-column
prop="campus_id_name"
:label="t('campusId')" <el-table-column
min-width="120" prop="updated_at"
:show-overflow-tooltip="true" label="修改时间"
/>
/>
<el-table-column
prop="name"
label="客户名称"
/>
<el-table-column <el-table-column
prop="staff_id_name" prop="staff_id_name"
:label="t('staffId')" label="修改人员"
min-width="120"
:show-overflow-tooltip="true"
/>
<el-table-column
prop="modified_field"
:label="t('modifiedField')"
min-width="120"
:show-overflow-tooltip="true"
/> />
<el-table-column
prop="old_value"
:label="t('oldValue')"
min-width="120"
:show-overflow-tooltip="true"
/>
<el-table-column <el-table-column
prop="new_value" prop="count"
:label="t('newValue')" label="修改字段数量"
min-width="120"
:show-overflow-tooltip="true"
/> />
<el-table-column <el-table-column
:label="t('operation')" :label="t('operation')"
fixed="right" fixed="right"
min-width="120" min-width="60"
> >
<template #default="{ row }"> <template #default="{ row }">
<el-button type="primary" link @click="editEvent(row)">{{ <el-button type="primary" link @click="deleteEvent(row.id)" v-if="row.is_rollback == 0">回滚</el-button>
t('edit') <!-- <el-button type="primary" link @click="deleteEvent(row.id)">{{
}}</el-button>
<el-button type="primary" link @click="deleteEvent(row.id)">{{
t('delete') t('delete')
}}</el-button> }}</el-button> -->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -151,6 +136,7 @@ let sixSpeedModificationLogTable = reactive({
loading: true, loading: true,
data: [], data: [],
searchParam: { searchParam: {
customer_resource_id: route.query.id,
campus_id: '', campus_id: '',
}, },
}) })
@ -208,7 +194,7 @@ const editEvent = (data: any) => {
* 删除六一速修改记录 * 删除六一速修改记录
*/ */
const deleteEvent = (id: number) => { const deleteEvent = (id: number) => {
ElMessageBox.confirm(t('sixSpeedModificationLogDeleteTips'), t('warning'), { ElMessageBox.confirm("确定要回滚当前数据吗", t('warning'), {
confirmButtonText: t('confirm'), confirmButtonText: t('confirm'),
cancelButtonText: t('cancel'), cancelButtonText: t('cancel'),
type: 'warning', type: 'warning',

1
admin/src/app/views/yjfp/yjfp.vue

@ -0,0 +1 @@
12

2
niucloud/app/adminapi/controller/customer_resource_changes/CustomerResourceChanges.php

@ -93,7 +93,7 @@ class CustomerResourceChanges extends BaseAdminController
*/ */
public function del(int $id){ public function del(int $id){
(new CustomerResourceChangesService())->del($id); (new CustomerResourceChangesService())->del($id);
return success('DELETE_SUCCESS'); return success('回滚成功');
} }

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

@ -29,7 +29,8 @@ class CustomerResources extends BaseAdminController
public function lists(){ public function lists(){
$data = $this->request->params([ $data = $this->request->params([
["name",""], ["name",""],
["phone_number",""] ["phone_number",""],
["type","khzy"]
]); ]);
return success((new CustomerResourcesService())->getPage($data)); return success((new CustomerResourcesService())->getPage($data));
} }
@ -119,8 +120,6 @@ class CustomerResources extends BaseAdminController
["first_visit_status",""], ["first_visit_status",""],
["second_visit_status",""], ["second_visit_status",""],
["is_closed",""] ["is_closed",""]
]); ]);
$this->validate($data, 'app\validate\customer_resources\CustomerResources.edit'); $this->validate($data, 'app\validate\customer_resources\CustomerResources.edit');
@ -139,11 +138,25 @@ class CustomerResources extends BaseAdminController
public function getPersonnelAll(){ public function getPersonnelAll(){
return success(( new CustomerResourcesService())->getPersonnelAll()); $data = $this->request->params([
["role_id",""],
]);
return success(( new CustomerResourcesService())->getPersonnelAll($data));
} }
public function getCampusAll(){ public function getCampusAll(){
return success(( new CustomerResourcesService())->getCampusAll()); return success(( new CustomerResourcesService())->getCampusAll());
} }
public function fp_edit(){
$data = $this->request->params([
["shared_id",""],
["shared_by",""],
]);
return success(( new CustomerResourcesService())->fp_edit($data));
}
} }

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

@ -28,7 +28,8 @@ class SixSpeedModificationLog extends BaseAdminController
*/ */
public function lists(){ public function lists(){
$data = $this->request->params([ $data = $this->request->params([
["campus_id",""] ["campus_id",""],
["customer_resource_id",""]
]); ]);
return success((new SixSpeedModificationLogService())->getPage($data)); return success((new SixSpeedModificationLogService())->getPage($data));
} }
@ -86,10 +87,10 @@ class SixSpeedModificationLog extends BaseAdminController
*/ */
public function del(int $id){ public function del(int $id){
(new SixSpeedModificationLogService())->del($id); (new SixSpeedModificationLogService())->del($id);
return success('DELETE_SUCCESS'); return success('回滚成功');
} }
public function getCampusAll(){ public function getCampusAll(){
return success(( new SixSpeedModificationLogService())->getCampusAll()); return success(( new SixSpeedModificationLogService())->getCampusAll());
} }

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

@ -34,11 +34,14 @@ Route::group('customer_resources', function () {
Route::put('customer_resources/:id', 'customer_resources.CustomerResources/edit'); Route::put('customer_resources/:id', 'customer_resources.CustomerResources/edit');
//删除客户资源 //删除客户资源
Route::delete('customer_resources/:id', 'customer_resources.CustomerResources/del'); Route::delete('customer_resources/:id', 'customer_resources.CustomerResources/del');
Route::get('personnel_all','customer_resources.CustomerResources/getPersonnelAll'); Route::get('personnel_all','customer_resources.CustomerResources/getPersonnelAll');
Route::get('campus_all','customer_resources.CustomerResources/getCampusAll'); Route::get('campus_all','customer_resources.CustomerResources/getCampusAll');
Route::post('fp_edit', 'customer_resources.CustomerResources/fp_edit');
})->middleware([ })->middleware([
AdminCheckToken::class, AdminCheckToken::class,
AdminCheckRole::class, AdminCheckRole::class,

25
niucloud/app/model/customer_resource_changes/CustomerResourceChanges.php

@ -11,6 +11,7 @@
namespace app\model\customer_resource_changes; namespace app\model\customer_resource_changes;
use app\model\personnel\Personnel;
use core\base\BaseModel; use core\base\BaseModel;
use think\model\concern\SoftDelete; use think\model\concern\SoftDelete;
use think\model\relation\HasMany; use think\model\relation\HasMany;
@ -61,7 +62,7 @@ class CustomerResourceChanges extends BaseModel
$query->where("id", $value); $query->where("id", $value);
} }
} }
/** /**
* 搜索器:客户资源表变更记录客户资源的ID * 搜索器:客户资源表变更记录客户资源的ID
* @param $value * @param $value
@ -73,7 +74,7 @@ class CustomerResourceChanges extends BaseModel
$query->where("customer_resource_id", $value); $query->where("customer_resource_id", $value);
} }
} }
/** /**
* 搜索器:客户资源表变更记录操作人的ID * 搜索器:客户资源表变更记录操作人的ID
* @param $value * @param $value
@ -85,7 +86,7 @@ class CustomerResourceChanges extends BaseModel
$query->where("operator_id", $value); $query->where("operator_id", $value);
} }
} }
/** /**
* 搜索器:客户资源表变更记录操作校区的ID * 搜索器:客户资源表变更记录操作校区的ID
* @param $value * @param $value
@ -97,7 +98,7 @@ class CustomerResourceChanges extends BaseModel
$query->where("campus_id", $value); $query->where("campus_id", $value);
} }
} }
/** /**
* 搜索器:客户资源表变更记录修改的哪些字段 * 搜索器:客户资源表变更记录修改的哪些字段
* @param $value * @param $value
@ -109,7 +110,7 @@ class CustomerResourceChanges extends BaseModel
$query->where("modified_fields", $value); $query->where("modified_fields", $value);
} }
} }
/** /**
* 搜索器:客户资源表变更记录修改前的值 * 搜索器:客户资源表变更记录修改前的值
* @param $value * @param $value
@ -121,7 +122,7 @@ class CustomerResourceChanges extends BaseModel
$query->where("old_values", $value); $query->where("old_values", $value);
} }
} }
/** /**
* 搜索器:客户资源表变更记录修改后的值 * 搜索器:客户资源表变更记录修改后的值
* @param $value * @param $value
@ -133,10 +134,14 @@ class CustomerResourceChanges extends BaseModel
$query->where("new_values", $value); $query->where("new_values", $value);
} }
} }
public function personnel(){
return $this->hasOne(Personnel::class, 'id', 'operator_id')->joinType('left')->withField('name,id')->bind(['staff_id_name'=>'name']);
}
} }

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

@ -11,6 +11,7 @@
namespace app\model\customer_resources; namespace app\model\customer_resources;
use app\model\resource_sharing\ResourceSharing;
use core\base\BaseModel; use core\base\BaseModel;
use think\model\concern\SoftDelete; use think\model\concern\SoftDelete;
use think\model\relation\HasMany; use think\model\relation\HasMany;
@ -65,7 +66,7 @@ class CustomerResources extends BaseModel
$query->where("name", $value); $query->where("name", $value);
} }
} }
/** /**
* 搜索器:客户资源联系电话 * 搜索器:客户资源联系电话
* @param $value * @param $value
@ -77,12 +78,12 @@ class CustomerResources extends BaseModel
$query->where("phone_number", $value); $query->where("phone_number", $value);
} }
} }
public function personnel(){ public function personnel(){
return $this->hasOne(Personnel::class, 'id', 'consultant')->joinType('left')->withField('name,id')->bind(['consultant_name'=>'name']); return $this->hasOne(Personnel::class, 'id', 'consultant')->joinType('left')->withField('name,id')->bind(['consultant_name'=>'name']);
} }
@ -91,4 +92,11 @@ class CustomerResources extends BaseModel
return $this->hasOne(Campus::class, 'id', 'campus')->joinType('left')->withField('campus_name,id')->bind(['campus_name'=>'campus_name']); return $this->hasOne(Campus::class, 'id', 'campus')->joinType('left')->withField('campus_name,id')->bind(['campus_name'=>'campus_name']);
} }
public function resourceSharing()
{
return $this->hasOne(ResourceSharing::class, 'resource_id', 'resource_id')->joinType('left')
->withField('id as sharin_id,shared_by');
}
} }

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

@ -28,7 +28,7 @@ use app\model\personnel\Personnel;
class SixSpeedModificationLog extends BaseModel class SixSpeedModificationLog extends BaseModel
{ {
/** /**
* 数据表主键 * 数据表主键
@ -42,9 +42,9 @@ class SixSpeedModificationLog extends BaseModel
*/ */
protected $name = 'six_speed_modification_log'; protected $name = 'six_speed_modification_log';
/** /**
* 搜索器:六一速修改记录编号 * 搜索器:六一速修改记录编号
@ -57,7 +57,7 @@ class SixSpeedModificationLog extends BaseModel
$query->where("id", $value); $query->where("id", $value);
} }
} }
/** /**
* 搜索器:六一速修改记录校区 * 搜索器:六一速修改记录校区
* @param $value * @param $value
@ -69,18 +69,18 @@ class SixSpeedModificationLog extends BaseModel
$query->where("campus_id", $value); $query->where("campus_id", $value);
} }
} }
public function campus(){ public function campus(){
return $this->hasOne(Campus::class, 'id', 'campus_id')->joinType('left')->withField('campus_name,id')->bind(['campus_id_name'=>'campus_name']); return $this->hasOne(Campus::class, 'id', 'campus_id')->joinType('left')->withField('campus_name,id')->bind(['campus_id_name'=>'campus_name']);
} }
public function personnel(){ public function personnel(){
return $this->hasOne(Personnel::class, 'id', 'staff_id')->joinType('left')->withField('name,id')->bind(['staff_id_name'=>'name']); return $this->hasOne(Personnel::class, 'id', 'operator_id')->joinType('left')->withField('name,id')->bind(['staff_id_name'=>'name']);
} }
} }

29
niucloud/app/service/admin/customer_resource_changes/CustomerResourceChangesService.php

@ -13,6 +13,8 @@ namespace app\service\admin\customer_resource_changes;
use app\model\customer_resource_changes\CustomerResourceChanges; use app\model\customer_resource_changes\CustomerResourceChanges;
use app\model\customer_resources\CustomerResources;
use app\model\six_speed\SixSpeed;
use core\base\BaseAdminService; use core\base\BaseAdminService;
@ -39,8 +41,14 @@ class CustomerResourceChangesService extends BaseAdminService
$field = 'id,customer_resource_id,operator_id,campus_id,modified_fields,old_values,new_values,modification_time,created_at,deleted_at,is_rolled_back,rollback_time'; $field = 'id,customer_resource_id,operator_id,campus_id,modified_fields,old_values,new_values,modification_time,created_at,deleted_at,is_rolled_back,rollback_time';
$order = 'id desc'; $order = 'id desc';
$search_model = $this->model->withSearch(["id","customer_resource_id","operator_id","campus_id","modified_fields","old_values","new_values"], $where)->field($field)->order($order); $search_model = $this->model->withSearch(["id","customer_resource_id","operator_id","campus_id","modified_fields","old_values","new_values"], $where)->with(['personnel'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
$list = $this->pageQuery($search_model, function ($item) {
$customer = new CustomerResources();
$json = json_decode($item['modified_fields'],true);
$item['count'] = count($json);
$item['name'] = $customer->where(['id' => $item['customer_resource_id']])->value('name');
});
return $list; return $list;
} }
@ -89,11 +97,20 @@ class CustomerResourceChangesService extends BaseAdminService
*/ */
public function del(int $id) public function del(int $id)
{ {
$model = $this->model->where([['id', '=', $id]])->find(); $customerResources = new CustomerResources();
$res = $model->delete();
return $res; $data = $this->model->where([['id', '=', $id]])->find();
$save = json_decode($data['old_values'],true);
$customerResources->where(['id' => $data['customer_resource_id']])->update($save);
$this->model->where([['id', '=', $id]])->update([
'rollback_time' => date("Y-m-d H:i:s", time()),
'is_rolled_back' => 1
]);
} }
} }

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

@ -16,6 +16,7 @@ use app\model\customer_resources\CustomerResources;
use app\model\personnel\Personnel; use app\model\personnel\Personnel;
use app\model\campus\Campus; use app\model\campus\Campus;
use app\model\resource_sharing\ResourceSharing;
use app\model\six_speed\SixSpeed; use app\model\six_speed\SixSpeed;
use app\model\six_speed_modification_log\SixSpeedModificationLog; use app\model\six_speed_modification_log\SixSpeedModificationLog;
use core\base\BaseAdminService; use core\base\BaseAdminService;
@ -39,13 +40,33 @@ class CustomerResourcesService extends BaseAdminService
* @param array $where * @param array $where
* @return array * @return array
*/ */
public function getPage(array $where = []) public function getPage(array $data = [])
{ {
$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'; $field = 'a.*,b.id as shared_id';
$order = 'id desc'; $order = 'a.id desc';
$where = [];
if($data['phone_number']){
$where[] = ['a.phone_number','=',$data['phone_number']];
}
if($data['name']){
$where[] = ['a.name','=',$data['name']];
}
if($data['type'] == 'yjfp'){
$where[] = ['b.shared_by','=',0];
}
$search_model = $this->model
->alias("a")
->join(['school_resource_sharing' => 'b'],'a.id = b.resource_id','left')
->where($where)
->with(['personnel'])->field($field)->order($order);
$search_model = $this->model->withSearch(["name","phone_number"], $where)->with(['personnel'])->field($field)->order($order);
$list = $this->pageQuery($search_model); $list = $this->pageQuery($search_model);
return $list; return $list;
} }
@ -74,8 +95,10 @@ class CustomerResourcesService extends BaseAdminService
*/ */
public function add(array $data) public function add(array $data)
{ {
$resourceSharing = new ResourceSharing();
$personnel = new Personnel(); $personnel = new Personnel();
$data['consultant'] = $personnel->where(['sys_user_id' => $this->uid])->value("id"); $data['consultant'] = $personnel->where(['sys_user_id' => $this->uid])->value("id");
if(!$data['consultant']){ if(!$data['consultant']){
return fail("操作失败"); return fail("操作失败");
} }
@ -83,6 +106,15 @@ class CustomerResourcesService extends BaseAdminService
$res = $this->model->create($data); $res = $this->model->create($data);
$role_id = $personnel->alias("a")->join(['school_campus_person_role' => 'b'],'a.id = b.person_id','left')
->where(['a.id' => $data['consultant']])->value('b.role_id');
$resourceSharing->insert([
'resource_id' => $res->id,
'user_id' => $data['consultant'],
'role_id' => $role_id
]);
if($data['purchase_power']){ if($data['purchase_power']){
$six_id = $sixSpeed->where(['resource_id' => $res->id])->value("id"); $six_id = $sixSpeed->where(['resource_id' => $res->id])->value("id");
$data['staff_id'] = $data['consultant']; $data['staff_id'] = $data['consultant'];
@ -226,15 +258,33 @@ class CustomerResourcesService extends BaseAdminService
} }
public function getPersonnelAll(){ public function getPersonnelAll($data){
$personnelModel = new Personnel(); $personnelModel = new Personnel();
return $personnelModel->select()->toArray(); $where = [];
if($data['role_id']){
$where[] = ['b.role_id','=',$data['role_id']];
}
return $personnelModel
->alias("a")
->join(['school_campus_person_role' => 'b'],'a.id = b.person_id','left')
->field("a.*")
->where($where)->select()->toArray();
} }
public function getCampusAll(){ public function getCampusAll(){
$campusModel = new Campus(); $campusModel = new Campus();
return $campusModel->select()->toArray(); return $campusModel->select()->toArray();
} }
public function fp_edit($data){
$resourceSharing = new ResourceSharing();
$resourceSharing->where(['id' => $data['shared_id']])->update([
'shared_by' => $data['shared_by'],
'shared_at' => date("Y-m-d H:i:s")
]);
return "分配成功";
}
} }

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

@ -11,10 +11,13 @@
namespace app\service\admin\six_speed_modification_log; namespace app\service\admin\six_speed_modification_log;
use app\model\customer_resources\CustomerResources;
use app\model\six_speed\SixSpeed;
use app\model\six_speed_modification_log\SixSpeedModificationLog; use app\model\six_speed_modification_log\SixSpeedModificationLog;
use app\model\campus\Campus; use app\model\campus\Campus;
use app\model\personnel\Personnel; use app\model\personnel\Personnel;
use app\service\core\member\CoreMemberService;
use core\base\BaseAdminService; use core\base\BaseAdminService;
@ -38,11 +41,17 @@ class SixSpeedModificationLogService extends BaseAdminService
*/ */
public function getPage(array $where = []) public function getPage(array $where = [])
{ {
$field = 'id,campus_id,staff_id,modified_field,old_value,new_value,is_rollback,rollback_time,created_at,updated_at'; $field = 'id,campus_id,operator_id,customer_resource_id,modified_field,old_value,new_value,is_rollback,rollback_time,created_at,updated_at';
$order = 'id desc'; $order = 'id desc';
$search_model = $this->model->withSearch(["id","campus_id"], $where)->with(['campus','personnel'])->field($field)->order($order); $search_model = $this->model->withSearch(["id","campus_id","customer_resource_id"], $where)->with(['campus','personnel'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
$list = $this->pageQuery($search_model, function ($item) {
$customer = new CustomerResources();
$json = json_decode($item['modified_field'],true);
$item['count'] = count($json);
$item['name'] = $customer->where(['id' => $item['customer_resource_id']])->value('name');
});
return $list; return $list;
} }
@ -91,12 +100,23 @@ class SixSpeedModificationLogService extends BaseAdminService
*/ */
public function del(int $id) public function del(int $id)
{ {
$model = $this->model->where([['id', '=', $id]])->find(); $sixSpeed = new SixSpeed();
$res = $model->delete(); // $model = $this->model->where([['id', '=', $id]])->find();
return $res; // $res = $model->delete();
$data = $this->model->where([['id', '=', $id]])->find();
$save = json_decode($data['old_value'],true);
$sixSpeed->where(['resource_id' => $data['customer_resource_id']])->update($save);
$this->model->where([['id', '=', $id]])->update([
'rollback_time' => date("Y-m-d H:i:s", time()),
'is_rollback' => 1
]);
return true;
} }
public function getCampusAll(){ public function getCampusAll(){
$campusModel = new Campus(); $campusModel = new Campus();
return $campusModel->select()->toArray(); return $campusModel->select()->toArray();

Loading…
Cancel
Save