指定售后人员

This commit is contained in:
慕下 2024-03-29 11:46:45 +08:00
parent d26a8d9d30
commit 5830c6a0ff
12 changed files with 397 additions and 200 deletions

View File

@ -11,18 +11,13 @@ import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.crm.system.domain.DesigneeWrapperClass; import com.ruoyi.crm.system.domain.DesigneeWrapperClass;
import com.ruoyi.crm.system.domain.ServiceTicket; import com.ruoyi.crm.system.domain.ServiceTicket;
import com.ruoyi.crm.system.service.IServiceTicketService; import com.ruoyi.crm.system.service.IServiceTicketService;
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 服务工单Controller * 服务工单Controller
@ -36,10 +31,6 @@ public class ServiceTicketController extends BaseController
{ {
@Autowired @Autowired
private IServiceTicketService serviceTicketService; private IServiceTicketService serviceTicketService;
@Autowired
private ISysUserService userService;
@Autowired
private ISysDeptService deptService;
/** /**
* 查询服务工单列表 * 查询服务工单列表
@ -114,19 +105,7 @@ public class ServiceTicketController extends BaseController
*/ */
@GetMapping("/designatedPerson") @GetMapping("/designatedPerson")
public AjaxResult designatedPerson(SysUser user){ public AjaxResult designatedPerson(SysUser user){
ArrayList<DesigneeWrapperClass> designeeWrapperClassArrayList = new ArrayList<>(); return AjaxResult.success(serviceTicketService.designatedPersonService(user));
List<SysUser> sysUsers = userService.selectUserList(user);
for (SysUser sysUser : sysUsers) {
DesigneeWrapperClass designeeWrapperClass = new DesigneeWrapperClass();
if (sysUser.getDept() != null){
SysDept dept = sysUser.getDept();
designeeWrapperClass.setLabel(dept.getDeptName());
designeeWrapperClassArrayList.add(designeeWrapperClass);
}
}
designeeWrapperClassArrayList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(HashSet::new), ArrayList::new));
System.out.println(designeeWrapperClassArrayList.toString());
return AjaxResult.success(designeeWrapperClassArrayList);
} }
} }

View File

@ -77,7 +77,7 @@ public class ServiceTicket extends BaseEntity
/** 售后技术人员 */ /** 售后技术人员 */
@Excel(name = "售后技术人员") @Excel(name = "售后技术人员")
private Integer afterSalesTechnician; private String afterSalesTechnician;
/** 服务地址(省/自治区/直辖市) */ /** 服务地址(省/自治区/直辖市) */
@Excel(name = "服务地址(省/自治区/直辖市)") @Excel(name = "服务地址(省/自治区/直辖市)")
@ -126,7 +126,7 @@ public class ServiceTicket extends BaseEntity
private Integer customerSatisfaction; private Integer customerSatisfaction;
/** 满意度数值 */ /** 满意度数值 */
@Excel(name = "满意度数值") // @Excel(name = "满意度数值")
private Long satisfactionValue; private Long satisfactionValue;
/** 客户意见与诉求 */ /** 客户意见与诉求 */
@ -280,12 +280,12 @@ public class ServiceTicket extends BaseEntity
{ {
return demandServiceDay; return demandServiceDay;
} }
public void setAfterSalesTechnician(Integer afterSalesTechnician) public void setAfterSalesTechnician(String afterSalesTechnician)
{ {
this.afterSalesTechnician = afterSalesTechnician; this.afterSalesTechnician = afterSalesTechnician;
} }
public Integer getAfterSalesTechnician() public String getAfterSalesTechnician()
{ {
return afterSalesTechnician; return afterSalesTechnician;
} }

View File

@ -1,8 +1,11 @@
package com.ruoyi.crm.system.service; package com.ruoyi.crm.system.service;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.crm.system.domain.DesigneeWrapperClass;
import com.ruoyi.crm.system.domain.ServiceTicket; import com.ruoyi.crm.system.domain.ServiceTicket;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -60,4 +63,12 @@ public interface IServiceTicketService
* @return 结果 * @return 结果
*/ */
public int deleteServiceTicketById(Long id); public int deleteServiceTicketById(Long id);
/**
* 指定员工树形数据
* @param user
* @return ArrayList<DesigneeWrapperClass>
*/
public ArrayList<DesigneeWrapperClass> designatedPersonService(SysUser user);
} }

