新增商机,跟进记录\计划,服务工单,联系人
This commit is contained in:
parent
c0c32e127c
commit
9d60fbed01
20
pom.xml
20
pom.xml
@ -179,18 +179,18 @@
|
||||
</dependency>
|
||||
|
||||
<!-- 定时任务-->
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-quartz</artifactId>
|
||||
<version>${ruoyi.version}</version>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>com.ruoyi</groupId>-->
|
||||
<!-- <artifactId>ruoyi-quartz</artifactId>-->
|
||||
<!-- <version>${ruoyi.version}</version>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
<!-- 代码生成-->
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-generator</artifactId>
|
||||
<version>${ruoyi.version}</version>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>com.ruoyi</groupId>-->
|
||||
<!-- <artifactId>ruoyi-generator</artifactId>-->
|
||||
<!-- <version>${ruoyi.version}</version>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
<!-- 核心模块-->
|
||||
<dependency>
|
||||
|
@ -50,16 +50,16 @@
|
||||
</dependency>
|
||||
|
||||
<!-- 定时任务-->
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-quartz</artifactId>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>com.ruoyi</groupId>-->
|
||||
<!-- <artifactId>ruoyi-quartz</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
<!-- 代码生成-->
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-generator</artifactId>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>com.ruoyi</groupId>-->
|
||||
<!-- <artifactId>ruoyi-generator</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
<!-- CRM 模块-->
|
||||
<dependency>
|
||||
|
@ -6,9 +6,11 @@ spring:
|
||||
druid:
|
||||
# 主库数据源
|
||||
master:
|
||||
url: jdbc:mysql://120.46.37.243:3306/rycrm-master?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
|
||||
# url: jdbc:mysql://120.46.37.243:3306/rycrm-master?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
|
||||
url: jdbc:mysql://127.0.0.1:3306/rycrm-master?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
|
||||
username: root
|
||||
password: xpower1234
|
||||
password: root
|
||||
# password: xpower1234
|
||||
# 从库数据源
|
||||
slave:
|
||||
# 从数据源开关/默认关闭
|
||||
|
@ -96,7 +96,8 @@ mybatis:
|
||||
# 搜索指定包别名
|
||||
typeAliasesPackage: com.ruoyi.**.domain
|
||||
# 配置mapper的扫描,找到所有的mapper.xml映射文件
|
||||
mapperLocations: classpath*:mapper/**/*Mapper.xml
|
||||
# mapperLocations: classpath*:mapper/**/*Mapper.xml
|
||||
mapperLocations: classpath*:*/**/*Mapper.xml
|
||||
# 加载全局的配置文件
|
||||
configLocation: classpath:mybatis/mybatis-config.xml
|
||||
|
||||
|
@ -0,0 +1,141 @@
|
||||
package com.ruoyi.crm.system.controller;
|
||||
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.crm.system.domain.Business;
|
||||
import com.ruoyi.crm.system.domain.FollowUpRecord;
|
||||
import com.ruoyi.crm.system.service.IBusinessService;
|
||||
import com.ruoyi.crm.system.service.IFollowUpRecordService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 商机Controller
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-02-29
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/system/business")
|
||||
public class BusinessController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IBusinessService businessService;
|
||||
|
||||
@Autowired
|
||||
private IFollowUpRecordService followUpRecordService;
|
||||
|
||||
/**
|
||||
* 查询商机列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:business:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(Business business)
|
||||
{
|
||||
startPage();
|
||||
List<Business> list = businessService.selectBusinessList(business);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出商机列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:business:export')")
|
||||
@Log(title = "商机", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, Business business)
|
||||
{
|
||||
List<Business> list = businessService.selectBusinessList(business);
|
||||
ExcelUtil<Business> util = new ExcelUtil<Business>(Business.class);
|
||||
util.exportExcel(response, list, "商机数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取商机详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:business:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") Long id)
|
||||
{
|
||||
return AjaxResult.success(businessService.selectBusinessById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增商机
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:business:add')")
|
||||
@Log(title = "商机", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody Business business)
|
||||
{
|
||||
return toAjax(businessService.insertBusiness(business));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改商机
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:business:edit')")
|
||||
@Log(title = "商机", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody Business business)
|
||||
{
|
||||
return toAjax(businessService.updateBusiness(business));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除商机
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:business:remove')")
|
||||
@Log(title = "商机", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable Long[] ids)
|
||||
{
|
||||
return toAjax(businessService.deleteBusinessByIds(ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增跟进记录
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:business:edit')")
|
||||
@Log(title = "跟进记录", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/addRecords")
|
||||
public AjaxResult addRecords(@RequestBody FollowUpRecord followUpRecord)
|
||||
{
|
||||
LocalDate currentDate = LocalDate.now();
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
|
||||
String formattedDate = currentDate.format(formatter);
|
||||
//根据当前时间生成客户编号
|
||||
followUpRecord.setCustomerNumber("zy_"+formattedDate+followUpRecord.getCustomerNumber());
|
||||
return toAjax(followUpRecordService.insertFollowUpRecord(followUpRecord));
|
||||
}
|
||||
@Log(title = "用户管理", businessType = BusinessType.IMPORT)
|
||||
@PreAuthorize("@ss.hasPermi('system:business:add')")
|
||||
@PostMapping("/importData")
|
||||
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
|
||||
{
|
||||
ExcelUtil<Business> util = new ExcelUtil(Business.class);
|
||||
List<Business> businessList = util.importExcel(file.getInputStream());
|
||||
String operName = getUsername();
|
||||
String message = businessService.importBusines(businessList, updateSupport, operName);
|
||||
return AjaxResult.success(message);
|
||||
}
|
||||
|
||||
@PostMapping("/importTemplate")
|
||||
public void importTemplate(HttpServletResponse response)
|
||||
{
|
||||
ExcelUtil<Business> util = new ExcelUtil(Business.class);
|
||||
util.importTemplateExcel(response, "商机数据");
|
||||
}
|
||||
}
|
@ -0,0 +1,110 @@
|
||||
package com.ruoyi.crm.system.controller;
|
||||
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.crm.system.domain.ContactPerson;
|
||||
import com.ruoyi.crm.system.service.IContactPersonService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 联系人Controller
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-02-29
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/system/person")
|
||||
public class ContactPersonController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IContactPersonService contactPersonService;
|
||||
|
||||
/**
|
||||
* 查询联系人列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:person:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(ContactPerson contactPerson)
|
||||
{
|
||||
startPage();
|
||||
List<ContactPerson> list = contactPersonService.selectContactPersonList(contactPerson);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出联系人列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:person:export')")
|
||||
@Log(title = "联系人", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, ContactPerson contactPerson)
|
||||
{
|
||||
List<ContactPerson> list = contactPersonService.selectContactPersonList(contactPerson);
|
||||
ExcelUtil<ContactPerson> util = new ExcelUtil<ContactPerson>(ContactPerson.class);
|
||||
util.exportExcel(response, list, "联系人数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取联系人详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:person:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") Long id)
|
||||
{
|
||||
return AjaxResult.success(contactPersonService.selectContactPersonById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增联系人
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:person:add')")
|
||||
@Log(title = "联系人", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody ContactPerson contactPerson)
|
||||
{
|
||||
return toAjax(contactPersonService.insertContactPerson(contactPerson));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改联系人
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:person:edit')")
|
||||
@Log(title = "联系人", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody ContactPerson contactPerson)
|
||||
{
|
||||
return toAjax(contactPersonService.updateContactPerson(contactPerson));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除联系人
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:person:remove')")
|
||||
@Log(title = "联系人", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable Long[] ids)
|
||||
{
|
||||
return toAjax(contactPersonService.deleteContactPersonByIds(ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增联系人
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('system:person:add')")
|
||||
// @Log(title = "联系人", businessType = BusinessType.INSERT)
|
||||
// @PostMapping("/test")
|
||||
// public AjaxResult test(@RequestBody Map map)
|
||||
// {
|
||||
// System.out.println(map.toString());
|
||||
// return AjaxResult.success("s");
|
||||
// }
|
||||
}
|
@ -0,0 +1,98 @@
|
||||
package com.ruoyi.crm.system.controller;
|
||||
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.crm.system.domain.FollowUpPlan;
|
||||
import com.ruoyi.crm.system.service.IFollowUpPlanService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 跟进计划Controller
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-03-01
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/system/plan")
|
||||
public class FollowUpPlanController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IFollowUpPlanService followUpPlanService;
|
||||
|
||||
/**
|
||||
* 查询跟进计划列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:plan:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(FollowUpPlan followUpPlan)
|
||||
{
|
||||
startPage();
|
||||
List<FollowUpPlan> list = followUpPlanService.selectFollowUpPlanList(followUpPlan);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出跟进计划列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:plan:export')")
|
||||
@Log(title = "跟进计划", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, FollowUpPlan followUpPlan)
|
||||
{
|
||||
List<FollowUpPlan> list = followUpPlanService.selectFollowUpPlanList(followUpPlan);
|
||||
ExcelUtil<FollowUpPlan> util = new ExcelUtil<FollowUpPlan>(FollowUpPlan.class);
|
||||
util.exportExcel(response, list, "跟进计划数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取跟进计划详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:plan:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") Long id)
|
||||
{
|
||||
return AjaxResult.success(followUpPlanService.selectFollowUpPlanById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增跟进计划
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:plan:add')")
|
||||
@Log(title = "跟进计划", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody FollowUpPlan followUpPlan)
|
||||
{
|
||||
return toAjax(followUpPlanService.insertFollowUpPlan(followUpPlan));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改跟进计划
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:plan:edit')")
|
||||
@Log(title = "跟进计划", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody FollowUpPlan followUpPlan)
|
||||
{
|
||||
return toAjax(followUpPlanService.updateFollowUpPlan(followUpPlan));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除跟进计划
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:plan:remove')")
|
||||
@Log(title = "跟进计划", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable Long[] ids)
|
||||
{
|
||||
return toAjax(followUpPlanService.deleteFollowUpPlanByIds(ids));
|
||||
}
|
||||
}
|
@ -0,0 +1,98 @@
|
||||
package com.ruoyi.crm.system.controller;
|
||||
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.crm.system.domain.FollowUpRecord;
|
||||
import com.ruoyi.crm.system.service.IFollowUpRecordService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 跟进记录Controller
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-03-01
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/system/record")
|
||||
public class FollowUpRecordController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IFollowUpRecordService followUpRecordService;
|
||||
|
||||
/**
|
||||
* 查询跟进记录列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:record:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(FollowUpRecord followUpRecord)
|
||||
{
|
||||
startPage();
|
||||
List<FollowUpRecord> list = followUpRecordService.selectFollowUpRecordList(followUpRecord);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出跟进记录列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:record:export')")
|
||||
@Log(title = "跟进记录", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, FollowUpRecord followUpRecord)
|
||||
{
|
||||
List<FollowUpRecord> list = followUpRecordService.selectFollowUpRecordList(followUpRecord);
|
||||
ExcelUtil<FollowUpRecord> util = new ExcelUtil<FollowUpRecord>(FollowUpRecord.class);
|
||||
util.exportExcel(response, list, "跟进记录数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取跟进记录详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:record:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") Long id)
|
||||
{
|
||||
return AjaxResult.success(followUpRecordService.selectFollowUpRecordById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增跟进记录
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:record:add')")
|
||||
@Log(title = "跟进记录", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody FollowUpRecord followUpRecord)
|
||||
{
|
||||
return toAjax(followUpRecordService.insertFollowUpRecord(followUpRecord));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改跟进记录
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:record:edit')")
|
||||
@Log(title = "跟进记录", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody FollowUpRecord followUpRecord)
|
||||
{
|
||||
return toAjax(followUpRecordService.updateFollowUpRecord(followUpRecord));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除跟进记录
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:record:remove')")
|
||||
@Log(title = "跟进记录", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable Long[] ids)
|
||||
{
|
||||
return toAjax(followUpRecordService.deleteFollowUpRecordByIds(ids));
|
||||
}
|
||||
}
|
@ -0,0 +1,98 @@
|
||||
package com.ruoyi.crm.system.controller;
|
||||
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.crm.system.domain.ServiceTicket;
|
||||
import com.ruoyi.crm.system.service.IServiceTicketService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 服务工单Controller
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-03-01
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/system/ticket")
|
||||
public class ServiceTicketController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IServiceTicketService serviceTicketService;
|
||||
|
||||
/**
|
||||
* 查询服务工单列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:ticket:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(ServiceTicket serviceTicket)
|
||||
{
|
||||
startPage();
|
||||
List<ServiceTicket> list = serviceTicketService.selectServiceTicketList(serviceTicket);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出服务工单列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:ticket:export')")
|
||||
@Log(title = "服务工单", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, ServiceTicket serviceTicket)
|
||||
{
|
||||
List<ServiceTicket> list = serviceTicketService.selectServiceTicketList(serviceTicket);
|
||||
ExcelUtil<ServiceTicket> util = new ExcelUtil<ServiceTicket>(ServiceTicket.class);
|
||||
util.exportExcel(response, list, "服务工单数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取服务工单详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:ticket:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") Long id)
|
||||
{
|
||||
return AjaxResult.success(serviceTicketService.selectServiceTicketById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增服务工单
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:ticket:add')")
|
||||
@Log(title = "服务工单", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody ServiceTicket serviceTicket)
|
||||
{
|
||||
return toAjax(serviceTicketService.insertServiceTicket(serviceTicket));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改服务工单
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:ticket:edit')")
|
||||
@Log(title = "服务工单", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody ServiceTicket serviceTicket)
|
||||
{
|
||||
return toAjax(serviceTicketService.updateServiceTicket(serviceTicket));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除服务工单
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:ticket:remove')")
|
||||
@Log(title = "服务工单", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable Long[] ids)
|
||||
{
|
||||
return toAjax(serviceTicketService.deleteServiceTicketByIds(ids));
|
||||
}
|
||||
}
|
@ -0,0 +1,357 @@
|
||||
package com.ruoyi.crm.system.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 商机对象 business
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-02-29
|
||||
*/
|
||||
public class Business extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 商机id */
|
||||
private Long id;
|
||||
|
||||
/** 标题 */
|
||||
@Excel(name = "标题")
|
||||
private String title;
|
||||
|
||||
/** 关联客户 */
|
||||
@Excel(name = "关联客户")
|
||||
private Long customerId;
|
||||
|
||||
/** 客户联系人 */
|
||||
@Excel(name = "客户联系人")
|
||||
private Long customerLinkman;
|
||||
|
||||
/** 客户名称 */
|
||||
@Excel(name = "客户名称")
|
||||
private String customerName;
|
||||
|
||||
/** 客户编号 */
|
||||
@Excel(name = "客户编号")
|
||||
private String customerNumber;
|
||||
|
||||
/** 商机名称 */
|
||||
@Excel(name = "商机名称")
|
||||
private String businessName;
|
||||
|
||||
/** 商机编号 */
|
||||
@Excel(name = "商机编号")
|
||||
private String businessNumber;
|
||||
|
||||
/** 销售阶段 */
|
||||
@Excel(name = "销售阶段")
|
||||
private Integer salesStage;
|
||||
|
||||
/** 赢率 */
|
||||
@Excel(name = "赢率")
|
||||
private Integer probabilityOfWining;
|
||||
|
||||
/** 阶段类型 */
|
||||
@Excel(name = "阶段类型")
|
||||
private Integer stageType;
|
||||
|
||||
/** 负责人 */
|
||||
@Excel(name = "负责人")
|
||||
private String personInCharge;
|
||||
|
||||
/** 归属部门 */
|
||||
@Excel(name = "归属部门")
|
||||
private String belongingDepartment;
|
||||
|
||||
/** 商机明细 */
|
||||
@Excel(name = "商机明细")
|
||||
private String businessDetail;
|
||||
|
||||
/** 预测商机金额(单位:分) */
|
||||
@Excel(name = "预测商机金额", readConverterExp = "单=位:分")
|
||||
private Integer forecastBusinessPrice;
|
||||
|
||||
/** 预计成交日期 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "预计成交日期", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date forecastSuccessTime;
|
||||
|
||||
/** 协作人 */
|
||||
@Excel(name = "协作人")
|
||||
private String collaborator;
|
||||
|
||||
/** 最后跟进时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "最后跟进时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date lastFollowUpTime;
|
||||
|
||||
/** 阶段变更时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "阶段变更时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date phaseChangeTime;
|
||||
|
||||
/** 输单原因 */
|
||||
@Excel(name = "输单原因")
|
||||
private String loseOrderCause;
|
||||
|
||||
/** 提交人 */
|
||||
@Excel(name = "提交人")
|
||||
private String submitter;
|
||||
|
||||
/** 提交时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "提交时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date submitTime;
|
||||
|
||||
/** 删除标志 */
|
||||
@Excel(name = "删除标志")
|
||||
private Integer isDelete;
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getId()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
public void setTitle(String title)
|
||||
{
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getTitle()
|
||||
{
|
||||
return title;
|
||||
}
|
||||
public void setCustomerId(Long customerId)
|
||||
{
|
||||
this.customerId = customerId;
|
||||
}
|
||||
|
||||
public Long getCustomerId()
|
||||
{
|
||||
return customerId;
|
||||
}
|
||||
public void setCustomerLinkman(Long customerLinkman)
|
||||
{
|
||||
this.customerLinkman = customerLinkman;
|
||||
}
|
||||
|
||||
public Long getCustomerLinkman()
|
||||
{
|
||||
return customerLinkman;
|
||||
}
|
||||
public void setCustomerName(String customerName)
|
||||
{
|
||||
this.customerName = customerName;
|
||||
}
|
||||
|
||||
public String getCustomerName()
|
||||
{
|
||||
return customerName;
|
||||
}
|
||||
public void setCustomerNumber(String customerNumber)
|
||||
{
|
||||
this.customerNumber = customerNumber;
|
||||
}
|
||||
|
||||
public String getCustomerNumber()
|
||||
{
|
||||
return customerNumber;
|
||||
}
|
||||
public void setBusinessName(String businessName)
|
||||
{
|
||||
this.businessName = businessName;
|
||||
}
|
||||
|
||||
public String getBusinessName()
|
||||
{
|
||||
return businessName;
|
||||
}
|
||||
public void setBusinessNumber(String businessNumber)
|
||||
{
|
||||
this.businessNumber = businessNumber;
|
||||
}
|
||||
|
||||
public String getBusinessNumber()
|
||||
{
|
||||
return businessNumber;
|
||||
}
|
||||
public void setSalesStage(Integer salesStage)
|
||||
{
|
||||
this.salesStage = salesStage;
|
||||
}
|
||||
|
||||
public Integer getSalesStage()
|
||||
{
|
||||
return salesStage;
|
||||
}
|
||||
public void setProbabilityOfWining(Integer probabilityOfWining)
|
||||
{
|
||||
this.probabilityOfWining = probabilityOfWining;
|
||||
}
|
||||
|
||||
public Integer getProbabilityOfWining()
|
||||
{
|
||||
return probabilityOfWining;
|
||||
}
|
||||
public void setStageType(Integer stageType)
|
||||
{
|
||||
this.stageType = stageType;
|
||||
}
|
||||
|
||||
public Integer getStageType()
|
||||
{
|
||||
return stageType;
|
||||
}
|
||||
public void setPersonInCharge(String personInCharge)
|
||||
{
|
||||
this.personInCharge = personInCharge;
|
||||
}
|
||||
|
||||
public String getPersonInCharge()
|
||||
{
|
||||
return personInCharge;
|
||||
}
|
||||
public void setBelongingDepartment(String belongingDepartment)
|
||||
{
|
||||
this.belongingDepartment = belongingDepartment;
|
||||
}
|
||||
|
||||
public String getBelongingDepartment()
|
||||
{
|
||||
return belongingDepartment;
|
||||
}
|
||||
public void setBusinessDetail(String businessDetail)
|
||||
{
|
||||
this.businessDetail = businessDetail;
|
||||
}
|
||||
|
||||
public String getBusinessDetail()
|
||||
{
|
||||
return businessDetail;
|
||||
}
|
||||
public void setForecastBusinessPrice(Integer forecastBusinessPrice)
|
||||
{
|
||||
this.forecastBusinessPrice = forecastBusinessPrice;
|
||||
}
|
||||
|
||||
public Integer getForecastBusinessPrice()
|
||||
{
|
||||
return forecastBusinessPrice;
|
||||
}
|
||||
public void setForecastSuccessTime(Date forecastSuccessTime)
|
||||
{
|
||||
this.forecastSuccessTime = forecastSuccessTime;
|
||||
}
|
||||
|
||||
public Date getForecastSuccessTime()
|
||||
{
|
||||
return forecastSuccessTime;
|
||||
}
|
||||
public void setCollaborator(String collaborator)
|
||||
{
|
||||
this.collaborator = collaborator;
|
||||
}
|
||||
|
||||
public String getCollaborator()
|
||||
{
|
||||
return collaborator;
|
||||
}
|
||||
public void setLastFollowUpTime(Date lastFollowUpTime)
|
||||
{
|
||||
this.lastFollowUpTime = lastFollowUpTime;
|
||||
}
|
||||
|
||||
public Date getLastFollowUpTime()
|
||||
{
|
||||
return lastFollowUpTime;
|
||||
}
|
||||
public void setPhaseChangeTime(Date phaseChangeTime)
|
||||
{
|
||||
this.phaseChangeTime = phaseChangeTime;
|
||||
}
|
||||
|
||||
public Date getPhaseChangeTime()
|
||||
{
|
||||
return phaseChangeTime;
|
||||
}
|
||||
public void setLoseOrderCause(String loseOrderCause)
|
||||
{
|
||||
this.loseOrderCause = loseOrderCause;
|
||||
}
|
||||
|
||||
public String getLoseOrderCause()
|
||||
{
|
||||
return loseOrderCause;
|
||||
}
|
||||
public void setSubmitter(String submitter)
|
||||
{
|
||||
this.submitter = submitter;
|
||||
}
|
||||
|
||||
public String getSubmitter()
|
||||
{
|
||||
return submitter;
|
||||
}
|
||||
public void setSubmitTime(Date submitTime)
|
||||
{
|
||||
this.submitTime = submitTime;
|
||||
}
|
||||
|
||||
public Date getSubmitTime()
|
||||
{
|
||||
return submitTime;
|
||||
}
|
||||
public void setIsDelete(Integer isDelete)
|
||||
{
|
||||
this.isDelete = isDelete;
|
||||
}
|
||||
|
||||
public Integer getIsDelete()
|
||||
{
|
||||
return isDelete;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("id", getId())
|
||||
.append("title", getTitle())
|
||||
.append("customerId", getCustomerId())
|
||||
.append("customerLinkman", getCustomerLinkman())
|
||||
.append("customerName", getCustomerName())
|
||||
.append("customerNumber", getCustomerNumber())
|
||||
.append("businessName", getBusinessName())
|
||||
.append("businessNumber", getBusinessNumber())
|
||||
.append("salesStage", getSalesStage())
|
||||
.append("probabilityOfWining", getProbabilityOfWining())
|
||||
.append("stageType", getStageType())
|
||||
.append("personInCharge", getPersonInCharge())
|
||||
.append("belongingDepartment", getBelongingDepartment())
|
||||
.append("businessDetail", getBusinessDetail())
|
||||
.append("forecastBusinessPrice", getForecastBusinessPrice())
|
||||
.append("forecastSuccessTime", getForecastSuccessTime())
|
||||
.append("collaborator", getCollaborator())
|
||||
.append("lastFollowUpTime", getLastFollowUpTime())
|
||||
.append("phaseChangeTime", getPhaseChangeTime())
|
||||
.append("loseOrderCause", getLoseOrderCause())
|
||||
.append("submitter", getSubmitter())
|
||||
.append("submitTime", getSubmitTime())
|
||||
.append("createBy", getCreateBy())
|
||||
.append("createTime", getCreateTime())
|
||||
.append("updateBy", getUpdateBy())
|
||||
.append("updateTime", getUpdateTime())
|
||||
.append("remark", getRemark())
|
||||
.append("isDelete", getIsDelete())
|
||||
.toString();
|
||||
}
|
||||
}
|
@ -0,0 +1,284 @@
|
||||
package com.ruoyi.crm.system.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 联系人对象 contact_person
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-02-29
|
||||
*/
|
||||
public class ContactPerson extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 联系人id */
|
||||
private Long id;
|
||||
|
||||
/** 标题 */
|
||||
@Excel(name = "标题")
|
||||
private String title;
|
||||
|
||||
/** 姓名 */
|
||||
@Excel(name = "姓名")
|
||||
private String name;
|
||||
|
||||
/** 手机号 */
|
||||
@Excel(name = "手机号")
|
||||
private String phoneNumber;
|
||||
|
||||
/** 关联客户 */
|
||||
@Excel(name = "关联客户")
|
||||
private Long customerId;
|
||||
|
||||
/** 客户编号 */
|
||||
@Excel(name = "客户编号")
|
||||
private String customerNumber;
|
||||
|
||||
/** 部门 */
|
||||
@Excel(name = "部门")
|
||||
private String dep;
|
||||
|
||||
/** 职务 */
|
||||
@Excel(name = "职务")
|
||||
private String job;
|
||||
|
||||
/** 微信号 */
|
||||
@Excel(name = "微信号")
|
||||
private String wxNumber;
|
||||
|
||||
/** 邮箱 */
|
||||
@Excel(name = "邮箱")
|
||||
private String mailNumber;
|
||||
|
||||
/** 是否关键决策人 */
|
||||
@Excel(name = "是否关键决策人")
|
||||
private Integer isKey;
|
||||
|
||||
/** 联系人详情 */
|
||||
@Excel(name = "联系人详情")
|
||||
private String contactPersonDetail;
|
||||
|
||||
/** 负责人 */
|
||||
@Excel(name = "负责人")
|
||||
private String personInCharge;
|
||||
|
||||
/** 归属部门 */
|
||||
@Excel(name = "归属部门")
|
||||
private String belongingDepartment;
|
||||
|
||||
/** 协作人 */
|
||||
@Excel(name = "协作人")
|
||||
private String collaborator;
|
||||
|
||||
/** 提交人 */
|
||||
@Excel(name = "提交人")
|
||||
private String submitter;
|
||||
|
||||
/** 提交时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "提交时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date submitTime;
|
||||
|
||||
/** 删除标志 */
|
||||
@Excel(name = "删除标志")
|
||||
private Integer isDelete;
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getId()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
public void setTitle(String title)
|
||||
{
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getTitle()
|
||||
{
|
||||
return title;
|
||||
}
|
||||
public void setName(String name)
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return name;
|
||||
}
|
||||
public void setPhoneNumber(String phoneNumber)
|
||||
{
|
||||
this.phoneNumber = phoneNumber;
|
||||
}
|
||||
|
||||
public String getPhoneNumber()
|
||||
{
|
||||
return phoneNumber;
|
||||
}
|
||||
public void setCustomerId(Long customerId)
|
||||
{
|
||||
this.customerId = customerId;
|
||||
}
|
||||
|
||||
public Long getCustomerId()
|
||||
{
|
||||
return customerId;
|
||||
}
|
||||
public void setCustomerNumber(String customerNumber)
|
||||
{
|
||||
this.customerNumber = customerNumber;
|
||||
}
|
||||
|
||||
public String getCustomerNumber()
|
||||
{
|
||||
return customerNumber;
|
||||
}
|
||||
public void setDep(String dep)
|
||||
{
|
||||
this.dep = dep;
|
||||
}
|
||||
|
||||
public String getDep()
|
||||
{
|
||||
return dep;
|
||||
}
|
||||
public void setJob(String job)
|
||||
{
|
||||
this.job = job;
|
||||
}
|
||||
|
||||
public String getJob()
|
||||
{
|
||||
return job;
|
||||
}
|
||||
public void setWxNumber(String wxNumber)
|
||||
{
|
||||
this.wxNumber = wxNumber;
|
||||
}
|
||||
|
||||
public String getWxNumber()
|
||||
{
|
||||
return wxNumber;
|
||||
}
|
||||
public void setMailNumber(String mailNumber)
|
||||
{
|
||||
this.mailNumber = mailNumber;
|
||||
}
|
||||
|
||||
public String getMailNumber()
|
||||
{
|
||||
return mailNumber;
|
||||
}
|
||||
public void setIsKey(Integer isKey)
|
||||
{
|
||||
this.isKey = isKey;
|
||||
}
|
||||
|
||||
public Integer getIsKey()
|
||||
{
|
||||
return isKey;
|
||||
}
|
||||
public void setContactPersonDetail(String contactPersonDetail)
|
||||
{
|
||||
this.contactPersonDetail = contactPersonDetail;
|
||||
}
|
||||
|
||||
public String getContactPersonDetail()
|
||||
{
|
||||
return contactPersonDetail;
|
||||
}
|
||||
public void setPersonInCharge(String personInCharge)
|
||||
{
|
||||
this.personInCharge = personInCharge;
|
||||
}
|
||||
|
||||
public String getPersonInCharge()
|
||||
{
|
||||
return personInCharge;
|
||||
}
|
||||
public void setBelongingDepartment(String belongingDepartment)
|
||||
{
|
||||
this.belongingDepartment = belongingDepartment;
|
||||
}
|
||||
|
||||
public String getBelongingDepartment()
|
||||
{
|
||||
return belongingDepartment;
|
||||
}
|
||||
public void setCollaborator(String collaborator)
|
||||
{
|
||||
this.collaborator = collaborator;
|
||||
}
|
||||
|
||||
public String getCollaborator()
|
||||
{
|
||||
return collaborator;
|
||||
}
|
||||
public void setSubmitter(String submitter)
|
||||
{
|
||||
this.submitter = submitter;
|
||||
}
|
||||
|
||||
public String getSubmitter()
|
||||
{
|
||||
return submitter;
|
||||
}
|
||||
public void setSubmitTime(Date submitTime)
|
||||
{
|
||||
this.submitTime = submitTime;
|
||||
}
|
||||
|
||||
public Date getSubmitTime()
|
||||
{
|
||||
return submitTime;
|
||||
}
|
||||
public void setIsDelete(Integer isDelete)
|
||||
{
|
||||
this.isDelete = isDelete;
|
||||
}
|
||||
|
||||
public Integer getIsDelete()
|
||||
{
|
||||
return isDelete;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("id", getId())
|
||||
.append("title", getTitle())
|
||||
.append("name", getName())
|
||||
.append("phoneNumber", getPhoneNumber())
|
||||
.append("customerId", getCustomerId())
|
||||
.append("customerNumber", getCustomerNumber())
|
||||
.append("dep", getDep())
|
||||
.append("job", getJob())
|
||||
.append("wxNumber", getWxNumber())
|
||||
.append("mailNumber", getMailNumber())
|
||||
.append("isKey", getIsKey())
|
||||
.append("contactPersonDetail", getContactPersonDetail())
|
||||
.append("personInCharge", getPersonInCharge())
|
||||
.append("belongingDepartment", getBelongingDepartment())
|
||||
.append("collaborator", getCollaborator())
|
||||
.append("submitter", getSubmitter())
|
||||
.append("submitTime", getSubmitTime())
|
||||
.append("createBy", getCreateBy())
|
||||
.append("createTime", getCreateTime())
|
||||
.append("updateBy", getUpdateBy())
|
||||
.append("updateTime", getUpdateTime())
|
||||
.append("remark", getRemark())
|
||||
.append("isDelete", getIsDelete())
|
||||
.toString();
|
||||
}
|
||||
}
|
@ -0,0 +1,187 @@
|
||||
package com.ruoyi.crm.system.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 跟进计划对象 follow_up_plan
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-03-01
|
||||
*/
|
||||
public class FollowUpPlan extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 跟进计划id */
|
||||
private Long id;
|
||||
|
||||
/** 标题 */
|
||||
@Excel(name = "标题")
|
||||
private String title;
|
||||
|
||||
/** 计划内容 */
|
||||
@Excel(name = "计划内容")
|
||||
private String planContent;
|
||||
|
||||
/** 跟进客户 */
|
||||
@Excel(name = "跟进客户")
|
||||
private String customer;
|
||||
|
||||
/** 跟进时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "跟进时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date planTime;
|
||||
|
||||
/** 跟进执行人 */
|
||||
@Excel(name = "跟进执行人")
|
||||
private String planExecutor;
|
||||
|
||||
/** 归属部门 */
|
||||
@Excel(name = "归属部门")
|
||||
private String belongingDepartment;
|
||||
|
||||
/** 计划状态 */
|
||||
@Excel(name = "计划状态")
|
||||
private Integer planStatus;
|
||||
|
||||
/** 提交人 */
|
||||
@Excel(name = "提交人")
|
||||
private String submitter;
|
||||
|
||||
/** 提交时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "提交时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date submitTime;
|
||||
|
||||
/** 是否删除 */
|
||||
@Excel(name = "是否删除")
|
||||
private Integer isDelete;
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getId()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
public void setTitle(String title)
|
||||
{
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getTitle()
|
||||
{
|
||||
return title;
|
||||
}
|
||||
public void setPlanContent(String planContent)
|
||||
{
|
||||
this.planContent = planContent;
|
||||
}
|
||||
|
||||
public String getPlanContent()
|
||||
{
|
||||
return planContent;
|
||||
}
|
||||
public void setCustomer(String customer)
|
||||
{
|
||||
this.customer = customer;
|
||||
}
|
||||
|
||||
public String getCustomer()
|
||||
{
|
||||
return customer;
|
||||
}
|
||||
public void setPlanTime(Date planTime)
|
||||
{
|
||||
this.planTime = planTime;
|
||||
}
|
||||
|
||||
public Date getPlanTime()
|
||||
{
|
||||
return planTime;
|
||||
}
|
||||
public void setPlanExecutor(String planExecutor)
|
||||
{
|
||||
this.planExecutor = planExecutor;
|
||||
}
|
||||
|
||||
public String getPlanExecutor()
|
||||
{
|
||||
return planExecutor;
|
||||
}
|
||||
public void setBelongingDepartment(String belongingDepartment)
|
||||
{
|
||||
this.belongingDepartment = belongingDepartment;
|
||||
}
|
||||
|
||||
public String getBelongingDepartment()
|
||||
{
|
||||
return belongingDepartment;
|
||||
}
|
||||
public void setPlanStatus(Integer planStatus)
|
||||
{
|
||||
this.planStatus = planStatus;
|
||||
}
|
||||
|
||||
public Integer getPlanStatus()
|
||||
{
|
||||
return planStatus;
|
||||
}
|
||||
public void setSubmitter(String submitter)
|
||||
{
|
||||
this.submitter = submitter;
|
||||
}
|
||||
|
||||
public String getSubmitter()
|
||||
{
|
||||
return submitter;
|
||||
}
|
||||
public void setSubmitTime(Date submitTime)
|
||||
{
|
||||
this.submitTime = submitTime;
|
||||
}
|
||||
|
||||
public Date getSubmitTime()
|
||||
{
|
||||
return submitTime;
|
||||
}
|
||||
public void setIsDelete(Integer isDelete)
|
||||
{
|
||||
this.isDelete = isDelete;
|
||||
}
|
||||
|
||||
public Integer getIsDelete()
|
||||
{
|
||||
return isDelete;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("id", getId())
|
||||
.append("title", getTitle())
|
||||
.append("planContent", getPlanContent())
|
||||
.append("customer", getCustomer())
|
||||
.append("planTime", getPlanTime())
|
||||
.append("planExecutor", getPlanExecutor())
|
||||
.append("belongingDepartment", getBelongingDepartment())
|
||||
.append("planStatus", getPlanStatus())
|
||||
.append("submitter", getSubmitter())
|
||||
.append("submitTime", getSubmitTime())
|
||||
.append("createBy", getCreateBy())
|
||||
.append("createTime", getCreateTime())
|
||||
.append("updateBy", getUpdateBy())
|
||||
.append("updateTime", getUpdateTime())
|
||||
.append("remark", getRemark())
|
||||
.append("isDelete", getIsDelete())
|
||||
.toString();
|
||||
}
|
||||
}
|
@ -0,0 +1,257 @@
|
||||
package com.ruoyi.crm.system.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 跟进记录对象 follow_up_record
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-03-01
|
||||
*/
|
||||
public class FollowUpRecord extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** */
|
||||
private Long id;
|
||||
|
||||
/** 标题 */
|
||||
@Excel(name = "标题")
|
||||
private String title;
|
||||
|
||||
/** 跟进记录 */
|
||||
@Excel(name = "跟进记录")
|
||||
private String followUpRecord;
|
||||
|
||||
/** 跟进主体 */
|
||||
@Excel(name = "跟进主体")
|
||||
private String followUpSubject;
|
||||
|
||||
/** 客户编号(辅助字段) */
|
||||
@Excel(name = "客户编号", readConverterExp = "辅=助字段")
|
||||
private String customerNumber;
|
||||
|
||||
/** 跟进商机 */
|
||||
@Excel(name = "跟进商机")
|
||||
private String followUpBusinessOpportunities;
|
||||
|
||||
/** 商机编号(辅助字段) */
|
||||
@Excel(name = "商机编号", readConverterExp = "辅=助字段")
|
||||
private String opportunityNumber;
|
||||
|
||||
/** 联系人 */
|
||||
@Excel(name = "联系人")
|
||||
private String contactPeople;
|
||||
|
||||
/** 跟进方式 */
|
||||
@Excel(name = "跟进方式")
|
||||
private Integer followUpType;
|
||||
|
||||
/** 跟进内容 */
|
||||
@Excel(name = "跟进内容")
|
||||
private String content;
|
||||
|
||||
/** 跟进时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "跟进时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date followUpTime;
|
||||
|
||||
/** 跟进人 */
|
||||
@Excel(name = "跟进人")
|
||||
private String followUpPeople;
|
||||
|
||||
/** 归属部门 */
|
||||
@Excel(name = "归属部门")
|
||||
private String belongingDepartment;
|
||||
|
||||
/** 提交人 */
|
||||
@Excel(name = "提交人")
|
||||
private String submitter;
|
||||
|
||||
/** 提交时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "提交时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date submitTime;
|
||||
|
||||
/** 是否删除 */
|
||||
@Excel(name = "客户id")
|
||||
private Long customerId;
|
||||
|
||||
public Long getCustomerId() {
|
||||
return customerId;
|
||||
}
|
||||
|
||||
public void setCustomerId(Long customerId) {
|
||||
this.customerId = customerId;
|
||||
}
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getId()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
public void setTitle(String title)
|
||||
{
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getTitle()
|
||||
{
|
||||
return title;
|
||||
}
|
||||
public void setFollowUpRecord(String followUpRecord)
|
||||
{
|
||||
this.followUpRecord = followUpRecord;
|
||||
}
|
||||
|
||||
public String getFollowUpRecord()
|
||||
{
|
||||
return followUpRecord;
|
||||
}
|
||||
public void setFollowUpSubject(String followUpSubject)
|
||||
{
|
||||
this.followUpSubject = followUpSubject;
|
||||
}
|
||||
|
||||
public String getFollowUpSubject()
|
||||
{
|
||||
return followUpSubject;
|
||||
}
|
||||
public void setCustomerNumber(String customerNumber)
|
||||
{
|
||||
this.customerNumber = customerNumber;
|
||||
}
|
||||
|
||||
public String getCustomerNumber()
|
||||
{
|
||||
return customerNumber;
|
||||
}
|
||||
public void setFollowUpBusinessOpportunities(String followUpBusinessOpportunities)
|
||||
{
|
||||
this.followUpBusinessOpportunities = followUpBusinessOpportunities;
|
||||
}
|
||||
|
||||
public String getFollowUpBusinessOpportunities()
|
||||
{
|
||||
return followUpBusinessOpportunities;
|
||||
}
|
||||
public void setOpportunityNumber(String opportunityNumber)
|
||||
{
|
||||
this.opportunityNumber = opportunityNumber;
|
||||
}
|
||||
|
||||
public String getOpportunityNumber()
|
||||
{
|
||||
return opportunityNumber;
|
||||
}
|
||||
public void setContactPeople(String contactPeople)
|
||||
{
|
||||
this.contactPeople = contactPeople;
|
||||
}
|
||||
|
||||
public String getContactPeople()
|
||||
{
|
||||
return contactPeople;
|
||||
}
|
||||
public void setFollowUpType(Integer followUpType)
|
||||
{
|
||||
this.followUpType = followUpType;
|
||||
}
|
||||
|
||||
public Integer getFollowUpType()
|
||||
{
|
||||
return followUpType;
|
||||
}
|
||||
|
||||
public String getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
public void setContent(String content) {
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
public void setFollowUpTime(Date followUpTime)
|
||||
{
|
||||
this.followUpTime = followUpTime;
|
||||
}
|
||||
|
||||
public Date getFollowUpTime()
|
||||
{
|
||||
return followUpTime;
|
||||
}
|
||||
public void setFollowUpPeople(String followUpPeople)
|
||||
{
|
||||
this.followUpPeople = followUpPeople;
|
||||
}
|
||||
|
||||
public String getFollowUpPeople()
|
||||
{
|
||||
return followUpPeople;
|
||||
}
|
||||
public void setBelongingDepartment(String belongingDepartment)
|
||||
{
|
||||
this.belongingDepartment = belongingDepartment;
|
||||
}
|
||||
|
||||
public String getBelongingDepartment()
|
||||
{
|
||||
return belongingDepartment;
|
||||
}
|
||||
public void setSubmitter(String submitter)
|
||||
{
|
||||
this.submitter = submitter;
|
||||
}
|
||||
|
||||
public String getSubmitter()
|
||||
{
|
||||
return submitter;
|
||||
}
|
||||
public void setSubmitTime(Date submitTime)
|
||||
{
|
||||
this.submitTime = submitTime;
|
||||
}
|
||||
|
||||
public Date getSubmitTime()
|
||||
{
|
||||
return submitTime;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("id", getId())
|
||||
.append("title", getTitle())
|
||||
.append("followUpRecord", getFollowUpRecord())
|
||||
.append("followUpSubject", getFollowUpSubject())
|
||||
.append("customerNumber", getCustomerNumber())
|
||||
.append("followUpBusinessOpportunities", getFollowUpBusinessOpportunities())
|
||||
.append("opportunityNumber", getOpportunityNumber())
|
||||
.append("contactPeople", getContactPeople())
|
||||
.append("followUpType", getFollowUpType())
|
||||
.append("content", getContent())
|
||||
.append("followUpTime", getFollowUpTime())
|
||||
.append("followUpPeople", getFollowUpPeople())
|
||||
.append("belongingDepartment", getBelongingDepartment())
|
||||
.append("submitter", getSubmitter())
|
||||
.append("submitTime", getSubmitTime())
|
||||
.append("createBy", getCreateBy())
|
||||
.append("createTime", getCreateTime())
|
||||
.append("updateBy", getUpdateBy())
|
||||
.append("updateTime", getUpdateTime())
|
||||
.append("remark", getRemark())
|
||||
.append("customerId", getCustomerId())
|
||||
.toString();
|
||||
}
|
||||
}
|
@ -0,0 +1,497 @@
|
||||
package com.ruoyi.crm.system.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 服务工单对象 service_ticket
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-03-01
|
||||
*/
|
||||
public class ServiceTicket extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 服务工单id */
|
||||
private Long id;
|
||||
|
||||
/** 标题 */
|
||||
@Excel(name = "标题")
|
||||
private String title;
|
||||
|
||||
/** 客户姓名 */
|
||||
@Excel(name = "客户姓名")
|
||||
private String customerName;
|
||||
|
||||
/** 客户编号 */
|
||||
@Excel(name = "客户编号")
|
||||
private String customerNumber;
|
||||
|
||||
/** 合同标题 */
|
||||
@Excel(name = "合同标题")
|
||||
private String contractTitle;
|
||||
|
||||
/** 合同订单编号 */
|
||||
@Excel(name = "合同订单编号")
|
||||
private String contractOrderNumber;
|
||||
|
||||
/** 客户联系人 */
|
||||
@Excel(name = "客户联系人")
|
||||
private String customerContact;
|
||||
|
||||
/** 手机号 */
|
||||
@Excel(name = "手机号")
|
||||
private String phoneNumber;
|
||||
|
||||
/** 服务类型 */
|
||||
@Excel(name = "服务类型")
|
||||
private Integer serviceType;
|
||||
|
||||
/** 服务单号 */
|
||||
@Excel(name = "服务单号")
|
||||
private String serviceOrderNumber;
|
||||
|
||||
/** 第几个服务单 */
|
||||
@Excel(name = "第几个服务单")
|
||||
private Integer howManyServiceOrder;
|
||||
|
||||
/** 服务开始时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "服务开始时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date serviceStarTime;
|
||||
|
||||
/** 服务结束时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "服务结束时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date serviceEndTime;
|
||||
|
||||
/** 服务需求天数 */
|
||||
@Excel(name = "服务需求天数")
|
||||
private Integer demandServiceDay;
|
||||
|
||||
/** 售后技术人员 */
|
||||
@Excel(name = "售后技术人员")
|
||||
private String afterSalesTechnician;
|
||||
|
||||
/** 服务地址(省/自治区/直辖市) */
|
||||
@Excel(name = "服务地址(省/自治区/直辖市)")
|
||||
private String serviceAddress;
|
||||
|
||||
/** 服务地址(市) */
|
||||
@Excel(name = "服务地址(市)")
|
||||
private String serviceAddressCity;
|
||||
|
||||
/** 服务地址(区) */
|
||||
@Excel(name = "服务地址(区)")
|
||||
private String serviceAddressArea;
|
||||
|
||||
/** 服务地址(详细地址) */
|
||||
@Excel(name = "服务地址(详细地址)")
|
||||
private String serviceAddressDetail;
|
||||
|
||||
/** 签到 */
|
||||
@Excel(name = "签到")
|
||||
private String signIn;
|
||||
|
||||
/** 签到时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "签到时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date signInTime;
|
||||
|
||||
/** 签退 */
|
||||
@Excel(name = "签退")
|
||||
private String signOut;
|
||||
|
||||
/** 签退时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "签退时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date signOutTime;
|
||||
|
||||
/** 是否解决问题(true or false) */
|
||||
@Excel(name = "是否解决问题", readConverterExp = "是否解决问题(true or false)")
|
||||
private Integer isSolveTheProblem;
|
||||
|
||||
/** 现场照片 */
|
||||
@Excel(name = "现场照片")
|
||||
private String scenePhoto;
|
||||
|
||||
/** 客户满意度 */
|
||||
@Excel(name = "客户满意度")
|
||||
private Integer customerSatisfaction;
|
||||
|
||||
/** 满意度数值 */
|
||||
@Excel(name = "满意度数值")
|
||||
private Integer satisfactionValue;
|
||||
|
||||
/** 客户意见与诉求 */
|
||||
@Excel(name = "客户意见与诉求")
|
||||
private String customerCommentsAndDemands;
|
||||
|
||||
/** 提交人 */
|
||||
@Excel(name = "提交人")
|
||||
private String submitter;
|
||||
|
||||
/** 提交时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "提交时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date submitTime;
|
||||
|
||||
/** 流程状态 */
|
||||
@Excel(name = "流程状态")
|
||||
private Integer processState;
|
||||
|
||||
/** 当前节点 */
|
||||
@Excel(name = "当前节点")
|
||||
private Integer currentNode;
|
||||
|
||||
/** 当前负责人 */
|
||||
@Excel(name = "当前负责人")
|
||||
private String currentPersonInCharge;
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getId()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
public void setTitle(String title)
|
||||
{
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getTitle()
|
||||
{
|
||||
return title;
|
||||
}
|
||||
public void setCustomerName(String customerName)
|
||||
{
|
||||
this.customerName = customerName;
|
||||
}
|
||||
|
||||
public String getCustomerName()
|
||||
{
|
||||
return customerName;
|
||||
}
|
||||
public void setCustomerNumber(String customerNumber)
|
||||
{
|
||||
this.customerNumber = customerNumber;
|
||||
}
|
||||
|
||||
public String getCustomerNumber()
|
||||
{
|
||||
return customerNumber;
|
||||
}
|
||||
public void setContractTitle(String contractTitle)
|
||||
{
|
||||
this.contractTitle = contractTitle;
|
||||
}
|
||||
|
||||
public String getContractTitle()
|
||||
{
|
||||
return contractTitle;
|
||||
}
|
||||
public void setContractOrderNumber(String contractOrderNumber)
|
||||
{
|
||||
this.contractOrderNumber = contractOrderNumber;
|
||||
}
|
||||
|
||||
public String getContractOrderNumber()
|
||||
{
|
||||
return contractOrderNumber;
|
||||
}
|
||||
public void setCustomerContact(String customerContact)
|
||||
{
|
||||
this.customerContact = customerContact;
|
||||
}
|
||||
|
||||
public String getCustomerContact()
|
||||
{
|
||||
return customerContact;
|
||||
}
|
||||
public void setPhoneNumber(String phoneNumber)
|
||||
{
|
||||
this.phoneNumber = phoneNumber;
|
||||
}
|
||||
|
||||
public String getPhoneNumber()
|
||||
{
|
||||
return phoneNumber;
|
||||
}
|
||||
public void setServiceType(Integer serviceType)
|
||||
{
|
||||
this.serviceType = serviceType;
|
||||
}
|
||||
|
||||
public Integer getServiceType()
|
||||
{
|
||||
return serviceType;
|
||||
}
|
||||
public void setServiceOrderNumber(String serviceOrderNumber)
|
||||
{
|
||||
this.serviceOrderNumber = serviceOrderNumber;
|
||||
}
|
||||
|
||||
public String getServiceOrderNumber()
|
||||
{
|
||||
return serviceOrderNumber;
|
||||
}
|
||||
public void setHowManyServiceOrder(Integer howManyServiceOrder)
|
||||
{
|
||||
this.howManyServiceOrder = howManyServiceOrder;
|
||||
}
|
||||
|
||||
public Integer getHowManyServiceOrder()
|
||||
{
|
||||
return howManyServiceOrder;
|
||||
}
|
||||
public void setServiceStarTime(Date serviceStarTime)
|
||||
{
|
||||
this.serviceStarTime = serviceStarTime;
|
||||
}
|
||||
|
||||
public Date getServiceStarTime()
|
||||
{
|
||||
return serviceStarTime;
|
||||
}
|
||||
public void setServiceEndTime(Date serviceEndTime)
|
||||
{
|
||||
this.serviceEndTime = serviceEndTime;
|
||||
}
|
||||
|
||||
public Date getServiceEndTime()
|
||||
{
|
||||
return serviceEndTime;
|
||||
}
|
||||
public void setDemandServiceDay(Integer demandServiceDay)
|
||||
{
|
||||
this.demandServiceDay = demandServiceDay;
|
||||
}
|
||||
|
||||
public Integer getDemandServiceDay()
|
||||
{
|
||||
return demandServiceDay;
|
||||
}
|
||||
public void setAfterSalesTechnician(String afterSalesTechnician)
|
||||
{
|
||||
this.afterSalesTechnician = afterSalesTechnician;
|
||||
}
|
||||
|
||||
public String getAfterSalesTechnician()
|
||||
{
|
||||
return afterSalesTechnician;
|
||||
}
|
||||
public void setServiceAddress(String serviceAddress)
|
||||
{
|
||||
this.serviceAddress = serviceAddress;
|
||||
}
|
||||
|
||||
public String getServiceAddress()
|
||||
{
|
||||
return serviceAddress;
|
||||
}
|
||||
public void setServiceAddressCity(String serviceAddressCity)
|
||||
{
|
||||
this.serviceAddressCity = serviceAddressCity;
|
||||
}
|
||||
|
||||
public String getServiceAddressCity()
|
||||
{
|
||||
return serviceAddressCity;
|
||||
}
|
||||
public void setServiceAddressArea(String serviceAddressArea)
|
||||
{
|
||||
this.serviceAddressArea = serviceAddressArea;
|
||||
}
|
||||
|
||||
public String getServiceAddressArea()
|
||||
{
|
||||
return serviceAddressArea;
|
||||
}
|
||||
public void setServiceAddressDetail(String serviceAddressDetail)
|
||||
{
|
||||
this.serviceAddressDetail = serviceAddressDetail;
|
||||
}
|
||||
|
||||
public String getServiceAddressDetail()
|
||||
{
|
||||
return serviceAddressDetail;
|
||||
}
|
||||
public void setSignIn(String signIn)
|
||||
{
|
||||
this.signIn = signIn;
|
||||
}
|
||||
|
||||
public String getSignIn()
|
||||
{
|
||||
return signIn;
|
||||
}
|
||||
public void setSignInTime(Date signInTime)
|
||||
{
|
||||
this.signInTime = signInTime;
|
||||
}
|
||||
|
||||
public Date getSignInTime()
|
||||
{
|
||||
return signInTime;
|
||||
}
|
||||
public void setSignOut(String signOut)
|
||||
{
|
||||
this.signOut = signOut;
|
||||
}
|
||||
|
||||
public String getSignOut()
|
||||
{
|
||||
return signOut;
|
||||
}
|
||||
public void setSignOutTime(Date signOutTime)
|
||||
{
|
||||
this.signOutTime = signOutTime;
|
||||
}
|
||||
|
||||
public Date getSignOutTime()
|
||||
{
|
||||
return signOutTime;
|
||||
}
|
||||
public void setIsSolveTheProblem(Integer isSolveTheProblem)
|
||||
{
|
||||
this.isSolveTheProblem = isSolveTheProblem;
|
||||
}
|
||||
|
||||
public Integer getIsSolveTheProblem()
|
||||
{
|
||||
return isSolveTheProblem;
|
||||
}
|
||||
public void setScenePhoto(String scenePhoto)
|
||||
{
|
||||
this.scenePhoto = scenePhoto;
|
||||
}
|
||||
|
||||
public String getScenePhoto()
|
||||
{
|
||||
return scenePhoto;
|
||||
}
|
||||
public void setCustomerSatisfaction(Integer customerSatisfaction)
|
||||
{
|
||||
this.customerSatisfaction = customerSatisfaction;
|
||||
}
|
||||
|
||||
public Integer getCustomerSatisfaction()
|
||||
{
|
||||
return customerSatisfaction;
|
||||
}
|
||||
public void setSatisfactionValue(Integer satisfactionValue)
|
||||
{
|
||||
this.satisfactionValue = satisfactionValue;
|
||||
}
|
||||
|
||||
public Integer getSatisfactionValue()
|
||||
{
|
||||
return satisfactionValue;
|
||||
}
|
||||
public void setCustomerCommentsAndDemands(String customerCommentsAndDemands)
|
||||
{
|
||||
this.customerCommentsAndDemands = customerCommentsAndDemands;
|
||||
}
|
||||
|
||||
public String getCustomerCommentsAndDemands()
|
||||
{
|
||||
return customerCommentsAndDemands;
|
||||
}
|
||||
public void setSubmitter(String submitter)
|
||||
{
|
||||
this.submitter = submitter;
|
||||
}
|
||||
|
||||
public String getSubmitter()
|
||||
{
|
||||
return submitter;
|
||||
}
|
||||
public void setSubmitTime(Date submitTime)
|
||||
{
|
||||
this.submitTime = submitTime;
|
||||
}
|
||||
|
||||
public Date getSubmitTime()
|
||||
{
|
||||
return submitTime;
|
||||
}
|
||||
public void setProcessState(Integer processState)
|
||||
{
|
||||
this.processState = processState;
|
||||
}
|
||||
|
||||
public Integer getProcessState()
|
||||
{
|
||||
return processState;
|
||||
}
|
||||
public void setCurrentNode(Integer currentNode)
|
||||
{
|
||||
this.currentNode = currentNode;
|
||||
}
|
||||
|
||||
public Integer getCurrentNode()
|
||||
{
|
||||
return currentNode;
|
||||
}
|
||||
public void setCurrentPersonInCharge(String currentPersonInCharge)
|
||||
{
|
||||
this.currentPersonInCharge = currentPersonInCharge;
|
||||
}
|
||||
|
||||
public String getCurrentPersonInCharge()
|
||||
{
|
||||
return currentPersonInCharge;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("id", getId())
|
||||
.append("title", getTitle())
|
||||
.append("customerName", getCustomerName())
|
||||
.append("customerNumber", getCustomerNumber())
|
||||
.append("contractTitle", getContractTitle())
|
||||
.append("contractOrderNumber", getContractOrderNumber())
|
||||
.append("customerContact", getCustomerContact())
|
||||
.append("phoneNumber", getPhoneNumber())
|
||||
.append("serviceType", getServiceType())
|
||||
.append("serviceOrderNumber", getServiceOrderNumber())
|
||||
.append("howManyServiceOrder", getHowManyServiceOrder())
|
||||
.append("serviceStarTime", getServiceStarTime())
|
||||
.append("serviceEndTime", getServiceEndTime())
|
||||
.append("demandServiceDay", getDemandServiceDay())
|
||||
.append("afterSalesTechnician", getAfterSalesTechnician())
|
||||
.append("serviceAddress", getServiceAddress())
|
||||
.append("serviceAddressCity", getServiceAddressCity())
|
||||
.append("serviceAddressArea", getServiceAddressArea())
|
||||
.append("serviceAddressDetail", getServiceAddressDetail())
|
||||
.append("signIn", getSignIn())
|
||||
.append("signInTime", getSignInTime())
|
||||
.append("signOut", getSignOut())
|
||||
.append("signOutTime", getSignOutTime())
|
||||
.append("isSolveTheProblem", getIsSolveTheProblem())
|
||||
.append("scenePhoto", getScenePhoto())
|
||||
.append("customerSatisfaction", getCustomerSatisfaction())
|
||||
.append("satisfactionValue", getSatisfactionValue())
|
||||
.append("customerCommentsAndDemands", getCustomerCommentsAndDemands())
|
||||
.append("submitter", getSubmitter())
|
||||
.append("submitTime", getSubmitTime())
|
||||
.append("createBy", getCreateBy())
|
||||
.append("createTime", getCreateTime())
|
||||
.append("updateBy", getUpdateBy())
|
||||
.append("updateTime", getUpdateTime())
|
||||
.append("processState", getProcessState())
|
||||
.append("currentNode", getCurrentNode())
|
||||
.append("currentPersonInCharge", getCurrentPersonInCharge())
|
||||
.toString();
|
||||
}
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
package com.ruoyi.crm.system.mapper;
|
||||
|
||||
import com.ruoyi.crm.system.domain.Business;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 商机Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-02-29
|
||||
*/
|
||||
public interface BusinessMapper
|
||||
{
|
||||
/**
|
||||
* 查询商机
|
||||
*
|
||||
* @param id 商机主键
|
||||
* @return 商机
|
||||
*/
|
||||
public Business selectBusinessById(Long id);
|
||||
|
||||
/**
|
||||
* 查询商机列表
|
||||
*
|
||||
* @param business 商机
|
||||
* @return 商机集合
|
||||
*/
|
||||
public List<Business> selectBusinessList(Business business);
|
||||
|
||||
/**
|
||||
* 新增商机
|
||||
*
|
||||
* @param business 商机
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertBusiness(Business business);
|
||||
|
||||
/**
|
||||
* 修改商机
|
||||
*
|
||||
* @param business 商机
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateBusiness(Business business);
|
||||
|
||||
/**
|
||||
* 删除商机
|
||||
*
|
||||
* @param id 商机主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteBusinessById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除商机
|
||||
*
|
||||
* @param ids 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteBusinessByIds(Long[] ids);
|
||||
|
||||
/**
|
||||
* 根据商机编号查询
|
||||
* @param businessNumber
|
||||
* @return
|
||||
*/
|
||||
public Business selectByBusinessNumber(String businessNumber);
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
package com.ruoyi.crm.system.mapper;
|
||||
|
||||
import com.ruoyi.crm.system.domain.ContactPerson;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 联系人Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-02-29
|
||||
*/
|
||||
public interface ContactPersonMapper
|
||||
{
|
||||
/**
|
||||
* 查询联系人
|
||||
*
|
||||
* @param id 联系人主键
|
||||
* @return 联系人
|
||||
*/
|
||||
public ContactPerson selectContactPersonById(Long id);
|
||||
|
||||
/**
|
||||
* 查询联系人列表
|
||||
*
|
||||
* @param contactPerson 联系人
|
||||
* @return 联系人集合
|
||||
*/
|
||||
public List<ContactPerson> selectContactPersonList(ContactPerson contactPerson);
|
||||
|
||||
/**
|
||||
* 新增联系人
|
||||
*
|
||||
* @param contactPerson 联系人
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertContactPerson(ContactPerson contactPerson);
|
||||
|
||||
/**
|
||||
* 修改联系人
|
||||
*
|
||||
* @param contactPerson 联系人
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateContactPerson(ContactPerson contactPerson);
|
||||
|
||||
/**
|
||||
* 删除联系人
|
||||
*
|
||||
* @param id 联系人主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteContactPersonById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除联系人
|
||||
*
|
||||
* @param ids 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteContactPersonByIds(Long[] ids);
|
||||
}
|
@ -0,0 +1,63 @@
|
||||
package com.ruoyi.crm.system.mapper;
|
||||
|
||||
|
||||
import com.ruoyi.crm.system.domain.FollowUpPlan;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 跟进计划Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-03-01
|
||||
*/
|
||||
public interface FollowUpPlanMapper
|
||||
{
|
||||
/**
|
||||
* 查询跟进计划
|
||||
*
|
||||
* @param id 跟进计划主键
|
||||
* @return 跟进计划
|
||||
*/
|
||||
public FollowUpPlan selectFollowUpPlanById(Long id);
|
||||
|
||||
/**
|
||||
* 查询跟进计划列表
|
||||
*
|
||||
* @param followUpPlan 跟进计划
|
||||
* @return 跟进计划集合
|
||||
*/
|
||||
public List<FollowUpPlan> selectFollowUpPlanList(FollowUpPlan followUpPlan);
|
||||
|
||||
/**
|
||||
* 新增跟进计划
|
||||
*
|
||||
* @param followUpPlan 跟进计划
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertFollowUpPlan(FollowUpPlan followUpPlan);
|
||||
|
||||
/**
|
||||
* 修改跟进计划
|
||||
*
|
||||
* @param followUpPlan 跟进计划
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateFollowUpPlan(FollowUpPlan followUpPlan);
|
||||
|
||||
/**
|
||||
* 删除跟进计划
|
||||
*
|
||||
* @param id 跟进计划主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteFollowUpPlanById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除跟进计划
|
||||
*
|
||||
* @param ids 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteFollowUpPlanByIds(Long[] ids);
|
||||
}
|
@ -0,0 +1,63 @@
|
||||
package com.ruoyi.crm.system.mapper;
|
||||
|
||||
|
||||
import com.ruoyi.crm.system.domain.FollowUpRecord;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 跟进记录Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-03-01
|
||||
*/
|
||||
public interface FollowUpRecordMapper
|
||||
{
|
||||
/**
|
||||
* 查询跟进记录
|
||||
*
|
||||
* @param id 跟进记录主键
|
||||
* @return 跟进记录
|
||||
*/
|
||||
public FollowUpRecord selectFollowUpRecordById(Long id);
|
||||
|
||||
/**
|
||||
* 查询跟进记录列表
|
||||
*
|
||||
* @param followUpRecord 跟进记录
|
||||
* @return 跟进记录集合
|
||||
*/
|
||||
public List<FollowUpRecord> selectFollowUpRecordList(FollowUpRecord followUpRecord);
|
||||
|
||||
/**
|
||||
* 新增跟进记录
|
||||
*
|
||||
* @param followUpRecord 跟进记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertFollowUpRecord(FollowUpRecord followUpRecord);
|
||||
|
||||
/**
|
||||
* 修改跟进记录
|
||||
*
|
||||
* @param followUpRecord 跟进记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateFollowUpRecord(FollowUpRecord followUpRecord);
|
||||
|
||||
/**
|
||||
* 删除跟进记录
|
||||
*
|
||||
* @param id 跟进记录主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteFollowUpRecordById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除跟进记录
|
||||
*
|
||||
* @param ids 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteFollowUpRecordByIds(Long[] ids);
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
package com.ruoyi.crm.system.mapper;
|
||||
|
||||
import com.ruoyi.crm.system.domain.ServiceTicket;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 服务工单Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-03-01
|
||||
*/
|
||||
public interface ServiceTicketMapper
|
||||
{
|
||||
/**
|
||||
* 查询服务工单
|
||||
*
|
||||
* @param id 服务工单主键
|
||||
* @return 服务工单
|
||||
*/
|
||||
public ServiceTicket selectServiceTicketById(Long id);
|
||||
|
||||
/**
|
||||
* 查询服务工单列表
|
||||
*
|
||||
* @param serviceTicket 服务工单
|
||||
* @return 服务工单集合
|
||||
*/
|
||||
public List<ServiceTicket> selectServiceTicketList(ServiceTicket serviceTicket);
|
||||
|
||||
/**
|
||||
* 新增服务工单
|
||||
*
|
||||
* @param serviceTicket 服务工单
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertServiceTicket(ServiceTicket serviceTicket);
|
||||
|
||||
/**
|
||||
* 修改服务工单
|
||||
*
|
||||
* @param serviceTicket 服务工单
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateServiceTicket(ServiceTicket serviceTicket);
|
||||
|
||||
/**
|
||||
* 删除服务工单
|
||||
*
|
||||
* @param id 服务工单主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteServiceTicketById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除服务工单
|
||||
*
|
||||
* @param ids 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteServiceTicketByIds(Long[] ids);
|
||||
}
|
@ -0,0 +1,74 @@
|
||||
package com.ruoyi.crm.system.service;
|
||||
|
||||
|
||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||
import com.ruoyi.crm.system.domain.Business;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 商机Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-02-29
|
||||
*/
|
||||
public interface IBusinessService
|
||||
{
|
||||
/**
|
||||
* 查询商机
|
||||
*
|
||||
* @param id 商机主键
|
||||
* @return 商机
|
||||
*/
|
||||
public Business selectBusinessById(Long id);
|
||||
|
||||
/**
|
||||
* 查询商机列表
|
||||
*
|
||||
* @param business 商机
|
||||
* @return 商机集合
|
||||
*/
|
||||
public List<Business> selectBusinessList(Business business);
|
||||
|
||||
/**
|
||||
* 新增商机
|
||||
*
|
||||
* @param business 商机
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertBusiness(Business business);
|
||||
|
||||
/**
|
||||
* 修改商机
|
||||
*
|
||||
* @param business 商机
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateBusiness(Business business);
|
||||
|
||||
/**
|
||||
* 批量删除商机
|
||||
*
|
||||
* @param ids 需要删除的商机主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteBusinessByIds(Long[] ids);
|
||||
|
||||
/**
|
||||
* 删除商机信息
|
||||
*
|
||||
* @param id 商机主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteBusinessById(Long id);
|
||||
|
||||
/**
|
||||
* 导入用户数据
|
||||
*
|
||||
* @param userList 用户数据列表
|
||||
* @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
|
||||
* @param operName 操作用户
|
||||
* @return 结果
|
||||
*/
|
||||
public String importBusines(List<Business> userList, Boolean isUpdateSupport, String operName);
|
||||
}
|
@ -0,0 +1,63 @@
|
||||
package com.ruoyi.crm.system.service;
|
||||
|
||||
|
||||
import com.ruoyi.crm.system.domain.ContactPerson;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 联系人Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-02-29
|
||||
*/
|
||||
public interface IContactPersonService
|
||||
{
|
||||
/**
|
||||
* 查询联系人
|
||||
*
|
||||
* @param id 联系人主键
|
||||
* @return 联系人
|
||||
*/
|
||||
public ContactPerson selectContactPersonById(Long id);
|
||||
|
||||
/**
|
||||
* 查询联系人列表
|
||||
*
|
||||
* @param contactPerson 联系人
|
||||
* @return 联系人集合
|
||||
*/
|
||||
public List<ContactPerson> selectContactPersonList(ContactPerson contactPerson);
|
||||
|
||||
/**
|
||||
* 新增联系人
|
||||
*
|
||||
* @param contactPerson 联系人
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertContactPerson(ContactPerson contactPerson);
|
||||
|
||||
/**
|
||||
* 修改联系人
|
||||
*
|
||||
* @param contactPerson 联系人
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateContactPerson(ContactPerson contactPerson);
|
||||
|
||||
/**
|
||||
* 批量删除联系人
|
||||
*
|
||||
* @param ids 需要删除的联系人主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteContactPersonByIds(Long[] ids);
|
||||
|
||||
/**
|
||||
* 删除联系人信息
|
||||
*
|
||||
* @param id 联系人主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteContactPersonById(Long id);
|
||||
}
|
@ -0,0 +1,63 @@
|
||||
package com.ruoyi.crm.system.service;
|
||||
|
||||
|
||||
import com.ruoyi.crm.system.domain.FollowUpPlan;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 跟进计划Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-03-01
|
||||
*/
|
||||
public interface IFollowUpPlanService
|
||||
{
|
||||
/**
|
||||
* 查询跟进计划
|
||||
*
|
||||
* @param id 跟进计划主键
|
||||
* @return 跟进计划
|
||||
*/
|
||||
public FollowUpPlan selectFollowUpPlanById(Long id);
|
||||
|
||||
/**
|
||||
* 查询跟进计划列表
|
||||
*
|
||||
* @param followUpPlan 跟进计划
|
||||
* @return 跟进计划集合
|
||||
*/
|
||||
public List<FollowUpPlan> selectFollowUpPlanList(FollowUpPlan followUpPlan);
|
||||
|
||||
/**
|
||||
* 新增跟进计划
|
||||
*
|
||||
* @param followUpPlan 跟进计划
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertFollowUpPlan(FollowUpPlan followUpPlan);
|
||||
|
||||
/**
|
||||
* 修改跟进计划
|
||||
*
|
||||
* @param followUpPlan 跟进计划
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateFollowUpPlan(FollowUpPlan followUpPlan);
|
||||
|
||||
/**
|
||||
* 批量删除跟进计划
|
||||
*
|
||||
* @param ids 需要删除的跟进计划主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteFollowUpPlanByIds(Long[] ids);
|
||||
|
||||
/**
|
||||
* 删除跟进计划信息
|
||||
*
|
||||
* @param id 跟进计划主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteFollowUpPlanById(Long id);
|
||||
}
|
@ -0,0 +1,63 @@
|
||||
package com.ruoyi.crm.system.service;
|
||||
|
||||
|
||||
import com.ruoyi.crm.system.domain.FollowUpRecord;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 跟进记录Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-03-01
|
||||
*/
|
||||
public interface IFollowUpRecordService
|
||||
{
|
||||
/**
|
||||
* 查询跟进记录
|
||||
*
|
||||
* @param id 跟进记录主键
|
||||
* @return 跟进记录
|
||||
*/
|
||||
public FollowUpRecord selectFollowUpRecordById(Long id);
|
||||
|
||||
/**
|
||||
* 查询跟进记录列表
|
||||
*
|
||||
* @param followUpRecord 跟进记录
|
||||
* @return 跟进记录集合
|
||||
*/
|
||||
public List<FollowUpRecord> selectFollowUpRecordList(FollowUpRecord followUpRecord);
|
||||
|
||||
/**
|
||||
* 新增跟进记录
|
||||
*
|
||||
* @param followUpRecord 跟进记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertFollowUpRecord(FollowUpRecord followUpRecord);
|
||||
|
||||
/**
|
||||
* 修改跟进记录
|
||||
*
|
||||
* @param followUpRecord 跟进记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateFollowUpRecord(FollowUpRecord followUpRecord);
|
||||
|
||||
/**
|
||||
* 批量删除跟进记录
|
||||
*
|
||||
* @param ids 需要删除的跟进记录主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteFollowUpRecordByIds(Long[] ids);
|
||||
|
||||
/**
|
||||
* 删除跟进记录信息
|
||||
*
|
||||
* @param id 跟进记录主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteFollowUpRecordById(Long id);
|
||||
}
|
@ -0,0 +1,63 @@
|
||||
package com.ruoyi.crm.system.service;
|
||||
|
||||
|
||||
import com.ruoyi.crm.system.domain.ServiceTicket;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 服务工单Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-03-01
|
||||
*/
|
||||
public interface IServiceTicketService
|
||||
{
|
||||
/**
|
||||
* 查询服务工单
|
||||
*
|
||||
* @param id 服务工单主键
|
||||
* @return 服务工单
|
||||
*/
|
||||
public ServiceTicket selectServiceTicketById(Long id);
|
||||
|
||||
/**
|
||||
* 查询服务工单列表
|
||||
*
|
||||
* @param serviceTicket 服务工单
|
||||
* @return 服务工单集合
|
||||
*/
|
||||
public List<ServiceTicket> selectServiceTicketList(ServiceTicket serviceTicket);
|
||||
|
||||
/**
|
||||
* 新增服务工单
|
||||
*
|
||||
* @param serviceTicket 服务工单
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertServiceTicket(ServiceTicket serviceTicket);
|
||||
|
||||
/**
|
||||
* 修改服务工单
|
||||
*
|
||||
* @param serviceTicket 服务工单
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateServiceTicket(ServiceTicket serviceTicket);
|
||||
|
||||
/**
|
||||
* 批量删除服务工单
|
||||
*
|
||||
* @param ids 需要删除的服务工单主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteServiceTicketByIds(Long[] ids);
|
||||
|
||||
/**
|
||||
* 删除服务工单信息
|
||||
*
|
||||
* @param id 服务工单主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteServiceTicketById(Long id);
|
||||
}
|
@ -0,0 +1,176 @@
|
||||
package com.ruoyi.crm.system.service.impl;
|
||||
|
||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.common.utils.bean.BeanValidators;
|
||||
import com.ruoyi.crm.system.domain.Business;
|
||||
import com.ruoyi.crm.system.mapper.BusinessMapper;
|
||||
import com.ruoyi.crm.system.service.IBusinessService;
|
||||
import com.ruoyi.system.service.impl.SysUserServiceImpl;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.validation.Validator;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 商机Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-02-29
|
||||
*/
|
||||
@Service
|
||||
public class BusinessServiceImpl implements IBusinessService
|
||||
{
|
||||
private static final Logger log = LoggerFactory.getLogger(BusinessServiceImpl.class);
|
||||
|
||||
@Autowired
|
||||
private BusinessMapper businessMapper;
|
||||
|
||||
@Autowired
|
||||
protected Validator validator;
|
||||
|
||||
/**
|
||||
* 查询商机
|
||||
*
|
||||
* @param id 商机主键
|
||||
* @return 商机
|
||||
*/
|
||||
@Override
|
||||
public Business selectBusinessById(Long id)
|
||||
{
|
||||
return businessMapper.selectBusinessById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询商机列表
|
||||
*
|
||||
* @param business 商机
|
||||
* @return 商机
|
||||
*/
|
||||
@Override
|
||||
public List<Business> selectBusinessList(Business business)
|
||||
{
|
||||
return businessMapper.selectBusinessList(business);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增商机
|
||||
*
|
||||
* @param business 商机
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertBusiness(Business business)
|
||||
{
|
||||
business.setCreateTime(DateUtils.getNowDate());
|
||||
return businessMapper.insertBusiness(business);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改商机
|
||||
*
|
||||
* @param business 商机
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateBusiness(Business business)
|
||||
{
|
||||
business.setUpdateTime(DateUtils.getNowDate());
|
||||
return businessMapper.updateBusiness(business);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除商机
|
||||
*
|
||||
* @param ids 需要删除的商机主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteBusinessByIds(Long[] ids)
|
||||
{
|
||||
return businessMapper.deleteBusinessByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除商机信息
|
||||
*
|
||||
* @param id 商机主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteBusinessById(Long id)
|
||||
{
|
||||
return businessMapper.deleteBusinessById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入商机数据
|
||||
* @param userList 用户数据列表
|
||||
* @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
|
||||
* @param operName 操作用户
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String importBusines(List<Business> userList, Boolean isUpdateSupport, String operName) {
|
||||
if (StringUtils.isNull(userList) || userList.size() == 0)
|
||||
{
|
||||
throw new ServiceException("导入用户数据不能为空!");
|
||||
}
|
||||
int successNum = 0;
|
||||
int failureNum = 0;
|
||||
StringBuilder successMsg = new StringBuilder();
|
||||
StringBuilder failureMsg = new StringBuilder();
|
||||
for (Business business : userList) {
|
||||
try
|
||||
{
|
||||
// 验证是否存在这个商机
|
||||
Business b = businessMapper.selectByBusinessNumber(business.getBusinessNumber()+"");
|
||||
System.out.println("----------------------------"+b);
|
||||
if (StringUtils.isNull(b))
|
||||
{
|
||||
BeanValidators.validateWithException(validator, business);
|
||||
business.setCreateTime(DateUtils.getNowDate());
|
||||
businessMapper.insertBusiness(business);
|
||||
successNum++;
|
||||
successMsg.append("<br/>" + successNum + "、商机编号 " + business.getBusinessNumber() + " 导入成功");
|
||||
}
|
||||
else if (isUpdateSupport)
|
||||
{
|
||||
BeanValidators.validateWithException(validator, business);
|
||||
business.setUpdateBy(operName);
|
||||
this.updateBusiness(business);
|
||||
successNum++;
|
||||
successMsg.append("<br/>" + successNum + "、商机编号 " + business.getBusinessNumber() + " 更新成功");
|
||||
}
|
||||
else
|
||||
{
|
||||
failureNum++;
|
||||
failureMsg.append("<br/>" + failureNum + "、商机编号 " + business.getBusinessNumber() + " 已存在");
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
failureNum++;
|
||||
String msg = "<br/>" + failureNum + "、商机编号 " + business.getBusinessNumber() + " 导入失败:";
|
||||
failureMsg.append(msg + e.getMessage());
|
||||
log.error(msg, e);
|
||||
}
|
||||
}
|
||||
if (failureNum > 0)
|
||||
{
|
||||
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
|
||||
throw new ServiceException(failureMsg.toString());
|
||||
}
|
||||
else
|
||||
{
|
||||
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
|
||||
}
|
||||
return successMsg.toString();
|
||||
}
|
||||
}
|
@ -0,0 +1,97 @@
|
||||
package com.ruoyi.crm.system.service.impl;
|
||||
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.crm.system.domain.ContactPerson;
|
||||
import com.ruoyi.crm.system.mapper.ContactPersonMapper;
|
||||
import com.ruoyi.crm.system.service.IContactPersonService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 联系人Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-02-29
|
||||
*/
|
||||
@Service
|
||||
public class ContactPersonServiceImpl implements IContactPersonService
|
||||
{
|
||||
@Autowired
|
||||
private ContactPersonMapper contactPersonMapper;
|
||||
|
||||
/**
|
||||
* 查询联系人
|
||||
*
|
||||
* @param id 联系人主键
|
||||
* @return 联系人
|
||||
*/
|
||||
@Override
|
||||
public ContactPerson selectContactPersonById(Long id)
|
||||
{
|
||||
return contactPersonMapper.selectContactPersonById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询联系人列表
|
||||
*
|
||||
* @param contactPerson 联系人
|
||||
* @return 联系人
|
||||
*/
|
||||
@Override
|
||||
public List<ContactPerson> selectContactPersonList(ContactPerson contactPerson)
|
||||
{
|
||||
return contactPersonMapper.selectContactPersonList(contactPerson);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增联系人
|
||||
*
|
||||
* @param contactPerson 联系人
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertContactPerson(ContactPerson contactPerson)
|
||||
{
|
||||
contactPerson.setCreateTime(DateUtils.getNowDate());
|
||||
return contactPersonMapper.insertContactPerson(contactPerson);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改联系人
|
||||
*
|
||||
* @param contactPerson 联系人
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateContactPerson(ContactPerson contactPerson)
|
||||
{
|
||||
contactPerson.setUpdateTime(DateUtils.getNowDate());
|
||||
return contactPersonMapper.updateContactPerson(contactPerson);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除联系人
|
||||
*
|
||||
* @param ids 需要删除的联系人主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteContactPersonByIds(Long[] ids)
|
||||
{
|
||||
return contactPersonMapper.deleteContactPersonByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除联系人信息
|
||||
*
|
||||
* @param id 联系人主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteContactPersonById(Long id)
|
||||
{
|
||||
return contactPersonMapper.deleteContactPersonById(id);
|
||||
}
|
||||
}
|
@ -0,0 +1,97 @@
|
||||
package com.ruoyi.crm.system.service.impl;
|
||||
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.crm.system.domain.FollowUpPlan;
|
||||
import com.ruoyi.crm.system.mapper.FollowUpPlanMapper;
|
||||
import com.ruoyi.crm.system.service.IFollowUpPlanService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 跟进计划Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-03-01
|
||||
*/
|
||||
@Service
|
||||
public class FollowUpPlanServiceImpl implements IFollowUpPlanService
|
||||
{
|
||||
@Autowired
|
||||
private FollowUpPlanMapper followUpPlanMapper;
|
||||
|
||||
/**
|
||||
* 查询跟进计划
|
||||
*
|
||||
* @param id 跟进计划主键
|
||||
* @return 跟进计划
|
||||
*/
|
||||
@Override
|
||||
public FollowUpPlan selectFollowUpPlanById(Long id)
|
||||
{
|
||||
return followUpPlanMapper.selectFollowUpPlanById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询跟进计划列表
|
||||
*
|
||||
* @param followUpPlan 跟进计划
|
||||
* @return 跟进计划
|
||||
*/
|
||||
@Override
|
||||
public List<FollowUpPlan> selectFollowUpPlanList(FollowUpPlan followUpPlan)
|
||||
{
|
||||
return followUpPlanMapper.selectFollowUpPlanList(followUpPlan);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增跟进计划
|
||||
*
|
||||
* @param followUpPlan 跟进计划
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertFollowUpPlan(FollowUpPlan followUpPlan)
|
||||
{
|
||||
followUpPlan.setCreateTime(DateUtils.getNowDate());
|
||||
return followUpPlanMapper.insertFollowUpPlan(followUpPlan);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改跟进计划
|
||||
*
|
||||
* @param followUpPlan 跟进计划
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateFollowUpPlan(FollowUpPlan followUpPlan)
|
||||
{
|
||||
followUpPlan.setUpdateTime(DateUtils.getNowDate());
|
||||
return followUpPlanMapper.updateFollowUpPlan(followUpPlan);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除跟进计划
|
||||
*
|
||||
* @param ids 需要删除的跟进计划主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteFollowUpPlanByIds(Long[] ids)
|
||||
{
|
||||
return followUpPlanMapper.deleteFollowUpPlanByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除跟进计划信息
|
||||
*
|
||||
* @param id 跟进计划主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteFollowUpPlanById(Long id)
|
||||
{
|
||||
return followUpPlanMapper.deleteFollowUpPlanById(id);
|
||||
}
|
||||
}
|
@ -0,0 +1,97 @@
|
||||
package com.ruoyi.crm.system.service.impl;
|
||||
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.crm.system.domain.FollowUpRecord;
|
||||
import com.ruoyi.crm.system.mapper.FollowUpRecordMapper;
|
||||
import com.ruoyi.crm.system.service.IFollowUpRecordService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 跟进记录Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-03-01
|
||||
*/
|
||||
@Service
|
||||
public class FollowUpRecordServiceImpl implements IFollowUpRecordService
|
||||
{
|
||||
@Autowired
|
||||
private FollowUpRecordMapper followUpRecordMapper;
|
||||
|
||||
/**
|
||||
* 查询跟进记录
|
||||
*
|
||||
* @param id 跟进记录主键
|
||||
* @return 跟进记录
|
||||
*/
|
||||
@Override
|
||||
public FollowUpRecord selectFollowUpRecordById(Long id)
|
||||
{
|
||||
return followUpRecordMapper.selectFollowUpRecordById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询跟进记录列表
|
||||
*
|
||||
* @param followUpRecord 跟进记录
|
||||
* @return 跟进记录
|
||||
*/
|
||||
@Override
|
||||
public List<FollowUpRecord> selectFollowUpRecordList(FollowUpRecord followUpRecord)
|
||||
{
|
||||
return followUpRecordMapper.selectFollowUpRecordList(followUpRecord);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增跟进记录
|
||||
*
|
||||
* @param followUpRecord 跟进记录
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertFollowUpRecord(FollowUpRecord followUpRecord)
|
||||
{
|
||||
followUpRecord.setCreateTime(DateUtils.getNowDate());
|
||||
return followUpRecordMapper.insertFollowUpRecord(followUpRecord);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改跟进记录
|
||||
*
|
||||
* @param followUpRecord 跟进记录
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateFollowUpRecord(FollowUpRecord followUpRecord)
|
||||
{
|
||||
followUpRecord.setUpdateTime(DateUtils.getNowDate());
|
||||
return followUpRecordMapper.updateFollowUpRecord(followUpRecord);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除跟进记录
|
||||
*
|
||||
* @param ids 需要删除的跟进记录主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteFollowUpRecordByIds(Long[] ids)
|
||||
{
|
||||
return followUpRecordMapper.deleteFollowUpRecordByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除跟进记录信息
|
||||
*
|
||||
* @param id 跟进记录主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteFollowUpRecordById(Long id)
|
||||
{
|
||||
return followUpRecordMapper.deleteFollowUpRecordById(id);
|
||||
}
|
||||
}
|
@ -0,0 +1,97 @@
|
||||
package com.ruoyi.crm.system.service.impl;
|
||||
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.crm.system.domain.ServiceTicket;
|
||||
import com.ruoyi.crm.system.mapper.ServiceTicketMapper;
|
||||
import com.ruoyi.crm.system.service.IServiceTicketService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 服务工单Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-03-01
|
||||
*/
|
||||
@Service
|
||||
public class ServiceTicketServiceImpl implements IServiceTicketService
|
||||
{
|
||||
@Autowired
|
||||
private ServiceTicketMapper serviceTicketMapper;
|
||||
|
||||
/**
|
||||
* 查询服务工单
|
||||
*
|
||||
* @param id 服务工单主键
|
||||
* @return 服务工单
|
||||
*/
|
||||
@Override
|
||||
public ServiceTicket selectServiceTicketById(Long id)
|
||||
{
|
||||
return serviceTicketMapper.selectServiceTicketById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询服务工单列表
|
||||
*
|
||||
* @param serviceTicket 服务工单
|
||||
* @return 服务工单
|
||||
*/
|
||||
@Override
|
||||
public List<ServiceTicket> selectServiceTicketList(ServiceTicket serviceTicket)
|
||||
{
|
||||
return serviceTicketMapper.selectServiceTicketList(serviceTicket);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增服务工单
|
||||
*
|
||||
* @param serviceTicket 服务工单
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertServiceTicket(ServiceTicket serviceTicket)
|
||||
{
|
||||
serviceTicket.setCreateTime(DateUtils.getNowDate());
|
||||
return serviceTicketMapper.insertServiceTicket(serviceTicket);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改服务工单
|
||||
*
|
||||
* @param serviceTicket 服务工单
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateServiceTicket(ServiceTicket serviceTicket)
|
||||
{
|
||||
serviceTicket.setUpdateTime(DateUtils.getNowDate());
|
||||
return serviceTicketMapper.updateServiceTicket(serviceTicket);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除服务工单
|
||||
*
|
||||
* @param ids 需要删除的服务工单主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteServiceTicketByIds(Long[] ids)
|
||||
{
|
||||
return serviceTicketMapper.deleteServiceTicketByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除服务工单信息
|
||||
*
|
||||
* @param id 服务工单主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteServiceTicketById(Long id)
|
||||
{
|
||||
return serviceTicketMapper.deleteServiceTicketById(id);
|
||||
}
|
||||
}
|
@ -207,7 +207,7 @@
|
||||
select
|
||||
c.id, c.owner, c.name, m.content, m.create_time
|
||||
from crm_customer c
|
||||
inner join crm_comment m on m.customer_id=c.id
|
||||
inner join follow_up_record m on m.customer_id=c.id
|
||||
where c.owner= #{owner}
|
||||
order by m.create_time desc limit 10
|
||||
</select>
|
||||
|
185
ruoyi-crm/src/main/resources/system/BusinessMapper.xml
Normal file
185
ruoyi-crm/src/main/resources/system/BusinessMapper.xml
Normal file
@ -0,0 +1,185 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.ruoyi.crm.system.mapper.BusinessMapper">
|
||||
|
||||
<resultMap type="Business" id="BusinessResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="title" column="title" />
|
||||
<result property="customerId" column="customer_id" />
|
||||
<result property="customerLinkman" column="customer_linkman" />
|
||||
<result property="customerName" column="customer_name" />
|
||||
<result property="customerNumber" column="customer_number" />
|
||||
<result property="businessName" column="business_name" />
|
||||
<result property="businessNumber" column="business_number" />
|
||||
<result property="salesStage" column="sales_stage" />
|
||||
<result property="probabilityOfWining" column="probability_of_wining" />
|
||||
<result property="stageType" column="stage_type" />
|
||||
<result property="personInCharge" column="person_in_charge" />
|
||||
<result property="belongingDepartment" column="belonging_department" />
|
||||
<result property="businessDetail" column="business_detail" />
|
||||
<result property="forecastBusinessPrice" column="forecast_business_price" />
|
||||
<result property="forecastSuccessTime" column="forecast_success_time" />
|
||||
<result property="collaborator" column="collaborator" />
|
||||
<result property="lastFollowUpTime" column="last_follow_up_time" />
|
||||
<result property="phaseChangeTime" column="phase_change_time" />
|
||||
<result property="loseOrderCause" column="lose_order_cause" />
|
||||
<result property="submitter" column="submitter" />
|
||||
<result property="submitTime" column="submit_time" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="remark" column="remark" />
|
||||
<result property="isDelete" column="is_delete" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectBusinessVo">
|
||||
select id, title, customer_id, customer_linkman, customer_name, customer_number, business_name, business_number, sales_stage, probability_of_wining, stage_type, person_in_charge, belonging_department, business_detail, forecast_business_price, forecast_success_time, collaborator, last_follow_up_time, phase_change_time, lose_order_cause, submitter, submit_time, create_by, create_time, update_by, update_time, remark, is_delete from business
|
||||
</sql>
|
||||
|
||||
<select id="selectBusinessList" parameterType="Business" resultMap="BusinessResult">
|
||||
<include refid="selectBusinessVo"/>
|
||||
<where>
|
||||
<if test="title != null and title != ''"> and title = #{title}</if>
|
||||
<if test="customerId != null "> and customer_id = #{customerId}</if>
|
||||
<if test="customerLinkman != null "> and customer_linkman = #{customerLinkman}</if>
|
||||
<if test="customerName != null and customerName != ''"> and customer_name like concat('%', #{customerName}, '%')</if>
|
||||
<if test="customerNumber != null and customerNumber != ''"> and customer_number = #{customerNumber}</if>
|
||||
<if test="businessName != null and businessName != ''"> and business_name like concat('%', #{businessName}, '%')</if>
|
||||
<if test="businessNumber != null and businessNumber != ''"> and business_number = #{businessNumber}</if>
|
||||
<if test="salesStage != null "> and sales_stage = #{salesStage}</if>
|
||||
<if test="probabilityOfWining != null "> and probability_of_wining = #{probabilityOfWining}</if>
|
||||
<if test="stageType != null "> and stage_type = #{stageType}</if>
|
||||
<if test="personInCharge != null and personInCharge != ''"> and person_in_charge = #{personInCharge}</if>
|
||||
<if test="belongingDepartment != null and belongingDepartment != ''"> and belonging_department = #{belongingDepartment}</if>
|
||||
<if test="businessDetail != null and businessDetail != ''"> and business_detail = #{businessDetail}</if>
|
||||
<if test="forecastBusinessPrice != null "> and forecast_business_price = #{forecastBusinessPrice}</if>
|
||||
<if test="forecastSuccessTime != null "> and forecast_success_time = #{forecastSuccessTime}</if>
|
||||
<if test="collaborator != null and collaborator != ''"> and collaborator = #{collaborator}</if>
|
||||
<if test="lastFollowUpTime != null "> and last_follow_up_time = #{lastFollowUpTime}</if>
|
||||
<if test="phaseChangeTime != null "> and phase_change_time = #{phaseChangeTime}</if>
|
||||
<if test="loseOrderCause != null and loseOrderCause != ''"> and lose_order_cause = #{loseOrderCause}</if>
|
||||
<if test="submitter != null and submitter != ''"> and submitter = #{submitter}</if>
|
||||
<if test="submitTime != null "> and submit_time = #{submitTime}</if>
|
||||
<if test="isDelete != null "> and is_delete = #{isDelete}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectBusinessById" parameterType="Long" resultMap="BusinessResult">
|
||||
<include refid="selectBusinessVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<insert id="insertBusiness" parameterType="Business" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into business
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="title != null">title,</if>
|
||||
<if test="customerId != null">customer_id,</if>
|
||||
<if test="customerLinkman != null">customer_linkman,</if>
|
||||
<if test="customerName != null">customer_name,</if>
|
||||
<if test="customerNumber != null">customer_number,</if>
|
||||
<if test="businessName != null">business_name,</if>
|
||||
<if test="businessNumber != null">business_number,</if>
|
||||
<if test="salesStage != null">sales_stage,</if>
|
||||
<if test="probabilityOfWining != null">probability_of_wining,</if>
|
||||
<if test="stageType != null">stage_type,</if>
|
||||
<if test="personInCharge != null">person_in_charge,</if>
|
||||
<if test="belongingDepartment != null">belonging_department,</if>
|
||||
<if test="businessDetail != null">business_detail,</if>
|
||||
<if test="forecastBusinessPrice != null">forecast_business_price,</if>
|
||||
<if test="forecastSuccessTime != null">forecast_success_time,</if>
|
||||
<if test="collaborator != null">collaborator,</if>
|
||||
<if test="lastFollowUpTime != null">last_follow_up_time,</if>
|
||||
<if test="phaseChangeTime != null">phase_change_time,</if>
|
||||
<if test="loseOrderCause != null">lose_order_cause,</if>
|
||||
<if test="submitter != null">submitter,</if>
|
||||
<if test="submitTime != null">submit_time,</if>
|
||||
<if test="createBy != null">create_by,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
<if test="updateBy != null">update_by,</if>
|
||||
<if test="updateTime != null">update_time,</if>
|
||||
<if test="remark != null">remark,</if>
|
||||
<if test="isDelete != null">is_delete,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="title != null">#{title},</if>
|
||||
<if test="customerId != null">#{customerId},</if>
|
||||
<if test="customerLinkman != null">#{customerLinkman},</if>
|
||||
<if test="customerName != null">#{customerName},</if>
|
||||
<if test="customerNumber != null">#{customerNumber},</if>
|
||||
<if test="businessName != null">#{businessName},</if>
|
||||
<if test="businessNumber != null">#{businessNumber},</if>
|
||||
<if test="salesStage != null">#{salesStage},</if>
|
||||
<if test="probabilityOfWining != null">#{probabilityOfWining},</if>
|
||||
<if test="stageType != null">#{stageType},</if>
|
||||
<if test="personInCharge != null">#{personInCharge},</if>
|
||||
<if test="belongingDepartment != null">#{belongingDepartment},</if>
|
||||
<if test="businessDetail != null">#{businessDetail},</if>
|
||||
<if test="forecastBusinessPrice != null">#{forecastBusinessPrice},</if>
|
||||
<if test="forecastSuccessTime != null">#{forecastSuccessTime},</if>
|
||||
<if test="collaborator != null">#{collaborator},</if>
|
||||
<if test="lastFollowUpTime != null">#{lastFollowUpTime},</if>
|
||||
<if test="phaseChangeTime != null">#{phaseChangeTime},</if>
|
||||
<if test="loseOrderCause != null">#{loseOrderCause},</if>
|
||||
<if test="submitter != null">#{submitter},</if>
|
||||
<if test="submitTime != null">#{submitTime},</if>
|
||||
<if test="createBy != null">#{createBy},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
<if test="updateBy != null">#{updateBy},</if>
|
||||
<if test="updateTime != null">#{updateTime},</if>
|
||||
<if test="remark != null">#{remark},</if>
|
||||
<if test="isDelete != null">#{isDelete},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateBusiness" parameterType="Business">
|
||||
update business
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="title != null">title = #{title},</if>
|
||||
<if test="customerId != null">customer_id = #{customerId},</if>
|
||||
<if test="customerLinkman != null">customer_linkman = #{customerLinkman},</if>
|
||||
<if test="customerName != null">customer_name = #{customerName},</if>
|
||||
<if test="customerNumber != null">customer_number = #{customerNumber},</if>
|
||||
<if test="businessName != null">business_name = #{businessName},</if>
|
||||
<if test="businessNumber != null">business_number = #{businessNumber},</if>
|
||||
<if test="salesStage != null">sales_stage = #{salesStage},</if>
|
||||
<if test="probabilityOfWining != null">probability_of_wining = #{probabilityOfWining},</if>
|
||||
<if test="stageType != null">stage_type = #{stageType},</if>
|
||||
<if test="personInCharge != null">person_in_charge = #{personInCharge},</if>
|
||||
<if test="belongingDepartment != null">belonging_department = #{belongingDepartment},</if>
|
||||
<if test="businessDetail != null">business_detail = #{businessDetail},</if>
|
||||
<if test="forecastBusinessPrice != null">forecast_business_price = #{forecastBusinessPrice},</if>
|
||||
<if test="forecastSuccessTime != null">forecast_success_time = #{forecastSuccessTime},</if>
|
||||
<if test="collaborator != null">collaborator = #{collaborator},</if>
|
||||
<if test="lastFollowUpTime != null">last_follow_up_time = #{lastFollowUpTime},</if>
|
||||
<if test="phaseChangeTime != null">phase_change_time = #{phaseChangeTime},</if>
|
||||
<if test="loseOrderCause != null">lose_order_cause = #{loseOrderCause},</if>
|
||||
<if test="submitter != null">submitter = #{submitter},</if>
|
||||
<if test="submitTime != null">submit_time = #{submitTime},</if>
|
||||
<if test="createBy != null">create_by = #{createBy},</if>
|
||||
<if test="createTime != null">create_time = #{createTime},</if>
|
||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
<if test="isDelete != null">is_delete = #{isDelete},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteBusinessById" parameterType="Long">
|
||||
delete from business where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteBusinessByIds" parameterType="String">
|
||||
delete from business where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
<select id="selectByBusinessNumber" parameterType="String" resultMap="BusinessResult">
|
||||
<include refid="selectBusinessVo"/>
|
||||
where business_number = #{businessNumber}
|
||||
</select>
|
||||
</mapper>
|
156
ruoyi-crm/src/main/resources/system/ContactPersonMapper.xml
Normal file
156
ruoyi-crm/src/main/resources/system/ContactPersonMapper.xml
Normal file
@ -0,0 +1,156 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.ruoyi.crm.system.mapper.ContactPersonMapper">
|
||||
|
||||
<resultMap type="ContactPerson" id="ContactPersonResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="title" column="title" />
|
||||
<result property="name" column="name" />
|
||||
<result property="phoneNumber" column="phone_number" />
|
||||
<result property="customerId" column="customer_id" />
|
||||
<result property="customerNumber" column="customer_number" />
|
||||
<result property="dep" column="dep" />
|
||||
<result property="job" column="job" />
|
||||
<result property="wxNumber" column="wx_number" />
|
||||
<result property="mailNumber" column="mail_number" />
|
||||
<result property="isKey" column="is_key" />
|
||||
<result property="contactPersonDetail" column="contact_person_detail" />
|
||||
<result property="personInCharge" column="person_in_charge" />
|
||||
<result property="belongingDepartment" column="belonging_department" />
|
||||
<result property="collaborator" column="collaborator" />
|
||||
<result property="submitter" column="submitter" />
|
||||
<result property="submitTime" column="submit_time" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="remark" column="remark" />
|
||||
<result property="isDelete" column="is_delete" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectContactPersonVo">
|
||||
select id, title, name, phone_number, customer_id, customer_number, dep, job, wx_number, mail_number, is_key, contact_person_detail, person_in_charge, belonging_department, collaborator, submitter, submit_time, create_by, create_time, update_by, update_time, remark, is_delete from contact_person
|
||||
</sql>
|
||||
|
||||
<select id="selectContactPersonList" parameterType="ContactPerson" resultMap="ContactPersonResult">
|
||||
<include refid="selectContactPersonVo"/>
|
||||
<where>
|
||||
<if test="title != null and title != ''"> and title = #{title}</if>
|
||||
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
|
||||
<if test="phoneNumber != null and phoneNumber != ''"> and phone_number = #{phoneNumber}</if>
|
||||
<if test="customerId != null "> and customer_id = #{customerId}</if>
|
||||
<if test="customerNumber != null and customerNumber != ''"> and customer_number = #{customerNumber}</if>
|
||||
<if test="dep != null and dep != ''"> and dep = #{dep}</if>
|
||||
<if test="job != null and job != ''"> and job = #{job}</if>
|
||||
<if test="wxNumber != null and wxNumber != ''"> and wx_number = #{wxNumber}</if>
|
||||
<if test="mailNumber != null and mailNumber != ''"> and mail_number = #{mailNumber}</if>
|
||||
<if test="isKey != null "> and is_key = #{isKey}</if>
|
||||
<if test="contactPersonDetail != null and contactPersonDetail != ''"> and contact_person_detail = #{contactPersonDetail}</if>
|
||||
<if test="personInCharge != null and personInCharge != ''"> and person_in_charge = #{personInCharge}</if>
|
||||
<if test="belongingDepartment != null and belongingDepartment != ''"> and belonging_department = #{belongingDepartment}</if>
|
||||
<if test="collaborator != null and collaborator != ''"> and collaborator = #{collaborator}</if>
|
||||
<if test="submitter != null and submitter != ''"> and submitter = #{submitter}</if>
|
||||
<if test="submitTime != null "> and submit_time = #{submitTime}</if>
|
||||
<if test="isDelete != null "> and is_delete = #{isDelete}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectContactPersonById" parameterType="Long" resultMap="ContactPersonResult">
|
||||
<include refid="selectContactPersonVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<insert id="insertContactPerson" parameterType="ContactPerson" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into contact_person
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="title != null">title,</if>
|
||||
<if test="name != null">name,</if>
|
||||
<if test="phoneNumber != null">phone_number,</if>
|
||||
<if test="customerId != null">customer_id,</if>
|
||||
<if test="customerNumber != null">customer_number,</if>
|
||||
<if test="dep != null">dep,</if>
|
||||
<if test="job != null">job,</if>
|
||||
<if test="wxNumber != null">wx_number,</if>
|
||||
<if test="mailNumber != null">mail_number,</if>
|
||||
<if test="isKey != null">is_key,</if>
|
||||
<if test="contactPersonDetail != null">contact_person_detail,</if>
|
||||
<if test="personInCharge != null">person_in_charge,</if>
|
||||
<if test="belongingDepartment != null">belonging_department,</if>
|
||||
<if test="collaborator != null">collaborator,</if>
|
||||
<if test="submitter != null">submitter,</if>
|
||||
<if test="submitTime != null">submit_time,</if>
|
||||
<if test="createBy != null">create_by,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
<if test="updateBy != null">update_by,</if>
|
||||
<if test="updateTime != null">update_time,</if>
|
||||
<if test="remark != null">remark,</if>
|
||||
<if test="isDelete != null">is_delete,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="title != null">#{title},</if>
|
||||
<if test="name != null">#{name},</if>
|
||||
<if test="phoneNumber != null">#{phoneNumber},</if>
|
||||
<if test="customerId != null">#{customerId},</if>
|
||||
<if test="customerNumber != null">#{customerNumber},</if>
|
||||
<if test="dep != null">#{dep},</if>
|
||||
<if test="job != null">#{job},</if>
|
||||
<if test="wxNumber != null">#{wxNumber},</if>
|
||||
<if test="mailNumber != null">#{mailNumber},</if>
|
||||
<if test="isKey != null">#{isKey},</if>
|
||||
<if test="contactPersonDetail != null">#{contactPersonDetail},</if>
|
||||
<if test="personInCharge != null">#{personInCharge},</if>
|
||||
<if test="belongingDepartment != null">#{belongingDepartment},</if>
|
||||
<if test="collaborator != null">#{collaborator},</if>
|
||||
<if test="submitter != null">#{submitter},</if>
|
||||
<if test="submitTime != null">#{submitTime},</if>
|
||||
<if test="createBy != null">#{createBy},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
<if test="updateBy != null">#{updateBy},</if>
|
||||
<if test="updateTime != null">#{updateTime},</if>
|
||||
<if test="remark != null">#{remark},</if>
|
||||
<if test="isDelete != null">#{isDelete},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateContactPerson" parameterType="ContactPerson">
|
||||
update contact_person
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="title != null">title = #{title},</if>
|
||||
<if test="name != null">name = #{name},</if>
|
||||
<if test="phoneNumber != null">phone_number = #{phoneNumber},</if>
|
||||
<if test="customerId != null">customer_id = #{customerId},</if>
|
||||
<if test="customerNumber != null">customer_number = #{customerNumber},</if>
|
||||
<if test="dep != null">dep = #{dep},</if>
|
||||
<if test="job != null">job = #{job},</if>
|
||||
<if test="wxNumber != null">wx_number = #{wxNumber},</if>
|
||||
<if test="mailNumber != null">mail_number = #{mailNumber},</if>
|
||||
<if test="isKey != null">is_key = #{isKey},</if>
|
||||
<if test="contactPersonDetail != null">contact_person_detail = #{contactPersonDetail},</if>
|
||||
<if test="personInCharge != null">person_in_charge = #{personInCharge},</if>
|
||||
<if test="belongingDepartment != null">belonging_department = #{belongingDepartment},</if>
|
||||
<if test="collaborator != null">collaborator = #{collaborator},</if>
|
||||
<if test="submitter != null">submitter = #{submitter},</if>
|
||||
<if test="submitTime != null">submit_time = #{submitTime},</if>
|
||||
<if test="createBy != null">create_by = #{createBy},</if>
|
||||
<if test="createTime != null">create_time = #{createTime},</if>
|
||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
<if test="isDelete != null">is_delete = #{isDelete},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteContactPersonById" parameterType="Long">
|
||||
delete from contact_person where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteContactPersonByIds" parameterType="String">
|
||||
delete from contact_person where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
</mapper>
|
121
ruoyi-crm/src/main/resources/system/FollowUpPlanMapper.xml
Normal file
121
ruoyi-crm/src/main/resources/system/FollowUpPlanMapper.xml
Normal file
@ -0,0 +1,121 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.ruoyi.crm.system.mapper.FollowUpPlanMapper">
|
||||
|
||||
<resultMap type="FollowUpPlan" id="FollowUpPlanResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="title" column="title" />
|
||||
<result property="planContent" column="plan_content" />
|
||||
<result property="customer" column="customer" />
|
||||
<result property="planTime" column="plan_time" />
|
||||
<result property="planExecutor" column="plan_executor" />
|
||||
<result property="belongingDepartment" column="belonging_department" />
|
||||
<result property="planStatus" column="plan_status" />
|
||||
<result property="submitter" column="submitter" />
|
||||
<result property="submitTime" column="submit_time" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="remark" column="remark" />
|
||||
<result property="isDelete" column="is_delete" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectFollowUpPlanVo">
|
||||
select id, title, plan_content, customer, plan_time, plan_executor, belonging_department, plan_status, submitter, submit_time, create_by, create_time, update_by, update_time, remark, is_delete from follow_up_plan
|
||||
</sql>
|
||||
|
||||
<select id="selectFollowUpPlanList" parameterType="FollowUpPlan" resultMap="FollowUpPlanResult">
|
||||
<include refid="selectFollowUpPlanVo"/>
|
||||
<where>
|
||||
<if test="title != null and title != ''"> and title = #{title}</if>
|
||||
<if test="planContent != null and planContent != ''"> and plan_content = #{planContent}</if>
|
||||
<if test="customer != null and customer != ''"> and customer = #{customer}</if>
|
||||
<if test="planTime != null "> and plan_time = #{planTime}</if>
|
||||
<if test="planExecutor != null and planExecutor != ''"> and plan_executor = #{planExecutor}</if>
|
||||
<if test="belongingDepartment != null and belongingDepartment != ''"> and belonging_department = #{belongingDepartment}</if>
|
||||
<if test="planStatus != null "> and plan_status = #{planStatus}</if>
|
||||
<if test="submitter != null and submitter != ''"> and submitter = #{submitter}</if>
|
||||
<if test="submitTime != null "> and submit_time = #{submitTime}</if>
|
||||
<if test="isDelete != null "> and is_delete = #{isDelete}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectFollowUpPlanById" parameterType="Long" resultMap="FollowUpPlanResult">
|
||||
<include refid="selectFollowUpPlanVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<insert id="insertFollowUpPlan" parameterType="FollowUpPlan" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into follow_up_plan
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="title != null">title,</if>
|
||||
<if test="planContent != null">plan_content,</if>
|
||||
<if test="customer != null">customer,</if>
|
||||
<if test="planTime != null">plan_time,</if>
|
||||
<if test="planExecutor != null">plan_executor,</if>
|
||||
<if test="belongingDepartment != null">belonging_department,</if>
|
||||
<if test="planStatus != null">plan_status,</if>
|
||||
<if test="submitter != null">submitter,</if>
|
||||
<if test="submitTime != null">submit_time,</if>
|
||||
<if test="createBy != null">create_by,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
<if test="updateBy != null">update_by,</if>
|
||||
<if test="updateTime != null">update_time,</if>
|
||||
<if test="remark != null">remark,</if>
|
||||
<if test="isDelete != null">is_delete,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="title != null">#{title},</if>
|
||||
<if test="planContent != null">#{planContent},</if>
|
||||
<if test="customer != null">#{customer},</if>
|
||||
<if test="planTime != null">#{planTime},</if>
|
||||
<if test="planExecutor != null">#{planExecutor},</if>
|
||||
<if test="belongingDepartment != null">#{belongingDepartment},</if>
|
||||
<if test="planStatus != null">#{planStatus},</if>
|
||||
<if test="submitter != null">#{submitter},</if>
|
||||
<if test="submitTime != null">#{submitTime},</if>
|
||||
<if test="createBy != null">#{createBy},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
<if test="updateBy != null">#{updateBy},</if>
|
||||
<if test="updateTime != null">#{updateTime},</if>
|
||||
<if test="remark != null">#{remark},</if>
|
||||
<if test="isDelete != null">#{isDelete},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateFollowUpPlan" parameterType="FollowUpPlan">
|
||||
update follow_up_plan
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="title != null">title = #{title},</if>
|
||||
<if test="planContent != null">plan_content = #{planContent},</if>
|
||||
<if test="customer != null">customer = #{customer},</if>
|
||||
<if test="planTime != null">plan_time = #{planTime},</if>
|
||||
<if test="planExecutor != null">plan_executor = #{planExecutor},</if>
|
||||
<if test="belongingDepartment != null">belonging_department = #{belongingDepartment},</if>
|
||||
<if test="planStatus != null">plan_status = #{planStatus},</if>
|
||||
<if test="submitter != null">submitter = #{submitter},</if>
|
||||
<if test="submitTime != null">submit_time = #{submitTime},</if>
|
||||
<if test="createBy != null">create_by = #{createBy},</if>
|
||||
<if test="createTime != null">create_time = #{createTime},</if>
|
||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
<if test="isDelete != null">is_delete = #{isDelete},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteFollowUpPlanById" parameterType="Long">
|
||||
delete from follow_up_plan where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteFollowUpPlanByIds" parameterType="String">
|
||||
delete from follow_up_plan where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
</mapper>
|
148
ruoyi-crm/src/main/resources/system/FollowUpRecordMapper.xml
Normal file
148
ruoyi-crm/src/main/resources/system/FollowUpRecordMapper.xml
Normal file
@ -0,0 +1,148 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.ruoyi.crm.system.mapper.FollowUpRecordMapper">
|
||||
|
||||
<resultMap type="FollowUpRecord" id="FollowUpRecordResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="title" column="title" />
|
||||
<result property="followUpRecord" column="follow_up_record" />
|
||||
<result property="followUpSubject" column="follow_up_subject" />
|
||||
<result property="customerNumber" column="customer_number" />
|
||||
<result property="followUpBusinessOpportunities" column="follow_up_business_opportunities" />
|
||||
<result property="opportunityNumber" column="opportunity_number" />
|
||||
<result property="contactPeople" column="contact_people" />
|
||||
<result property="followUpType" column="follow_up_type" />
|
||||
<result property="content" column="content" />
|
||||
<result property="followUpTime" column="follow_up_time" />
|
||||
<result property="followUpPeople" column="follow_up_people" />
|
||||
<result property="belongingDepartment" column="belonging_department" />
|
||||
<result property="submitter" column="submitter" />
|
||||
<result property="submitTime" column="submit_time" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="remark" column="remark" />
|
||||
<result property="customerId" column="customer_id" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectFollowUpRecordVo">
|
||||
select id, title, follow_up_record, follow_up_subject, customer_number, follow_up_business_opportunities, opportunity_number, contact_people, follow_up_type, content, follow_up_time, follow_up_people, belonging_department, submitter, submit_time, create_by, create_time, update_by, update_time, remark, customer_id from follow_up_record
|
||||
</sql>
|
||||
|
||||
<select id="selectFollowUpRecordList" parameterType="FollowUpRecord" resultMap="FollowUpRecordResult">
|
||||
<include refid="selectFollowUpRecordVo"/>
|
||||
<where>
|
||||
<if test="title != null and title != ''"> and title = #{title}</if>
|
||||
<if test="followUpRecord != null and followUpRecord != ''"> and follow_up_record = #{followUpRecord}</if>
|
||||
<if test="followUpSubject != null and followUpSubject != ''"> and follow_up_subject = #{followUpSubject}</if>
|
||||
<if test="customerNumber != null and customerNumber != ''"> and customer_number = #{customerNumber}</if>
|
||||
<if test="followUpBusinessOpportunities != null and followUpBusinessOpportunities != ''"> and follow_up_business_opportunities = #{followUpBusinessOpportunities}</if>
|
||||
<if test="opportunityNumber != null and opportunityNumber != ''"> and opportunity_number = #{opportunityNumber}</if>
|
||||
<if test="contactPeople != null and contactPeople != ''"> and contact_people = #{contactPeople}</if>
|
||||
<if test="followUpType != null "> and follow_up_type = #{followUpType}</if>
|
||||
<if test="content != null and content != ''"> and content = #{content}</if>
|
||||
<if test="followUpTime != null "> and follow_up_time = #{followUpTime}</if>
|
||||
<if test="followUpPeople != null and followUpPeople != ''"> and follow_up_people = #{followUpPeople}</if>
|
||||
<if test="belongingDepartment != null and belongingDepartment != ''"> and belonging_department = #{belongingDepartment}</if>
|
||||
<if test="submitter != null and submitter != ''"> and submitter = #{submitter}</if>
|
||||
<if test="submitTime != null "> and submit_time = #{submitTime}</if>
|
||||
<if test="customerId != null "> and customer_id = #{customerId}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectFollowUpRecordById" parameterType="Long" resultMap="FollowUpRecordResult">
|
||||
<include refid="selectFollowUpRecordVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<insert id="insertFollowUpRecord" parameterType="FollowUpRecord">
|
||||
insert into follow_up_record
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null">id,</if>
|
||||
<if test="title != null">title,</if>
|
||||
<if test="followUpRecord != null">follow_up_record,</if>
|
||||
<if test="followUpSubject != null">follow_up_subject,</if>
|
||||
<if test="customerNumber != null">customer_number,</if>
|
||||
<if test="followUpBusinessOpportunities != null">follow_up_business_opportunities,</if>
|
||||
<if test="opportunityNumber != null">opportunity_number,</if>
|
||||
<if test="contactPeople != null">contact_people,</if>
|
||||
<if test="followUpType != null">follow_up_type,</if>
|
||||
<if test="content != null">content,</if>
|
||||
<if test="followUpTime != null">follow_up_time,</if>
|
||||
<if test="followUpPeople != null">follow_up_people,</if>
|
||||
<if test="belongingDepartment != null">belonging_department,</if>
|
||||
<if test="submitter != null">submitter,</if>
|
||||
<if test="submitTime != null">submit_time,</if>
|
||||
<if test="createBy != null">create_by,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
<if test="updateBy != null">update_by,</if>
|
||||
<if test="updateTime != null">update_time,</if>
|
||||
<if test="remark != null">remark,</if>
|
||||
<if test="customerId != null">customer_id,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null">#{id},</if>
|
||||
<if test="title != null">#{title},</if>
|
||||
<if test="followUpRecord != null">#{followUpRecord},</if>
|
||||
<if test="followUpSubject != null">#{followUpSubject},</if>
|
||||
<if test="customerNumber != null">#{customerNumber},</if>
|
||||
<if test="followUpBusinessOpportunities != null">#{followUpBusinessOpportunities},</if>
|
||||
<if test="opportunityNumber != null">#{opportunityNumber},</if>
|
||||
<if test="contactPeople != null">#{contactPeople},</if>
|
||||
<if test="followUpType != null">#{followUpType},</if>
|
||||
<if test="content != null">#{content},</if>
|
||||
<if test="followUpTime != null">#{followUpTime},</if>
|
||||
<if test="followUpPeople != null">#{followUpPeople},</if>
|
||||
<if test="belongingDepartment != null">#{belongingDepartment},</if>
|
||||
<if test="submitter != null">#{submitter},</if>
|
||||
<if test="submitTime != null">#{submitTime},</if>
|
||||
<if test="createBy != null">#{createBy},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
<if test="updateBy != null">#{updateBy},</if>
|
||||
<if test="updateTime != null">#{updateTime},</if>
|
||||
<if test="remark != null">#{remark},</if>
|
||||
<if test="customerId != null">#{customerId},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateFollowUpRecord" parameterType="FollowUpRecord">
|
||||
update follow_up_record
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="title != null">title = #{title},</if>
|
||||
<if test="followUpRecord != null">follow_up_record = #{followUpRecord},</if>
|
||||
<if test="followUpSubject != null">follow_up_subject = #{followUpSubject},</if>
|
||||
<if test="customerNumber != null">customer_number = #{customerNumber},</if>
|
||||
<if test="followUpBusinessOpportunities != null">follow_up_business_opportunities = #{followUpBusinessOpportunities},</if>
|
||||
<if test="opportunityNumber != null">opportunity_number = #{opportunityNumber},</if>
|
||||
<if test="contactPeople != null">contact_people = #{contactPeople},</if>
|
||||
<if test="followUpType != null">follow_up_type = #{followUpType},</if>
|
||||
<if test="content != null">content = #{content},</if>
|
||||
<if test="followUpTime != null">follow_up_time = #{followUpTime},</if>
|
||||
<if test="followUpPeople != null">follow_up_people = #{followUpPeople},</if>
|
||||
<if test="belongingDepartment != null">belonging_department = #{belongingDepartment},</if>
|
||||
<if test="submitter != null">submitter = #{submitter},</if>
|
||||
<if test="submitTime != null">submit_time = #{submitTime},</if>
|
||||
<if test="createBy != null">create_by = #{createBy},</if>
|
||||
<if test="createTime != null">create_time = #{createTime},</if>
|
||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
<if test="customerId != null">customer_id = #{customerId},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteFollowUpRecordById" parameterType="Long">
|
||||
delete from follow_up_record where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteFollowUpRecordByIds" parameterType="String">
|
||||
delete from follow_up_record where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
</mapper>
|
227
ruoyi-crm/src/main/resources/system/ServiceTicketMapper.xml
Normal file
227
ruoyi-crm/src/main/resources/system/ServiceTicketMapper.xml
Normal file
@ -0,0 +1,227 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.ruoyi.crm.system.mapper.ServiceTicketMapper">
|
||||
|
||||
<resultMap type="ServiceTicket" id="ServiceTicketResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="title" column="title" />
|
||||
<result property="customerName" column="customer_name" />
|
||||
<result property="customerNumber" column="customer_number" />
|
||||
<result property="contractTitle" column="contract_title" />
|
||||
<result property="contractOrderNumber" column="contract_order_number" />
|
||||
<result property="customerContact" column="customer_contact" />
|
||||
<result property="phoneNumber" column="phone_number" />
|
||||
<result property="serviceType" column="service_type" />
|
||||
<result property="serviceOrderNumber" column="service_order_number" />
|
||||
<result property="howManyServiceOrder" column="how_many_service_order" />
|
||||
<result property="serviceStarTime" column="service_star_time" />
|
||||
<result property="serviceEndTime" column="service_end_time" />
|
||||
<result property="demandServiceDay" column="demand_service_day" />
|
||||
<result property="afterSalesTechnician" column="after_sales_technician" />
|
||||
<result property="serviceAddress" column="service_address" />
|
||||
<result property="serviceAddressCity" column="service_address_city" />
|
||||
<result property="serviceAddressArea" column="service_address_area" />
|
||||
<result property="serviceAddressDetail" column="service_address_detail" />
|
||||
<result property="signIn" column="sign_in" />
|
||||
<result property="signInTime" column="sign_in_time" />
|
||||
<result property="signOut" column="sign_out" />
|
||||
<result property="signOutTime" column="sign_out_time" />
|
||||
<result property="isSolveTheProblem" column="is_solve_the_problem" />
|
||||
<result property="scenePhoto" column="scene_photo" />
|
||||
<result property="customerSatisfaction" column="customer_satisfaction" />
|
||||
<result property="satisfactionValue" column="satisfaction_value" />
|
||||
<result property="customerCommentsAndDemands" column="customer_comments_and_demands" />
|
||||
<result property="submitter" column="submitter" />
|
||||
<result property="submitTime" column="submit_time" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="processState" column="process_state" />
|
||||
<result property="currentNode" column="current_node" />
|
||||
<result property="currentPersonInCharge" column="current_person_in_charge" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectServiceTicketVo">
|
||||
select id, title, customer_name, customer_number, contract_title, contract_order_number, customer_contact, phone_number, service_type, service_order_number, how_many_service_order, service_star_time, service_end_time, demand_service_day, after_sales_technician, service_address, service_address_city, service_address_area, service_address_detail, sign_in, sign_in_time, sign_out, sign_out_time, is_solve_the_problem, scene_photo, customer_satisfaction, satisfaction_value, customer_comments_and_demands, submitter, submit_time, create_by, create_time, update_by, update_time, process_state, current_node, current_person_in_charge from service_ticket
|
||||
</sql>
|
||||
|
||||
<select id="selectServiceTicketList" parameterType="ServiceTicket" resultMap="ServiceTicketResult">
|
||||
<include refid="selectServiceTicketVo"/>
|
||||
<where>
|
||||
<if test="title != null and title != ''"> and title = #{title}</if>
|
||||
<if test="customerName != null and customerName != ''"> and customer_name like concat('%', #{customerName}, '%')</if>
|
||||
<if test="customerNumber != null and customerNumber != ''"> and customer_number = #{customerNumber}</if>
|
||||
<if test="contractTitle != null and contractTitle != ''"> and contract_title = #{contractTitle}</if>
|
||||
<if test="contractOrderNumber != null and contractOrderNumber != ''"> and contract_order_number = #{contractOrderNumber}</if>
|
||||
<if test="customerContact != null and customerContact != ''"> and customer_contact = #{customerContact}</if>
|
||||
<if test="phoneNumber != null and phoneNumber != ''"> and phone_number = #{phoneNumber}</if>
|
||||
<if test="serviceType != null "> and service_type = #{serviceType}</if>
|
||||
<if test="serviceOrderNumber != null and serviceOrderNumber != ''"> and service_order_number = #{serviceOrderNumber}</if>
|
||||
<if test="howManyServiceOrder != null "> and how_many_service_order = #{howManyServiceOrder}</if>
|
||||
<if test="serviceStarTime != null "> and service_star_time = #{serviceStarTime}</if>
|
||||
<if test="serviceEndTime != null "> and service_end_time = #{serviceEndTime}</if>
|
||||
<if test="demandServiceDay != null "> and demand_service_day = #{demandServiceDay}</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="serviceAddressCity != null and serviceAddressCity != ''"> and service_address_city = #{serviceAddressCity}</if>
|
||||
<if test="serviceAddressArea != null and serviceAddressArea != ''"> and service_address_area = #{serviceAddressArea}</if>
|
||||
<if test="serviceAddressDetail != null and serviceAddressDetail != ''"> and service_address_detail = #{serviceAddressDetail}</if>
|
||||
<if test="signIn != null and signIn != ''"> and sign_in = #{signIn}</if>
|
||||
<if test="signInTime != null "> and sign_in_time = #{signInTime}</if>
|
||||
<if test="signOut != null and signOut != ''"> and sign_out = #{signOut}</if>
|
||||
<if test="signOutTime != null "> and sign_out_time = #{signOutTime}</if>
|
||||
<if test="isSolveTheProblem != null "> and is_solve_the_problem = #{isSolveTheProblem}</if>
|
||||
<if test="scenePhoto != null and scenePhoto != ''"> and scene_photo = #{scenePhoto}</if>
|
||||
<if test="customerSatisfaction != null "> and customer_satisfaction = #{customerSatisfaction}</if>
|
||||
<if test="satisfactionValue != null "> and satisfaction_value = #{satisfactionValue}</if>
|
||||
<if test="customerCommentsAndDemands != null and customerCommentsAndDemands != ''"> and customer_comments_and_demands = #{customerCommentsAndDemands}</if>
|
||||
<if test="submitter != null and submitter != ''"> and submitter = #{submitter}</if>
|
||||
<if test="submitTime != null "> and submit_time = #{submitTime}</if>
|
||||
<if test="processState != null "> and process_state = #{processState}</if>
|
||||
<if test="currentNode != null "> and current_node = #{currentNode}</if>
|
||||
<if test="currentPersonInCharge != null and currentPersonInCharge != ''"> and current_person_in_charge = #{currentPersonInCharge}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectServiceTicketById" parameterType="Long" resultMap="ServiceTicketResult">
|
||||
<include refid="selectServiceTicketVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<insert id="insertServiceTicket" parameterType="ServiceTicket" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into service_ticket
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="title != null">title,</if>
|
||||
<if test="customerName != null">customer_name,</if>
|
||||
<if test="customerNumber != null">customer_number,</if>
|
||||
<if test="contractTitle != null">contract_title,</if>
|
||||
<if test="contractOrderNumber != null">contract_order_number,</if>
|
||||
<if test="customerContact != null">customer_contact,</if>
|
||||
<if test="phoneNumber != null">phone_number,</if>
|
||||
<if test="serviceType != null">service_type,</if>
|
||||
<if test="serviceOrderNumber != null">service_order_number,</if>
|
||||
<if test="howManyServiceOrder != null">how_many_service_order,</if>
|
||||
<if test="serviceStarTime != null">service_star_time,</if>
|
||||
<if test="serviceEndTime != null">service_end_time,</if>
|
||||
<if test="demandServiceDay != null">demand_service_day,</if>
|
||||
<if test="afterSalesTechnician != null">after_sales_technician,</if>
|
||||
<if test="serviceAddress != null">service_address,</if>
|
||||
<if test="serviceAddressCity != null">service_address_city,</if>
|
||||
<if test="serviceAddressArea != null">service_address_area,</if>
|
||||
<if test="serviceAddressDetail != null">service_address_detail,</if>
|
||||
<if test="signIn != null">sign_in,</if>
|
||||
<if test="signInTime != null">sign_in_time,</if>
|
||||
<if test="signOut != null">sign_out,</if>
|
||||
<if test="signOutTime != null">sign_out_time,</if>
|
||||
<if test="isSolveTheProblem != null">is_solve_the_problem,</if>
|
||||
<if test="scenePhoto != null">scene_photo,</if>
|
||||
<if test="customerSatisfaction != null">customer_satisfaction,</if>
|
||||
<if test="satisfactionValue != null">satisfaction_value,</if>
|
||||
<if test="customerCommentsAndDemands != null">customer_comments_and_demands,</if>
|
||||
<if test="submitter != null">submitter,</if>
|
||||
<if test="submitTime != null">submit_time,</if>
|
||||
<if test="createBy != null">create_by,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
<if test="updateBy != null">update_by,</if>
|
||||
<if test="updateTime != null">update_time,</if>
|
||||
<if test="processState != null">process_state,</if>
|
||||
<if test="currentNode != null">current_node,</if>
|
||||
<if test="currentPersonInCharge != null">current_person_in_charge,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="title != null">#{title},</if>
|
||||
<if test="customerName != null">#{customerName},</if>
|
||||
<if test="customerNumber != null">#{customerNumber},</if>
|
||||
<if test="contractTitle != null">#{contractTitle},</if>
|
||||
<if test="contractOrderNumber != null">#{contractOrderNumber},</if>
|
||||
<if test="customerContact != null">#{customerContact},</if>
|
||||
<if test="phoneNumber != null">#{phoneNumber},</if>
|
||||
<if test="serviceType != null">#{serviceType},</if>
|
||||
<if test="serviceOrderNumber != null">#{serviceOrderNumber},</if>
|
||||
<if test="howManyServiceOrder != null">#{howManyServiceOrder},</if>
|
||||
<if test="serviceStarTime != null">#{serviceStarTime},</if>
|
||||
<if test="serviceEndTime != null">#{serviceEndTime},</if>
|
||||
<if test="demandServiceDay != null">#{demandServiceDay},</if>
|
||||
<if test="afterSalesTechnician != null">#{afterSalesTechnician},</if>
|
||||
<if test="serviceAddress != null">#{serviceAddress},</if>
|
||||
<if test="serviceAddressCity != null">#{serviceAddressCity},</if>
|
||||
<if test="serviceAddressArea != null">#{serviceAddressArea},</if>
|
||||
<if test="serviceAddressDetail != null">#{serviceAddressDetail},</if>
|
||||
<if test="signIn != null">#{signIn},</if>
|
||||
<if test="signInTime != null">#{signInTime},</if>
|
||||
<if test="signOut != null">#{signOut},</if>
|
||||
<if test="signOutTime != null">#{signOutTime},</if>
|
||||
<if test="isSolveTheProblem != null">#{isSolveTheProblem},</if>
|
||||
<if test="scenePhoto != null">#{scenePhoto},</if>
|
||||
<if test="customerSatisfaction != null">#{customerSatisfaction},</if>
|
||||
<if test="satisfactionValue != null">#{satisfactionValue},</if>
|
||||
<if test="customerCommentsAndDemands != null">#{customerCommentsAndDemands},</if>
|
||||
<if test="submitter != null">#{submitter},</if>
|
||||
<if test="submitTime != null">#{submitTime},</if>
|
||||
<if test="createBy != null">#{createBy},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
<if test="updateBy != null">#{updateBy},</if>
|
||||
<if test="updateTime != null">#{updateTime},</if>
|
||||
<if test="processState != null">#{processState},</if>
|
||||
<if test="currentNode != null">#{currentNode},</if>
|
||||
<if test="currentPersonInCharge != null">#{currentPersonInCharge},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateServiceTicket" parameterType="ServiceTicket">
|
||||
update service_ticket
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="title != null">title = #{title},</if>
|
||||
<if test="customerName != null">customer_name = #{customerName},</if>
|
||||
<if test="customerNumber != null">customer_number = #{customerNumber},</if>
|
||||
<if test="contractTitle != null">contract_title = #{contractTitle},</if>
|
||||
<if test="contractOrderNumber != null">contract_order_number = #{contractOrderNumber},</if>
|
||||
<if test="customerContact != null">customer_contact = #{customerContact},</if>
|
||||
<if test="phoneNumber != null">phone_number = #{phoneNumber},</if>
|
||||
<if test="serviceType != null">service_type = #{serviceType},</if>
|
||||
<if test="serviceOrderNumber != null">service_order_number = #{serviceOrderNumber},</if>
|
||||
<if test="howManyServiceOrder != null">how_many_service_order = #{howManyServiceOrder},</if>
|
||||
<if test="serviceStarTime != null">service_star_time = #{serviceStarTime},</if>
|
||||
<if test="serviceEndTime != null">service_end_time = #{serviceEndTime},</if>
|
||||
<if test="demandServiceDay != null">demand_service_day = #{demandServiceDay},</if>
|
||||
<if test="afterSalesTechnician != null">after_sales_technician = #{afterSalesTechnician},</if>
|
||||
<if test="serviceAddress != null">service_address = #{serviceAddress},</if>
|
||||
<if test="serviceAddressCity != null">service_address_city = #{serviceAddressCity},</if>
|
||||
<if test="serviceAddressArea != null">service_address_area = #{serviceAddressArea},</if>
|
||||
<if test="serviceAddressDetail != null">service_address_detail = #{serviceAddressDetail},</if>
|
||||
<if test="signIn != null">sign_in = #{signIn},</if>
|
||||
<if test="signInTime != null">sign_in_time = #{signInTime},</if>
|
||||
<if test="signOut != null">sign_out = #{signOut},</if>
|
||||
<if test="signOutTime != null">sign_out_time = #{signOutTime},</if>
|
||||
<if test="isSolveTheProblem != null">is_solve_the_problem = #{isSolveTheProblem},</if>
|
||||
<if test="scenePhoto != null">scene_photo = #{scenePhoto},</if>
|
||||
<if test="customerSatisfaction != null">customer_satisfaction = #{customerSatisfaction},</if>
|
||||
<if test="satisfactionValue != null">satisfaction_value = #{satisfactionValue},</if>
|
||||
<if test="customerCommentsAndDemands != null">customer_comments_and_demands = #{customerCommentsAndDemands},</if>
|
||||
<if test="submitter != null">submitter = #{submitter},</if>
|
||||
<if test="submitTime != null">submit_time = #{submitTime},</if>
|
||||
<if test="createBy != null">create_by = #{createBy},</if>
|
||||
<if test="createTime != null">create_time = #{createTime},</if>
|
||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||
<if test="processState != null">process_state = #{processState},</if>
|
||||
<if test="currentNode != null">current_node = #{currentNode},</if>
|
||||
<if test="currentPersonInCharge != null">current_person_in_charge = #{currentPersonInCharge},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteServiceTicketById" parameterType="Long">
|
||||
delete from service_ticket where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteServiceTicketByIds" parameterType="String">
|
||||
delete from service_ticket where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
</mapper>
|
53
ruoyi-ui/src/api/crm/business.js
Normal file
53
ruoyi-ui/src/api/crm/business.js
Normal file
@ -0,0 +1,53 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询商机列表
|
||||
export function listBusiness(query) {
|
||||
return request({
|
||||
url: '/system/business/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询商机详细
|
||||
export function getBusiness(id) {
|
||||
return request({
|
||||
url: '/system/business/' + id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增商机
|
||||
export function addBusiness(data) {
|
||||
return request({
|
||||
url: '/system/business',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改商机
|
||||
export function updateBusiness(data) {
|
||||
return request({
|
||||
url: '/system/business',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除商机
|
||||
export function delBusiness(id) {
|
||||
return request({
|
||||
url: '/system/business/' + id,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
// 自动添加一条跟进记录
|
||||
export function addRecords(data) {
|
||||
return request({
|
||||
url: '/system/business/addRecords',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
@ -18,6 +18,15 @@ export function listClues(query) {
|
||||
})
|
||||
}
|
||||
|
||||
//添加关联人
|
||||
export function addAssociation(data) {
|
||||
return request({
|
||||
url: '/system/person',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 查询线索详细
|
||||
export function getClues(id) {
|
||||
return request({
|
||||
|
@ -3,7 +3,7 @@ import request from '@/utils/request'
|
||||
// 查询跟进记录列表
|
||||
export function listComment(query) {
|
||||
return request({
|
||||
url: '/crm/comment/list',
|
||||
url: '/system/record/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
@ -20,7 +20,7 @@ export function listCustomerComment(customerId) {
|
||||
// 查询跟进记录详细
|
||||
export function getComment(id) {
|
||||
return request({
|
||||
url: '/crm/comment/' + id,
|
||||
url: '/system/record/' + id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
@ -28,7 +28,7 @@ export function getComment(id) {
|
||||
// 新增跟进记录
|
||||
export function addComment(data) {
|
||||
return request({
|
||||
url: '/crm/comment',
|
||||
url: '/system/record',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
@ -37,7 +37,7 @@ export function addComment(data) {
|
||||
// 修改跟进记录
|
||||
export function updateComment(data) {
|
||||
return request({
|
||||
url: '/crm/comment',
|
||||
url: '/system/record',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
@ -46,7 +46,7 @@ export function updateComment(data) {
|
||||
// 删除跟进记录
|
||||
export function delComment(id) {
|
||||
return request({
|
||||
url: '/crm/comment/' + id,
|
||||
url: '/system/record/' + id,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
44
ruoyi-ui/src/api/crm/person.js
Normal file
44
ruoyi-ui/src/api/crm/person.js
Normal file
@ -0,0 +1,44 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询联系人列表
|
||||
export function listPerson(query) {
|
||||
return request({
|
||||
url: '/system/person/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询联系人详细
|
||||
export function getPerson(id) {
|
||||
return request({
|
||||
url: '/system/person/' + id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增联系人
|
||||
export function addPerson(data) {
|
||||
return request({
|
||||
url: '/system/person',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改联系人
|
||||
export function updatePerson(data) {
|
||||
return request({
|
||||
url: '/system/person',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除联系人
|
||||
export function delPerson(id) {
|
||||
return request({
|
||||
url: '/system/person/' + id,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
44
ruoyi-ui/src/api/crm/plan.js
Normal file
44
ruoyi-ui/src/api/crm/plan.js
Normal file
@ -0,0 +1,44 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询跟进计划列表
|
||||
export function listPlan(query) {
|
||||
return request({
|
||||
url: '/system/plan/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询跟进计划详细
|
||||
export function getPlan(id) {
|
||||
return request({
|
||||
url: '/system/plan/' + id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增跟进计划
|
||||
export function addPlan(data) {
|
||||
return request({
|
||||
url: '/system/plan',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改跟进计划
|
||||
export function updatePlan(data) {
|
||||
return request({
|
||||
url: '/system/plan',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除跟进计划
|
||||
export function delPlan(id) {
|
||||
return request({
|
||||
url: '/system/plan/' + id,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
44
ruoyi-ui/src/api/crm/record.js
Normal file
44
ruoyi-ui/src/api/crm/record.js
Normal file
@ -0,0 +1,44 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询跟进记录列表
|
||||
export function listRecord(query) {
|
||||
return request({
|
||||
url: '/system/record/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询跟进记录详细
|
||||
export function getRecord(id) {
|
||||
return request({
|
||||
url: '/system/record/' + id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增跟进记录
|
||||
export function addRecord(data) {
|
||||
return request({
|
||||
url: '/system/record',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改跟进记录
|
||||
export function updateRecord(data) {
|
||||
return request({
|
||||
url: '/system/record',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除跟进记录
|
||||
export function delRecord(id) {
|
||||
return request({
|
||||
url: '/system/record/' + id,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
44
ruoyi-ui/src/api/crm/ticket.js
Normal file
44
ruoyi-ui/src/api/crm/ticket.js
Normal file
@ -0,0 +1,44 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询服务工单列表
|
||||
export function listTicket(query) {
|
||||
return request({
|
||||
url: '/system/ticket/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询服务工单详细
|
||||
export function getTicket(id) {
|
||||
return request({
|
||||
url: '/system/ticket/' + id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增服务工单
|
||||
export function addTicket(data) {
|
||||
return request({
|
||||
url: '/system/ticket',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改服务工单
|
||||
export function updateTicket(data) {
|
||||
return request({
|
||||
url: '/system/ticket',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除服务工单
|
||||
export function delTicket(id) {
|
||||
return request({
|
||||
url: '/system/ticket/' + id,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
766
ruoyi-ui/src/views/crm/business/index.vue
Normal file
766
ruoyi-ui/src/views/crm/business/index.vue
Normal file
@ -0,0 +1,766 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input
|
||||
v-model="queryParams.title"
|
||||
placeholder="请输入标题"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="关联客户" prop="customerId">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.customerId"-->
|
||||
<!-- placeholder="请输入关联客户"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="客户联系人" prop="customerLinkman">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.customerLinkman"-->
|
||||
<!-- placeholder="请输入客户联系人"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="客户名称" prop="customerName">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.customerName"-->
|
||||
<!-- placeholder="请输入客户名称"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="客户编号" prop="customerNumber">
|
||||
<el-input
|
||||
v-model="queryParams.customerNumber"
|
||||
placeholder="请输入客户编号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="商机名称" prop="businessName">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.businessName"-->
|
||||
<!-- placeholder="请输入商机名称"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="商机编号" prop="businessNumber">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.businessNumber"-->
|
||||
<!-- placeholder="请输入商机编号"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="销售阶段" prop="salesStage">
|
||||
<el-select v-model="queryParams.salesStage" placeholder="请选择销售阶段" clearable>
|
||||
<el-option
|
||||
v-for="dict in dict.type.sales_stage"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="赢率" prop="probabilityOfWining">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.probabilityOfWining"-->
|
||||
<!-- placeholder="请输入赢率"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="阶段类型" prop="stageType">
|
||||
<el-select v-model="queryParams.stageType" placeholder="请选择阶段类型" clearable>
|
||||
<el-option
|
||||
v-for="dict in dict.type.stage_type"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="负责人" prop="personInCharge">
|
||||
<el-input
|
||||
v-model="queryParams.personInCharge"
|
||||
placeholder="请输入负责人"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="归属部门" prop="belongingDepartment">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.belongingDepartment"-->
|
||||
<!-- placeholder="请输入归属部门"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="预测商机金额" prop="forecastBusinessPrice">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.forecastBusinessPrice"-->
|
||||
<!-- placeholder="请输入预测商机金额"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="预计成交日期" prop="forecastSuccessTime">-->
|
||||
<!-- <el-date-picker clearable-->
|
||||
<!-- v-model="queryParams.forecastSuccessTime"-->
|
||||
<!-- type="date"-->
|
||||
<!-- value-format="yyyy-MM-dd"-->
|
||||
<!-- placeholder="请选择预计成交日期">-->
|
||||
<!-- </el-date-picker>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="协作人" prop="collaborator">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.collaborator"-->
|
||||
<!-- placeholder="请输入协作人"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="最后跟进时间" prop="lastFollowUpTime">-->
|
||||
<!-- <el-date-picker clearable-->
|
||||
<!-- v-model="queryParams.lastFollowUpTime"-->
|
||||
<!-- type="date"-->
|
||||
<!-- value-format="yyyy-MM-dd"-->
|
||||
<!-- placeholder="请选择最后跟进时间">-->
|
||||
<!-- </el-date-picker>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="阶段变更时间" prop="phaseChangeTime">-->
|
||||
<!-- <el-date-picker clearable-->
|
||||
<!-- v-model="queryParams.phaseChangeTime"-->
|
||||
<!-- type="date"-->
|
||||
<!-- value-format="yyyy-MM-dd"-->
|
||||
<!-- placeholder="请选择阶段变更时间">-->
|
||||
<!-- </el-date-picker>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="提交人" prop="submitter">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.submitter"-->
|
||||
<!-- placeholder="请输入提交人"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="提交时间" prop="submitTime">-->
|
||||
<!-- <el-date-picker clearable-->
|
||||
<!-- v-model="queryParams.submitTime"-->
|
||||
<!-- type="date"-->
|
||||
<!-- value-format="yyyy-MM-dd"-->
|
||||
<!-- placeholder="请选择提交时间">-->
|
||||
<!-- </el-date-picker>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="删除标志" prop="isDelete">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.isDelete"-->
|
||||
<!-- placeholder="请输入删除标志"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['system:business:add']"
|
||||
>新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['system:business:edit']"
|
||||
>修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['system:business:remove']"
|
||||
>删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="info"
|
||||
plain
|
||||
icon="el-icon-upload2"
|
||||
size="mini"
|
||||
@click="handleImport"
|
||||
v-hasPermi="['system:user:import']"
|
||||
>导入</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['system:business:export']"
|
||||
>导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table border v-loading="loading" :data="businessList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="编号" align="center" prop="id" />
|
||||
<el-table-column label="标题" align="center" prop="title" />
|
||||
<!-- <el-table-column label="关联客户" align="center" prop="customerId" />-->
|
||||
|
||||
<!-- <el-table-column label="客户联系人" align="center" prop="customerLinkman" />-->
|
||||
<!-- <el-table-column label="客户名称" align="center" prop="customerName" />-->
|
||||
<el-table-column label="客户编号" align="center" prop="customerNumber" />
|
||||
<!-- <el-table-column label="商机名称" align="center" prop="businessName" />-->
|
||||
<!-- <el-table-column label="商机编号" align="center" prop="businessNumber" />-->
|
||||
<el-table-column label="销售阶段" align="center" prop="salesStage">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.sales_stage" :value="scope.row.salesStage"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="赢率" align="center" prop="probabilityOfWining" />-->
|
||||
<el-table-column label="阶段类型" align="center" prop="stageType">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.stage_type" :value="scope.row.stageType"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="负责人" align="center" prop="personInCharge" />-->
|
||||
<!-- <el-table-column label="归属部门" align="center" prop="belongingDepartment" />-->
|
||||
<!-- <el-table-column label="商机明细" align="center" prop="businessDetail" />-->
|
||||
<!-- <el-table-column label="预测商机金额" align="center" prop="forecastBusinessPrice" />-->
|
||||
<el-table-column label="预计成交日期" align="center" prop="forecastSuccessTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.forecastSuccessTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="协作人" align="center" prop="collaborator" />-->
|
||||
<el-table-column label="最后跟进时间" align="center" prop="lastFollowUpTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.lastFollowUpTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="阶段变更时间" align="center" prop="phaseChangeTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.phaseChangeTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="输单原因" align="center" prop="loseOrderCause" />-->
|
||||
<!-- <el-table-column label="提交人" align="center" prop="submitter" />-->
|
||||
<!-- <el-table-column label="提交时间" align="center" prop="submitTime" width="180">-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- <span>{{ parseTime(scope.row.submitTime, '{y}-{m}-{d}') }}</span>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<!-- <el-table-column label="备注" align="center" prop="remark" />-->
|
||||
<!-- <el-table-column label="删除标志" align="center" prop="isDelete" />-->
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['system:business:edit']"
|
||||
>修改</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleAddAssociation(scope.row)"
|
||||
v-hasPermi="['system:business:edit']"
|
||||
>添加关联</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleDoVerify(scope.row)"
|
||||
v-hasPermi="['system:business:edit']"
|
||||
>确认</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['system:business:remove']"
|
||||
>删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 添加或修改商机对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="form.title" placeholder="请输入标题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="关联客户" prop="customerId">
|
||||
<el-input v-model="form.customerId" placeholder="请输入关联客户" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户联系人" prop="customerLinkman">
|
||||
<el-input v-model="form.customerLinkman" placeholder="请输入客户联系人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户名称" prop="customerName">
|
||||
<el-input v-model="form.customerName" placeholder="请输入客户名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户编号" prop="customerNumber">
|
||||
<el-input v-model="form.customerNumber" placeholder="请输入客户编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="商机名称" prop="businessName">
|
||||
<el-input v-model="form.businessName" placeholder="请输入商机名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="商机编号" prop="businessNumber">
|
||||
<el-input v-model="form.businessNumber" placeholder="请输入商机编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="销售阶段">
|
||||
<el-radio-group v-model="form.salesStage">
|
||||
<el-radio
|
||||
v-for="dict in dict.type.sales_stage"
|
||||
:key="dict.value"
|
||||
:label="parseInt(dict.value)"
|
||||
>{{dict.label}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="赢率" prop="probabilityOfWining">
|
||||
<el-input v-model="form.probabilityOfWining" placeholder="请输入赢率" />
|
||||
</el-form-item>
|
||||
<el-form-item label="阶段类型">
|
||||
<el-radio-group v-model="form.stageType">
|
||||
<el-radio
|
||||
v-for="dict in dict.type.stage_type"
|
||||
:key="dict.value"
|
||||
:label="parseInt(dict.value)"
|
||||
>{{dict.label}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="负责人" prop="personInCharge">
|
||||
<el-input v-model="form.personInCharge" placeholder="请输入负责人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="归属部门" prop="belongingDepartment">
|
||||
<el-input v-model="form.belongingDepartment" placeholder="请输入归属部门" />
|
||||
</el-form-item>
|
||||
<el-form-item label="商机明细" prop="businessDetail">
|
||||
<el-input v-model="form.businessDetail" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="预测商机金额" prop="forecastBusinessPrice">
|
||||
<el-input v-model="form.forecastBusinessPrice" placeholder="请输入预测商机金额" />
|
||||
</el-form-item>
|
||||
<el-form-item label="预计成交日期" prop="forecastSuccessTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.forecastSuccessTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择预计成交日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="协作人" prop="collaborator">
|
||||
<el-input v-model="form.collaborator" placeholder="请输入协作人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="最后跟进时间" prop="lastFollowUpTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.lastFollowUpTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择最后跟进时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="阶段变更时间" prop="phaseChangeTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.phaseChangeTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择阶段变更时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="输单原因" prop="loseOrderCause">
|
||||
<el-input v-model="form.loseOrderCause" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="提交人" prop="submitter">
|
||||
<el-input v-model="form.submitter" placeholder="请输入提交人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="提交时间" prop="submitTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.submitTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择提交时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
<el-form-item label="删除标志" prop="isDelete">
|
||||
<el-input v-model="form.isDelete" placeholder="请输入删除标志" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<AddAssociationComponent v-if="addAssociation" ref="addAssociation" @close-dialog="handleAddAssociationClose" />
|
||||
|
||||
<el-dialog
|
||||
:title="upload.title"
|
||||
:visible.sync="upload.open"
|
||||
width="400px"
|
||||
append-to-body
|
||||
>
|
||||
<el-upload
|
||||
ref="upload"
|
||||
:limit="1"
|
||||
accept=".xlsx, .xls"
|
||||
:headers="upload.headers"
|
||||
:action="upload.url + '?updateSupport=' + upload.updateSupport"
|
||||
:disabled="upload.isUploading"
|
||||
:on-progress="handleFileUploadProgress"
|
||||
:on-success="handleFileSuccess"
|
||||
:auto-upload="false"
|
||||
drag
|
||||
>
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||
<div class="el-upload__tip text-center" slot="tip">
|
||||
<div class="el-upload__tip" slot="tip">
|
||||
<el-checkbox v-model="upload.updateSupport" />
|
||||
是否更新已经存在的商机数据
|
||||
</div>
|
||||
<span>仅允许导入xls、xlsx格式文件。</span>
|
||||
<el-link
|
||||
type="primary"
|
||||
:underline="false"
|
||||
style="font-size: 12px; vertical-align: baseline"
|
||||
@click="importTemplate"
|
||||
>下载模板</el-link
|
||||
>
|
||||
</div>
|
||||
</el-upload>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitFileForm">确 定</el-button>
|
||||
<el-button @click="upload.open = false">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listBusiness, getBusiness, delBusiness, addBusiness, updateBusiness, addRecords } from "@/api/crm/business";
|
||||
import AddAssociationComponent from '../clues/AddAssociation';
|
||||
import { getToken } from '@/utils/auth'
|
||||
import {getTenant} from "../../../utils/auth";
|
||||
|
||||
export default {
|
||||
name: "Business",
|
||||
components: {
|
||||
AddAssociationComponent
|
||||
},
|
||||
dicts: ['stage_type', 'sales_stage'],
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 商机表格数据
|
||||
businessList: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
title: null,
|
||||
customerId: null,
|
||||
customerLinkman: null,
|
||||
customerName: null,
|
||||
customerNumber: null,
|
||||
businessName: null,
|
||||
businessNumber: null,
|
||||
salesStage: '',
|
||||
probabilityOfWining: null,
|
||||
stageType: '',
|
||||
personInCharge: null,
|
||||
belongingDepartment: null,
|
||||
businessDetail: null,
|
||||
forecastBusinessPrice: null,
|
||||
forecastSuccessTime: null,
|
||||
collaborator: null,
|
||||
lastFollowUpTime: null,
|
||||
phaseChangeTime: null,
|
||||
loseOrderCause: null,
|
||||
submitter: null,
|
||||
submitTime: null,
|
||||
isDelete: null
|
||||
},
|
||||
//确认参数
|
||||
verifyParams: {
|
||||
id: null,
|
||||
salesStage: null
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
//自动添加一条跟进记录参数
|
||||
addRecordsParams: {
|
||||
customerNumber: null,
|
||||
title: '商机已确认',
|
||||
followUpRecord: '客户已确认,即将报价',
|
||||
followUpContent: '商机已确认,客户已确认,即将报价'
|
||||
},
|
||||
//添加关联
|
||||
addAssociation: false,
|
||||
// 商机导入参数
|
||||
upload: {
|
||||
// 是否显示弹出层(商机导入)
|
||||
open: false,
|
||||
// 弹出层标题(商机导入)
|
||||
title: '',
|
||||
// 是否禁用上传
|
||||
isUploading: false,
|
||||
// 是否更新已经存在的用户数据
|
||||
updateSupport: 0,
|
||||
// 设置上传的请求头部
|
||||
headers: { tenant: getTenant() ,Authorization: 'Bearer ' + getToken() },
|
||||
// 上传的地址
|
||||
url: process.env.VUE_APP_BASE_API + '/system/business/importData',
|
||||
},
|
||||
// 表单校验
|
||||
rules: {
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
/** 查询商机列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listBusiness(this.queryParams).then(response => {
|
||||
this.businessList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false;
|
||||
this.reset();
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
id: null,
|
||||
title: null,
|
||||
customerId: null,
|
||||
customerLinkman: null,
|
||||
customerName: null,
|
||||
customerNumber: null,
|
||||
businessName: null,
|
||||
businessNumber: null,
|
||||
salesStage: 0,
|
||||
probabilityOfWining: null,
|
||||
stageType: 0,
|
||||
personInCharge: null,
|
||||
belongingDepartment: null,
|
||||
businessDetail: null,
|
||||
forecastBusinessPrice: null,
|
||||
forecastSuccessTime: null,
|
||||
collaborator: null,
|
||||
lastFollowUpTime: null,
|
||||
phaseChangeTime: null,
|
||||
loseOrderCause: null,
|
||||
submitter: null,
|
||||
submitTime: null,
|
||||
createBy: null,
|
||||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null,
|
||||
isDelete: null
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "添加商机";
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
const id = row.id || this.ids
|
||||
getBusiness(id).then(response => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改商机";
|
||||
});
|
||||
},
|
||||
/** 添加联系人操作 */
|
||||
handleAddAssociation(row) {
|
||||
const id = row.id
|
||||
this.addAssociation = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.addAssociation.open(id)
|
||||
})
|
||||
},
|
||||
/** 确认操作 */
|
||||
handleDoVerify(row) {
|
||||
this.handleChange(row);
|
||||
this.handleAddRecords(row);
|
||||
},
|
||||
/** 改变销售状态 */
|
||||
handleChange(row) {
|
||||
this.verifyParams.id = row.id
|
||||
this.verifyParams.salesStage = 2
|
||||
updateBusiness(this.verifyParams).then(response => {
|
||||
this.$modal.msgSuccess("已确认");
|
||||
this.getList();
|
||||
});
|
||||
},
|
||||
/** 添加跟进记录 */
|
||||
handleAddRecords(row) {
|
||||
this.addRecordsParams.customerNumber = row.id
|
||||
addRecords(this.addRecordsParams).then(response => {
|
||||
|
||||
});
|
||||
},
|
||||
/** 导入按钮操作 */
|
||||
handleImport() {
|
||||
this.upload.title = '商机导入'
|
||||
this.upload.open = true
|
||||
},
|
||||
/** 下载模板操作 */
|
||||
importTemplate() {
|
||||
this.download(
|
||||
'system/business/importTemplate',
|
||||
{},
|
||||
`business__template_${new Date().getTime()}.xlsx`
|
||||
)
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.id != null) {
|
||||
updateBusiness(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addBusiness(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除商机编号为"' + ids + '"的数据项?').then(function() {
|
||||
return delBusiness(ids);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('system/business/export', {
|
||||
...this.queryParams
|
||||
}, `business_${new Date().getTime()}.xlsx`)
|
||||
},
|
||||
|
||||
// 文件上传中处理
|
||||
handleFileUploadProgress(event, file, fileList) {
|
||||
this.upload.isUploading = true
|
||||
},
|
||||
// 文件上传成功处理
|
||||
handleFileSuccess(response, file, fileList) {
|
||||
this.upload.open = false
|
||||
this.upload.isUploading = false
|
||||
this.$refs.upload.clearFiles()
|
||||
this.$alert(
|
||||
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
|
||||
response.msg +
|
||||
'</div>',
|
||||
'导入结果',
|
||||
{ dangerouslyUseHTMLString: true }
|
||||
)
|
||||
this.getList()
|
||||
},
|
||||
// 提交上传文件
|
||||
submitFileForm() {
|
||||
this.$refs.upload.submit()
|
||||
},
|
||||
|
||||
handleAddAssociationClose () {
|
||||
this.addAssociation = false;
|
||||
this.getList();
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
112
ruoyi-ui/src/views/crm/clues/AddAssociation.vue
Normal file
112
ruoyi-ui/src/views/crm/clues/AddAssociation.vue
Normal file
@ -0,0 +1,112 @@
|
||||
<template>
|
||||
|
||||
<el-dialog :close-on-click-modal="false" :title="title" :visible.sync="openCustomer" :loading="loading" @close="handleClose" @open="handleOpen" width="680px" append-to-body>
|
||||
<el-form ref="form" label-width="120px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="关联人姓名" prop="name">
|
||||
<el-input v-model="form.name" placeholder="请输入关联人姓名" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系电话" prop="phoneNumber">
|
||||
<el-input v-model="form.phoneNumber" placeholder="请输入联系电话" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="微信号" prop="wxNumber">
|
||||
<el-input v-model="form.wxNumber" placeholder="请输入联系人微信号" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="邮箱" prop="mailNumber">
|
||||
<el-input v-model="form.mailNumber" placeholder="请输入联系人邮箱" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="handleClose">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
|
||||
addAssociation,
|
||||
} from '@/api/crm/clues'
|
||||
|
||||
export default {
|
||||
name: 'AddAssociationComponent',
|
||||
dicts: [
|
||||
'customer_rank',
|
||||
'customer_status',
|
||||
],
|
||||
data () {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 弹出层标题
|
||||
title: '添加关联人',
|
||||
// 是否显示弹出层
|
||||
openCustomer: false,
|
||||
ownerList: undefined,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
|
||||
},
|
||||
// 表单参数
|
||||
form: {
|
||||
name: '',
|
||||
phoneNumber: '',
|
||||
customerId: '',
|
||||
wxNumber: '',
|
||||
mailNumber: '',
|
||||
mailNumber:''
|
||||
},
|
||||
// 表单校验
|
||||
// rules: {
|
||||
// name: [
|
||||
// { required: true, message: '请输入客户名称', trigger: 'blur' },
|
||||
// ],
|
||||
// },
|
||||
cluesId: undefined
|
||||
}
|
||||
},
|
||||
created () {
|
||||
// this.getOwnerList()
|
||||
},
|
||||
methods: {
|
||||
// getCluesInfo () {
|
||||
// getClues(this.cluesId).then((response) => {
|
||||
// this.form = response.data;
|
||||
// })
|
||||
// },
|
||||
open (id) {
|
||||
this.cluesId = id;
|
||||
this.openCustomer = true;
|
||||
},
|
||||
handleOpen () {
|
||||
// this.getCluesInfo();
|
||||
},
|
||||
handleClose () {
|
||||
this.form = {};
|
||||
this.openCustomer = false
|
||||
this.$emit("close-dialog");
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm () {
|
||||
this.form.customerId = this.cluesId
|
||||
addAssociation(this.form).then((response) => {
|
||||
this.$modal.msgSuccess('添加成功')
|
||||
this.handleClose()
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
@ -59,6 +59,7 @@
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-s-promotion" @click="handleTransfer(scope.row)" v-hasPermi="['crm:clues:transfer']">转移</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-refresh-left" @click="handleToCustomer(scope.row)" v-hasPermi="['crm:clues:tocustomer']">转成客户</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-refresh-left" @click="handleAddAssociation(scope.row)" v-hasPermi="['crm:clues:tocustomer']">添加关联</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['crm:clues:edit']">修改</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['crm:clues:remove']">删除</el-button>
|
||||
</template>
|
||||
@ -97,6 +98,20 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 关联人信息-->
|
||||
<!-- <el-row>-->
|
||||
<!-- <el-col :span="12">-->
|
||||
<!-- <el-form-item label="联系人" prop="linkman">-->
|
||||
<!-- <el-input v-model="form.linkman" placeholder="请输入联系人" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- <el-col :span="12">-->
|
||||
<!-- <el-form-item label="联系电话" prop="phone">-->
|
||||
<!-- <el-input v-model="form.phone" placeholder="请输入联系电话" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-row>-->
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="线索来源" prop="cluesSource">
|
||||
@ -126,6 +141,7 @@
|
||||
|
||||
<TransferCluesComponent v-if="transferClues" ref="transferClues" @close-dialog="handleTransferCluesClose" />
|
||||
<ToCustomerComponent v-if="toCustomer" ref="toCustomer" @close-dialog="handleToCustomerClose" />
|
||||
<AddAssociationComponent v-if="addAssociation" ref="addAssociation" @close-dialog="handleAddAssociationClose" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -140,10 +156,12 @@ import {
|
||||
|
||||
import TransferCluesComponent from './Transfer'
|
||||
import ToCustomerComponent from './ToCustomer'
|
||||
import AddAssociationComponent from './AddAssociation'
|
||||
export default {
|
||||
name: 'Clues',
|
||||
components: {
|
||||
TransferCluesComponent,
|
||||
AddAssociationComponent,
|
||||
ToCustomerComponent
|
||||
},
|
||||
dicts: [
|
||||
@ -209,6 +227,8 @@ export default {
|
||||
},
|
||||
transferClues: false,
|
||||
toCustomer: false,
|
||||
//添加关联
|
||||
addAssociation: false,
|
||||
}
|
||||
},
|
||||
created () {
|
||||
@ -352,10 +372,24 @@ export default {
|
||||
this.$refs.toCustomer.open(id)
|
||||
})
|
||||
},
|
||||
//添加关联
|
||||
handleAddAssociation (row) {
|
||||
const id = row.id
|
||||
this.addAssociation = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.addAssociation.open(id)
|
||||
})
|
||||
},
|
||||
|
||||
handleToCustomerClose () {
|
||||
this.toCustomer = false;
|
||||
this.getList();
|
||||
},
|
||||
|
||||
handleAddAssociationClose () {
|
||||
this.addAssociation = false;
|
||||
this.getList();
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
@ -59,6 +59,7 @@
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-s-promotion" @click="handleTransfer(scope.row)" v-hasPermi="['crm:clues:transfer']">转移</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-refresh-left" @click="handleToCustomer(scope.row)" v-hasPermi="['crm:clues:tocustomer']">转成客户</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-refresh-left" @click="handleAddAssociation(scope.row)" v-hasPermi="['crm:clues:tocustomer']">添加关联</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['crm:clues:edit']">修改</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['crm:clues:remove']">删除</el-button>
|
||||
</template>
|
||||
@ -126,6 +127,7 @@
|
||||
|
||||
<TransferCluesComponent v-if="transferClues" ref="transferClues" @close-dialog="handleTransferCluesClose" />
|
||||
<ToCustomerComponent v-if="toCustomer" ref="toCustomer" @close-dialog="handleToCustomerClose" />
|
||||
<AddAssociationComponent v-if="addAssociation" ref="addAssociation" @close-dialog="handleAddAssociationClose" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -140,11 +142,13 @@ import {
|
||||
|
||||
import TransferCluesComponent from './Transfer'
|
||||
import ToCustomerComponent from './ToCustomer'
|
||||
import AddAssociationComponent from './AddAssociation'
|
||||
|
||||
export default {
|
||||
name: 'PersonClues',
|
||||
components: {
|
||||
TransferCluesComponent,
|
||||
AddAssociationComponent,
|
||||
ToCustomerComponent
|
||||
},
|
||||
dicts: [
|
||||
@ -210,6 +214,8 @@ export default {
|
||||
},
|
||||
transferClues: false,
|
||||
toCustomer: false,
|
||||
//添加关联
|
||||
addAssociation: false,
|
||||
}
|
||||
},
|
||||
created () {
|
||||
@ -353,6 +359,14 @@ export default {
|
||||
this.$refs.toCustomer.open(id)
|
||||
})
|
||||
},
|
||||
//添加关联
|
||||
handleAddAssociation (row) {
|
||||
const id = row.id
|
||||
this.addAssociation = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.addAssociation.open(id)
|
||||
})
|
||||
},
|
||||
handleToCustomerClose () {
|
||||
this.toCustomer = false;
|
||||
this.getList();
|
||||
|
@ -10,8 +10,8 @@
|
||||
<el-form-item label="跟进内容" prop="content">
|
||||
<el-input type="textarea" v-model="form.content" :autosize="{ minRows: 2, maxRows: 4}" />
|
||||
</el-form-item>
|
||||
<el-form-item label="下次跟进时间" prop="nextFollowupTime">
|
||||
<el-date-picker clearable size="small" v-model="form.nextFollowupTime" :picker-options="nextFollowTimePicker" type="date" value-format="yyyy-MM-dd" placeholder="选择下次跟进时间">
|
||||
<el-form-item label="下次跟进时间" prop="followUpTime">
|
||||
<el-date-picker clearable size="small" v-model="form.followUpTime" :picker-options="nextFollowTimePicker" type="date" value-format="yyyy-MM-dd" placeholder="选择下次跟进时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@ -47,9 +47,9 @@ export default {
|
||||
},
|
||||
// 表单参数
|
||||
form: {
|
||||
customerId: undefined,
|
||||
content: undefined,
|
||||
nextFollowupTime: undefined
|
||||
customerId: '',
|
||||
content: '',
|
||||
followUpTime: undefined
|
||||
},
|
||||
// 表单校验
|
||||
rules: {
|
||||
@ -80,9 +80,9 @@ export default {
|
||||
},
|
||||
handleClose () {
|
||||
this.form = {
|
||||
customerId: undefined,
|
||||
content: undefined,
|
||||
nextFollowupTime: undefined
|
||||
customerId: '',
|
||||
content: '',
|
||||
followUpTime: undefined
|
||||
}
|
||||
this.openComment = false
|
||||
this.$emit("close-dialog");
|
||||
@ -90,7 +90,9 @@ export default {
|
||||
/** 提交按钮 */
|
||||
submitForm () {
|
||||
this.$refs['form'].validate((valid) => {
|
||||
console.log(this.form,'form')
|
||||
if (valid) {
|
||||
console.log(this.form,'form')
|
||||
addComment(this.form).then((response) => {
|
||||
this.$modal.msgSuccess('保存成功')
|
||||
this.handleClose()
|
||||
|
492
ruoyi-ui/src/views/crm/person/index.vue
Normal file
492
ruoyi-ui/src/views/crm/person/index.vue
Normal file
@ -0,0 +1,492 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<!-- <el-form-item label="标题" prop="title">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.title"-->
|
||||
<!-- placeholder="请输入标题"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="姓名" prop="name">
|
||||
<el-input
|
||||
v-model="queryParams.name"
|
||||
placeholder="请输入姓名"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="手机号" prop="phoneNumber">
|
||||
<el-input
|
||||
v-model="queryParams.phoneNumber"
|
||||
placeholder="请输入手机号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="关联客户" prop="customerId">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.customerId"-->
|
||||
<!-- placeholder="请输入关联客户"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="客户编号" prop="customerNumber">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.customerNumber"-->
|
||||
<!-- placeholder="请输入客户编号"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="部门" prop="dep">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.dep"-->
|
||||
<!-- placeholder="请输入部门"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="职务" prop="job">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.job"-->
|
||||
<!-- placeholder="请输入职务"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="微信号" prop="wxNumber">
|
||||
<el-input
|
||||
v-model="queryParams.wxNumber"
|
||||
placeholder="请输入微信号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="邮箱" prop="mailNumber">
|
||||
<el-input
|
||||
v-model="queryParams.mailNumber"
|
||||
placeholder="请输入邮箱"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否关键决策人" prop="isKey">
|
||||
<el-select v-model="queryParams.isKey" placeholder="请选择是否关键决策人" clearable>
|
||||
<el-option
|
||||
v-for="dict in dict.type.is_key"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="负责人" prop="personInCharge">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.personInCharge"-->
|
||||
<!-- placeholder="请输入负责人"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="归属部门" prop="belongingDepartment">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.belongingDepartment"-->
|
||||
<!-- placeholder="请输入归属部门"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="协作人" prop="collaborator">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.collaborator"-->
|
||||
<!-- placeholder="请输入协作人"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="提交人" prop="submitter">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.submitter"-->
|
||||
<!-- placeholder="请输入提交人"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="提交时间" prop="submitTime">-->
|
||||
<!-- <el-date-picker clearable-->
|
||||
<!-- v-model="queryParams.submitTime"-->
|
||||
<!-- type="date"-->
|
||||
<!-- value-format="yyyy-MM-dd"-->
|
||||
<!-- placeholder="请选择提交时间">-->
|
||||
<!-- </el-date-picker>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="删除标志" prop="isDelete">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.isDelete"-->
|
||||
<!-- placeholder="请输入删除标志"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['system:person:add']"
|
||||
>新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['system:person:edit']"
|
||||
>修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['system:person:remove']"
|
||||
>删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['system:person:export']"
|
||||
>导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table border v-loading="loading" :data="personList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="编号" align="center" prop="id" />
|
||||
<!-- <el-table-column label="标题" align="center" prop="title" />-->
|
||||
<el-table-column label="姓名" align="center" prop="name" />
|
||||
<el-table-column label="手机号" align="center" prop="phoneNumber" />
|
||||
<!-- <el-table-column label="关联客户" align="center" prop="customerId" />-->
|
||||
<!-- <el-table-column label="客户编号" align="center" prop="customerNumber" />-->
|
||||
<!-- <el-table-column label="部门" align="center" prop="dep" />-->
|
||||
<!-- <el-table-column label="职务" align="center" prop="job" />-->
|
||||
<el-table-column label="微信号" align="center" prop="wxNumber" />
|
||||
<el-table-column label="邮箱" align="center" prop="mailNumber" />
|
||||
<el-table-column label="是否关键决策人" align="center" prop="isKey">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.is_key" :value="scope.row.isKey"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="联系人详情" align="center" prop="contactPersonDetail" />-->
|
||||
<!-- <el-table-column label="负责人" align="center" prop="personInCharge" />-->
|
||||
<!-- <el-table-column label="归属部门" align="center" prop="belongingDepartment" />-->
|
||||
<!-- <el-table-column label="协作人" align="center" prop="collaborator" />-->
|
||||
<!-- <el-table-column label="提交人" align="center" prop="submitter" />-->
|
||||
<!-- <el-table-column label="提交时间" align="center" prop="submitTime" width="180">-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- <span>{{ parseTime(scope.row.submitTime, '{y}-{m}-{d}') }}</span>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<!-- <el-table-column label="备注" align="center" prop="remark" />-->
|
||||
<!-- <el-table-column label="删除标志" align="center" prop="isDelete" />-->
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['system:person:edit']"
|
||||
>修改</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['system:person:remove']"
|
||||
>删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 添加或修改联系人对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="form.title" placeholder="请输入标题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="姓名" prop="name">
|
||||
<el-input v-model="form.name" placeholder="请输入姓名" />
|
||||
</el-form-item>
|
||||
<el-form-item label="手机号" prop="phoneNumber">
|
||||
<el-input v-model="form.phoneNumber" placeholder="请输入手机号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="关联客户" prop="customerId">
|
||||
<el-input v-model="form.customerId" placeholder="请输入关联客户" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户编号" prop="customerNumber">
|
||||
<el-input v-model="form.customerNumber" placeholder="请输入客户编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="部门" prop="dep">
|
||||
<el-input v-model="form.dep" placeholder="请输入部门" />
|
||||
</el-form-item>
|
||||
<el-form-item label="职务" prop="job">
|
||||
<el-input v-model="form.job" placeholder="请输入职务" />
|
||||
</el-form-item>
|
||||
<el-form-item label="微信号" prop="wxNumber">
|
||||
<el-input v-model="form.wxNumber" placeholder="请输入微信号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="邮箱" prop="mailNumber">
|
||||
<el-input v-model="form.mailNumber" placeholder="请输入邮箱" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否关键决策人">
|
||||
<el-radio-group v-model="form.isKey">
|
||||
<el-radio
|
||||
v-for="dict in dict.type.is_key"
|
||||
:key="dict.value"
|
||||
:label="parseInt(dict.value)"
|
||||
>{{dict.label}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="联系人详情" prop="contactPersonDetail">
|
||||
<el-input v-model="form.contactPersonDetail" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="负责人" prop="personInCharge">
|
||||
<el-input v-model="form.personInCharge" placeholder="请输入负责人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="归属部门" prop="belongingDepartment">
|
||||
<el-input v-model="form.belongingDepartment" placeholder="请输入归属部门" />
|
||||
</el-form-item>
|
||||
<el-form-item label="协作人" prop="collaborator">
|
||||
<el-input v-model="form.collaborator" placeholder="请输入协作人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="提交人" prop="submitter">
|
||||
<el-input v-model="form.submitter" placeholder="请输入提交人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="提交时间" prop="submitTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.submitTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择提交时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="删除标志" prop="isDelete">-->
|
||||
<!-- <el-input v-model="form.isDelete" placeholder="请输入删除标志" />-->
|
||||
<!-- </el-form-item>-->
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listPerson, getPerson, delPerson, addPerson, updatePerson } from "@/api/crm/person";
|
||||
|
||||
export default {
|
||||
name: "Person",
|
||||
dicts: ['is_key'],
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 联系人表格数据
|
||||
personList: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
title: null,
|
||||
name: null,
|
||||
phoneNumber: null,
|
||||
customerId: null,
|
||||
customerNumber: null,
|
||||
dep: null,
|
||||
job: null,
|
||||
wxNumber: null,
|
||||
mailNumber: null,
|
||||
isKey: '',
|
||||
contactPersonDetail: null,
|
||||
personInCharge: null,
|
||||
belongingDepartment: null,
|
||||
collaborator: null,
|
||||
submitter: null,
|
||||
submitTime: null,
|
||||
isDelete: null
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
/** 查询联系人列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listPerson(this.queryParams).then(response => {
|
||||
this.personList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false;
|
||||
this.reset();
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
id: null,
|
||||
title: null,
|
||||
name: null,
|
||||
phoneNumber: null,
|
||||
customerId: null,
|
||||
customerNumber: null,
|
||||
dep: null,
|
||||
job: null,
|
||||
wxNumber: null,
|
||||
mailNumber: null,
|
||||
isKey: 0,
|
||||
contactPersonDetail: null,
|
||||
personInCharge: null,
|
||||
belongingDepartment: null,
|
||||
collaborator: null,
|
||||
submitter: null,
|
||||
submitTime: null,
|
||||
createBy: null,
|
||||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null,
|
||||
isDelete: null
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "添加联系人";
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
const id = row.id || this.ids
|
||||
getPerson(id).then(response => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改联系人";
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.id != null) {
|
||||
updatePerson(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addPerson(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除联系人编号为"' + ids + '"的数据项?').then(function() {
|
||||
return delPerson(ids);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('system/person/export', {
|
||||
...this.queryParams
|
||||
}, `person_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
404
ruoyi-ui/src/views/crm/plan/index.vue
Normal file
404
ruoyi-ui/src/views/crm/plan/index.vue
Normal file
@ -0,0 +1,404 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input
|
||||
v-model="queryParams.title"
|
||||
placeholder="请输入标题"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="跟进客户" prop="customer">
|
||||
<el-input
|
||||
v-model="queryParams.customer"
|
||||
placeholder="请输入跟进客户"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="跟进时间" prop="planTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.planTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择跟进时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="跟进执行人" prop="planExecutor">
|
||||
<el-input
|
||||
v-model="queryParams.planExecutor"
|
||||
placeholder="请输入跟进执行人"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="归属部门" prop="belongingDepartment">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.belongingDepartment"-->
|
||||
<!-- placeholder="请输入归属部门"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="计划状态" prop="planStatus">
|
||||
<el-select v-model="queryParams.planStatus" placeholder="请选择计划状态" clearable>
|
||||
<el-option
|
||||
v-for="dict in dict.type.plan_status"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="提交人" prop="submitter">
|
||||
<el-input
|
||||
v-model="queryParams.submitter"
|
||||
placeholder="请输入提交人"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="提交时间" prop="submitTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.submitTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择提交时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="是否删除" prop="isDelete">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.isDelete"-->
|
||||
<!-- placeholder="请输入是否删除"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['system:plan:add']"
|
||||
>新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['system:plan:edit']"
|
||||
>修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['system:plan:remove']"
|
||||
>删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['system:plan:export']"
|
||||
>导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table border v-loading="loading" :data="planList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="编号" align="center" prop="id" />
|
||||
<el-table-column label="标题" align="center" prop="title" />
|
||||
<el-table-column label="计划内容" align="center" prop="planContent" />
|
||||
<!-- <el-table-column label="跟进客户" align="center" prop="customer" />-->
|
||||
<el-table-column label="跟进时间" align="center" prop="planTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.planTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="跟进执行人" align="center" prop="planExecutor" />
|
||||
<!-- <el-table-column label="归属部门" align="center" prop="belongingDepartment" />-->
|
||||
<el-table-column label="计划状态" align="center" prop="planStatus">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.plan_status" :value="scope.row.planStatus"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="提交人" align="center" prop="submitter" />-->
|
||||
<!-- <el-table-column label="提交时间" align="center" prop="submitTime" width="180">-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- <span>{{ parseTime(scope.row.submitTime, '{y}-{m}-{d}') }}</span>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<!-- <el-table-column label="备注" align="center" prop="remark" />-->
|
||||
<!-- <el-table-column label="是否删除" align="center" prop="isDelete" />-->
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['system:plan:edit']"
|
||||
>修改</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['system:plan:remove']"
|
||||
>删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 添加或修改跟进计划对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="form.title" placeholder="请输入标题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="计划内容">
|
||||
<editor v-model="form.planContent" :min-height="192"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="跟进客户" prop="customer">
|
||||
<el-input v-model="form.customer" placeholder="请输入跟进客户" />
|
||||
</el-form-item>
|
||||
<el-form-item label="跟进时间" prop="planTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.planTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择跟进时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="跟进执行人" prop="planExecutor">
|
||||
<el-input v-model="form.planExecutor" placeholder="请输入跟进执行人" />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="归属部门" prop="belongingDepartment">-->
|
||||
<!-- <el-input v-model="form.belongingDepartment" placeholder="请输入归属部门" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="计划状态" prop="planStatus">
|
||||
<el-select v-model="form.planStatus" placeholder="请选择计划状态">
|
||||
<el-option
|
||||
v-for="dict in dict.type.plan_status"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="parseInt(dict.value)"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="提交人" prop="submitter">
|
||||
<el-input v-model="form.submitter" placeholder="请输入提交人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="提交时间" prop="submitTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.submitTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择提交时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="是否删除" prop="isDelete">-->
|
||||
<!-- <el-input v-model="form.isDelete" placeholder="请输入是否删除" />-->
|
||||
<!-- </el-form-item>-->
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listPlan, getPlan, delPlan, addPlan, updatePlan } from "@/api/crm/plan";
|
||||
|
||||
export default {
|
||||
name: "Plan",
|
||||
dicts: ['plan_status'],
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 跟进计划表格数据
|
||||
planList: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
title: null,
|
||||
planContent: null,
|
||||
customer: null,
|
||||
planTime: null,
|
||||
planExecutor: null,
|
||||
belongingDepartment: null,
|
||||
planStatus: '',
|
||||
submitter: null,
|
||||
submitTime: null,
|
||||
isDelete: null
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
/** 查询跟进计划列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listPlan(this.queryParams).then(response => {
|
||||
this.planList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false;
|
||||
this.reset();
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
id: null,
|
||||
title: null,
|
||||
planContent: null,
|
||||
customer: null,
|
||||
planTime: null,
|
||||
planExecutor: null,
|
||||
belongingDepartment: null,
|
||||
planStatus: null,
|
||||
submitter: null,
|
||||
submitTime: null,
|
||||
createBy: null,
|
||||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null,
|
||||
isDelete: null
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "添加跟进计划";
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
const id = row.id || this.ids
|
||||
getPlan(id).then(response => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改跟进计划";
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.id != null) {
|
||||
updatePlan(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addPlan(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除跟进计划编号为"' + ids + '"的数据项?').then(function() {
|
||||
return delPlan(ids);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('system/plan/export', {
|
||||
...this.queryParams
|
||||
}, `plan_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
@ -18,7 +18,7 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table v-loading="loading" :data="customerList" @selection-change="handleSelectionChange">
|
||||
<el-table border v-loading="loading" :data="customerList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="客户名称" align="left" prop="name" />
|
||||
<el-table-column label="客户级别" align="left" prop="customerRank">
|
||||
|
458
ruoyi-ui/src/views/crm/record/index.vue
Normal file
458
ruoyi-ui/src/views/crm/record/index.vue
Normal file
@ -0,0 +1,458 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input
|
||||
v-model="queryParams.title"
|
||||
placeholder="请输入标题"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="跟进主体" prop="followUpSubject">
|
||||
<el-input
|
||||
v-model="queryParams.followUpSubject"
|
||||
placeholder="请输入跟进主体"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="客户编号" prop="customerNumber">
|
||||
<el-input
|
||||
v-model="queryParams.customerNumber"
|
||||
placeholder="请输入客户编号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="商机编号" prop="opportunityNumber">
|
||||
<el-input
|
||||
v-model="queryParams.opportunityNumber"
|
||||
placeholder="请输入商机编号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="联系人" prop="contactPeople">
|
||||
<el-input
|
||||
v-model="queryParams.contactPeople"
|
||||
placeholder="请输入联系人"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="跟进方式" prop="followUpType">
|
||||
<el-select v-model="queryParams.followUpType" placeholder="请选择跟进方式" clearable>
|
||||
<el-option
|
||||
v-for="dict in dict.type.follow_up_type"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="下次跟进" prop="followUpTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.followUpTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择跟进时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="跟进人" prop="followUpPeople">
|
||||
<el-input
|
||||
v-model="queryParams.followUpPeople"
|
||||
placeholder="请输入跟进人"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="归属部门" prop="belongingDepartment">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.belongingDepartment"-->
|
||||
<!-- placeholder="请输入归属部门"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="提交人" prop="submitter">
|
||||
<el-input
|
||||
v-model="queryParams.submitter"
|
||||
placeholder="请输入提交人"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="提交时间" prop="submitTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.submitTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择提交时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="是否删除" prop="customerId">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.customerId"-->
|
||||
<!-- placeholder="请输入是否删除"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['system:record:add']"
|
||||
>新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['system:record:edit']"
|
||||
>修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['system:record:remove']"
|
||||
>删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['system:record:export']"
|
||||
>导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table border v-loading="loading" :data="recordList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="编号" align="center" prop="id" />
|
||||
<el-table-column label="标题" align="center" prop="title" />
|
||||
<el-table-column label="跟进记录" align="center" prop="followUpRecord" />
|
||||
<el-table-column label="跟进主体" align="center" prop="followUpSubject" />
|
||||
<el-table-column label="客户编号" align="center" prop="customerNumber" />
|
||||
<el-table-column label="跟进商机" align="center" prop="followUpBusinessOpportunities" />
|
||||
<el-table-column label="商机编号" align="center" prop="opportunityNumber" />
|
||||
<el-table-column label="联系人" align="center" prop="contactPeople" />
|
||||
<el-table-column label="跟进方式" align="center" prop="followUpType">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.follow_up_type" :value="scope.row.followUpType"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="跟进内容" align="center" prop="content" />
|
||||
<el-table-column label="下次跟进" align="center" prop="followUpTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.followUpTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="跟进人" align="center" prop="followUpPeople" />
|
||||
<!-- <el-table-column label="归属部门" align="center" prop="belongingDepartment" />-->
|
||||
<el-table-column label="提交人" align="center" prop="submitter" />
|
||||
<el-table-column label="提交时间" align="center" prop="submitTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.submitTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<!-- <el-table-column label="是否删除" align="center" prop="customerId" />-->
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['system:record:edit']"
|
||||
>修改</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['system:record:remove']"
|
||||
>删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 添加或修改跟进记录对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="form.title" placeholder="请输入标题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="跟进记录" prop="followUpRecord">
|
||||
<el-input v-model="form.followUpRecord" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="跟进主体" prop="followUpSubject">
|
||||
<el-input v-model="form.followUpSubject" placeholder="请输入跟进主体" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户编号" prop="customerNumber">
|
||||
<el-input v-model="form.customerNumber" placeholder="请输入客户编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="跟进商机" prop="followUpBusinessOpportunities">
|
||||
<el-input v-model="form.followUpBusinessOpportunities" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="商机编号" prop="opportunityNumber">
|
||||
<el-input v-model="form.opportunityNumber" placeholder="请输入商机编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="联系人" prop="contactPeople">
|
||||
<el-input v-model="form.contactPeople" placeholder="请输入联系人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="跟进方式" prop="followUpType">
|
||||
<el-select v-model="form.followUpType" placeholder="请选择跟进方式">
|
||||
<el-option
|
||||
v-for="dict in dict.type.follow_up_type"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="parseInt(dict.value)"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="跟进内容">
|
||||
<editor v-model="form.content" :min-height="192"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="下次跟进" prop="followUpTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.followUpTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择跟进时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="跟进人" prop="followUpPeople">
|
||||
<el-input v-model="form.followUpPeople" placeholder="请输入跟进人" />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="归属部门" prop="belongingDepartment">-->
|
||||
<!-- <el-input v-model="form.belongingDepartment" placeholder="请输入归属部门" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="提交人" prop="submitter">
|
||||
<el-input v-model="form.submitter" placeholder="请输入提交人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="提交时间" prop="submitTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.submitTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择提交时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="是否删除" prop="customerId">-->
|
||||
<!-- <el-input v-model="form.customerId" placeholder="请输入是否删除" />-->
|
||||
<!-- </el-form-item>-->
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listRecord, getRecord, delRecord, addRecord, updateRecord } from "@/api/crm/record";
|
||||
|
||||
export default {
|
||||
name: "Record",
|
||||
dicts: ['follow_up_type'],
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 跟进记录表格数据
|
||||
recordList: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
title: null,
|
||||
followUpRecord: null,
|
||||
followUpSubject: null,
|
||||
customerNumber: null,
|
||||
followUpBusinessOpportunities: null,
|
||||
opportunityNumber: null,
|
||||
contactPeople: null,
|
||||
followUpType: '',
|
||||
content: null,
|
||||
followUpTime: null,
|
||||
followUpPeople: null,
|
||||
belongingDepartment: null,
|
||||
submitter: null,
|
||||
submitTime: null,
|
||||
customerId: null
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
/** 查询跟进记录列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listRecord(this.queryParams).then(response => {
|
||||
this.recordList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false;
|
||||
this.reset();
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
id: null,
|
||||
title: null,
|
||||
followUpRecord: null,
|
||||
followUpSubject: null,
|
||||
customerNumber: null,
|
||||
followUpBusinessOpportunities: null,
|
||||
opportunityNumber: null,
|
||||
contactPeople: null,
|
||||
followUpType: null,
|
||||
content: null,
|
||||
followUpTime: null,
|
||||
followUpPeople: null,
|
||||
belongingDepartment: null,
|
||||
submitter: null,
|
||||
submitTime: null,
|
||||
createBy: null,
|
||||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null,
|
||||
customerId: null
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "添加跟进记录";
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
const id = row.id || this.ids
|
||||
getRecord(id).then(response => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改跟进记录";
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.id != null) {
|
||||
updateRecord(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addRecord(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除跟进记录编号为"' + ids + '"的数据项?').then(function() {
|
||||
return delRecord(ids);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('system/record/export', {
|
||||
...this.queryParams
|
||||
}, `record_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
789
ruoyi-ui/src/views/crm/ticket/index.vue
Normal file
789
ruoyi-ui/src/views/crm/ticket/index.vue
Normal file
@ -0,0 +1,789 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input
|
||||
v-model="queryParams.title"
|
||||
placeholder="请输入标题"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="客户姓名" prop="customerName">
|
||||
<el-input
|
||||
v-model="queryParams.customerName"
|
||||
placeholder="请输入客户姓名"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="客户编号" prop="customerNumber">
|
||||
<el-input
|
||||
v-model="queryParams.customerNumber"
|
||||
placeholder="请输入客户编号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同标题" prop="contractTitle">
|
||||
<el-input
|
||||
v-model="queryParams.contractTitle"
|
||||
placeholder="请输入合同标题"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同订单编号" prop="contractOrderNumber">
|
||||
<el-input
|
||||
v-model="queryParams.contractOrderNumber"
|
||||
placeholder="请输入合同订单编号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="客户联系人" prop="customerContact">
|
||||
<el-input
|
||||
v-model="queryParams.customerContact"
|
||||
placeholder="请输入客户联系人"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="手机号" prop="phoneNumber">
|
||||
<el-input
|
||||
v-model="queryParams.phoneNumber"
|
||||
placeholder="请输入手机号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务类型" prop="serviceType">
|
||||
<el-select v-model="queryParams.serviceType" placeholder="请选择服务类型" clearable>
|
||||
<el-option
|
||||
v-for="dict in dict.type.service_type"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务单号" prop="serviceOrderNumber">
|
||||
<el-input
|
||||
v-model="queryParams.serviceOrderNumber"
|
||||
placeholder="请输入服务单号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="第几个服务单" prop="howManyServiceOrder">
|
||||
<el-input
|
||||
v-model="queryParams.howManyServiceOrder"
|
||||
placeholder="请输入第几个服务单"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务开始时间" prop="serviceStarTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.serviceStarTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择服务开始时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务结束时间" prop="serviceEndTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.serviceEndTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择服务结束时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务需求天数" prop="demandServiceDay">
|
||||
<el-input
|
||||
v-model="queryParams.demandServiceDay"
|
||||
placeholder="请输入服务需求天数"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="售后技术人员" prop="afterSalesTechnician">
|
||||
<el-input
|
||||
v-model="queryParams.afterSalesTechnician"
|
||||
placeholder="请输入售后技术人员"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务地址(省/自治区/直辖市)" prop="serviceAddress">
|
||||
<el-input
|
||||
v-model="queryParams.serviceAddress"
|
||||
placeholder="请输入服务地址(省/自治区/直辖市)"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="服务地址(市)" prop="serviceAddressCity">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.serviceAddressCity"-->
|
||||
<!-- placeholder="请输入服务地址(市)"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="服务地址(区)" prop="serviceAddressArea">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.serviceAddressArea"-->
|
||||
<!-- placeholder="请输入服务地址(区)"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="服务地址(详细地址)" prop="serviceAddressDetail">
|
||||
<el-input
|
||||
v-model="queryParams.serviceAddressDetail"
|
||||
placeholder="请输入服务地址(详细地址)"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="签到" prop="signIn">
|
||||
<el-input
|
||||
v-model="queryParams.signIn"
|
||||
placeholder="请输入签到"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="签到时间" prop="signInTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.signInTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择签到时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="签退" prop="signOut">
|
||||
<el-input
|
||||
v-model="queryParams.signOut"
|
||||
placeholder="请输入签退"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="签退时间" prop="signOutTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.signOutTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择签退时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否解决问题" prop="isSolveTheProblem">
|
||||
<el-select v-model="queryParams.isSolveTheProblem" placeholder="请选择是否解决问题" clearable>
|
||||
<el-option
|
||||
v-for="dict in dict.type.is_solve_the_problem"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="现场照片" prop="scenePhoto">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="queryParams.scenePhoto"-->
|
||||
<!-- placeholder="请输入现场照片"-->
|
||||
<!-- clearable-->
|
||||
<!-- @keyup.enter.native="handleQuery"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="客户满意度" prop="customerSatisfaction">
|
||||
<el-select v-model="queryParams.customerSatisfaction" placeholder="请选择客户满意度" clearable>
|
||||
<el-option
|
||||
v-for="dict in dict.type.customer_satisfaction"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="满意度数值" prop="satisfactionValue">
|
||||
<el-input
|
||||
v-model="queryParams.satisfactionValue"
|
||||
placeholder="请输入满意度数值"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="提交人" prop="submitter">
|
||||
<el-input
|
||||
v-model="queryParams.submitter"
|
||||
placeholder="请输入提交人"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="提交时间" prop="submitTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.submitTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择提交时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程状态" prop="processState">
|
||||
<el-select v-model="queryParams.processState" placeholder="请选择流程状态" clearable>
|
||||
<el-option
|
||||
v-for="dict in dict.type.process_state"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="当前节点" prop="currentNode">
|
||||
<el-select v-model="queryParams.currentNode" placeholder="请选择当前节点" clearable>
|
||||
<el-option
|
||||
v-for="dict in dict.type.current_node"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="当前负责人" prop="currentPersonInCharge">
|
||||
<el-input
|
||||
v-model="queryParams.currentPersonInCharge"
|
||||
placeholder="请输入当前负责人"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['system:ticket:add']"
|
||||
>新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['system:ticket:edit']"
|
||||
>修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['system:ticket:remove']"
|
||||
>删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['system:ticket:export']"
|
||||
>导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table border v-loading="loading" :data="ticketList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="编号" align="center" prop="id" />
|
||||
<el-table-column label="标题" align="center" prop="title" />
|
||||
<el-table-column label="客户姓名" align="center" prop="customerName" />
|
||||
<el-table-column label="客户编号" align="center" prop="customerNumber" />
|
||||
<el-table-column label="合同标题" align="center" prop="contractTitle" />
|
||||
<el-table-column label="合同订单编号" align="center" prop="contractOrderNumber" />
|
||||
<el-table-column label="客户联系人" align="center" prop="customerContact" />
|
||||
<el-table-column label="手机号" align="center" prop="phoneNumber" />
|
||||
<el-table-column label="服务类型" align="center" prop="serviceType">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.service_type" :value="scope.row.serviceType"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="服务单号" align="center" prop="serviceOrderNumber" />
|
||||
<el-table-column label="第几个服务单" align="center" prop="howManyServiceOrder" />
|
||||
<el-table-column label="服务开始时间" align="center" prop="serviceStarTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.serviceStarTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="服务结束时间" align="center" prop="serviceEndTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.serviceEndTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="服务需求天数" align="center" prop="demandServiceDay" />
|
||||
<el-table-column label="售后技术人员" align="center" prop="afterSalesTechnician" />
|
||||
<el-table-column label="服务地址(省/自治区/直辖市)" align="center" prop="serviceAddress" />
|
||||
<!-- <el-table-column label="服务地址(市)" align="center" prop="serviceAddressCity" />-->
|
||||
<!-- <el-table-column label="服务地址(区)" align="center" prop="serviceAddressArea" />-->
|
||||
<el-table-column label="服务地址(详细地址)" align="center" prop="serviceAddressDetail" />
|
||||
<el-table-column label="签到" align="center" prop="signIn" />
|
||||
<el-table-column label="签到时间" align="center" prop="signInTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.signInTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="签退" align="center" prop="signOut" />
|
||||
<el-table-column label="签退时间" align="center" prop="signOutTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.signOutTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否解决问题" align="center" prop="isSolveTheProblem">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.is_solve_the_problem" :value="scope.row.isSolveTheProblem"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="现场照片" align="center" prop="scenePhoto" width="100">
|
||||
<template slot-scope="scope">
|
||||
<image-preview :src="scope.row.scenePhoto" :width="50" :height="50"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="客户满意度" align="center" prop="customerSatisfaction">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.customer_satisfaction" :value="scope.row.customerSatisfaction"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="满意度数值" align="center" prop="satisfactionValue" />
|
||||
<el-table-column label="客户意见与诉求" align="center" prop="customerCommentsAndDemands" />
|
||||
<el-table-column label="提交人" align="center" prop="submitter" />
|
||||
<el-table-column label="提交时间" align="center" prop="submitTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.submitTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程状态" align="center" prop="processState">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.process_state" :value="scope.row.processState"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="当前节点" align="center" prop="currentNode">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.current_node" :value="scope.row.currentNode"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="当前负责人" align="center" prop="currentPersonInCharge" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['system:ticket:edit']"
|
||||
>修改</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['system:ticket:remove']"
|
||||
>删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 添加或修改服务工单对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="form.title" placeholder="请输入标题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户姓名" prop="customerName">
|
||||
<el-input v-model="form.customerName" placeholder="请输入客户姓名" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户编号" prop="customerNumber">
|
||||
<el-input v-model="form.customerNumber" placeholder="请输入客户编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="合同标题" prop="contractTitle">
|
||||
<el-input v-model="form.contractTitle" placeholder="请输入合同标题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="合同订单编号" prop="contractOrderNumber">
|
||||
<el-input v-model="form.contractOrderNumber" placeholder="请输入合同订单编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户联系人" prop="customerContact">
|
||||
<el-input v-model="form.customerContact" placeholder="请输入客户联系人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="手机号" prop="phoneNumber">
|
||||
<el-input v-model="form.phoneNumber" placeholder="请输入手机号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="服务类型" prop="serviceType">
|
||||
<el-select v-model="form.serviceType" placeholder="请选择服务类型">
|
||||
<el-option
|
||||
v-for="dict in dict.type.service_type"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="parseInt(dict.value)"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务单号" prop="serviceOrderNumber">
|
||||
<el-input v-model="form.serviceOrderNumber" placeholder="请输入服务单号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="第几个服务单" prop="howManyServiceOrder">
|
||||
<el-input v-model="form.howManyServiceOrder" placeholder="请输入第几个服务单" />
|
||||
</el-form-item>
|
||||
<el-form-item label="服务开始时间" prop="serviceStarTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.serviceStarTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择服务开始时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务结束时间" prop="serviceEndTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.serviceEndTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择服务结束时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务需求天数" prop="demandServiceDay">
|
||||
<el-input v-model="form.demandServiceDay" placeholder="请输入服务需求天数" />
|
||||
</el-form-item>
|
||||
<el-form-item label="售后技术人员" prop="afterSalesTechnician">
|
||||
<el-input v-model="form.afterSalesTechnician" placeholder="请输入售后技术人员" />
|
||||
</el-form-item>
|
||||
<el-form-item label="服务地址(省/自治区/直辖市)" prop="serviceAddress">
|
||||
<el-input v-model="form.serviceAddress" placeholder="请输入服务地址(省/自治区/直辖市)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="服务地址(市)" prop="serviceAddressCity">
|
||||
<el-input v-model="form.serviceAddressCity" placeholder="请输入服务地址(市)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="服务地址(区)" prop="serviceAddressArea">
|
||||
<el-input v-model="form.serviceAddressArea" placeholder="请输入服务地址(区)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="服务地址(详细地址)" prop="serviceAddressDetail">
|
||||
<el-input v-model="form.serviceAddressDetail" placeholder="请输入服务地址(详细地址)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="签到" prop="signIn">
|
||||
<el-input v-model="form.signIn" placeholder="请输入签到" />
|
||||
</el-form-item>
|
||||
<el-form-item label="签到时间" prop="signInTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.signInTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择签到时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="签退" prop="signOut">
|
||||
<el-input v-model="form.signOut" placeholder="请输入签退" />
|
||||
</el-form-item>
|
||||
<el-form-item label="签退时间" prop="signOutTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.signOutTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择签退时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否解决问题">
|
||||
<el-radio-group v-model="form.isSolveTheProblem">
|
||||
<el-radio
|
||||
v-for="dict in dict.type.is_solve_the_problem"
|
||||
:key="dict.value"
|
||||
:label="parseInt(dict.value)"
|
||||
>{{dict.label}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="现场照片">
|
||||
<image-upload v-model="form.scenePhoto"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="客户满意度" prop="customerSatisfaction">
|
||||
<el-select v-model="form.customerSatisfaction" placeholder="请选择客户满意度">
|
||||
<el-option
|
||||
v-for="dict in dict.type.customer_satisfaction"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="parseInt(dict.value)"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="满意度数值" prop="satisfactionValue">
|
||||
<el-input v-model="form.satisfactionValue" placeholder="请输入满意度数值" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户意见与诉求" prop="customerCommentsAndDemands">
|
||||
<el-input v-model="form.customerCommentsAndDemands" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="提交人" prop="submitter">
|
||||
<el-input v-model="form.submitter" placeholder="请输入提交人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="提交时间" prop="submitTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.submitTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择提交时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程状态" prop="processState">
|
||||
<el-select v-model="form.processState" placeholder="请选择流程状态">
|
||||
<el-option
|
||||
v-for="dict in dict.type.process_state"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="parseInt(dict.value)"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="当前节点" prop="currentNode">
|
||||
<el-select v-model="form.currentNode" placeholder="请选择当前节点">
|
||||
<el-option
|
||||
v-for="dict in dict.type.current_node"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="parseInt(dict.value)"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="当前负责人" prop="currentPersonInCharge">
|
||||
<el-input v-model="form.currentPersonInCharge" placeholder="请输入当前负责人" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listTicket, getTicket, delTicket, addTicket, updateTicket } from "@/api/crm/ticket";
|
||||
|
||||
export default {
|
||||
name: "Ticket",
|
||||
dicts: ['customer_satisfaction', 'service_type', 'is_solve_the_problem', 'current_node', 'process_state'],
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 服务工单表格数据
|
||||
ticketList: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
title: null,
|
||||
customerName: null,
|
||||
customerNumber: null,
|
||||
contractTitle: null,
|
||||
contractOrderNumber: null,
|
||||
customerContact: null,
|
||||
phoneNumber: null,
|
||||
serviceType: null,
|
||||
serviceOrderNumber: null,
|
||||
howManyServiceOrder: null,
|
||||
serviceStarTime: null,
|
||||
serviceEndTime: null,
|
||||
demandServiceDay: null,
|
||||
afterSalesTechnician: null,
|
||||
serviceAddress: null,
|
||||
serviceAddressCity: null,
|
||||
serviceAddressArea: null,
|
||||
serviceAddressDetail: null,
|
||||
signIn: null,
|
||||
signInTime: null,
|
||||
signOut: null,
|
||||
signOutTime: null,
|
||||
isSolveTheProblem: null,
|
||||
scenePhoto: null,
|
||||
customerSatisfaction: null,
|
||||
satisfactionValue: null,
|
||||
customerCommentsAndDemands: null,
|
||||
submitter: null,
|
||||
submitTime: null,
|
||||
processState: null,
|
||||
currentNode: null,
|
||||
currentPersonInCharge: null
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
/** 查询服务工单列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listTicket(this.queryParams).then(response => {
|
||||
this.ticketList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false;
|
||||
this.reset();
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
id: null,
|
||||
title: null,
|
||||
customerName: null,
|
||||
customerNumber: null,
|
||||
contractTitle: null,
|
||||
contractOrderNumber: null,
|
||||
customerContact: null,
|
||||
phoneNumber: null,
|
||||
serviceType: null,
|
||||
serviceOrderNumber: null,
|
||||
howManyServiceOrder: null,
|
||||
serviceStarTime: null,
|
||||
serviceEndTime: null,
|
||||
demandServiceDay: null,
|
||||
afterSalesTechnician: null,
|
||||
serviceAddress: null,
|
||||
serviceAddressCity: null,
|
||||
serviceAddressArea: null,
|
||||
serviceAddressDetail: null,
|
||||
signIn: null,
|
||||
signInTime: null,
|
||||
signOut: null,
|
||||
signOutTime: null,
|
||||
isSolveTheProblem: 0,
|
||||
scenePhoto: null,
|
||||
customerSatisfaction: null,
|
||||
satisfactionValue: null,
|
||||
customerCommentsAndDemands: null,
|
||||
submitter: null,
|
||||
submitTime: null,
|
||||
createBy: null,
|
||||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
processState: null,
|
||||
currentNode: null,
|
||||
currentPersonInCharge: null
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "添加服务工单";
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
const id = row.id || this.ids
|
||||
getTicket(id).then(response => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改服务工单";
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.id != null) {
|
||||
updateTicket(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addTicket(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除服务工单编号为"' + ids + '"的数据项?').then(function() {
|
||||
return delTicket(ids);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('system/ticket/export', {
|
||||
...this.queryParams
|
||||
}, `ticket_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
@ -502,6 +502,7 @@ import { getToken } from '@/utils/auth'
|
||||
import { treeselect } from '@/api/system/dept'
|
||||
import Treeselect from '@riophae/vue-treeselect'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
import {getTenant} from "../../../utils/auth";
|
||||
|
||||
export default {
|
||||
name: 'User',
|
||||
@ -556,7 +557,8 @@ export default {
|
||||
// 是否更新已经存在的用户数据
|
||||
updateSupport: 0,
|
||||
// 设置上传的请求头部
|
||||
headers: { Authorization: 'Bearer ' + getToken() },
|
||||
// headers: { Authorization: 'Bearer ' + getToken() },
|
||||
headers: { tenant: getTenant() ,Authorization: 'Bearer ' + getToken() },
|
||||
// 上传的地址
|
||||
url: process.env.VUE_APP_BASE_API + '/system/user/importData',
|
||||
},
|
||||
|
1329
sql/rycrm-tenant-1-zzw-20240306.sql
Normal file
1329
sql/rycrm-tenant-1-zzw-20240306.sql
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user