修改客户订单

master
username 12 months ago
parent 201630f861
commit 3f110c11bd

@ -3,6 +3,7 @@ package com.bs.df.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.bs.common.core.domain.entity.SysUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
@ -146,7 +147,7 @@ public class DfBizClueController extends BaseController {
//用户昵称
if(Validator.isNotEmpty(dfBizClue.getNickName())){
queryWrapper.eq(DfBizClue::getNickName,dfBizClue.getNickName());
queryWrapper.like(DfBizClue::getNickName,dfBizClue.getNickName());
}
//浏览时间
@ -154,6 +155,15 @@ public class DfBizClueController extends BaseController {
queryWrapper.eq(DfBizClue::getBrowseTime,dfBizClue.getBrowseTime());
}
if(Validator.isNotEmpty(dfBizClue.getParams().get("beginTime"))){
queryWrapper.ge(DfBizClue::getBrowseTime,dfBizClue.getParams().get("beginTime"));
}
if(Validator.isNotEmpty(dfBizClue.getParams().get("endTime"))){
queryWrapper.le(DfBizClue::getBrowseTime,dfBizClue.getParams().get("endTime"));
}
//创建部门
if(Validator.isNotEmpty(dfBizClue.getCreateDept())){
queryWrapper.eq(DfBizClue::getCreateDept,dfBizClue.getCreateDept());

@ -1,8 +1,14 @@
package com.bs.df.controller;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
import com.bs.common.core.domain.entity.SysUser;
import com.bs.df.domain.DfBroker;
import com.bs.df.service.IDfBrokerService;
import com.bs.system.service.ISysUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
@ -39,6 +45,11 @@ import javax.annotation.Resource;
public class DfOrderController extends BaseController {
@Resource
private IDfOrderService dfOrderService;
@Resource
private IDfBrokerService dfBrokerService;
@Resource
private ISysUserService userService;
/**
*
@ -50,6 +61,23 @@ public class DfOrderController extends BaseController {
LambdaQueryWrapper<DfOrder> queryWrapper = new LambdaQueryWrapper();
condition(queryWrapper,dfOrder);
List<DfOrder> list = dfOrderService.list(queryWrapper);
List<SysUser> userList = userService.list();
List<DfBroker> brokerList = dfBrokerService.list();
// 将用户列表转换为 Map以 userId 为键userName 为值
Map<Long, String> userIdToNameMap = userList.stream()
.collect(Collectors.toMap(SysUser::getUserId, SysUser::getUserName));
Map<Long, String> brokerToNameMap = brokerList.stream()
.collect(Collectors.toMap(DfBroker::getId, DfBroker::getBrokerName));
list.forEach(order -> {
String userName = userIdToNameMap.get(order.getUserId());
String brokerName = brokerToNameMap.get(order.getBrokerId());
if (userName != null) {
order.setUserName(userName);
}
if (brokerName != null) {
order.setBrokerName(brokerName);
}
});
return getDataTable(list);
}
@ -75,6 +103,37 @@ public class DfOrderController extends BaseController {
LambdaQueryWrapper<DfOrder> queryWrapper = new LambdaQueryWrapper();
condition(queryWrapper,dfOrder);
List<DfOrder> list = dfOrderService.list(queryWrapper);
List<SysUser> userList = userService.list();
List<DfBroker> brokerList = dfBrokerService.list();
// 将用户列表转换为 Map以 userId 为键userName 为值
Map<Long, String> userIdToNameMap = userList.stream()
.collect(Collectors.toMap(SysUser::getUserId, SysUser::getUserName));
Map<Long, String> brokerToNameMap = brokerList.stream()
.collect(Collectors.toMap(DfBroker::getId, DfBroker::getBrokerName));
list.forEach(order -> {
String userName = userIdToNameMap.get(order.getUserId());
String brokerName = brokerToNameMap.get(order.getBrokerId());
if (userName != null) {
order.setUserName(userName);
}
if (brokerName != null) {
order.setBrokerName(brokerName);
}
if (Validator.isNotNull(order.getStaus())) {
if ("0".equals(order.getStaus())) {
order.setStaus("未完成");
} else if ("1".equals(order.getStaus())) {
order.setStaus("已完成");
}
}
if (Validator.isNotNull(order.getIsFirst())) {
if ("0".equals(order.getIsFirst())) {
order.setIsFirst("否");
} else if ("1".equals(order.getIsFirst())) {
order.setIsFirst("是");
}
}
});
ExcelUtil<DfOrder> util = new ExcelUtil<DfOrder>(DfOrder. class);
util.exportExcel(response, list, "客户订单数据");
}
@ -118,6 +177,12 @@ public class DfOrderController extends BaseController {
return toAjax(dfOrderService.removeBatchByIds(ids));
}
@ApiOperation("获取单据编号")
@GetMapping("/getBillNo/{billPrefix}")
public AjaxResult getBillNo(@PathVariable("billPrefix") String billPrefix) {
String billNumber = dfOrderService.getBillNumber(billPrefix);
return AjaxResult.success("获取成功", billNumber);
}
/**
*
*/
@ -131,7 +196,7 @@ public class DfOrderController extends BaseController {
//订单号
if(Validator.isNotEmpty(dfOrder.getOrderNo())){
queryWrapper.eq(DfOrder::getOrderNo,dfOrder.getOrderNo());
queryWrapper.like(DfOrder::getOrderNo,dfOrder.getOrderNo());
}
//客户id
@ -151,7 +216,7 @@ public class DfOrderController extends BaseController {
//产品名称
if(Validator.isNotEmpty(dfOrder.getProductName())){
queryWrapper.eq(DfOrder::getProductName,dfOrder.getProductName());
queryWrapper.like(DfOrder::getProductName,dfOrder.getProductName());
}
//提交时间
@ -159,6 +224,14 @@ public class DfOrderController extends BaseController {
queryWrapper.eq(DfOrder::getSubmitTime,dfOrder.getSubmitTime());
}
if(Validator.isNotEmpty(dfOrder.getSubmitTimeBegin())){
queryWrapper.ge(DfOrder::getSubmitTime,dfOrder.getSubmitTimeBegin());
}
if(Validator.isNotEmpty(dfOrder.getSubmitTimeEnd())){
queryWrapper.le(DfOrder::getSubmitTime,dfOrder.getSubmitTimeEnd());
}
//申请额(万元)
if(Validator.isNotEmpty(dfOrder.getApplyAmount())){
queryWrapper.eq(DfOrder::getApplyAmount,dfOrder.getApplyAmount());

@ -1,8 +1,10 @@
package com.bs.df.controller;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.bs.df.domain.DfProductPoster;
import com.bs.df.utils.HtmlUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -116,6 +118,26 @@ public class DfProductArticleController extends BaseController {
return toAjax(dfProductArticleService.updateById(dfProductArticle));
}
/**
*
*/
@ApiOperation("修改产品文章状态")
@Log(title = "修改产品文章状态", businessType = BusinessType.DELETE)
@PutMapping("/changeStatus")
public AjaxResult changeStatus(@RequestBody DfProductArticle dfProductArticle) {
Long[] ids = dfProductArticle.getIds();
String status = dfProductArticle.getStatus();
List<DfProductArticle> dfProductArticles = new ArrayList<>();
for (Long id : ids) {
DfProductArticle dfProductArticlerNew = new DfProductArticle();
dfProductArticlerNew.setId(id);
dfProductArticlerNew.setStatus(status);
dfProductArticles.add(dfProductArticlerNew);
}
return toAjax(dfProductArticleService.updateBatchById(dfProductArticles));
}
/**
*
*/

@ -1,9 +1,6 @@
package com.bs.df.controller;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
@ -256,6 +253,28 @@ public class DfProductInfoController extends BaseController {
return toAjax(dfProductInfoService.removeBatchByIds(ids));
}
/**
*
*/
@ApiOperation("修改产品状态")
@Log(title = "修改产品状态", businessType = BusinessType.DELETE)
@PutMapping("/changeStatus")
public AjaxResult changeStatus(@RequestBody DfProductInfo dfProductInfo) {
Long[] ids = dfProductInfo.getIds();
String status = dfProductInfo.getStatus();
List<DfProductInfo> dfProductInfos = new ArrayList<>();
for (Long id : ids) {
DfProductInfo dfProductInfoNew = new DfProductInfo();
dfProductInfoNew.setId(id);
dfProductInfoNew.setStatus(status);
dfProductInfos.add(dfProductInfoNew);
}
return toAjax(dfProductInfoService.updateBatchById(dfProductInfos));
}
/**
*
*/

@ -1,8 +1,10 @@
package com.bs.df.controller;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.bs.df.domain.DfProductArticle;
import com.bs.df.utils.HtmlUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -115,6 +117,25 @@ public class DfProductMomentController extends BaseController {
return toAjax(dfProductMomentService.updateById(dfProductMoment));
}
/**
*
*/
@ApiOperation("修改产品朋友圈状态")
@Log(title = "修改产品朋友圈状态", businessType = BusinessType.DELETE)
@PutMapping("/changeStatus")
public AjaxResult changeStatus(@RequestBody DfProductMoment dfProductMoment) {
Long[] ids = dfProductMoment.getIds();
String status = dfProductMoment.getStatus();
List<DfProductMoment> dfProductMoments = new ArrayList<>();
for (Long id : ids) {
DfProductMoment dfProductMomentNew = new DfProductMoment();
dfProductMomentNew.setId(id);
dfProductMomentNew.setStatus(status);
dfProductMoments.add(dfProductMomentNew);
}
return toAjax(dfProductMomentService.updateBatchById(dfProductMoments));
}
/**
*
*/

@ -1,5 +1,6 @@
package com.bs.df.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -123,6 +124,25 @@ public class DfProductPosterController extends BaseController {
return toAjax(dfProductPosterService.updateById(dfProductPoster));
}
/**
*
*/
@ApiOperation("修改产品海报状态")
@Log(title = "修改产品海报状态", businessType = BusinessType.DELETE)
@PutMapping("/changeStatus")
public AjaxResult changeStatus(@RequestBody DfProductPoster dfProductPoster) {
Long[] ids = dfProductPoster.getIds();
String status = dfProductPoster.getStatus();
List<DfProductPoster> dfProductPosters = new ArrayList<>();
for (Long id : ids) {
DfProductPoster dfProductPosterNew = new DfProductPoster();
dfProductPosterNew.setId(id);
dfProductPosterNew.setStatus(status);
dfProductPosters.add(dfProductPosterNew);
}
return toAjax(dfProductPosterService.updateBatchById(dfProductPosters));
}
/**
*
*/

@ -39,19 +39,29 @@ public class DfOrder extends BaseEntity{
/** 客户id */
@Excel(name = "客户id")
//@Excel(name = "客户id")
@ApiModelProperty(value = "客户id")
private Long userId;
/** 客户id */
@Excel(name = "客户")
@TableField(exist = false)
private String userName;
/** 经纪id */
@Excel(name = "经纪id")
//@Excel(name = "经纪id")
@ApiModelProperty(value = "经纪id")
private Long brokerId;
@Excel(name = "代理商名称")
@TableField(exist = false)
private String brokerName;
/** 产品id */
@Excel(name = "产品id")
//@Excel(name = "产品id")
@ApiModelProperty(value = "产品id")
private Long productId;
@ -122,6 +132,14 @@ public class DfOrder extends BaseEntity{
@ApiModelProperty(value = "备注")
private String remark;
@JsonFormat(pattern = "yyyy-MM-dd")
@TableField(exist = false)
private Date submitTimeBegin;
@JsonFormat(pattern = "yyyy-MM-dd")
@TableField(exist = false)
private Date submitTimeEnd;

@ -80,7 +80,8 @@ public class DfProductArticle extends BaseEntity{
@TableField(exist = false)
private String publishTimeEnd;
@TableField(exist = false)
private Long[] ids;
}

@ -162,9 +162,8 @@ public class DfProductInfo extends BaseEntity{
@TableField(exist = false)
private Long brokerId;
@TableField(exist = false)
private Long[] ids;

@ -65,7 +65,8 @@ public class DfProductMoment extends BaseEntity{
@ApiModelProperty(value = "备注")
private String remark;
@TableField(exist = false)
private Long[] ids;
}

@ -75,7 +75,8 @@ public class DfProductPoster extends BaseEntity{
@ApiModelProperty(value = "备注")
private String remark;
@TableField(exist = false)
private Long[] ids;
}

@ -10,5 +10,10 @@ import com.bs.df.domain.DfOrder;
* @date 2024-04-06
*/
public interface IDfOrderService extends MPJBaseService<DfOrder>{
/**
* ++RK202310010001
* @param billPrefix
* @return billPrefix+
*/
public String getBillNumber(String billPrefix);
}

@ -1,11 +1,18 @@
package com.bs.df.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.bs.common.utils.DateUtils;
import com.bs.common.utils.StringUtils;
import com.bs.df.mapper.DfOrderMapper;
import com.bs.df.domain.DfOrder;
import com.bs.df.service.IDfOrderService;
import com.github.yulichang.base.MPJBaseServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
/**
* Service
*
@ -15,5 +22,23 @@ import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional(rollbackFor = Exception.class)
public class DfOrderServiceImpl extends MPJBaseServiceImpl<DfOrderMapper, DfOrder> implements IDfOrderService {
@Resource
private IDfOrderService dfOrderService;
@Override
public String getBillNumber(String billPrefix) {
String billNo = "";
if (StringUtils.isBlank(billPrefix)) {
billPrefix = "DD";
}
String billDate = DateUtils.dateTimeNow("yyyyMMdd");
List<DfOrder> lsBill = dfOrderService.list(new LambdaQueryWrapper<DfOrder>().like(DfOrder::getOrderNo, billPrefix + billDate)
.orderByDesc(DfOrder::getId));
if (lsBill.size() == 0) {
billNo = billPrefix + billDate + String.format("%04d", 1);
return billNo;
}
Long id = lsBill.get(0).getId();
billNo = billPrefix + billDate + String.format("%04d", id + 1);
return billNo;
}
}

@ -14,14 +14,14 @@ import com.bs.common.utils.SecurityUtils;
import com.bs.common.utils.StringUtils;
import com.bs.common.utils.poi.ExcelUtil;
import com.bs.df.domain.DfBroker;
import com.bs.df.domain.DfUserBroker;
import com.bs.df.service.IDfBrokerService;
import com.bs.df.service.IDfUserBrokerService;
import com.bs.df.utils.HtmlUtils;
import com.bs.system.domain.DfArea;
import com.bs.system.domain.SysUserRole;
import com.bs.system.mapper.SysUserRoleMapper;
import com.bs.system.service.ISysDeptService;
import com.bs.system.service.ISysPostService;
import com.bs.system.service.ISysRoleService;
import com.bs.system.service.ISysUserService;
import com.bs.system.service.*;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
@ -61,6 +61,13 @@ public class SysUserController extends BaseController {
@Resource
private IDfBrokerService dfBrokerService;
@Resource
private IDfUserBrokerService dfUserBrokerService;
@Resource
private IDfAreaService dfAreaService;
/**
*
*/
@ -74,7 +81,9 @@ public class SysUserController extends BaseController {
@GetMapping("/listByType")
public TableDataInfo listByType(SysUser user) {
startPage();
if (!"1".equals(user.getSelectAll())) {
startPage();
}
LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
if (user.getDeptIds()!=null) {
wrapper.in(SysUser::getDeptId, user.getDeptIds());
@ -82,13 +91,19 @@ public class SysUserController extends BaseController {
condition(wrapper,user);
List<SysUser> list = userService.list(wrapper);
List<DfBroker> dfBrokers = dfBrokerService.list();
List<DfArea> dfAreas = dfAreaService.list();
Map<Long, String> map = dfBrokers.stream().collect(Collectors.toMap(DfBroker::getId, DfBroker::getBrokerName));
Map<String, String> mapByArea = dfAreas.stream().collect(Collectors.toMap(DfArea::getAreaId, DfArea::getName));
for (SysUser sysUser : list) {
sysUser.setUserDesc(HtmlUtils.stripHtmlTags(sysUser.getUserDesc()));
String deptName = map.get(sysUser.getDeptId());
String cityName = mapByArea.get(sysUser.getCity());
if (Validator.isNotEmpty(deptName)) {
sysUser.setDeptName(deptName);
}
if (Validator.isNotEmpty(cityName)) {
sysUser.setCity(cityName);
}
}
return getDataTable(list);
}
@ -103,15 +118,23 @@ public class SysUserController extends BaseController {
condition(wrapper,user);
List<SysUser> list = userService.list(wrapper);
List<DfBroker> dfBrokers = dfBrokerService.list();
List<DfArea> dfAreas = dfAreaService.list();
Map<Long, String> map = dfBrokers.stream().collect(Collectors.toMap(DfBroker::getId, DfBroker::getBrokerName));
Map<String, String> mapByArea = dfAreas.stream().collect(Collectors.toMap(DfArea::getAreaId, DfArea::getName));
for (SysUser sysUser : list) {
sysUser.setUserDesc(HtmlUtils.stripHtmlTags(sysUser.getUserDesc()));
String deptName = map.get(sysUser.getDeptId());
String cityName = mapByArea.get(sysUser.getCity());
if (Validator.isNotEmpty(deptName)) {
sysUser.setDeptName(deptName);
}
if (Validator.isNotEmpty(cityName)) {
sysUser.setCity(cityName);
}
if ("jj".equals(sysUser.getUserType())) {
sysUser.setUserType("经济");
} else if ("kh".equals(sysUser.getUserType())) {
sysUser.setUserType("客户");
}
}
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
@ -194,7 +217,14 @@ public class SysUserController extends BaseController {
user.setIsTenantAdmin("N");
user.setCreateBy(getUsername());
user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
return toAjax(userService.insertUser(user));
int i = userService.insertUser(user);
if ("kh".equals(user.getUserType())) {
DfUserBroker dfUserBroker = new DfUserBroker();
dfUserBroker.setUserId(user.getUserId());
dfUserBroker.setBrokerId(user.getDeptId());
dfUserBrokerService.save(dfUserBroker);
}
return toAjax(i);
}
/**
@ -214,6 +244,14 @@ public class SysUserController extends BaseController {
return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
}
user.setUpdateBy(getUsername());
if ("kh".equals(user.getUserType())) {
LambdaQueryWrapper<DfUserBroker> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DfUserBroker::getUserId,user.getUserId());
List<DfUserBroker> list = dfUserBrokerService.list(queryWrapper);
DfUserBroker dfUserBroker = list.get(0);
dfUserBroker.setBrokerId(user.getDeptId());
dfUserBrokerService.updateById(dfUserBroker);
}
return toAjax(userService.updateUser(user));
}
@ -227,6 +265,9 @@ public class SysUserController extends BaseController {
if (ArrayUtils.contains(userIds, getUserId())) {
return error("当前用户不能删除");
}
LambdaQueryWrapper<DfUserBroker> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(DfUserBroker::getUserId,userIds);
dfUserBrokerService.remove(queryWrapper);
return toAjax(userService.deleteUserByIds(userIds));
}
@ -318,6 +359,21 @@ public class SysUserController extends BaseController {
queryWrapper.eq(SysUser::getUserType,sysUser.getUserType());
}
//身份证号
if(Validator.isNotEmpty(sysUser.getIdentityCard())){
queryWrapper.like(SysUser::getIdentityCard,sysUser.getIdentityCard());
}
//城市
if(Validator.isNotEmpty(sysUser.getCity())){
queryWrapper.eq(SysUser::getCity,sysUser.getCity());
}
//注册时间
if(Validator.isNotEmpty(sysUser.getRegistrationTime())){
queryWrapper.eq(SysUser::getRegistrationTime,sysUser.getRegistrationTime());
}
//用户邮箱
if(Validator.isNotEmpty(sysUser.getEmail())){
queryWrapper.like(SysUser::getEmail,sysUser.getEmail());

@ -9,6 +9,7 @@ import com.bs.common.annotation.Excel.Type;
import com.bs.common.annotation.Excels;
import com.bs.common.core.domain.BaseEntity;
import com.bs.common.xss.Xss;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -52,6 +53,25 @@ public class SysUser extends BaseEntity
@ApiModelProperty(value = "用户类型")
private String userType;
/** 身份证号 */
@Excel(name = "身份证号")
@ApiModelProperty(value = "身份证号")
private String identityCard;
/** 城市 */
@Excel(name = "城市")
@ApiModelProperty(value = "城市")
private String city;
/** 注册时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "注册时间", width = 30, dateFormat = "yyyy-MM-dd")
@ApiModelProperty(value = "注册时间")
private Date registrationTime;
@Excel(name = "简介")
@ApiModelProperty(value = "简介")
private String userDesc;
@ -155,5 +175,9 @@ public class SysUser extends BaseEntity
@TableField(exist = false)
private String[] deptIds;
//1为查询所有
@TableField(exist = false)
private String selectAll;
}

@ -35,6 +35,16 @@ export function addArticle(data) {
})
}
// 修改产品文章
export function changeStatusByArticle(data) {
return request({
url: '/article/article/changeStatus',
method: 'put',
data: data
})
}
// 修改产品文章
export function updateArticle(data) {
return request({

@ -35,6 +35,15 @@ export function addMoment(data) {
})
}
// 修改产品朋友圈
export function changeStatusByMoment(data) {
return request({
url: '/moment/moment/changeStatus',
method: 'put',
data: data
})
}
// 修改产品朋友圈
export function updateMoment(data) {
return request({

@ -60,3 +60,11 @@ export function exportOrder(query) {
params: query
})
}
export function getBillNumber(billPrefix) {
return request({
url: '/order/order/getBillNo/' + billPrefix,
method: 'get'
})
}

@ -35,6 +35,15 @@ export function addPoster(data) {
})
}
// 修改产品状态
export function changeStatusByPoster(data) {
return request({
url: '/poster/poster/changeStatus',
method: 'put',
data: data
})
}
// 修改产品海报
export function updatePoster(data) {
return request({

@ -44,6 +44,15 @@ export function updateInfo(data) {
})
}
// 修改产品状态
export function changeStatus(data) {
return request({
url: '/product/info/changeStatus',
method: 'put',
data: data
})
}
// 修改产品信息
export function editByBroker(data) {
return request({

@ -7,7 +7,7 @@
</template>
<script>
import { getBillNumber } from "@/api/bill/number";
import {pageListOrder, getOrder, delOrder, addOrder, getBillNumber} from "@/api/order/order";
export default {
name: 'BillNumberInput',
props: {
@ -67,4 +67,4 @@ export default {
<style>
</style>
</style>

@ -97,6 +97,26 @@
>导出
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
size="mini"
@click="shelves"
v-hasPermi="['article:article:shelves']"
>上架
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
size="mini"
@click="offShelves"
v-hasPermi="['article:article:offShelves']"
>下架
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -241,7 +261,8 @@
</template>
<script>
import {pageListArticle, getArticle, delArticle, addArticle, updateArticle} from "@/api/article/article";
import {pageListArticle, getArticle, delArticle, addArticle, updateArticle,changeStatusByArticle} from "@/api/article/article";
import {changeStatus} from "@/api/product/info";
export default {
name: "Article",
@ -313,6 +334,28 @@ export default {
this.getList();
},
methods: {
offShelves(){
const ids = this.ids;
let param = {
ids: ids,
status: "0"
}
changeStatusByArticle(param).then(response => {
this.getList();
this.$modal.msgSuccess("修改成功");
});
},
shelves(){
const ids = this.ids;
let param = {
ids: ids,
status: "1"
}
changeStatusByArticle(param).then(response => {
this.getList();
this.$modal.msgSuccess("修改成功");
});
},
/** 查询产品文章列表 */
getList() {
this.loading = true;

@ -1,38 +1,39 @@
<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="用户id" prop="userId">
<el-input
v-model="queryParams.userId"
placeholder="请输入用户id"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="用户昵称" prop="nickName">
<el-input
v-model="queryParams.nickName"
placeholder="请输入用户昵称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="浏览时间" prop="browseTime">
<el-date-picker clearable
v-model="queryParams.browseTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择浏览时间">
</el-date-picker>
</el-form-item>
<el-form-item label="${comment}" prop="业务链接">
<el-input
v-model="queryParams.业务链接"
placeholder="请输入${comment}"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="数据类型" prop="dataType">
<el-select v-model="queryParams.dataType" placeholder="选择数据类型" clearable @keyup.enter.native="handleQuery">
<el-option v-for="dict in dict.type.data_type" :key="dict.value" :label="dict.label"
:value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="用户昵称" prop="nickName">
<el-input
v-model="queryParams.nickName"
placeholder="请输入用户昵称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="浏览时间" prop="browseTime">-->
<!-- <el-date-picker clearable-->
<!-- v-model="queryParams.browseTime"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="请选择浏览时间">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<el-form-item label="浏览时间">
<el-date-picker
v-model="dateRange"
style="width: 200px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</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>
@ -40,38 +41,41 @@
</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="['biz:clue: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="['biz:clue: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="['biz:clue:remove']"
>删除</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="mini"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['biz:clue: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="['biz:clue: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="['biz:clue:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button
type="warning"
@ -80,24 +84,28 @@
size="mini"
@click="handleExport"
v-hasPermi="['biz:clue:export']"
>导出</el-button>
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="clueList" @sort-change="handleSortChange" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="id" align="center" prop="id" sortable='custom' />
<el-table-column label="数据类型0客户1经纪" align="center" prop="dataType" sortable='custom' />
<el-table-column label="线索类型" align="center" prop="clueType" sortable='custom' />
<el-table-column label="用户id" align="center" prop="userId" sortable='custom' />
<el-table-column label="用户昵称" align="center" prop="nickName" sortable='custom' />
<el-table-column label="浏览时间" align="center" prop="browseTime" width="180" sortable='custom'>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.browseTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="${comment}" align="center" prop="业务链接" sortable='custom' />
<el-table v-loading="loading" :data="clueList" @sort-change="handleSortChange"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="数据类型" align="center" prop="dataType" sortable='custom'>
<template slot-scope="scope">
<dict-tag :options="dict.type.data_type" :value="scope.row.dataType"/>
</template>
</el-table-column>
<el-table-column label="线索类型" align="center" prop="clueType" sortable='custom'/>
<el-table-column label="用户昵称" align="center" prop="nickName" sortable='custom'/>
<el-table-column label="浏览时间" align="center" prop="browseTime" width="180" sortable='custom'>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.browseTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="${comment}" align="center" prop="业务链接" sortable='custom'/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
@ -106,14 +114,16 @@
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['biz:clue:edit']"
>修改</el-button>
>修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['biz:clue:remove']"
>删除</el-button>
>删除
</el-button>
</template>
</el-table-column>
</el-table>
@ -129,31 +139,31 @@
<!-- 添加或修改业务线索对话框 -->
<el-dialog :title="title" :visible.sync="open" width="70%" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-col :span="12">
<el-form-item label="用户id" prop="userId">
<el-input v-model="form.userId" placeholder="请输入用户id" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用户昵称" prop="nickName">
<el-input v-model="form.nickName" placeholder="请输入用户昵称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="浏览时间" prop="browseTime">
<el-date-picker clearable
v-model="form.browseTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择浏览时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="${comment}" prop="业务链接">
<el-input v-model="form." placeholder="请输入${comment}" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用户id" prop="userId">
<el-input v-model="form.userId" placeholder="请输入用户id"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用户昵称" prop="nickName">
<el-input v-model="form.nickName" placeholder="请输入用户昵称"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="浏览时间" prop="browseTime">
<el-date-picker clearable
v-model="form.browseTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择浏览时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="${comment}" prop="业务链接">
<el-input v-model="form." placeholder="请输入${comment}"/>
</el-form-item>
</el-col>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
@ -164,176 +174,179 @@
</template>
<script>
import { pageListClue, getClue, delClue, addClue, updateClue } from "@/api/biz/clue";
import {pageListClue, getClue, delClue, addClue, updateClue} from "@/api/biz/clue";
export default {
name: "Clue",
data() {
return {
//
loading: true,
//
ids: [],
//
names: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
// 线
clueList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
dataType: null,
clueType: null,
userId: null,
nickName: null,
browseTime: null,
业务链接: null
},
//
form: {},
//
rules: {
dataType: [
{ required: true, message: "数据类型0客户1经纪不能为空", trigger: "change" }
],
clueType: [
{ required: true, message: "线索类型不能为空", trigger: "change" }
],
userId: [
{ required: true, message: "用户id不能为空", trigger: "blur" }
],
nickName: [
{ required: true, message: "用户昵称不能为空", trigger: "blur" }
],
browseTime: [
{ required: true, message: "浏览时间不能为空", trigger: "blur" }
],
业务链接: [
{ required: true, message: "$comment不能为空", trigger: "blur" }
]
}
export default {
name: "Clue",
dicts: ["data_type"],
data() {
return {
dateRange: [],
//
loading: true,
//
ids: [],
//
names: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
// 线
clueList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
dataType: null,
clueType: null,
userId: null,
nickName: null,
browseTime: null,
业务链接: null
},
//
form: {},
//
rules: {
dataType: [
{required: true, message: "数据类型0客户1经纪不能为空", trigger: "change"}
],
clueType: [
{required: true, message: "线索类型不能为空", trigger: "change"}
],
userId: [
{required: true, message: "用户id不能为空", trigger: "blur"}
],
nickName: [
{required: true, message: "用户昵称不能为空", trigger: "blur"}
],
browseTime: [
{required: true, message: "浏览时间不能为空", trigger: "blur"}
],
业务链接: [
{required: true, message: "$comment不能为空", trigger: "blur"}
]
}
};
},
created() {
this.getList();
},
methods: {
/** 查询业务线索列表 */
getList() {
this.loading = true;
pageListClue(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
this.clueList = response.rows;
this.total = response.total;
this.loading = false;
}).catch(e => {
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
dataType: null,
clueType: null,
userId: null,
nickName: null,
browseTime: null,
业务链接: null
};
this.resetForm("form");
},
created() {
//
handleSortChange(col) {
this.$sortBy(col, this.queryParams);
this.getList();
},
methods: {
/** 查询业务线索列表 */
getList() {
this.loading = true;
pageListClue(this.queryParams).then(response => {
this.clueList = response.rows;
this.total = response.total;
this.loading = false;
}).catch(e => {
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
dataType: null,
clueType: null,
userId: null,
nickName: null,
browseTime: null,
业务链接: null
};
this.resetForm("form");
},
//
handleSortChange(col) {
this.$sortBy(col, this.queryParams);
this.getList();
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id);
this.names = selection.map(item => item.id);
this.single = selection.length!==1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id);
this.names = 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;
getClue(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "添加业务线索";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getClue(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) {
updateClue(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addClue(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
this.title = "修改业务线索";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateClue(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addClue(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
const names = row.id || this.names;
this.$modal.confirm('是否确认删除业务线索为"' + names + '"的数据项?').then(function() {
return delClue(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('biz/clue/export', {
...this.queryParams
}, `clue_${new Date().getTime()}.xlsx`)
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
const names = row.id || this.names;
this.$modal.confirm('是否确认删除业务线索为"' + names + '"的数据项?').then(function () {
return delClue(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
});
},
/** 导出按钮操作 */
handleExport() {
this.download('biz/clue/export', {
...this.queryParams
}, `clue_${new Date().getTime()}.xlsx`)
}
}
};
};
</script>

@ -0,0 +1,782 @@
<template>
<div ref="list">
<el-form :model="queryParams" ref="queryForm" size="mini" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="用户名称" prop="userName">
<el-input
v-model="queryParams.userName"
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="status">
<el-select
v-model="queryParams.status"
placeholder="用户状态"
clearable
>
<el-option
v-for="dict in dict.type.sys_normal_disable"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker
v-model="dateRange"
style="width: 200px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</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"
:disabled="!deptId"
v-hasPermi="['system:user: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:user: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:user: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:user:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="userList" @sort-change="handleSortChange" :height="tableHeight - 150"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center"/>
<el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible"
:show-overflow-tooltip="true" fixed="left"/>
<el-table-column label="所属代理商" align="center" prop="deptName" :show-overflow-tooltip="true" width="120"/>
<el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible"/>
<el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible"
:show-overflow-tooltip="true"/>
<el-table-column label="身份证号" align="center" prop="identityCard" />
<el-table-column label="城市" align="center" prop="city" />
<el-table-column label="注册时间" align="center" prop="registrationTime" width="180" >
<template slot-scope="scope">
<span>{{ parseTime(scope.row.registrationTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="简介" align="center" prop="userDesc" show-overflow-tooltip/>
<el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible"
width="120"/>
<el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">
<template slot-scope="scope">
<el-switch
v-model="scope.row.status"
active-value="0"
inactive-value="1"
@change="handleStatusChange(scope.row)"
></el-switch>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="160">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
width="160"
class-name="small-padding fixed-width"
fixed="right"
>
<template slot-scope="scope" v-if="scope.row.userId !== 1&&scope.row.isTenantAdmin !=='Y'">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:user:edit']"
>修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:user:remove']"
>删除
</el-button>
<el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)"
v-hasPermi="['system:user:resetPwd', 'system:user:edit']">
<el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="handleResetPwd" icon="el-icon-key"
v-hasPermi="['system:user:resetPwd']">重置密码
</el-dropdown-item>
<el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check"
v-hasPermi="['system:user:edit']">分配角色
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<pagination
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改代理商经纪对话框 -->
<el-dialog :title="title" :visible.sync="open" width="70%" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="12">
<el-form-item label="用户昵称" prop="nickName">
<el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="归属部门" prop="deptId">
<treeselect v-model="form.deptId" :options="brokerList" props="lable" :show-count="true" :defaultExpandLevel="Infinity"
placeholder="请选择归属部门" :normalizer="tenantIdnormalizer" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="手机号码" prop="phonenumber">
<el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="邮箱" prop="email">
<el-input v-model="form.email" placeholder="请输入邮箱" maxlength="50"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item v-if="form.userId == undefined" label="用户名称" prop="userName">
<el-input v-model="form.userName" placeholder="请输入用户名称" maxlength="30"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item v-if="form.userId == undefined" label="用户密码" prop="password">
<el-input v-model="form.password" placeholder="请输入用户密码" type="password" maxlength="20" show-password/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="用户性别">
<el-select v-model="form.sex" placeholder="请选择性别" style="width: 100%">
<el-option
v-for="dict in dict.type.sys_user_sex"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="状态">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in dict.type.sys_normal_disable"
:key="dict.value"
:label="dict.value"
>{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="岗位">
<el-select v-model="form.postIds" multiple placeholder="请选择岗位" style="width: 100%">
<el-option
v-for="item in postOptions"
:key="item.postId"
:label="item.postName"
:value="item.postId"
:disabled="item.status == 1"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="角色">
<el-select v-model="form.roleIds" multiple placeholder="请选择角色" style="width: 100%">
<el-option
v-for="item in roleOptions"
:key="item.roleId"
:label="item.roleName"
:value="item.roleId"
:disabled="item.status == 1"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="身份证号" prop="identityCard">
<el-input v-model="form.identityCard" placeholder="请输入身份证号" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="城市" prop="city">
<treeselect v-model="form.city" :options="cityOptions" props="lable" :show-count="true"
placeholder="选择城市" :normalizer="citynormalizer" />
<!-- <el-input v-model="form.city" placeholder="请输入城市" />-->
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="注册时间" prop="registrationTime" >
<el-date-picker clearable
style="width: 100%"
v-model="form.registrationTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择注册时间">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="简介" prop="userDesc">
<editor v-model="form.userDesc" :min-height="192"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
</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="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import AutoTableHeight from '@/views/broker/AutoTableHeight';
import {listBrokerByTree} from "@/api/broker/broker";
import {listArea} from "@/api/system/area";
import {
listUserByType,
listUser,
getUser,
delUser,
addUser,
updateUser,
resetUserPwd,
changeUserStatus,
deptTreeSelect,
} from "@/api/system/user";
import {getToken} from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
name: "BrokerUser",
mixins: [AutoTableHeight],
dicts: ['sys_normal_disable', 'sys_user_sex'],
components: {Treeselect},
props: {
rowData: {
type: Object,
default: () => ({})
}
},
data() {
return {
cityOptions: [],
brokerList: [],
deptId: "",
rowDataNew: {},
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
userList: null,
//
title: "",
//
deptOptions: undefined,
//
open: false,
//
deptName: undefined,
//
initPassword: undefined,
//
dateRange: [],
//
postOptions: [],
//
roleOptions: [],
//
form: {},
defaultProps: {
children: "children",
label: "label"
},
//
upload: {
//
open: false,
//
title: "",
//
isUploading: false,
//
updateSupport: 0,
//
headers: {Authorization: "Bearer " + getToken()},
//
url: process.env.VUE_APP_BASE_API + "/system/user/importData"
},
//
queryParams: {
pageNum: 1,
pageSize: 10,
userName: undefined,
phonenumber: undefined,
status: undefined,
deptId: undefined,
userType: "kh",
deptIds: [],
},
//
columns: [
{key: 0, label: `用户编号`, visible: true},
{key: 1, label: `用户名称`, visible: true},
{key: 2, label: `用户昵称`, visible: true},
{key: 3, label: `部门`, visible: true},
{key: 4, label: `手机号码`, visible: true},
{key: 5, label: `状态`, visible: true},
{key: 6, label: `创建时间`, visible: true}
],
//
rules: {
userName: [
{required: true, message: "用户名称不能为空", trigger: "blur"},
{min: 2, max: 20, message: '用户名称长度必须介于 2 和 20 之间', trigger: 'blur'}
],
nickName: [
{required: true, message: "用户昵称不能为空", trigger: "blur"}
],
password: [
{required: true, message: "用户密码不能为空", trigger: "blur"},
{min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur'}
],
email: [
{
type: "email",
message: "请输入正确的邮箱地址",
trigger: ["blur", "change"]
}
],
phonenumber: [
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号码",
trigger: "blur"
}
]
}
};
},
mounted() {
// rowData row
this.rowDataNew = this.rowData;
},
watch: {
// rowData
rowData: function (newVal, oldVal) {
// rowData row
this.rowDataNew = newVal;
this.deptId = this.rowDataNew.id;
const allIds = this.getAllIds(this.rowDataNew);
this.queryParams.deptIds = allIds;
this.getList();
},
//
deptName(val) {
this.$refs.tree.filter(val);
},
},
created() {
this.getList();
this.getCity();
// this.getDeptTree();
this.getbrokerList();
this.getConfigKey("sys.user.initPassword").then(response => {
this.initPassword = response.msg;
});
},
methods: {
citynormalizer(node, instanceId) {
if (node.children && !node.children.length) {
delete node.children
}
return {
id: node.areaId,
label: node.name,
children: node.children
}
},
getCity() {
listArea().then(response => {
this.cityOptions = this.buildTree(response.data);
});
},
buildTree(data) {
let tree = [];
let map = {};
data.forEach(node => {
map[node.areaId] = node;
node.children = [];
});
//
if (map[0]) {
tree.push(map[0]);
delete map[0];
}
data.forEach(node => {
if (node.parentId != 0) {
const parent = map[node.parentId];
if (parent) {
parent.children.push(node);
}
} else if (node.areaId != 0) {
tree.push(node);
}
});
return tree;
},
tenantIdnormalizer(node, instanceId) {
if (node.children && !node.children.length) {
delete node.children
}
return {
id: node.id,
label: node.brokerName,
children: node.children
}
},
getbrokerList() {
listBrokerByTree().then(response => {
this.brokerList = response.data;
});
},
getAllIds(data) {
let ids = [];
// id
ids.push(data.id);
// children children
if (data.children && Array.isArray(data.children)) {
// children
data.children.forEach(child => {
// getAllIds id ids
ids = ids.concat(this.getAllIds(child));
});
}
return ids;
},
handleSortChange(col) {
this.$sortBy(col, this.queryParams);
this.getList();
},
/** 查询用户列表 */
getList() {
this.loading = true;
listUserByType(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
this.userList = response.rows;
this.total = response.total;
this.loading = false;
}
);
},
/** 查询部门下拉树结构 */
getDeptTree() {
deptTreeSelect().then(response => {
this.deptOptions = response.data;
});
},
//
filterNode(value, data) {
if (!value) return true;
return data.label.indexOf(value) !== -1;
},
//
handleNodeClick(data) {
this.queryParams.deptId = data.id;
this.handleQuery();
},
//
handleStatusChange(row) {
let text = row.status === "0" ? "启用" : "停用";
this.$modal.confirm('确认要"' + text + '""' + row.userName + '"用户吗?').then(function () {
return changeUserStatus(row.userId, row.status);
}).then(() => {
this.$modal.msgSuccess(text + "成功");
}).catch(function () {
row.status = row.status === "0" ? "1" : "0";
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
userId: undefined,
deptId: undefined,
userName: undefined,
nickName: undefined,
password: undefined,
phonenumber: undefined,
email: undefined,
sex: undefined,
status: "0",
remark: undefined,
postIds: [],
roleIds: [],
identityCard: null,
city: null,
registrationTime: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.userId);
this.single = selection.length != 1;
this.multiple = !selection.length;
},
//
handleCommand(command, row) {
switch (command) {
case "handleResetPwd":
this.handleResetPwd(row);
break;
case "handleAuthRole":
this.handleAuthRole(row);
break;
default:
break;
}
},
/** 新增按钮操作 */
handleAdd() {
this.getbrokerList();
this.reset();
getUser().then(response => {
this.postOptions = response.posts;
this.roleOptions = response.roles;
this.open = true;
this.title = "添加用户";
this.form.deptId = this.deptId;
this.form.userType = "kh"
this.form.password = this.initPassword;
this.form.registrationTime = new Date();
});
},
/** 修改按钮操作 */
handleUpdate(row) {
this.getbrokerList();
this.reset();
const userId = row.userId || this.ids;
getUser(userId).then(response => {
this.form = response.data;
this.postOptions = response.posts;
this.roleOptions = response.roles;
this.$set(this.form, "postIds", response.postIds);
this.$set(this.form, "roleIds", response.roleIds);
this.open = true;
this.title = "修改用户";
this.form.password = "";
});
},
/** 重置密码按钮操作 */
handleResetPwd(row) {
this.$prompt('请输入"' + row.userName + '"的新密码', "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
closeOnClickModal: false,
inputPattern: /^.{5,20}$/,
inputErrorMessage: "用户密码长度必须介于 5 和 20 之间"
}).then(({value}) => {
resetUserPwd(row.userId, value).then(response => {
this.$modal.msgSuccess("修改成功,新密码是:" + value);
});
}).catch(() => {
});
},
/** 分配角色操作 */
handleAuthRole: function (row) {
const userId = row.userId;
this.$router.push("/system/user-auth/role/" + userId);
},
/** 提交按钮 */
submitForm: function () {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.userId != undefined) {
updateUser(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addUser(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const userIds = row.userId || this.ids;
this.$modal.confirm('是否确认删除用户编号为"' + userIds + '"的数据项?').then(function () {
return delUser(userIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
});
},
/** 导出按钮操作 */
handleExport() {
this.download('system/user/exportByType', {
...this.queryParams
}, `代理商经纪用户数据_${new Date().getTime()}.xlsx`)
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = "用户导入";
this.upload.open = true;
},
/** 下载模板操作 */
importTemplate() {
this.download('system/user/importTemplate', {}, `user_template_${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();
}
}
};
</script>

@ -0,0 +1,516 @@
<template>
<div ref="list">
<el-form :model="queryParams" ref="queryForm" size="mini" :inline="true" v-show="showSearch" label-width="95px" >
<el-form-item label="代理商名称" prop="brokerName">
<el-input
v-model="queryParams.brokerName"
placeholder="请输入代理商名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="负责人" prop="chargePerson">
<el-input
v-model="queryParams.chargePerson"
placeholder="请输入负责人"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="机构" prop="isInstitution">
<el-select style="width: 100%;" filterable v-model="queryParams.isInstitution" placeholder="请选择是否机构" clearable>
<el-option v-for="dict in dict.type.sys_yes_no" :key="dict.value" :label="dict.label"
:value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="staus">
<el-select style="width: 100%;" filterable v-model="queryParams.staus" placeholder="请选择状态" clearable>
<el-option v-for="dict in dict.type.df_broker_staus" :key="dict.value" :label="dict.label"
:value="dict.value"/>
</el-select>
</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:broker: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:broker: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:broker: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:broker:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="brokerList" @sort-change="handleSortChange" :height="tableHeight - 150"
@selection-change="handleSelectionChange" row-key="id" :highlight-current-row="true" @row-click="handleRowClick"
default-expand-all
:tree-props="{children: 'children', hasChildren: 'hasChildren'}">
<el-table-column type="selection" width="55" align="center"/>
<!-- <el-table-column label="id" align="center" prop="id" sortable='custom'/>-->
<!-- <el-table-column label="" prop="" width="200"/>-->
<el-table-column label="代理商名称" prop="brokerName" sortable='custom' width="200px" fixed="left"/>
<el-table-column label="地址" align="center" prop="brokerAddress" sortable='custom'/>
<el-table-column label="简介" align="center" prop="brokerDesc" sortable='custom' show-overflow-tooltip/>
<el-table-column label="负责人" align="center" prop="chargePerson" sortable='custom' width="90px"/>
<el-table-column label="联系电话" align="center" prop="contactPhone" sortable='custom' width="100px"/>
<el-table-column label="邮箱" align="center" prop="email" sortable='custom'/>
<el-table-column label="是否机构" align="center" prop="isInstitution" sortable='custom' width="100px">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isInstitution"/>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="staus" sortable='custom'>
<template slot-scope="scope">
<el-switch
v-model="scope.row.staus"
active-value="0"
inactive-value="1"
@change="handleStatusChange(scope.row)"
></el-switch>
</template>
</el-table-column>
<el-table-column label="显示顺序" align="center" prop="orderNum" sortable='custom' width="100px"/>
<el-table-column label="备注" align="center" prop="remark" sortable='custom' show-overflow-tooltip/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120px" fixed="right">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['broker:broker:edit']"
>修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['broker:broker:remove']"
>删除
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改代理商经纪对话框 -->
<el-dialog :title="title" :visible.sync="open" width="70%" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="12">
<el-form-item label="上级代理商" prop="parentId">
<treeselect v-model="form.parentId" :options="brokerOptions" props="lable" :show-count="true" :defaultExpandLevel="Infinity"
placeholder="选择上级代理商" :normalizer="tenantIdnormalizer" />
<!-- <el-select v-model="form.parentId" placeholder="选择上级代理商" style="width: 100%">-->
<!-- <el-option-->
<!-- v-for="item in brokerOptions"-->
<!-- :key="item.id"-->
<!-- :label="item.brokerName"-->
<!-- :value="item.id"-->
<!-- v-if="item.id != form.id"-->
<!-- />-->
<!-- </el-select>-->
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="代理商名称" prop="brokerName">
<el-input v-model="form.brokerName" placeholder="请输入代理商名称"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="地址" prop="brokerAddress">
<el-input v-model="form.brokerAddress" placeholder="请输入地址"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="显示顺序" prop="orderNum">
<el-input-number style="width: 100%" v-model="form.orderNum" placeholder="请输入显示顺序" :min="0"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="负责人" prop="chargePerson">
<el-input v-model="form.chargePerson" placeholder="请输入负责人"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系电话" prop="contactPhone">
<el-input v-model="form.contactPhone" placeholder="请输入联系电话"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="邮箱" prop="email">
<el-input v-model="form.email" placeholder="请输入邮箱"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否机构" prop="isInstitution">
<el-select v-model="form.isInstitution" placeholder="请选择状态" style="width: 100%">
<el-option v-for="dict in dict.type.sys_yes_no" :key="dict.value" :label="dict.label"
:value="dict.value"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="状态" prop="staus">
<el-radio-group v-model="form.staus">
<el-radio
v-for="dict in dict.type.df_broker_staus"
:key="dict.value"
:label="dict.value"
>{{ dict.label }}
</el-radio>
</el-radio-group>
<!-- <el-select v-model="form.staus" placeholder="请选择状态" style="width: 100%">-->
<!-- <el-option v-for="dict in dict.type.df_broker_staus" :key="dict.value" :label="dict.label"-->
<!-- :value="dict.value"/>-->
<!-- </el-select>-->
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="简介" prop="brokerDesc">
<editor v-model="form.brokerDesc" :min-height="192"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" 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="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
pageListBroker,
getBroker,
delBroker,
addBroker,
updateBroker,
listBroker,
changeBrokerStatus,
listBrokerByTree
} from "@/api/broker/broker";
import AutoTableHeight from '@/views/broker/AutoTableHeight';
import {changeUserStatus} from "@/api/system/user";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
name: "DfBroker",
mixins: [AutoTableHeight],
dicts: ["df_broker_staus","sys_yes_no"],
components: {Treeselect},
data() {
return {
brokerOptions: [],
//
loading: true,
//
ids: [],
//
names: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
brokerList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
parentId: null,
brokerName: null,
brokerAddress: null,
brokerDesc: null,
orderNum: null,
chargePerson: null,
contactPhone: null,
email: null,
isInstitution: null,
staus: null,
},
//
form: {},
//
rules: {
// parentId: [
// {required: true, message: "id", trigger: "blur"}
// ],
brokerName: [
{required: true, message: "代理商名称不能为空", trigger: "blur"}
],
// brokerAddress: [
// {required: true, message: "", trigger: "blur"}
// ],
// brokerDesc: [
// {required: true, message: "", trigger: "blur"}
// ],
// orderNum: [
// {required: true, message: "", trigger: "blur"}
// ],
// chargePerson: [
// {required: true, message: "", trigger: "blur"}
// ],
// contactPhone: [
// {required: true, message: "", trigger: "blur"}
// ],
// email: [
// {required: true, message: "", trigger: "blur"}
// ],
isInstitution: [
{required: true, message: "是否机构不能为空", trigger: "blur"}
],
staus: [
{required: true, message: "状态不能为空", trigger: "blur"}
],
// remark: [
// {required: true, message: "", trigger: "blur"}
// ],
}
};
},
created() {
this.getList();
},
methods: {
tenantIdnormalizer(node, instanceId) {
if (node.children && !node.children.length) {
delete node.children
}
return {
id: node.id,
label: node.brokerName,
children: node.children
}
},
handleStatusChange(row) {
let text = row.staus === "0" ? "有效" : "禁用";
this.$modal.confirm('确认要' + text + '"' + row.brokerName + '"用户吗?').then(function () {
return changeBrokerStatus(row.id, row.staus);
}).then(() => {
this.$modal.msgSuccess(text + "成功");
}).catch(function () {
row.staus = row.staus === "0" ? "1" : "0";
});
},
//
handleRowClick(row) {
this.$emit('row-click', row);
},
/** 查询代理商经纪列表 */
getList() {
this.loading = true;
pageListBroker(this.queryParams).then(response => {
this.brokerList = this.convertToTreeData(response.rows);
this.total = response.total;
this.loading = false;
}).catch(e => {
this.loading = false;
});
listBrokerByTree().then(response => {
this.brokerOptions = response.data;
});
// listBroker().then(response => {
// this.brokerOptions = response.data;
// })
},
convertToTreeData(brokerList) {
const map = {};
const treeData = [];
brokerList.forEach(broker => {
broker.children = [];
map[broker.id] = broker;
});
brokerList.forEach(broker => {
if (broker.parentId && map[broker.parentId]) {
map[broker.parentId].children.push(broker);
} else {
treeData.push(broker);
}
});
return treeData;
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
parentId: null,
brokerName: null,
brokerAddress: null,
brokerDesc: null,
orderNum: null,
chargePerson: null,
contactPhone: null,
email: null,
isInstitution: null,
staus: null,
remark: null,
};
this.resetForm("form");
},
//
handleSortChange(col) {
this.$sortBy(col, this.queryParams);
this.getList();
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id);
this.names = selection.map(item => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.form.isInstitution = "Y";
this.form.staus = "0";
this.open = true;
this.title = "添加代理商经纪";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getBroker(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) {
if (this.form.parentId === this.form.id) {
this.$modal.msgError("上级部门不能选择自己");
return false;
}
updateBroker(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addBroker(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
const names = row.id || this.names;
this.$modal.confirm('是否确认删除代理商经纪为"' + names + '"的数据项?').then(function () {
return delBroker(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
});
},
/** 导出按钮操作 */
handleExport() {
this.download('broker/broker/export', {
...this.queryParams
}, `代理商经纪信息数据_${new Date().getTime()}.xlsx`)
}
}
};
</script>

@ -0,0 +1,31 @@
<template>
<my-page :left-style="{width: '50%'}">
<template slot="left">
<DfBroker ref="dfBroker" :extraHeight="100" style="height: 97%;" @row-click="handleRowClick"></DfBroker>
</template>
<BrokerUserVo ref="brokerUser" :extraHeight="100" style="height: 97%;margin-left: 8px;" :rowData="rowData"></BrokerUserVo>
</my-page>
</template>
<script>
import BrokerUserVo from './components/BrokerUser.vue';
import DfBroker from './components/DfBroker.vue';
export default {
name: "BrokerUser",
components: {
BrokerUserVo,
DfBroker,
},
data() {
return {
rowData: null
};
},
methods: {
handleRowClick(row) {
this.rowData = row;// row
}
}
};
</script>

@ -70,6 +70,26 @@
>导出
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
size="mini"
@click="shelves"
v-hasPermi="['moment:moment:shelves']"
>上架
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
size="mini"
@click="offShelves"
v-hasPermi="['moment:moment:offShelves']"
>下架
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -194,7 +214,7 @@
</template>
<script>
import {pageListMoment, getMoment, delMoment, addMoment, updateMoment} from "@/api/moment/moment";
import {pageListMoment, getMoment, delMoment, addMoment, updateMoment,changeStatusByMoment} from "@/api/moment/moment";
export default {
name: "Moment",
@ -260,6 +280,28 @@ export default {
this.getList();
},
methods: {
offShelves(){
const ids = this.ids;
let param = {
ids: ids,
status: "0"
}
changeStatusByMoment(param).then(response => {
this.getList();
this.$modal.msgSuccess("修改成功");
});
},
shelves(){
const ids = this.ids;
let param = {
ids: ids,
status: "1"
}
changeStatusByMoment(param).then(response => {
this.getList();
this.$modal.msgSuccess("修改成功");
});
},
/** 查询产品朋友圈列表 */
getList() {
this.loading = true;

@ -0,0 +1,607 @@
<template>
<div ref="list">
<el-form :model="queryParams" ref="queryForm" size="mini" :inline="true" v-show="showSearch" label-width="95px" >
<el-form-item label="订单号" prop="orderNo">
<el-input
v-model="queryParams.orderNo"
placeholder="请输入订单号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="客户" prop="userId">-->
<!-- <el-select v-model="queryParams.userId" placeholder="请选择客户" clearable>-->
<!-- <el-option-->
<!-- v-for="item in lsUser"-->
<!-- :key="item.userId"-->
<!-- :label="item.userName"-->
<!-- :value="item.userId"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="代理商" prop="brokerId">-->
<!-- <el-input-->
<!-- v-model="queryParams.brokerId"-->
<!-- placeholder="请输入代理商"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="产品名称" prop="productName">
<el-input
v-model="queryParams.productName"
placeholder="请输入产品名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="提交时间">
<el-date-picker
v-model="dateRange"
style="width: 200px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<!-- <el-form-item label="提交时间" prop="submitTime">-->
<!-- <el-date-picker clearable-->
<!-- style="width: 100%"-->
<!-- v-model="dateRange"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="请选择提交时间">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="放款利率" prop="loanRate">-->
<!-- <el-input-->
<!-- v-model="queryParams.loanRate"-->
<!-- placeholder="请输入放款利率"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="贷款期限" prop="loadMonth">-->
<!-- <el-input-->
<!-- v-model="queryParams.loadMonth"-->
<!-- placeholder="请输入贷款期限"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="是否首贷" prop="isFirst">-->
<!-- <el-select v-model="queryParams.isFirst" placeholder="请选择是否首贷" clearable>-->
<!-- <el-option-->
<!-- v-for="dict in lsIsFirst"-->
<!-- :key="dict.id"-->
<!-- :label="dict.name"-->
<!-- :value="dict.id"-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="状态" prop="staus">
<el-select v-model="queryParams.staus" placeholder="请选择状态" clearable>
<el-option
v-for="dict in lsStatus"
:key="dict.id"
:label="dict.name"
:value="dict.id"
@keyup.enter.native="handleQuery"
/>
</el-select>
<!-- <el-input-->
<!-- v-model="queryParams.staus"-->
<!-- 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="['order:order: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="['order:order: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="['order:order: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="['order:order:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="orderList" @sort-change="handleSortChange" :height="tableHeight - 150"
@selection-change="handleSelectionChange" row-key="id"
>
<el-table-column type="selection" width="55" align="center"/>
<!-- <el-table-column label="id" align="center" prop="id" sortable='custom' />-->
<el-table-column label="订单号" align="center" prop="orderNo" sortable='custom' width="90px"/>
<el-table-column label="客户" align="center" prop="userName" />
<el-table-column label="代理商" align="center" prop="brokerName" width="90px"/>
<el-table-column label="产品名称" align="center" prop="productName" sortable='custom' width="100px"/>
<el-table-column label="提交时间" align="center" prop="submitTime" width="180" sortable='custom' >
<template slot-scope="scope">
<span>{{ parseTime(scope.row.submitTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="申请额" align="center" prop="applyAmount" sortable='custom' width="90px"/>
<el-table-column label="授信额" align="center" prop="limitAmount" sortable='custom' width="90px"/>
<el-table-column label="放款额" align="center" prop="loanAmount" sortable='custom' width="90px"/>
<el-table-column label="放款利率" align="center" prop="loanRate" sortable='custom' width="100px"/>
<el-table-column label="贷款期限" align="center" prop="loadMonth" sortable='custom' width="100px"/>
<el-table-column label="首贷" align="center" prop="isFirst" sortable='custom'/>
<el-table-column label="可结算金额" align="center" prop="settleAmount" sortable='custom' width="120px"/>
<el-table-column label="状态" align="center" prop="staus" sortable='custom'>
<template slot-scope="scope">
<el-tag v-if="scope.row.staus == '0'" type="warning"></el-tag>
<el-tag v-if="scope.row.staus == '1'" type="success"></el-tag>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" sortable='custom'/>
</el-table>
<pagination
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改代理商经纪对话框 -->
<el-dialog :title="title" :visible.sync="open" width="70%" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="12">
<el-form-item label="订单号" prop="orderNo">
<BillNumberInput v-model="form.orderNo" title="订单编号"></BillNumberInput>
<!-- <el-input v-model="form.orderNo" placeholder="请输入订单号"/>-->
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户" prop="userId">
<el-select style="width: 100%;" v-model="form.userId" placeholder="请选择客户" clearable>
<el-option v-for="info in lsUser" :key="info.userId" :label="info.userName"
:value="info.userId"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="代理商" prop="brokerId">
<treeselect v-model="form.brokerId" :options="brokerOptions" props="lable" :show-count="true" :defaultExpandLevel="Infinity"
placeholder="选择上级代理商" :normalizer="tenantIdnormalizer" />
<!-- <el-input v-model="form.brokerId" placeholder="请输入代理商"/>-->
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品" prop="productId">
<el-select style="width: 100%;" v-model="form.productId" placeholder="请选择产品" clearable>
<el-option v-for="info in lsProduct" :key="info.id" :label="info.productName"
:value="info.id"/>
</el-select>
<!-- <el-input v-model="form.productId" placeholder="请输入产品id"/>-->
</el-form-item>
</el-col>
</el-row>
<el-row>
<!-- <el-col :span="12">-->
<!-- <el-form-item label="产品名称" prop="productName">-->
<!-- <el-input v-model="form.productName" placeholder="请输入产品名称" />-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="12">
<el-form-item label="提交时间" prop="submitTime">
<el-date-picker clearable
style="width: 100%"
v-model="form.submitTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择提交时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="申请额(万元)" prop="applyAmount">
<el-input-number v-model="form.applyAmount" placeholder="请输入申请额" :min="0" style="width: 100%"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="授信额(万元)" prop="limitAmount">
<el-input-number v-model="form.limitAmount" placeholder="请输入授信额" :min="0" style="width: 100%"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="放款额(万元)" prop="loanAmount">
<el-input-number v-model="form.loanAmount" placeholder="请输入放款额" :min="0" style="width: 100%"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="放款利率" prop="loanRate">
<el-input-number v-model="form.loanRate" placeholder="请输入放款利率" :min="0" style="width: 100%"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="贷款期限(月)" prop="loadMonth">
<el-input-number v-model="form.loadMonth" placeholder="请输入贷款期限" :min="0" style="width: 100%"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="是否首贷" prop="isFirst">
<el-select style="width: 100%;" v-model="form.isFirst" placeholder="请选择是否首贷" clearable>
<el-option v-for="info in lsIsFirst" :key="info.id" :label="info.name"
:value="info.id"/>
</el-select>
<!-- <el-input v-model="form.isFirst" placeholder="请输入是否首贷"/>-->
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="可结算金额(万元)" prop="settleAmount">
<el-input-number v-model="form.settleAmount" placeholder="请输入可结算金额" :min="0" style="width: 100%"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="状态" prop="staus">
<el-select style="width: 100%;" v-model="form.staus" placeholder="请选择状态" clearable>
<el-option v-for="info in lsStatus" :key="info.id" :label="info.name"
:value="info.id"/>
</el-select>
<!-- <el-input v-model="form.staus" placeholder="请输入状态"/>-->
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" 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="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {pageListOrder, getOrder, delOrder, addOrder, updateOrder} from "@/api/order/order";
import {
listUserByType,
} from "@/api/system/user";
import {
listBrokerByTree
} from "@/api/broker/broker";
import {pageListInfo, getInfo, delInfo, addInfo, updateInfo,changeStatus,listInfo} from "@/api/product/info";
import AutoTableHeight from '@/views/broker/AutoTableHeight';
import {changeUserStatus} from "@/api/system/user";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
name: "DfOrder",
mixins: [AutoTableHeight],
dicts: ["df_broker_staus","sys_yes_no"],
components: {Treeselect},
props: {
rowData: {
type: Object,
default: () => ({})
}
},
data() {
return {
//
dateRange: [],
userId: "",
rowDataNew: {},
lsStatus: [
{id: '0', name: "未完成"},
{id: '1', name: "已完成"},
],
lsIsFirst: [
{id: '1', name: "是"},
{id: '0', name: "否"}
],
lsProduct: [],
brokerOptions: [],
lsUser: [],
//
loading: true,
//
ids: [],
//
names: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
orderList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
orderNo: null,
userId: null,
brokerId: null,
productId: null,
productName: null,
submitTime: null,
applyAmount: null,
limitAmount: null,
loanAmount: null,
loanRate: null,
loadMonth: null,
isFirst: null,
settleAmount: null,
staus: null,
submitTimeBegin: null,
submitTimeEnd: null,
},
//
form: {},
//
rules: {
orderNo: [
{required: true, message: "订单号不能为空", trigger: "blur"}
],
userId: [
{required: true, message: "客户不能为空", trigger: "blur"}
],
brokerId: [
{required: true, message: "代理商不能为空", trigger: "blur"}
],
productId: [
{required: true, message: "产品不能为空", trigger: "blur"}
],
// productName: [
// {required: true, message: "", trigger: "blur"}
// ],
submitTime: [
{required: true, message: "提交时间不能为空", trigger: "blur"}
],
staus: [
{required: true, message: "状态不能为空", trigger: "blur"}
],
}
};
},
mounted() {
// rowData row
this.rowDataNew = this.rowData;
},
watch: {
// rowData
rowData: function (newVal, oldVal) {
// rowData row
this.rowDataNew = newVal;
this.userId = this.rowDataNew.userId;
// const allIds = this.getAllIds(this.rowDataNew);
this.queryParams.userId = this.rowDataNew.userId;
this.getList();
},
},
created() {
this.getList();
this.getUser();
this.getBroker();
this.getProuct();
},
methods: {
getProuct() {
listInfo().then(response => {
this.lsProduct = response.data;
});
},
tenantIdnormalizer(node, instanceId) {
if (node.children && !node.children.length) {
delete node.children
}
return {
id: node.id,
label: node.brokerName,
children: node.children
}
},
getBroker() {
listBrokerByTree().then(response => {
this.brokerOptions = response.data;
});
},
getUser() {
var params = {
userType: "kh",
selectAll: "1"
}
listUserByType(params).then(response => {
this.lsUser = response.rows;
});
},
/** 查询客户订单列表 */
getList() {
this.loading = true;
this.queryParams.submitTimeBegin = this.dateRange[0];
this.queryParams.submitTimeEnd = this.dateRange[1];
pageListOrder(this.queryParams).then(response => {
this.orderList = response.rows;
this.total = response.total;
this.loading = false;
}).catch(e => {
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
orderNo: null,
userId: null,
brokerId: null,
productId: null,
productName: null,
submitTime: null,
applyAmount: null,
limitAmount: null,
loanAmount: null,
loanRate: null,
loadMonth: null,
isFirst: null,
settleAmount: null,
staus: null,
remark: null,
};
this.resetForm("form");
},
//
handleSortChange(col) {
this.$sortBy(col, this.queryParams);
this.getList();
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id);
this.names = selection.map(item => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.form.submitTime = new Date();
this.form.staus = '0';
this.title = "添加客户订单";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getOrder(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改客户订单";
});
},
/** 提交按钮 */
submitForm() {
var productId = this.form.productId;
var product = this.lsProduct.find(function(item) {
return item.id === productId;
});
this.form.productName = product ? product.productName : null;
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateOrder(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addOrder(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
const names = row.id || this.names;
this.$modal.confirm('是否确认删除客户订单为"' + names + '"的数据项?').then(function () {
return delOrder(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
});
},
/** 导出按钮操作 */
handleExport() {
this.download('order/order/export', {
...this.queryParams
}, `客户订单_${new Date().getTime()}.xlsx`)
}
}
};
</script>

@ -0,0 +1,696 @@
<template>
<div ref="list">
<el-form :model="queryParams" ref="queryForm" size="mini" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="用户名称" prop="userName">
<el-input
v-model="queryParams.userName"
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="status">
<el-select
v-model="queryParams.status"
placeholder="用户状态"
clearable
>
<el-option
v-for="dict in dict.type.sys_normal_disable"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker
v-model="dateRange"
style="width: 200px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</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"-->
<!-- :disabled="!deptId"-->
<!-- v-hasPermi="['system:user: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:user: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:user: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:user:export']"-->
<!-- >导出-->
<!-- </el-button>-->
<!-- </el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="userList" @sort-change="handleSortChange" row-key="id" :height="tableHeight - 150"
:highlight-current-row="true" @row-click="handleRowClick"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center"/>
<el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible"
:show-overflow-tooltip="true" fixed="left"/>
<el-table-column label="所属代理商" align="center" prop="deptName" :show-overflow-tooltip="true" width="120"/>
<el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible"/>
<el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible"
:show-overflow-tooltip="true"/>
<el-table-column label="简介" align="center" prop="userDesc" show-overflow-tooltip/>
<el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible"
width="120"/>
<el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">
<template slot-scope="scope">
<el-switch
v-model="scope.row.status"
active-value="0"
inactive-value="1"
@change="handleStatusChange(scope.row)"
></el-switch>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="160">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<!-- <el-table-column-->
<!-- label="操作"-->
<!-- align="center"-->
<!-- width="160"-->
<!-- class-name="small-padding fixed-width"-->
<!-- fixed="right"-->
<!-- >-->
<!-- <template slot-scope="scope" v-if="scope.row.userId !== 1&&scope.row.isTenantAdmin !=='Y'">-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['system:user:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['system:user:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)"-->
<!-- v-hasPermi="['system:user:resetPwd', 'system:user:edit']">-->
<!-- <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>-->
<!-- <el-dropdown-menu slot="dropdown">-->
<!-- <el-dropdown-item command="handleResetPwd" icon="el-icon-key"-->
<!-- v-hasPermi="['system:user:resetPwd']">重置密码-->
<!-- </el-dropdown-item>-->
<!-- <el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check"-->
<!-- v-hasPermi="['system:user:edit']">分配角色-->
<!-- </el-dropdown-item>-->
<!-- </el-dropdown-menu>-->
<!-- </el-dropdown>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<pagination
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改代理商经纪对话框 -->
<el-dialog :title="title" :visible.sync="open" width="70%" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="12">
<el-form-item label="用户昵称" prop="nickName">
<el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="归属部门" prop="deptId">
<treeselect v-model="form.deptId" :options="brokerList" props="lable" :show-count="true" :defaultExpandLevel="Infinity"
placeholder="请选择归属部门" :normalizer="tenantIdnormalizer" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="手机号码" prop="phonenumber">
<el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="邮箱" prop="email">
<el-input v-model="form.email" placeholder="请输入邮箱" maxlength="50"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item v-if="form.userId == undefined" label="用户名称" prop="userName">
<el-input v-model="form.userName" placeholder="请输入用户名称" maxlength="30"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item v-if="form.userId == undefined" label="用户密码" prop="password">
<el-input v-model="form.password" placeholder="请输入用户密码" type="password" maxlength="20" show-password/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="用户性别">
<el-select v-model="form.sex" placeholder="请选择性别" style="width: 100%">
<el-option
v-for="dict in dict.type.sys_user_sex"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="状态">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in dict.type.sys_normal_disable"
:key="dict.value"
:label="dict.value"
>{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="岗位">
<el-select v-model="form.postIds" multiple placeholder="请选择岗位" style="width: 100%">
<el-option
v-for="item in postOptions"
:key="item.postId"
:label="item.postName"
:value="item.postId"
:disabled="item.status == 1"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="角色">
<el-select v-model="form.roleIds" multiple placeholder="请选择角色" style="width: 100%">
<el-option
v-for="item in roleOptions"
:key="item.roleId"
:label="item.roleName"
:value="item.roleId"
:disabled="item.status == 1"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="简介" prop="userDesc">
<editor v-model="form.userDesc" :min-height="192"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
</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="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import AutoTableHeight from '@/views/broker/AutoTableHeight';
import {listBrokerByTree} from "@/api/broker/broker";
import {
listUserByType,
listUser,
getUser,
delUser,
addUser,
updateUser,
resetUserPwd,
changeUserStatus,
deptTreeSelect,
} from "@/api/system/user";
import {getToken} from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
name: "OrderUser",
mixins: [AutoTableHeight],
dicts: ['sys_normal_disable', 'sys_user_sex'],
components: {Treeselect},
data() {
return {
brokerList: [],
deptId: "",
rowDataNew: {},
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
userList: null,
//
title: "",
//
deptOptions: undefined,
//
open: false,
//
deptName: undefined,
//
initPassword: undefined,
//
dateRange: [],
//
postOptions: [],
//
roleOptions: [],
//
form: {},
defaultProps: {
children: "children",
label: "label"
},
//
upload: {
//
open: false,
//
title: "",
//
isUploading: false,
//
updateSupport: 0,
//
headers: {Authorization: "Bearer " + getToken()},
//
url: process.env.VUE_APP_BASE_API + "/system/user/importData"
},
//
queryParams: {
pageNum: 1,
pageSize: 10,
userName: undefined,
phonenumber: undefined,
status: undefined,
deptId: undefined,
userType: "kh",
deptIds: [],
},
//
columns: [
{key: 0, label: `用户编号`, visible: true},
{key: 1, label: `用户名称`, visible: true},
{key: 2, label: `用户昵称`, visible: true},
{key: 3, label: `部门`, visible: true},
{key: 4, label: `手机号码`, visible: true},
{key: 5, label: `状态`, visible: true},
{key: 6, label: `创建时间`, visible: true}
],
//
rules: {
userName: [
{required: true, message: "用户名称不能为空", trigger: "blur"},
{min: 2, max: 20, message: '用户名称长度必须介于 2 和 20 之间', trigger: 'blur'}
],
nickName: [
{required: true, message: "用户昵称不能为空", trigger: "blur"}
],
password: [
{required: true, message: "用户密码不能为空", trigger: "blur"},
{min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur'}
],
email: [
{
type: "email",
message: "请输入正确的邮箱地址",
trigger: ["blur", "change"]
}
],
phonenumber: [
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号码",
trigger: "blur"
}
]
}
};
},
watch: {
// rowData
// rowData: function (newVal, oldVal) {
// // rowData row
// this.rowDataNew = newVal;
// this.deptId = this.rowDataNew.id;
// const allIds = this.getAllIds(this.rowDataNew);
// this.queryParams.deptIds = allIds;
// this.getList();
// },
//
deptName(val) {
this.$refs.tree.filter(val);
},
},
created() {
this.getList();
// this.getDeptTree();
this.getbrokerList();
this.getConfigKey("sys.user.initPassword").then(response => {
this.initPassword = response.msg;
});
},
methods: {
handleRowClick(row) {
this.$emit('row-click', row);
},
tenantIdnormalizer(node, instanceId) {
if (node.children && !node.children.length) {
delete node.children
}
return {
id: node.id,
label: node.brokerName,
children: node.children
}
},
getbrokerList() {
listBrokerByTree().then(response => {
this.brokerList = response.data;
});
},
getAllIds(data) {
let ids = [];
// id
ids.push(data.id);
// children children
if (data.children && Array.isArray(data.children)) {
// children
data.children.forEach(child => {
// getAllIds id ids
ids = ids.concat(this.getAllIds(child));
});
}
return ids;
},
handleSortChange(col) {
this.$sortBy(col, this.queryParams);
this.getList();
},
/** 查询用户列表 */
getList() {
this.loading = true;
listUserByType(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
this.userList = response.rows;
this.total = response.total;
this.loading = false;
}
);
},
/** 查询部门下拉树结构 */
getDeptTree() {
deptTreeSelect().then(response => {
this.deptOptions = response.data;
});
},
//
filterNode(value, data) {
if (!value) return true;
return data.label.indexOf(value) !== -1;
},
//
handleNodeClick(data) {
this.queryParams.deptId = data.id;
this.handleQuery();
},
//
handleStatusChange(row) {
let text = row.status === "0" ? "启用" : "停用";
this.$modal.confirm('确认要"' + text + '""' + row.userName + '"用户吗?').then(function () {
return changeUserStatus(row.userId, row.status);
}).then(() => {
this.$modal.msgSuccess(text + "成功");
}).catch(function () {
row.status = row.status === "0" ? "1" : "0";
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
userId: undefined,
deptId: undefined,
userName: undefined,
nickName: undefined,
password: undefined,
phonenumber: undefined,
email: undefined,
sex: undefined,
status: "0",
remark: undefined,
postIds: [],
roleIds: []
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.userId);
this.single = selection.length != 1;
this.multiple = !selection.length;
},
//
handleCommand(command, row) {
switch (command) {
case "handleResetPwd":
this.handleResetPwd(row);
break;
case "handleAuthRole":
this.handleAuthRole(row);
break;
default:
break;
}
},
/** 新增按钮操作 */
handleAdd() {
this.getbrokerList();
this.reset();
getUser().then(response => {
this.postOptions = response.posts;
this.roleOptions = response.roles;
this.open = true;
this.title = "添加用户";
this.form.deptId = this.deptId;
this.form.userType = "kh"
this.form.password = this.initPassword;
});
},
/** 修改按钮操作 */
handleUpdate(row) {
this.getbrokerList();
this.reset();
const userId = row.userId || this.ids;
getUser(userId).then(response => {
this.form = response.data;
this.postOptions = response.posts;
this.roleOptions = response.roles;
this.$set(this.form, "postIds", response.postIds);
this.$set(this.form, "roleIds", response.roleIds);
this.open = true;
this.title = "修改用户";
this.form.password = "";
});
},
/** 重置密码按钮操作 */
handleResetPwd(row) {
this.$prompt('请输入"' + row.userName + '"的新密码', "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
closeOnClickModal: false,
inputPattern: /^.{5,20}$/,
inputErrorMessage: "用户密码长度必须介于 5 和 20 之间"
}).then(({value}) => {
resetUserPwd(row.userId, value).then(response => {
this.$modal.msgSuccess("修改成功,新密码是:" + value);
});
}).catch(() => {
});
},
/** 分配角色操作 */
handleAuthRole: function (row) {
const userId = row.userId;
this.$router.push("/system/user-auth/role/" + userId);
},
/** 提交按钮 */
submitForm: function () {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.userId != undefined) {
updateUser(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addUser(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const userIds = row.userId || this.ids;
this.$modal.confirm('是否确认删除用户编号为"' + userIds + '"的数据项?').then(function () {
return delUser(userIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
});
},
/** 导出按钮操作 */
handleExport() {
this.download('system/user/exportByType', {
...this.queryParams
}, `代理商经纪用户数据_${new Date().getTime()}.xlsx`)
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = "用户导入";
this.upload.open = true;
},
/** 下载模板操作 */
importTemplate() {
this.download('system/user/importTemplate', {}, `user_template_${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();
}
}
};
</script>

@ -1,527 +1,31 @@
<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="orderNo">
<el-input
v-model="queryParams.orderNo"
placeholder="请输入订单号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="客户id" prop="userId">
<el-input
v-model="queryParams.userId"
placeholder="请输入客户id"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="经纪id" prop="brokerId">
<el-input
v-model="queryParams.brokerId"
placeholder="请输入经纪id"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="产品id" prop="productId">
<el-input
v-model="queryParams.productId"
placeholder="请输入产品id"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="产品名称" prop="productName">
<el-input
v-model="queryParams.productName"
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="applyAmount">
<el-input
v-model="queryParams.applyAmount"
placeholder="请输入申请额"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="授信额" prop="limitAmount">
<el-input
v-model="queryParams.limitAmount"
placeholder="请输入授信额"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="放款额" prop="loanAmount">
<el-input
v-model="queryParams.loanAmount"
placeholder="请输入放款额"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="放款利率" prop="loanRate">
<el-input
v-model="queryParams.loanRate"
placeholder="请输入放款利率"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="贷款期限" prop="loadMonth">
<el-input
v-model="queryParams.loadMonth"
placeholder="请输入贷款期限"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="是否首贷" prop="isFirst">
<el-input
v-model="queryParams.isFirst"
placeholder="请输入是否首贷"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="可结算金额" prop="settleAmount">
<el-input
v-model="queryParams.settleAmount"
placeholder="请输入可结算金额"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="状态" prop="staus">
<el-input
v-model="queryParams.staus"
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="['order:order: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="['order:order: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="['order:order: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="['order:order:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="orderList" @sort-change="handleSortChange" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="id" align="center" prop="id" sortable='custom' />
<el-table-column label="订单号" align="center" prop="orderNo" sortable='custom' />
<el-table-column label="客户id" align="center" prop="userId" sortable='custom' />
<el-table-column label="经纪id" align="center" prop="brokerId" sortable='custom' />
<el-table-column label="产品id" align="center" prop="productId" sortable='custom' />
<el-table-column label="产品名称" align="center" prop="productName" sortable='custom' />
<el-table-column label="提交时间" align="center" prop="submitTime" width="180" sortable='custom'>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.submitTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="申请额" align="center" prop="applyAmount" sortable='custom' />
<el-table-column label="授信额" align="center" prop="limitAmount" sortable='custom' />
<el-table-column label="放款额" align="center" prop="loanAmount" sortable='custom' />
<el-table-column label="放款利率" align="center" prop="loanRate" sortable='custom' />
<el-table-column label="贷款期限" align="center" prop="loadMonth" sortable='custom' />
<el-table-column label="是否首贷" align="center" prop="isFirst" sortable='custom' />
<el-table-column label="可结算金额" align="center" prop="settleAmount" sortable='custom' />
<el-table-column label="状态" align="center" prop="staus" sortable='custom' />
<el-table-column label="备注" align="center" prop="remark" sortable='custom' />
<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="['order:order:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['order:order:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
hide-on-single-page
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改客户订单对话框 -->
<el-dialog :title="title" :visible.sync="open" width="70%" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-col :span="12">
<el-form-item label="订单号" prop="orderNo">
<el-input v-model="form.orderNo" placeholder="请输入订单号" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户id" prop="userId">
<el-input v-model="form.userId" placeholder="请输入客户id" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="经纪id" prop="brokerId">
<el-input v-model="form.brokerId" placeholder="请输入经纪id" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品id" prop="productId">
<el-input v-model="form.productId" placeholder="请输入产品id" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品名称" prop="productName">
<el-input v-model="form.productName" placeholder="请输入产品名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<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-col>
<el-col :span="12">
<el-form-item label="申请额" prop="applyAmount">
<el-input v-model="form.applyAmount" placeholder="请输入申请额" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="授信额" prop="limitAmount">
<el-input v-model="form.limitAmount" placeholder="请输入授信额" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="放款额" prop="loanAmount">
<el-input v-model="form.loanAmount" placeholder="请输入放款额" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="放款利率" prop="loanRate">
<el-input v-model="form.loanRate" placeholder="请输入放款利率" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="贷款期限" prop="loadMonth">
<el-input v-model="form.loadMonth" placeholder="请输入贷款期限" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否首贷" prop="isFirst">
<el-input v-model="form.isFirst" placeholder="请输入是否首贷" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="可结算金额" prop="settleAmount">
<el-input v-model="form.settleAmount" placeholder="请输入可结算金额" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="状态" prop="staus">
<el-input v-model="form.staus" placeholder="请输入状态" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-col>
</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>
<my-page :left-style="{width: '50%'}">
<template slot="left">
<OrderUser ref="oderUser" :extraHeight="100" style="height: 97%;" @row-click="handleRowClick"></OrderUser>
</template>
<DfOrder ref="dfOrder" :extraHeight="100" style="height: 97%;margin-left: 8px;" :rowData="rowData"></DfOrder>
</my-page>
</template>
<script>
import { pageListOrder, getOrder, delOrder, addOrder, updateOrder } from "@/api/order/order";
import OrderUser from './components/OrderUser.vue';
import DfOrder from './components/DfOrder.vue';
export default {
name: "Order",
data() {
return {
//
loading: true,
//
ids: [],
//
names: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
orderList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
orderNo: null,
userId: null,
brokerId: null,
productId: null,
productName: null,
submitTime: null,
applyAmount: null,
limitAmount: null,
loanAmount: null,
loanRate: null,
loadMonth: null,
isFirst: null,
settleAmount: null,
staus: null,
},
//
form: {},
//
rules: {
orderNo: [
{ required: true, message: "订单号不能为空", trigger: "blur" }
],
userId: [
{ required: true, message: "客户id不能为空", trigger: "blur" }
],
brokerId: [
{ required: true, message: "经纪id不能为空", trigger: "blur" }
],
productId: [
{ required: true, message: "产品id不能为空", trigger: "blur" }
],
productName: [
{ required: true, message: "产品名称不能为空", trigger: "blur" }
],
submitTime: [
{ required: true, message: "提交时间不能为空", trigger: "blur" }
],
applyAmount: [
{ required: true, message: "申请额不能为空", trigger: "blur" }
],
limitAmount: [
{ required: true, message: "授信额不能为空", trigger: "blur" }
],
loanAmount: [
{ required: true, message: "放款额不能为空", trigger: "blur" }
],
loanRate: [
{ required: true, message: "放款利率不能为空", trigger: "blur" }
],
loadMonth: [
{ required: true, message: "贷款期限不能为空", trigger: "blur" }
],
isFirst: [
{ required: true, message: "是否首贷不能为空", trigger: "blur" }
],
settleAmount: [
{ required: true, message: "可结算金额不能为空", trigger: "blur" }
],
staus: [
{ required: true, message: "状态不能为空", trigger: "blur" }
],
remark: [
{ required: true, message: "备注不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
},
methods: {
/** 查询客户订单列表 */
getList() {
this.loading = true;
pageListOrder(this.queryParams).then(response => {
this.orderList = response.rows;
this.total = response.total;
this.loading = false;
}).catch(e => {
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
orderNo: null,
userId: null,
brokerId: null,
productId: null,
productName: null,
submitTime: null,
applyAmount: null,
limitAmount: null,
loanAmount: null,
loanRate: null,
loadMonth: null,
isFirst: null,
settleAmount: null,
staus: null,
remark: null,
};
this.resetForm("form");
},
//
handleSortChange(col) {
this.$sortBy(col, this.queryParams);
this.getList();
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id);
this.names = 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;
getOrder(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) {
updateOrder(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addOrder(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
const names = row.id || this.names;
this.$modal.confirm('是否确认删除客户订单为"' + names + '"的数据项?').then(function() {
return delOrder(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('order/order/export', {
...this.queryParams
}, `order_${new Date().getTime()}.xlsx`)
}
export default {
name: "Order",
components: {
OrderUser,
DfOrder,
},
data() {
return {
rowData: null
};
},
methods: {
handleRowClick(row) {
this.rowData = row;// row
}
}
};
};
</script>

@ -94,6 +94,26 @@
>导出
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
size="mini"
@click="shelves"
v-hasPermi="['poster:poster:shelves']"
>上架
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
size="mini"
@click="offShelves"
v-hasPermi="['poster:poster:offShelves']"
>下架
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -218,8 +238,8 @@
</template>
<script>
import {pageListPoster, getPoster, delPoster, addPoster, updatePoster} from "@/api/poster/poster";
import {listInfo} from "@/api/product/info";
import {pageListPoster, getPoster, delPoster, addPoster, updatePoster,changeStatusByPoster} from "@/api/poster/poster";
import {changeStatus, listInfo} from "@/api/product/info";
export default {
name: "Poster",
@ -292,6 +312,28 @@ export default {
this.getInfoList();
},
methods: {
offShelves(){
const ids = this.ids;
let param = {
ids: ids,
status: "0"
}
changeStatusByPoster(param).then(response => {
this.getList();
this.$modal.msgSuccess("修改成功");
});
},
shelves(){
const ids = this.ids;
let param = {
ids: ids,
status: "1"
}
changeStatusByPoster(param).then(response => {
this.getList();
this.$modal.msgSuccess("修改成功");
});
},
getInfoList() {
listInfo().then(response => {
this.lsInfo = response.data;

@ -161,6 +161,26 @@
>导出
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
size="mini"
@click="shelves"
v-hasPermi="['product:info:shelves']"
>上架
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
size="mini"
@click="offShelves"
v-hasPermi="['product:info:offShelves']"
>下架
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -195,12 +215,12 @@
<span>{{ parseTime(scope.row.listEnd, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status" sortable='custom'>
<el-table-column label="备注" align="center" prop="remark" sortable='custom' show-overflow-tooltip/>
<el-table-column label="状态" align="center" prop="status" sortable='custom' fixed="right">
<template slot-scope="scope">
<dict-tag :options="dict.type.product_status" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" sortable='custom' show-overflow-tooltip/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120" fixed="right">
<template slot-scope="scope">
<el-button
@ -407,7 +427,7 @@
</div>
</template>
<script>
import {pageListInfo, getInfo, delInfo, addInfo, updateInfo} from "@/api/product/info";
import {pageListInfo, getInfo, delInfo, addInfo, updateInfo,changeStatus} from "@/api/product/info";
import {listArea} from "@/api/system/area";
// import Treeselect from "@riophae/vue-treeselect";
@ -517,6 +537,28 @@ export default {
this.getAreaList();
},
methods: {
offShelves(){
const ids = this.ids;
let param = {
ids: ids,
status: "0"
}
changeStatus(param).then(response => {
this.getList();
this.$modal.msgSuccess("修改成功");
});
},
shelves(){
const ids = this.ids;
let param = {
ids: ids,
status: "1"
}
changeStatus(param).then(response => {
this.getList();
this.$modal.msgSuccess("修改成功");
});
},
filterNode(value, data) {
if (!value) return true;
return data.name.indexOf(value) !== -1;

Loading…
Cancel
Save