Browse Source

本地临时保存

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

1
admin/components.d.ts

@ -11,6 +11,7 @@ declare module '@vue/runtime-core' {
DiyLink: typeof import('./src/components/diy-link/index.vue')['default']
Editor: typeof import('./src/components/editor/index.vue')['default']
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
ElContainer: typeof import('element-plus/es')['ElContainer']
ExportSure: typeof import('./src/components/export-sure/index.vue')['default']
HeatMap: typeof import('./src/components/heat-map/index.vue')['default']
Icon: typeof import('./src/components/icon/index.vue')['default']

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

@ -58,3 +58,7 @@ export function getWithPersonnelList(params: Record<string,any>){
}
// 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">
<div class="flex justify-between items-center">
<span class="text-lg">{{ pageName }}</span>
<el-button type="primary" @click="addEvent">
{{ t('addCustomerResourceChanges') }}
</el-button>
</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]">
<el-table
:data="customerResourceChangesTable.data"
@ -83,61 +16,40 @@
!customerResourceChangesTable.loading ? t('emptyData') : ''
}}</span>
</template>
<el-table-column
prop="customer_resource_id"
:label="t('customerResourceId')"
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"
prop="created_at"
label="修改时间"
/>
<el-table-column
prop="modified_fields"
:label="t('modifiedFields')"
min-width="120"
:show-overflow-tooltip="true"
prop="name"
label="客户名称"
/>
<el-table-column
prop="old_values"
:label="t('oldValues')"
min-width="120"
:show-overflow-tooltip="true"
prop="staff_id_name"
label="修改人员"
/>
<el-table-column
prop="new_values"
:label="t('newValues')"
min-width="120"
:show-overflow-tooltip="true"
prop="count"
label="修改字段数量"
/>
<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>
<el-button type="primary" link @click="deleteEvent(row.id)" v-if="row.is_rolled_back == 0">回滚</el-button>
</template>
</el-table-column>
</el-table>
<div class="mt-[16px] flex justify-end">
@ -182,12 +94,7 @@ let customerResourceChangesTable = reactive({
loading: true,
data: [],
searchParam: {
customer_resource_id: '',
operator_id: '',
campus_id: '',
modified_fields: '',
old_values: '',
new_values: '',
customer_resource_id: route.query.id
},
})
@ -244,7 +151,7 @@ const editEvent = (data: any) => {
* 删除客户资源表变更记录
*/
const deleteEvent = (id: number) => {
ElMessageBox.confirm(t('customerResourceChangesDeleteTips'), t('warning'), {
ElMessageBox.confirm("确定要回滚当前数据吗", t('warning'), {
confirmButtonText: t('confirm'),
cancelButtonText: t('cancel'),
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">
<span class="text-lg">{{pageName}}</span>
<el-button type="primary" @click="addEvent">
<el-button type="primary" @click="addEvent" v-if="type == 'khzy'">
{{ t('addCustomerResources') }}
</el-button>
</div>
@ -55,12 +55,24 @@
<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 }">
<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>
<el-button type="primary" link @click="modificationLog(row.id)">六要素修改记录</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>
</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>
<div class="mt-[16px] flex justify-end">
@ -71,6 +83,9 @@
</div>
<edit ref="editCustomerResourcesDialog" @complete="loadCustomerResourcesList" />
<fp ref="fpCustomerResourcesDialog" @complete="loadCustomerResourcesList" />
</el-card>
</div>
</template>
@ -83,9 +98,24 @@ import { getCustomerResourcesList, deleteCustomerResources, getWithPersonnelList
import { img } from '@/utils/common'
import { ElMessageBox,FormInstance } from 'element-plus'
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 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({
page: 1,
@ -95,7 +125,8 @@ let customerResourcesTable = reactive({
data: [],
searchParam:{
"name":"",
"phone_number":""
"phone_number":"",
'type':type
}
})
@ -164,6 +195,8 @@ loadCustomerResourcesList()
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
}
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">
<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('addSixSpeedModificationLog') }}
</el-button>
<span class="text-lg">六要素修改记录</span>
</div>
<el-card
<!-- <el-card
class="box-card !border-none my-[10px] table-search-wrap"
shadow="never"
>
@ -44,7 +41,7 @@
}}</el-button>
</el-form-item>
</el-form>
</el-card>
</el-card> -->
<div class="mt-[10px]">
<el-table
@ -57,53 +54,41 @@
!sixSpeedModificationLogTable.loading ? t('emptyData') : ''
}}</span>
</template>
<el-table-column
prop="campus_id_name"
:label="t('campusId')"
min-width="120"
:show-overflow-tooltip="true"
/>
<el-table-column
prop="updated_at"
label="修改时间"
/>
<el-table-column
prop="name"
label="客户名称"
/>
<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"
label="修改人员"
/>
<el-table-column
prop="old_value"
:label="t('oldValue')"
min-width="120"
:show-overflow-tooltip="true"
/>
<el-table-column
prop="new_value"
:label="t('newValue')"
min-width="120"
:show-overflow-tooltip="true"
prop="count"
label="修改字段数量"
/>
<el-table-column
:label="t('operation')"
fixed="right"
min-width="120"
min-width="60"
>
<template #default="{ row }">
<el-button type="primary" link @click="editEvent(row)">{{
t('edit')
}}</el-button>
<el-button type="primary" link @click="deleteEvent(row.id)">{{
<el-button type="primary" link @click="deleteEvent(row.id)" v-if="row.is_rollback == 0">回滚</el-button>
<!-- <el-button type="primary" link @click="deleteEvent(row.id)">{{
t('delete')
}}</el-button>
}}</el-button> -->
</template>
</el-table-column>
</el-table>
@ -151,6 +136,7 @@ let sixSpeedModificationLogTable = reactive({
loading: true,
data: [],
searchParam: {
customer_resource_id: route.query.id,
campus_id: '',
},
})
@ -208,7 +194,7 @@ const editEvent = (data: any) => {
* 删除六一速修改记录
*/
const deleteEvent = (id: number) => {
ElMessageBox.confirm(t('sixSpeedModificationLogDeleteTips'), t('warning'), {
ElMessageBox.confirm("确定要回滚当前数据吗", t('warning'), {
confirmButtonText: t('confirm'),
cancelButtonText: t('cancel'),
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){
(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(){
$data = $this->request->params([
["name",""],
["phone_number",""]
["phone_number",""],
["type","khzy"]
]);
return success((new CustomerResourcesService())->getPage($data));
}
@ -119,8 +120,6 @@ class CustomerResources extends BaseAdminController
["first_visit_status",""],
["second_visit_status",""],
["is_closed",""]
]);
$this->validate($data, 'app\validate\customer_resources\CustomerResources.edit');
@ -139,11 +138,25 @@ class CustomerResources extends BaseAdminController
public function getPersonnelAll(){
return success(( new CustomerResourcesService())->getPersonnelAll());
$data = $this->request->params([
["role_id",""],
]);
return success(( new CustomerResourcesService())->getPersonnelAll($data));
}
public function 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(){
$data = $this->request->params([
["campus_id",""]
["campus_id",""],
["customer_resource_id",""]
]);
return success((new SixSpeedModificationLogService())->getPage($data));
}
@ -86,10 +87,10 @@ class SixSpeedModificationLog extends BaseAdminController
*/
public function del(int $id){
(new SixSpeedModificationLogService())->del($id);
return success('DELETE_SUCCESS');
return success('回滚成功');
}
public function 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::delete('customer_resources/:id', 'customer_resources.CustomerResources/del');
Route::get('personnel_all','customer_resources.CustomerResources/getPersonnelAll');
Route::get('campus_all','customer_resources.CustomerResources/getCampusAll');
Route::post('fp_edit', 'customer_resources.CustomerResources/fp_edit');
})->middleware([
AdminCheckToken::class,
AdminCheckRole::class,

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

@ -11,6 +11,7 @@
namespace app\model\customer_resource_changes;
use app\model\personnel\Personnel;
use core\base\BaseModel;
use think\model\concern\SoftDelete;
use think\model\relation\HasMany;
@ -61,7 +62,7 @@ class CustomerResourceChanges extends BaseModel
$query->where("id", $value);
}
}
/**
* 搜索器:客户资源表变更记录客户资源的ID
* @param $value
@ -73,7 +74,7 @@ class CustomerResourceChanges extends BaseModel
$query->where("customer_resource_id", $value);
}
}
/**
* 搜索器:客户资源表变更记录操作人的ID
* @param $value
@ -85,7 +86,7 @@ class CustomerResourceChanges extends BaseModel
$query->where("operator_id", $value);
}
}
/**
* 搜索器:客户资源表变更记录操作校区的ID
* @param $value
@ -97,7 +98,7 @@ class CustomerResourceChanges extends BaseModel
$query->where("campus_id", $value);
}
}
/**
* 搜索器:客户资源表变更记录修改的哪些字段
* @param $value
@ -109,7 +110,7 @@ class CustomerResourceChanges extends BaseModel
$query->where("modified_fields", $value);
}
}
/**
* 搜索器:客户资源表变更记录修改前的值
* @param $value
@ -121,7 +122,7 @@ class CustomerResourceChanges extends BaseModel
$query->where("old_values", $value);
}
}
/**
* 搜索器:客户资源表变更记录修改后的值
* @param $value
@ -133,10 +134,14 @@ class CustomerResourceChanges extends BaseModel
$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;
use app\model\resource_sharing\ResourceSharing;
use core\base\BaseModel;
use think\model\concern\SoftDelete;
use think\model\relation\HasMany;
@ -65,7 +66,7 @@ class CustomerResources extends BaseModel
$query->where("name", $value);
}
}
/**
* 搜索器:客户资源联系电话
* @param $value
@ -77,12 +78,12 @@ class CustomerResources extends BaseModel
$query->where("phone_number", $value);
}
}
public function personnel(){
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']);
}
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
{
/**
* 数据表主键
@ -42,9 +42,9 @@ class SixSpeedModificationLog extends BaseModel
*/
protected $name = 'six_speed_modification_log';
/**
* 搜索器:六一速修改记录编号
@ -57,7 +57,7 @@ class SixSpeedModificationLog extends BaseModel
$query->where("id", $value);
}
}
/**
* 搜索器:六一速修改记录校区
* @param $value
@ -69,18 +69,18 @@ class SixSpeedModificationLog extends BaseModel
$query->where("campus_id", $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']);
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_resources\CustomerResources;
use app\model\six_speed\SixSpeed;
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';
$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);
$list = $this->pageQuery($search_model);
$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, 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;
}
@ -89,11 +97,20 @@ class CustomerResourceChangesService extends BaseAdminService
*/
public function del(int $id)
{
$model = $this->model->where([['id', '=', $id]])->find();
$res = $model->delete();
return $res;
$customerResources = new CustomerResources();
$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\campus\Campus;
use app\model\resource_sharing\ResourceSharing;
use app\model\six_speed\SixSpeed;
use app\model\six_speed_modification_log\SixSpeedModificationLog;
use core\base\BaseAdminService;
@ -39,13 +40,33 @@ class CustomerResourcesService extends BaseAdminService
* @param array $where
* @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';
$order = 'id desc';
$field = 'a.*,b.id as shared_id';
$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);
return $list;
}
@ -74,8 +95,10 @@ class CustomerResourcesService extends BaseAdminService
*/
public function add(array $data)
{
$resourceSharing = new ResourceSharing();
$personnel = new Personnel();
$data['consultant'] = $personnel->where(['sys_user_id' => $this->uid])->value("id");
if(!$data['consultant']){
return fail("操作失败");
}
@ -83,6 +106,15 @@ class CustomerResourcesService extends BaseAdminService
$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']){
$six_id = $sixSpeed->where(['resource_id' => $res->id])->value("id");
$data['staff_id'] = $data['consultant'];
@ -226,15 +258,33 @@ class CustomerResourcesService extends BaseAdminService
}
public function getPersonnelAll(){
public function getPersonnelAll($data){
$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(){
$campusModel = new Campus();
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;
use app\model\customer_resources\CustomerResources;
use app\model\six_speed\SixSpeed;
use app\model\six_speed_modification_log\SixSpeedModificationLog;
use app\model\campus\Campus;
use app\model\personnel\Personnel;
use app\service\core\member\CoreMemberService;
use core\base\BaseAdminService;
@ -38,11 +41,17 @@ class SixSpeedModificationLogService extends BaseAdminService
*/
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';
$search_model = $this->model->withSearch(["id","campus_id"], $where)->with(['campus','personnel'])->field($field)->order($order);
$list = $this->pageQuery($search_model);
$search_model = $this->model->withSearch(["id","campus_id","customer_resource_id"], $where)->with(['campus','personnel'])->field($field)->order($order);
$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;
}
@ -91,12 +100,23 @@ class SixSpeedModificationLogService extends BaseAdminService
*/
public function del(int $id)
{
$model = $this->model->where([['id', '=', $id]])->find();
$res = $model->delete();
return $res;
$sixSpeed = new SixSpeed();
// $model = $this->model->where([['id', '=', $id]])->find();
// $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(){
$campusModel = new Campus();
return $campusModel->select()->toArray();

Loading…
Cancel
Save