View File

@ -1,12 +1,20 @@
package com.ruoyi.crm.system.service.impl; package com.ruoyi.crm.system.service.impl;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.crm.domain.CrmCustomer;
import com.ruoyi.crm.service.ICrmCustomerService;
import com.ruoyi.crm.system.domain.DesigneeWrapperClass;
import com.ruoyi.crm.system.domain.ServiceTicket; import com.ruoyi.crm.system.domain.ServiceTicket;
import com.ruoyi.crm.system.mapper.ServiceTicketMapper; import com.ruoyi.crm.system.mapper.ServiceTicketMapper;
import com.ruoyi.crm.system.service.IServiceTicketService; import com.ruoyi.crm.system.service.IServiceTicketService;
import com.ruoyi.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -20,6 +28,10 @@ public class ServiceTicketServiceImpl implements IServiceTicketService
{ {
@Autowired @Autowired
private ServiceTicketMapper serviceTicketMapper; private ServiceTicketMapper serviceTicketMapper;
@Autowired
private ISysUserService userService;
@Autowired
private ICrmCustomerService crmCustomerService;
/** /**
* 查询服务工单 * 查询服务工单
@ -54,6 +66,8 @@ public class ServiceTicketServiceImpl implements IServiceTicketService
@Override @Override
public int insertServiceTicket(ServiceTicket serviceTicket) public int insertServiceTicket(ServiceTicket serviceTicket)
{ {
CrmCustomer crmCustomer = crmCustomerService.selectCrmCustomerById(serviceTicket.getSatisfactionValue());
serviceTicket.setCustomerName(crmCustomer.getName());
serviceTicket.setCreateTime(DateUtils.getNowDate()); serviceTicket.setCreateTime(DateUtils.getNowDate());
return serviceTicketMapper.insertServiceTicket(serviceTicket); return serviceTicketMapper.insertServiceTicket(serviceTicket);
} }
@ -67,6 +81,8 @@ public class ServiceTicketServiceImpl implements IServiceTicketService
@Override @Override
public int updateServiceTicket(ServiceTicket serviceTicket) public int updateServiceTicket(ServiceTicket serviceTicket)
{ {
CrmCustomer crmCustomer = crmCustomerService.selectCrmCustomerById(serviceTicket.getSatisfactionValue());
serviceTicket.setCustomerName(crmCustomer.getName());
serviceTicket.setUpdateTime(DateUtils.getNowDate()); serviceTicket.setUpdateTime(DateUtils.getNowDate());
return serviceTicketMapper.updateServiceTicket(serviceTicket); return serviceTicketMapper.updateServiceTicket(serviceTicket);
} }
@ -94,4 +110,57 @@ public class ServiceTicketServiceImpl implements IServiceTicketService
{ {
return serviceTicketMapper.deleteServiceTicketById(id); return serviceTicketMapper.deleteServiceTicketById(id);
} }
/**
* 指定员工树形数据
* @param user
* @return ArrayList<DesigneeWrapperClass>
*/
@Override
public ArrayList<DesigneeWrapperClass> designatedPersonService(SysUser user){
//最终返回数据的集合
ArrayList<DesigneeWrapperClass> designeeWrapperClassArrayList = new ArrayList<>();
//保存部门名的集合
ArrayList<String> stringArrayList = new ArrayList<>();
List<SysUser> sysUsers = userService.selectUserList(user);
//循环系统用户拿到所有部门
for (SysUser sysUser : sysUsers) {
if (sysUser.getDept() != null && sysUser.getDept().getDeptName() != null){
SysDept dept = sysUser.getDept();
stringArrayList.add(dept.getDeptName());
}
}
//部门去重
ArrayList<String> duplicateRemovalList = new ArrayList<>();
for (String s : stringArrayList) {
if (!duplicateRemovalList.contains(s))
{
duplicateRemovalList.add(s);
}
}
for (String s : duplicateRemovalList) {
DesigneeWrapperClass designeeWrapperClass = new DesigneeWrapperClass();
designeeWrapperClass.setLabel(s);
designeeWrapperClassArrayList.add(designeeWrapperClass);
}
//根据去重后的所有部门循环所有用户对象把对应的用户放入对应的部门中
for (DesigneeWrapperClass designeeWrapperClass : designeeWrapperClassArrayList) {
for (SysUser sysUser : sysUsers) {
if (sysUser.getDept() != null){
SysDept dept = sysUser.getDept();
if (designeeWrapperClass.getLabel().equals(dept.getDeptName())){
ArrayList<DesigneeWrapperClass> children = designeeWrapperClass.getChildren();
if (children == null) {
children = new ArrayList<>();
designeeWrapperClass.setChildren(children);
}
DesigneeWrapperClass wrapperClass = new DesigneeWrapperClass();
wrapperClass.setLabel(sysUser.getUserName());
children.add(wrapperClass);
}
}
}
}
return designeeWrapperClassArrayList;
}
} }

View File

@ -64,7 +64,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="serviceStarTime != null "> and service_star_time = #{serviceStarTime}</if> <if test="serviceStarTime != null "> and service_star_time = #{serviceStarTime}</if>
<if test="serviceEndTime != null "> and service_end_time = #{serviceEndTime}</if> <if test="serviceEndTime != null "> and service_end_time = #{serviceEndTime}</if>
<if test="demandServiceDay != null "> and demand_service_day = #{demandServiceDay}</if> <if test="demandServiceDay != null "> and demand_service_day = #{demandServiceDay}</if>
<if test="afterSalesTechnician != null "> and after_sales_technician = #{afterSalesTechnician}</if> <if test="afterSalesTechnician != null and afterSalesTechnician != '' "> and after_sales_technician = #{afterSalesTechnician}</if>
<if test="serviceAddress != null and serviceAddress != ''"> and service_address = #{serviceAddress}</if> <if test="serviceAddress != null and serviceAddress != ''"> and service_address = #{serviceAddress}</if>
<if test="serviceAddressCity != null and serviceAddressCity != ''"> and service_address_city = #{serviceAddressCity}</if> <if test="serviceAddressCity != null and serviceAddressCity != ''"> and service_address_city = #{serviceAddressCity}</if>
<if test="serviceAddressArea != null and serviceAddressArea != ''"> and service_address_area = #{serviceAddressArea}</if> <if test="serviceAddressArea != null and serviceAddressArea != ''"> and service_address_area = #{serviceAddressArea}</if>

View File

@ -1,108 +0,0 @@
package com.ruoyi.mongodb.conreoller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.mongodb.domain.DynamicData;
import com.ruoyi.mongodb.domain.DynamicForm;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.http.HttpRequest;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
* 智能表单模块
*/
@RestController
@RequestMapping("/intelligentForm")
public class DynamicDataController extends BaseController {
@Autowired
private MongoTemplate mongoTemplate;
//保存数据
@PostMapping("/saveDynamicData")
public AjaxResult saveDynamicData(@RequestBody Map<String, Object> requestData, HttpServletRequest httpServletRequest) {
DynamicData dynamicData = new DynamicData();
// System.out.println(requestData.toString());
String title = (String)requestData.get("title");
String pageView = (String)requestData.get("pageView");
String collectionQuantity = (String)requestData.get("collectionQuantity");
dynamicData.setTitle(title);
requestData.remove("title");
dynamicData.setPageView(pageView);
requestData.remove("pageView");
dynamicData.setCollectionQuantity(collectionQuantity);
requestData.remove("collectionQuantity");
ArrayList<String> inputarr = (ArrayList)requestData.get("inputarr");
// System.out.println(inputarr.toString());
for (String s : inputarr) {
requestData.put(s,null);
}
requestData.remove("inputarr");
// System.out.println(requestData.toString());
dynamicData.setCreatePeople(getUsername());
LocalDate currentDate = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = currentDate.format(formatter);
dynamicData.setCreateTime(formattedDate);
dynamicData.setData(requestData);
dynamicData.setTenantName(httpServletRequest.getHeader("Tenant"));
mongoTemplate.save(dynamicData);
return AjaxResult.success("保存成功");
}
//查询全部数据
@GetMapping("/selectDynamicData")
public AjaxResult selectDynamicData(HttpServletRequest httpServletRequest) {
Query query = new Query();
query.addCriteria(Criteria.where("tenantName").is(httpServletRequest.getHeader("Tenant")));
List<DynamicData> dynamicData = mongoTemplate.find(query, DynamicData.class);
for (DynamicData dynamicDatum : dynamicData) {
Query queryByFor = new Query();
queryByFor.addCriteria(Criteria.where("dynamicDataId").is(dynamicDatum.getId()));
long count = mongoTemplate.count(queryByFor, DynamicForm.class);
dynamicDatum.setCollectionQuantity(count+"");
}
System.out.println(dynamicData.toString());
return AjaxResult.success(dynamicData);
}
//根据id查询数据
@GetMapping("/selectDynamicDataById")
public AjaxResult selectDynamicDataById(String id){
DynamicData dynamicData = mongoTemplate.findById(id, DynamicData.class);
dynamicData.setPageView(Long.parseLong(dynamicData.getPageView())+1+"");
DynamicData save = mongoTemplate.save(dynamicData);
// Map<String, Object> data = dynamicData.getData();
// data.forEach((k,v) -> {
// data.put(k,k);
// });
return AjaxResult.success(save);
}
@PostMapping("/collectData")
//采集数据
public AjaxResult collectData(@RequestBody DynamicForm dynamicForm){
mongoTemplate.save(dynamicForm);
return AjaxResult.success("保存成功");
}
//根据卡片id查询对应采集数据的列表
@GetMapping("/collectDataList")
public AjaxResult collectDataList(String id){
Query query = new Query();
query.addCriteria(Criteria.where("dynamicDataId").is(id));
List<DynamicForm> dynamicForms = mongoTemplate.find(query, DynamicForm.class);
ArrayList<Object> list = new ArrayList<>();
for (DynamicForm dynamicForm : dynamicForms) {
list.add(dynamicForm.getMap());
}
return AjaxResult.success(list);
}
}

View File

@ -0,0 +1,64 @@
package com.ruoyi.mongodb.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.mongodb.domain.DynamicData;
import com.ruoyi.mongodb.domain.DynamicForm;
import com.ruoyi.mongodb.service.DynamicDataService;
import com.ruoyi.mongodb.service.DynamicFormService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
* 智能表单模块
*/
@RestController
@RequestMapping("/intelligentForm")
public class DynamicDataController extends BaseController {
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
private DynamicDataService dynamicDataService;
@Autowired
private DynamicFormService dynamicFormService;
//保存数据
@PostMapping("/saveDynamicData")
public AjaxResult saveDynamicData(@RequestBody Map<String, Object> requestData, HttpServletRequest httpServletRequest) {
dynamicDataService.doSaveDynamicData(requestData,httpServletRequest);
return AjaxResult.success("保存成功");
}
//查询全部数据
@GetMapping("/selectDynamicData")
public AjaxResult selectDynamicData(HttpServletRequest httpServletRequest) {
return AjaxResult.success(dynamicDataService.doSelectDynamicData(httpServletRequest));
}
//根据id查询数据
@GetMapping("/selectDynamicDataById")
public AjaxResult selectDynamicDataById(String id){
return AjaxResult.success(dynamicDataService.doSelectDynamicDataById(id));
}
//采集数据
@PostMapping("/collectData")
public AjaxResult collectData(@RequestBody DynamicForm dynamicForm){
dynamicFormService.doCollectData(dynamicForm);
return AjaxResult.success("保存成功");
}
//根据卡片id查询对应采集数据的列表
@GetMapping("/collectDataList")
public AjaxResult collectDataList(String id){
return AjaxResult.success(dynamicFormService.doCollectDataList(id));
}
}

View File

@ -0,0 +1,14 @@
package com.ruoyi.mongodb.repository;
import com.ruoyi.mongodb.domain.DynamicData;
import org.bson.types.ObjectId;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import java.util.List;
public interface DynamicDataRepository extends MongoRepository<DynamicData,String> {
List<DynamicData> findByTenantName(String tenantName);
@Query("{'_id': {'$eq': ?0}}")
DynamicData doFindById(ObjectId id);
}

View File

@ -0,0 +1,11 @@
package com.ruoyi.mongodb.repository;
import com.ruoyi.mongodb.domain.DynamicForm;
import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.List;
public interface DynamicFormRepository extends MongoRepository<DynamicForm,String> {
Long countAllByDynamicDataId(String dynamicDataId);
List<DynamicForm> findByDynamicDataId(String id);
}

View File

@ -0,0 +1,74 @@
package com.ruoyi.mongodb.service;
import com.ruoyi.mongodb.domain.DynamicData;
import com.ruoyi.mongodb.repository.DynamicDataRepository;
import com.ruoyi.mongodb.repository.DynamicFormRepository;
import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static com.ruoyi.common.utils.SecurityUtils.getUsername;
@Service
public class DynamicDataService {
@Autowired
private DynamicDataRepository dynamicDataRepository;
@Autowired
private DynamicFormRepository dynamicFormRepository;
//保存数据
public DynamicData doSaveDynamicData(Map<String, Object> requestData, HttpServletRequest httpServletRequest){
DynamicData dynamicData = new DynamicData();
//构造数据结构
String title = (String)requestData.get("title");
String pageView = (String)requestData.get("pageView");
String collectionQuantity = (String)requestData.get("collectionQuantity");
dynamicData.setTitle(title);
requestData.remove("title");
dynamicData.setPageView(pageView);
requestData.remove("pageView");
dynamicData.setCollectionQuantity(collectionQuantity);
requestData.remove("collectionQuantity");
ArrayList<String> inputarr = (ArrayList)requestData.get("inputarr");
for (String s : inputarr) {
requestData.put(s,null);
}
requestData.remove("inputarr");
dynamicData.setCreatePeople(getUsername());
LocalDate currentDate = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = currentDate.format(formatter);
dynamicData.setCreateTime(formattedDate);
dynamicData.setData(requestData);
dynamicData.setTenantName(httpServletRequest.getHeader("Tenant"));
return dynamicDataRepository.save(dynamicData);//插入dynamicData数据
}
//查询全部数据
public List<DynamicData> doSelectDynamicData(HttpServletRequest httpServletRequest){
//查询对应租户下的卡片列表数据
List<DynamicData> dynamicData = dynamicDataRepository.findByTenantName(httpServletRequest.getHeader("Tenant"));
for (DynamicData dynamicDatum : dynamicData) {
//查询对应卡片链接采集到数据的数量
Long count = dynamicFormRepository.countAllByDynamicDataId(dynamicDatum.getId());
dynamicDatum.setCollectionQuantity(count+"");
}
return dynamicData;
}
//根据id查询数据
public DynamicData doSelectDynamicDataById(String id){
ObjectId objectId = new ObjectId(id);
DynamicData dynamicData = dynamicDataRepository.doFindById(objectId);
dynamicData.setPageView(Long.parseLong(dynamicData.getPageView())+1+"");
return dynamicDataRepository.save(dynamicData);
}
}

View File

@ -0,0 +1,36 @@
package com.ruoyi.mongodb.service;
import com.ruoyi.mongodb.domain.DynamicForm;
import com.ruoyi.mongodb.repository.DynamicFormRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class DynamicFormService {
@Autowired
private DynamicFormRepository dynamicFormRepository;
//查询对应卡片采集数据的数量
public Long findDynamicFormToCount(String id){
return dynamicFormRepository.countAllByDynamicDataId(id);
}
//采集数据
public void doCollectData(DynamicForm dynamicForm){
dynamicFormRepository.save(dynamicForm);
}
//根据卡片id查询对应采集数据的列表
public ArrayList<Object> doCollectDataList(String id){
List<DynamicForm> dynamicForms = dynamicFormRepository.findByDynamicDataId(id);
ArrayList<Object> list = new ArrayList<>();
for (DynamicForm dynamicForm : dynamicForms) {
list.add(dynamicForm.getMap());
}
return list;
}
}

View File

@ -107,14 +107,14 @@
<!-- @keyup.enter.native="handleQuery"--> <!-- @keyup.enter.native="handleQuery"-->
<!-- />--> <!-- />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- <el-form-item label="售后技术人员" prop="afterSalesTechnician">--> <el-form-item label="售后人员" prop="afterSalesTechnician">
<!-- <el-input--> <el-input
<!-- v-model="queryParams.afterSalesTechnician"--> v-model="queryParams.afterSalesTechnician"
<!-- placeholder="请输入售后技术人员"--> placeholder="请输入售后技术人员"
<!-- clearable--> clearable
<!-- @keyup.enter.native="handleQuery"--> @keyup.enter.native="handleQuery"
<!-- />--> />
<!-- </el-form-item>--> </el-form-item>
<!-- <el-form-item label="服务地址(省/自治区/直辖市)" prop="serviceAddress">--> <!-- <el-form-item label="服务地址(省/自治区/直辖市)" prop="serviceAddress">-->
<!-- <el-input--> <!-- <el-input-->
<!-- v-model="queryParams.serviceAddress"--> <!-- v-model="queryParams.serviceAddress"-->
@ -179,7 +179,7 @@
<!-- placeholder="请选择签退时间">--> <!-- placeholder="请选择签退时间">-->
<!-- </el-date-picker>--> <!-- </el-date-picker>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item label="是否解决" prop="isSolveTheProblem"> <el-form-item label="是否解决" prop="isSolveTheProblem">
<el-select v-model="queryParams.isSolveTheProblem" placeholder="请选择是否解决问题" clearable> <el-select v-model="queryParams.isSolveTheProblem" placeholder="请选择是否解决问题" clearable>
<el-option <el-option
v-for="dict in dict.type.is_solve_the_problem" v-for="dict in dict.type.is_solve_the_problem"
@ -251,7 +251,7 @@
<!-- />--> <!-- />-->
<!-- </el-select>--> <!-- </el-select>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item label="当前负责人" prop="currentPersonInCharge"> <el-form-item label="负责人" prop="currentPersonInCharge">
<el-input <el-input
v-model="queryParams.currentPersonInCharge" v-model="queryParams.currentPersonInCharge"
placeholder="请输入当前负责人" placeholder="请输入当前负责人"
@ -311,22 +311,22 @@
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table border v-loading="loading" :data="ticketList" @selection-change="handleSelectionChange"> <el-table border v-loading="loading" :data="ticketList" @selection-change="handleSelectionChange" row-style="{height:100px}">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="编号" align="center" prop="id" /> <!-- <el-table-column label="编号" align="center" prop="id" />-->
<el-table-column label="标题" align="center" prop="title" /> <el-table-column :show-overflow-tooltip="true" label="标题" align="center" prop="title" />
<!-- <el-table-column label="客户姓名" align="center" prop="customerName" />--> <el-table-column label="客户姓名" align="center" prop="customerName" />
<!-- <el-table-column label="客户编号" align="center" prop="customerNumber" />--> <!-- <el-table-column label="客户编号" align="center" prop="customerNumber" />-->
<!-- <el-table-column label="合同标题" align="center" prop="contractTitle" />--> <!-- <el-table-column label="合同标题" align="center" prop="contractTitle" />-->
<el-table-column label="订单编号" align="center" prop="contractOrderNumber" /> <el-table-column :show-overflow-tooltip="true" label="订单编号" align="center" prop="contractOrderNumber" />
<!-- <el-table-column label="客户联系人" align="center" prop="customerContact" />--> <!-- <el-table-column label="客户联系人" align="center" prop="customerContact" />-->
<!-- <el-table-column label="手机号" align="center" prop="phoneNumber" />--> <!-- <el-table-column label="手机号" align="center" prop="phoneNumber" />-->
<!-- <el-table-column label="服务类型" align="center" prop="serviceType">--> <el-table-column label="服务类型" align="center" prop="serviceType">
<!-- <template slot-scope="scope">--> <template slot-scope="scope">
<!-- <dict-tag :options="dict.type.service_type" :value="scope.row.serviceType"/>--> <dict-tag :options="dict.type.service_type" :value="scope.row.serviceType"/>
<!-- </template>--> </template>
<!-- </el-table-column>--> </el-table-column>
<el-table-column label="服务单号" align="center" prop="serviceOrderNumber" /> <el-table-column :show-overflow-tooltip="true" label="服务单号" align="center" prop="serviceOrderNumber" />
<!-- <el-table-column label="第几个服务单" align="center" prop="howManyServiceOrder" />--> <!-- <el-table-column label="第几个服务单" align="center" prop="howManyServiceOrder" />-->
<el-table-column label="服务开始时间" align="center" prop="serviceStarTime" width="180"> <el-table-column label="服务开始时间" align="center" prop="serviceStarTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
@ -392,35 +392,48 @@
<el-table-column label="当前负责人" align="center" prop="currentPersonInCharge" /> <el-table-column label="当前负责人" align="center" prop="currentPersonInCharge" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit-outline" @click="handleComment(scope.row)" v-hasPermi="['crm:customer:followup']">写跟进</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-s-check" icon="el-icon-edit-outline"
@click="handleChange(scope.row)" @click="handleComment(scope.row)"
v-hasPermi="['system:business:edit']" v-hasPermi="['crm:customer:followup']"
>解决</el-button> >写跟进</el-button>
<el-button <el-dropdown
size="mini" size="mini"
type="text" @command="(command) => handleCommandCase(command, scope.row)"
icon="el-icon-circle-close" v-hasPermi="['system:user:resetPwd', 'system:user:edit']"
@click="handleCloseOrder(scope.row)" >
v-hasPermi="['system:business:edit']" <span class="el-dropdown-link">
>关闭</el-button> <i class="el-icon-d-arrow-right el-icon--right"></i>更多
<el-button </span>
size="mini" <el-dropdown-menu slot="dropdown">
type="text" <el-dropdown-item
icon="el-icon-edit" command="handleChangeCase"
@click="handleUpdate(scope.row)" icon="el-icon-s-check"
v-hasPermi="['system:ticket:edit']" v-hasPermi="['system:business:edit']"
>修改</el-button> >解决</el-dropdown-item
<el-button >
size="mini" <el-dropdown-item
type="text" command="handleCloseOrderCase"
icon="el-icon-delete" icon="el-icon-circle-close"
@click="handleDelete(scope.row)" v-hasPermi="['system:business:edit']"
v-hasPermi="['system:ticket:remove']" >关闭</el-dropdown-item
>删除</el-button> >
<el-dropdown-item
command="handleUpdateCase"
icon="el-icon-edit"
v-hasPermi="['system:business:edit']"
>修改</el-dropdown-item
>
<el-dropdown-item
command="handleDeleteCase"
icon="el-icon-delete"
v-hasPermi="['system:ticket:remove']"
>删除</el-dropdown-item
>
</el-dropdown-menu>
</el-dropdown>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -478,16 +491,16 @@
<!-- <el-form-item label="手机号" prop="phoneNumber">--> <!-- <el-form-item label="手机号" prop="phoneNumber">-->
<!-- <el-input v-model="form.phoneNumber" placeholder="请输入手机号" />--> <!-- <el-input v-model="form.phoneNumber" placeholder="请输入手机号" />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- <el-form-item label="服务类型" prop="serviceType">--> <el-form-item label="服务类型" prop="serviceType">
<!-- <el-select v-model="form.serviceType" placeholder="请选择服务类型">--> <el-select v-model="form.serviceType" placeholder="请选择服务类型">
<!-- <el-option--> <el-option
<!-- v-for="dict in dict.type.service_type"--> v-for="dict in dict.type.service_type"
<!-- :key="dict.value"--> :key="dict.value"
<!-- :label="dict.label"--> :label="dict.label"
<!--:value="parseInt(dict.value)"--> :value="parseInt(dict.value)"
<!-- ></el-option>--> ></el-option>
<!-- </el-select>--> </el-select>
<!-- </el-form-item>--> </el-form-item>
<el-form-item label="服务单号" prop="serviceOrderNumber"> <el-form-item label="服务单号" prop="serviceOrderNumber">
<el-input v-model="form.serviceOrderNumber" placeholder="请输入服务单号" /> <el-input v-model="form.serviceOrderNumber" placeholder="请输入服务单号" />
</el-form-item> </el-form-item>
@ -518,13 +531,14 @@
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item label="指定售后人员" prop="afterSalesTechnician"> <el-form-item label="指定售后人员" prop="afterSalesTechnician">
<treeselect <!-- <treeselect-->
v-model="form.afterSalesTechnician" <!-- v-model="form.afterSalesTechnician"-->
:options="deptOptions" <!-- :options="deptOptions"-->
:show-count="true" <!-- :show-count="true"-->
placeholder="请输入售后技术人员" <!-- placeholder="请输入售后技术人员"-->
/> <!-- />-->
<!-- <el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick"></el-tree>--> <!-- <el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick"></el-tree>-->
<el-tree :data="deptOptions" v-model="form.afterSalesTechnician" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
</el-form-item> </el-form-item>
<!-- <el-form-item label="服务地址(省/自治区/直辖市)" prop="serviceAddress">--> <!-- <el-form-item label="服务地址(省/自治区/直辖市)" prop="serviceAddress">-->
<!-- <el-input v-model="form.serviceAddress" placeholder="请输入服务地址(省/自治区/直辖市)" />--> <!-- <el-input v-model="form.serviceAddress" placeholder="请输入服务地址(省/自治区/直辖市)" />-->
@ -673,7 +687,10 @@ export default {
// //
customerCustomerList: [], customerCustomerList: [],
// //
deptOptions: undefined, deptOptions: [{
label: '',
children: []
}],
data: [{ data: [{
label: '一级 1', label: '一级 1',
children: [{ children: [{
@ -795,7 +812,7 @@ export default {
getTreeselect() { getTreeselect() {
designatedPerson().then((response) => { designatedPerson().then((response) => {
console.log(response,'res') console.log(response,'res')
this.deptOptions.label = response.data.deptName this.deptOptions = response.data
}) })
}, },
// //
@ -812,6 +829,12 @@ export default {
this.loading = false; this.loading = false;
}); });
}, },
//
handleNodeClick(data) {
if(data.children == null){
this.form.afterSalesTechnician = data.label;
}
},
// //
cancel() { cancel() {
this.open = false; this.open = false;
@ -903,7 +926,7 @@ export default {
this.verifyParams.id = row.id this.verifyParams.id = row.id
this.verifyParams.isSolveTheProblem = 1 this.verifyParams.isSolveTheProblem = 1
let that=this let that=this
this.$modal.confirm('是否确认已解决编号为"' + this.verifyParams.id + '"的数据项').then(function() { this.$modal.confirm('是否确认已解决编号为"' + this.verifyParams.id + '"的工单').then(function() {
return updateTicket(that.verifyParams); return updateTicket(that.verifyParams);
}).then(() => { }).then(() => {
this.getList(); this.getList();
@ -965,6 +988,25 @@ export default {
this.$refs.commentCustomer.open(id) this.$refs.commentCustomer.open(id)
}) })
}, },
//
handleCommandCase(command, row) {
switch (command) {
case 'handleChangeCase':
this.handleChange(row)
break
case 'handleCloseOrderCase':
this.handleCloseOrder(row)
break
case 'handleUpdateCase':
this.handleUpdate(row)
break
case 'handleDeleteCase':
this.handleDelete(row)
break
default:
break
}
},
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
this.download('system/ticket/export', { this.download('system/ticket/export', {
@ -974,3 +1016,8 @@ export default {
} }
}; };
</script> </script>
<style>
.el-table__cell {
height: 40px; /* 设置行高为40px */
line-height: 40px; /* 设置文字垂直居中 */ }
</style>