【车间+编码】完成车间部分、统一名称

master
zengchenxi 10 months ago
parent 45cc7e947c
commit 38edbe8a6d

@ -27,6 +27,11 @@
<artifactId>mes-module-heli-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>com.chanko.yunxi</groupId>
<artifactId>mes-module-system-biz</artifactId>
<version>${revision}</version>
</dependency>
<!-- 业务组件 -->
<dependency>

@ -0,0 +1,95 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.workshop;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import com.chanko.yunxi.mes.module.heli.controller.admin.workshop.vo.WorkshopPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.workshop.vo.WorkshopRespVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.workshop.vo.WorkshopSaveReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.workshop.WorkshopDO;
import com.chanko.yunxi.mes.module.heli.service.workshop.WorkshopService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Slf4j
@Tag(name = "管理后台 - 车间")
@RestController
@RequestMapping("/heli/workshop")
@Validated
public class WorkshopController {
@Resource
private WorkshopService workshopService;
@PostMapping("/create")
@Operation(summary = "创建车间")
@PreAuthorize("@ss.hasPermission('heli:workshop:create')")
public CommonResult<Long> createWorkshop(@Valid @RequestBody WorkshopSaveReqVO createReqVO) {
return success(workshopService.createWorkshop(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新车间")
@PreAuthorize("@ss.hasPermission('heli:workshop:update')")
public CommonResult<Boolean> updateWorkshop(@Valid @RequestBody WorkshopSaveReqVO updateReqVO) {
workshopService.updateWorkshop(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除车间")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:workshop:delete')")
public CommonResult<Boolean> deleteWorkshop(@RequestParam("id") Long id) {
workshopService.deleteWorkshop(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得车间")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:workshop:query')")
public CommonResult<WorkshopRespVO> getWorkshop(@RequestParam("id") Long id) {
WorkshopDO workshop = workshopService.getWorkshop(id);
return success(BeanUtils.toBean(workshop, WorkshopRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得车间分页")
@PreAuthorize("@ss.hasPermission('heli:workshop:query')")
public CommonResult<PageResult<WorkshopRespVO>> getWorkshopPage(@Valid WorkshopPageReqVO pageReqVO) {
PageResult<WorkshopDO> pageResult = workshopService.getWorkshopPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, WorkshopRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出车间 Excel")
@PreAuthorize("@ss.hasPermission('heli:workshop:export')")
@OperateLog(type = EXPORT)
public void exportWorkshopExcel(@Valid WorkshopPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<WorkshopDO> list = workshopService.getWorkshopPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "车间.xls", "数据", WorkshopRespVO.class,
BeanUtils.toBean(list, WorkshopRespVO.class));
}
}

@ -0,0 +1,46 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.workshop.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 车间分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class WorkshopPageReqVO extends PageParam {
@Schema(description = "生产车间编号,唯一")
private String code;
@Schema(description = "生产车间名称,唯一", example = "芋艿")
private String name;
@Schema(description = "部门id", example = "14307")
private Long deptId;
@Schema(description = "部门名称", example = "14307")
private String deptName;
@Schema(description = "负责人", example = "17802")
private Long leaderUserId;
@Schema(description = "负责人名称", example = "17802")
private String leaderUserName;
@Schema(description = "描述信息", example = "你说的对")
private String description;
@Schema(description = "状态,1表示正常2表示禁用默认是1", example = "1")
private Integer status;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,54 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.workshop.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 车间 Response VO")
@Data
@ExcelIgnoreUnannotated
public class WorkshopRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "20381")
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "生产车间编号,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("生产车间编号,唯一")
private String code;
@Schema(description = "生产车间名称,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@ExcelProperty("生产车间名称,唯一")
private String name;
@Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14307")
@ExcelProperty("部门id")
private Long deptId;
@Schema(description = "负责人", example = "17802")
@ExcelProperty("负责人")
private Long leaderUserId;
@Schema(description = "部门名称", example = "14307")
private String deptName;
@Schema(description = "负责人名称", example = "17802")
private String leaderUserName;
@Schema(description = "描述信息", example = "你说的对")
@ExcelProperty("描述信息")
private String description;
@Schema(description = "状态,1表示正常2表示禁用默认是1", example = "1")
@ExcelProperty("状态,1表示正常2表示禁用默认是1")
private Integer status;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,36 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.workshop.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
@Schema(description = "管理后台 - 车间新增/修改 Request VO")
@Data
public class WorkshopSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "20381")
private Long id;
@Schema(description = "生产车间编号,唯一")
private String code;
@Schema(description = "生产车间名称,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@NotEmpty(message = "生产车间名称,唯一不能为空")
private String name;
@Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14307")
@NotNull(message = "部门id不能为空")
private Long deptId;
@Schema(description = "负责人", example = "17802")
private Long leaderUserId;
@Schema(description = "描述信息", example = "你说的对")
private String description;
@Schema(description = "状态,1表示正常2表示禁用默认是1", example = "1")
private Integer status;
}

@ -0,0 +1,66 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.workshop;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("base_workshop")
@KeySequence("base_workshop_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WorkshopDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
*
*/
private String code;
/**
* ,
*/
private String name;
/**
* id
*/
private Long deptId;
/**
*
*/
private Long leaderUserId;
/**
*
*/
private String description;
/**
* ,121
*/
private Integer status;
/**
*
*/
@TableField(exist = false)
private String deptName;
/**
*
*/
@TableField(exist = false)
private String leaderUserName;
}

@ -0,0 +1,34 @@
package com.chanko.yunxi.mes.module.heli.dal.mysql.workshop;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.controller.admin.workshop.vo.WorkshopPageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.workshop.WorkshopDO;
import com.chanko.yunxi.mes.module.system.dal.dataobject.dept.DeptDO;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang.StringUtils;
import org.apache.ibatis.annotations.Mapper;
/**
* Mapper
*
* @author
*/
@Mapper
public interface WorkshopMapper extends BaseMapperX<WorkshopDO> {
default PageResult<WorkshopDO> selectPage(WorkshopPageReqVO reqVO) {
MPJLambdaWrapper<WorkshopDO> query = new MPJLambdaWrapper<>();
query.selectAll(WorkshopDO.class)
.select("u.nickname as leaderUserName", "d.name as deptName")
.leftJoin(AdminUserDO.class, "u", AdminUserDO::getId, WorkshopDO::getLeaderUserId)
.leftJoin(DeptDO.class, "d", DeptDO::getId, WorkshopDO::getDeptId);
query.like(!StringUtils.isEmpty(reqVO.getCode()), WorkshopDO::getCode, reqVO.getCode())
.like(!StringUtils.isEmpty(reqVO.getName()), WorkshopDO::getName, reqVO.getName())
.eq(reqVO.getStatus() != null, WorkshopDO::getStatus, reqVO.getStatus());
return selectPage(reqVO, query);
}
}

@ -0,0 +1,55 @@
package com.chanko.yunxi.mes.module.heli.service.workshop;
import java.util.*;
import javax.validation.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.workshop.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.workshop.WorkshopDO;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
/**
* Service
*
* @author
*/
public interface WorkshopService {
/**
*
*
* @param createReqVO
* @return
*/
Long createWorkshop(@Valid WorkshopSaveReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateWorkshop(@Valid WorkshopSaveReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteWorkshop(Long id);
/**
*
*
* @param id
* @return
*/
WorkshopDO getWorkshop(Long id);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<WorkshopDO> getWorkshopPage(WorkshopPageReqVO pageReqVO);
}

@ -0,0 +1,77 @@
package com.chanko.yunxi.mes.module.heli.service.workshop;
import cn.hutool.core.lang.UUID;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import com.chanko.yunxi.mes.module.heli.controller.admin.workshop.vo.WorkshopPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.workshop.vo.WorkshopSaveReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.workshop.WorkshopDO;
import com.chanko.yunxi.mes.module.heli.dal.mysql.workshop.WorkshopMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.WORKSHOP;
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.WORKSHOP_NOT_EXISTS;
/**
* Service
*
* @author
*/
@Service
@Validated
public class WorkshopServiceImpl implements WorkshopService {
@Resource
private WorkshopMapper workshopMapper;
@Override
public Long createWorkshop(WorkshopSaveReqVO createReqVO) {
// 插入
// 自动生成
WorkshopDO workshop = BeanUtils.toBean(createReqVO, WorkshopDO.class);
workshop.setCode(UUID.fastUUID().toString(true));
workshopMapper.insert(workshop);
workshop.setCode(WORKSHOP.getCode(workshop.getId().toString()));
workshopMapper.updateById(workshop);
// 返回
return workshop.getId();
}
@Override
public void updateWorkshop(WorkshopSaveReqVO updateReqVO) {
// 校验存在
validateWorkshopExists(updateReqVO.getId());
// 更新
WorkshopDO updateObj = BeanUtils.toBean(updateReqVO, WorkshopDO.class);
workshopMapper.updateById(updateObj);
}
@Override
public void deleteWorkshop(Long id) {
// 校验存在
validateWorkshopExists(id);
// 删除
workshopMapper.deleteById(id);
}
private void validateWorkshopExists(Long id) {
if (workshopMapper.selectById(id) == null) {
throw exception(WORKSHOP_NOT_EXISTS);
}
}
@Override
public WorkshopDO getWorkshop(Long id) {
return workshopMapper.selectById(id);
}
@Override
public PageResult<WorkshopDO> getWorkshopPage(WorkshopPageReqVO pageReqVO) {
return workshopMapper.selectPage(pageReqVO);
}
}

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.chanko.yunxi.mes.module.heli.dal.mysql.workshop.WorkshopMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -0,0 +1,41 @@
import request from '@/config/axios'
export interface WorkshopVO {
id: number
code: string
name: string
deptId: number
leaderUserId: number
description: string
status: number
}
// 查询车间分页
export const getWorkshopPage = async (params) => {
return await request.get({ url: `/heli/workshop/page`, params })
}
// 查询车间详情
export const getWorkshop = async (id: number) => {
return await request.get({ url: `/heli/workshop/get?id=` + id })
}
// 新增车间
export const createWorkshop = async (data: WorkshopVO) => {
return await request.post({ url: `/heli/workshop/create`, data })
}
// 修改车间
export const updateWorkshop = async (data: WorkshopVO) => {
return await request.put({ url: `/heli/workshop/update`, data })
}
// 删除车间
export const deleteWorkshop = async (id: number) => {
return await request.delete({ url: `/heli/workshop/delete?id=` + id })
}
// 导出车间 Excel
export const exportWorkshop = async (params) => {
return await request.download({ url: `/heli/workshop/export-excel`, params })
}

@ -41,3 +41,8 @@ export const updateDept = async (params: DeptVO) => {
export const deleteDept = async (id: number) => {
return await request.delete({ url: '/system/dept/delete?id=' + id })
}
export const getDeptSimpleName = async (id: number) => {
const dept = await getDept(id);
return dept.name;
}

@ -79,3 +79,8 @@ export const updateUserStatus = (id: number, status: number) => {
export const getSimpleUserList = (): Promise<UserVO[]> => {
return request.get({ url: '/system/user/simple-list' })
}
export const getSimpleUserName = async (id: number) => {
const user = await getUser(id);
return user.nickname;
}

@ -266,7 +266,7 @@ const props = defineProps({
// valueWatch: true, // xml watch
processId: String, // key
processName: String, // name
formId: Number, // form
formId: Number, // form
translations: {
//
type: Object,

@ -99,7 +99,7 @@
</p>
<el-table :data="fieldEnumList" key="enum-table" max-height="240" fit border>
<el-table-column label="序号" width="50px" type="index" />
<el-table-column label="枚举值编" prop="id" min-width="100px" show-overflow-tooltip />
<el-table-column label="枚举值编" prop="id" min-width="100px" show-overflow-tooltip />
<el-table-column label="枚举值名称" prop="name" min-width="100px" show-overflow-tooltip />
<el-table-column label="操作" width="90px">
<template #default="scope">
@ -164,7 +164,7 @@
</p>
<el-table :data="fieldPropertiesList" key="property-table" max-height="240" fit border>
<el-table-column label="序号" width="50px" type="index" />
<el-table-column label="属性编" prop="id" min-width="100px" show-overflow-tooltip />
<el-table-column label="属性编" prop="id" min-width="100px" show-overflow-tooltip />
<el-table-column label="属性值" prop="value" min-width="100px" show-overflow-tooltip />
<el-table-column label="操作" width="90px">
<template #default="scope">
@ -201,7 +201,7 @@
destroy-on-close
>
<el-form :model="fieldOptionForm" label-width="96px">
<el-form-item label="编/ID" v-if="fieldOptionType !== 'constraint'" key="option-id">
<el-form-item label="编/ID" v-if="fieldOptionType !== 'constraint'" key="option-id">
<el-input v-model="fieldOptionForm.id" clearable />
</el-form-item>
<el-form-item label="名称" v-if="fieldOptionType !== 'property'" key="option-name">

@ -1,7 +1,7 @@
<template>
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column label="定义编" align="center" prop="id" width="400" />
<el-table-column label="定义编" align="center" prop="id" width="400" />
<el-table-column label="流程名称" align="center" prop="name" width="200">
<template #default="scope">
<el-button type="primary" link @click="handleBpmnDetail(scope.row)">

@ -37,7 +37,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column align="center" label="编" prop="id" />
<el-table-column align="center" label="编" prop="id" />
<el-table-column align="center" label="表单名" prop="name" />
<el-table-column align="center" label="状态" prop="status">
<template #default="scope">

@ -56,7 +56,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="组名" align="center" prop="name" />
<el-table-column label="描述" align="center" prop="description" />
<el-table-column label="成员" align="center">

@ -84,7 +84,7 @@ const close = () => {
onMounted(async () => {
const modelId = query.modelId as unknown as number
if (!modelId) {
message.error('缺少模型 modelId 编')
message.error('缺少模型 modelId 编')
return
}
//

@ -31,7 +31,7 @@ const props = defineProps({
})
const detailLoading = ref(false) //
const detailData = ref<any>({}) //
const queryId = query.id as unknown as number // URL id
const queryId = query.id as unknown as number // URL id
/** 获得数据 */
const getInfo = async () => {

@ -66,7 +66,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column label="申请编" align="center" prop="id" />
<el-table-column label="申请编" align="center" prop="id" />
<el-table-column label="状态" align="center" prop="result">
<template #default="scope">
<dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT" :value="scope.row.result" />

@ -23,7 +23,7 @@ defineOptions({ name: 'BpmProcessInstanceBpmnViewer' })
const props = defineProps({
loading: propTypes.bool, //
id: propTypes.string, //
id: propTypes.string, //
processInstance: propTypes.any, //
tasks: propTypes.array, //
bpmnXml: propTypes.string // BPMN XML

@ -125,8 +125,8 @@ const { query } = useRoute() // 查询参数
const message = useMessage() //
const { proxy } = getCurrentInstance() as any
const userId = useUserStore().getUser.id //
const id = query.id as unknown as number //
const userId = useUserStore().getUser.id //
const id = query.id as unknown as number //
const processInstanceLoading = ref(false) //
const processInstance = ref<any>({}) //
const bpmnXML = ref('') // BPMN XML

@ -20,7 +20,7 @@
<el-form-item label="所属流程" prop="processDefinitionId">
<el-input
v-model="queryParams.processDefinitionId"
placeholder="请输入流程定义的编"
placeholder="请输入流程定义的编"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
@ -90,7 +90,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column label="流程编" align="center" prop="id" width="300px" />
<el-table-column label="流程编" align="center" prop="id" width="300px" />
<el-table-column label="流程名称" align="center" prop="name" />
<el-table-column label="流程分类" align="center" prop="category">
<template #default="scope">

@ -1,7 +1,7 @@
<template>
<Dialog v-model="dialogVisible" :max-height="500" :scroll="true" title="详情">
<el-descriptions :column="1" border>
<el-descriptions-item label="任务编" min-width="120">
<el-descriptions-item label="任务编" min-width="120">
{{ detailData.id }}
</el-descriptions-item>
<el-descriptions-item label="任务名称">

@ -44,7 +44,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column align="center" label="任务编" prop="id" width="300px" />
<el-table-column align="center" label="任务编" prop="id" width="300px" />
<el-table-column align="center" label="任务名称" prop="name" />
<el-table-column align="center" label="所属流程" prop="processInstance.name" />
<el-table-column align="center" label="流程发起人" prop="processInstance.startUserNickname" />

@ -44,7 +44,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column align="center" label="任务编" prop="id" width="300px" />
<el-table-column align="center" label="任务编" prop="id" width="300px" />
<el-table-column align="center" label="任务名称" prop="name" />
<el-table-column align="center" label="所属流程" prop="processInstance.name" />
<el-table-column align="center" label="流程发起人" prop="processInstance.startUserNickname" />

@ -49,8 +49,8 @@ const { query } = useRoute() // 查询参数
const loading = ref(true) //
const list = ref([]) //
const queryParams = reactive({
modelId: query.modelId, // modelId
processDefinitionId: query.processDefinitionId // processDefinitionId
modelId: query.modelId, // modelId
processDefinitionId: query.processDefinitionId // processDefinitionId
})
const roleOptions = ref<RoleApi.RoleVO[]>([]) //
const deptOptions = ref<DeptApi.DeptVO[]>([]) //

@ -29,7 +29,7 @@
</template>
<el-table :data="customerList" ref="multipleTableRef" @select="handleSelectionChange">
<el-table-column width="55" label="选择" type="selection" />
<el-table-column width="100" label="编" property="id" />
<el-table-column width="100" label="编" property="id" />
<el-table-column width="150" label="客户名称" property="name" />
<el-table-column width="100" label="客户来源" prop="source" align="center">
<template #default="scope">

@ -43,7 +43,7 @@ import { fenToYuanFormat } from '@/utils/formatter'
defineOptions({ name: 'CrmBusinessList' })
const props = defineProps<{
bizType: number //
bizId: number //
bizId: number //
}>()
const loading = ref(true) //

@ -57,7 +57,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="转化状态" align="center" prop="transformStatus">
<template #default="scope">
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.transformStatus" />

@ -17,7 +17,7 @@
:show-overflow-tooltip="true"
class="mt-4"
>
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="规则类型" align="center" prop="type" />
<el-table-column
label="规则适用人群"

@ -48,7 +48,7 @@ import { BizTypeEnum } from '@/api/crm/permission'
defineOptions({ name: 'CrmContactList' })
const props = defineProps<{
bizType: number //
bizId: number //
bizId: number //
}>()
const loading = ref(true) //

@ -37,8 +37,8 @@
<el-form-item label="负责人" prop="ownerUserId">
<el-input v-model="formData.ownerUserId" placeholder="请选择负责人" />
</el-form-item>
<el-form-item label="合同编" prop="no">
<el-input v-model="formData.no" placeholder="请输入合同编" />
<el-form-item label="合同编" prop="no">
<el-input v-model="formData.no" placeholder="请输入合同编" />
</el-form-item>
<el-row>
@ -91,8 +91,8 @@
<el-row>
<el-col :span="12">
<el-form-item label="联系人编" prop="contactId">
<el-input v-model="formData.contactId" placeholder="请输入联系人编" />
<el-form-item label="联系人编" prop="contactId">
<el-input v-model="formData.contactId" placeholder="请输入联系人编" />
</el-form-item>
</el-col>
<el-col :span="12">

@ -17,7 +17,7 @@
</el-link>
</template>
</el-table-column>
<el-table-column label="合同编" align="center" prop="no" />
<el-table-column label="合同编" align="center" prop="no" />
<el-table-column label="客户名称" align="center" prop="customerName" />
<el-table-column
label="合同金额(元)"
@ -68,7 +68,7 @@ import { DICT_TYPE } from '@/utils/dict'
defineOptions({ name: 'CrmContractList' })
const props = defineProps<{
bizType: number //
bizId: number //
bizId: number //
}>()
const loading = ref(true) //

@ -8,10 +8,10 @@
:inline="true"
label-width="68px"
>
<el-form-item label="合同编" prop="no">
<el-form-item label="合同编" prop="no">
<el-input
v-model="queryParams.no"
placeholder="请输入合同编"
placeholder="请输入合同编"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
@ -49,7 +49,7 @@
<!-- TODO 芋艿各种字段要调整 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="合同编" align="center" prop="id" />
<el-table-column label="合同编" align="center" prop="id" />
<el-table-column label="合同名称" align="center" prop="name" />
<el-table-column label="客户名称" align="center" prop="customerId" />
<el-table-column label="商机名称" align="center" prop="businessId" />
@ -62,7 +62,7 @@
width="180px"
/>
<el-table-column label="负责人" align="center" prop="ownerUserId" />
<el-table-column label="合同编" align="center" prop="no" />
<el-table-column label="合同编" align="center" prop="no" />
<el-table-column
label="开始时间"
align="center"

@ -42,7 +42,7 @@ import { BizTypeEnum } from '@/api/crm/permission'
defineOptions({ name: 'CrmCustomerDetail' })
const route = useRoute()
const id = Number(route.params.id) //
const id = Number(route.params.id) //
const loading = ref(true) //
/** 获取详情 */

@ -93,7 +93,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
<el-table-column align="center" label="编" prop="id" />
<el-table-column align="center" label="编" prop="id" />
<el-table-column align="center" label="客户名称" prop="name" width="160">
<template #default="scope">
<el-link type="primary" :underline="false" @click="openDetail(scope.row.id)">

@ -54,9 +54,9 @@ const formLoading = ref(false) // 表单的加载中1修改时的数据加
const formType = ref('') // create - update -
const userOptions = ref<UserApi.UserVO[]>([]) //
const formData = ref<PermissionApi.PermissionVO & { ids?: number[] }>({
userId: undefined, //
userId: undefined, //
bizType: undefined, // CRM
bizId: undefined, // CRM
bizId: undefined, // CRM
level: undefined //
})
const formRules = reactive({
@ -108,9 +108,9 @@ const submitForm = async () => {
const resetForm = (bizType: number, bizId: number) => {
formRef.value?.resetFields()
formData.value = {
userId: undefined, //
userId: undefined, //
bizType, // Crm
bizId, // Crm
bizId, // Crm
level: undefined //
}
}

@ -56,7 +56,7 @@ import CrmPermissionForm from './PermissionForm.vue'
defineOptions({ name: 'CrmPermissionList' })
const props = defineProps<{
bizType: number //
bizId: number //
bizId: number //
}>()
const message = useMessage() //

@ -113,7 +113,7 @@ const dialogVisible = ref(false) // 弹窗的是否展示
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const userId = useUserStore().getUser.id //
const userId = useUserStore().getUser.id //
const formData = ref({
id: undefined,
name: undefined,

@ -7,8 +7,8 @@
label-width="100px"
v-loading="formLoading"
>
<el-form-item label="回款编" prop="no">
<el-input v-model="formData.no" placeholder="请输入回款编" />
<el-form-item label="回款编" prop="no">
<el-input v-model="formData.no" placeholder="请输入回款编" />
</el-form-item>
<el-form-item label="回款计划" prop="planId">
<el-input v-model="formData.planId" placeholder="请输入回款计划" />
@ -29,8 +29,8 @@
/>
</el-select>
</el-form-item>-->
<!--<el-form-item label="工作流编" prop="processInstanceId">
<el-input v-model="formData.processInstanceId" placeholder="请输入工作流编" />
<!--<el-form-item label="工作流编" prop="processInstanceId">
<el-input v-model="formData.processInstanceId" placeholder="请输入工作流编" />
</el-form-item>-->
<el-form-item label="回款日期" prop="returnTime">
<el-date-picker

@ -10,14 +10,14 @@
<!-- 列表 -->
<ContentWrap class="mt-10px">
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="回款编" fixed="left" align="center" prop="no">
<el-table-column label="回款编" fixed="left" align="center" prop="no">
<template #default="scope">
<el-link type="primary" :underline="false" @click="openDetail(scope.row.id)">
{{ scope.row.no }}
</el-link>
</template>
</el-table-column>
<el-table-column label="合同编" align="center" prop="contractNo" />
<el-table-column label="合同编" align="center" prop="contractNo" />
<el-table-column
label="回款金额(元)"
align="center"
@ -61,7 +61,7 @@ import { DICT_TYPE } from '@/utils/dict'
defineOptions({ name: 'CrmReceivableList' })
const props = defineProps<{
bizType: number //
bizId: number //
bizId: number //
}>()
const loading = ref(true) //

@ -8,10 +8,10 @@
:inline="true"
label-width="68px"
>
<el-form-item label="回款编" prop="no">
<el-form-item label="回款编" prop="no">
<el-input
v-model="queryParams.no"
placeholder="请输入回款编"
placeholder="请输入回款编"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
@ -54,7 +54,7 @@
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="ID" align="center" prop="id" />
<el-table-column label="回款编" align="center" prop="no" />
<el-table-column label="回款编" align="center" prop="no" />
<!-- <el-table-column label="回款计划ID" align="center" prop="planId" />-->
<el-table-column label="客户" align="center" prop="customerId" />
<el-table-column label="合同" align="center" prop="contractId" />
@ -63,7 +63,7 @@
<dict-tag :type="DICT_TYPE.CRM_AUDIT_STATUS" :value="scope.row.checkStatus" />
</template>
</el-table-column>
<!-- <el-table-column label="工作流编" align="center" prop="processInstanceId" />-->
<!-- <el-table-column label="工作流编" align="center" prop="processInstanceId" />-->
<el-table-column
label="回款日期"
align="center"

@ -49,8 +49,8 @@
/>
</el-select>
</el-form-item>
<el-form-item label="工作流编" prop="processInstanceId">
<el-input v-model="formData.processInstanceId" placeholder="请输入工作流编" />
<el-form-item label="工作流编" prop="processInstanceId">
<el-input v-model="formData.processInstanceId" placeholder="请输入工作流编" />
</el-form-item>-->
<el-form-item label="计划回款金额" prop="price">
<el-input-number v-model="formData.price" placeholder="请输入计划回款金额" />

@ -18,7 +18,7 @@
</template>
</el-table-column>
<el-table-column label="客户名称" align="center" prop="customerName" />
<el-table-column label="合同编" align="center" prop="contractNo" />
<el-table-column label="合同编" align="center" prop="contractNo" />
<el-table-column
label="计划还款金额(元)"
align="center"
@ -64,7 +64,7 @@ import { DICT_TYPE } from '@/utils/dict'
defineOptions({ name: 'CrmReceivablePlanList' })
const props = defineProps<{
bizType: number //
bizId: number //
bizId: number //
}>()
const loading = ref(true) //

@ -84,7 +84,7 @@
<dict-tag :type="DICT_TYPE.CRM_AUDIT_STATUS" :value="scope.row.checkStatus" />
</template>
</el-table-column>
<!--<el-table-column label="工作流编" align="center" prop="processInstanceId" />-->
<!--<el-table-column label="工作流编" align="center" prop="processInstanceId" />-->
<el-table-column prop="ownerUserId" label="负责人" width="120">
<template #default="scope">
{{ userList.find((user) => user.id === scope.row.ownerUserId)?.nickname }}

@ -7,8 +7,8 @@
label-width="100px"
v-loading="formLoading"
>
<el-form-item label="客户编" prop="code">
<el-input v-model="formData.code" placeholder="请输入客户编" />
<el-form-item label="客户编" prop="code">
<el-input v-model="formData.code" placeholder="请输入客户编" />
</el-form-item>
<el-form-item label="客户简称" prop="simpleName">
<el-input v-model="formData.simpleName" placeholder="请输入客户简称" />

@ -8,10 +8,10 @@
:inline="true"
label-width="68px"
>
<el-form-item label="客户编" prop="code">
<el-form-item label="客户编" prop="code">
<el-input
v-model="queryParams.code"
placeholder="请输入客户编"
placeholder="请输入客户编"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
@ -82,7 +82,7 @@
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="ID" align="center" prop="id" />
<el-table-column label="客户编" align="center" prop="code" />
<el-table-column label="客户编" align="center" prop="code" />
<el-table-column label="客户简称" align="center" prop="simpleName" />
<el-table-column label="客户全称" align="center" prop="name" />
<el-table-column label="客户电话" align="center" prop="telephone" />

@ -0,0 +1,174 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
>
<el-form-item label="车间编码" prop="code">
<el-input v-model="formData.code" disabled placeholder="系统自动生成" />
</el-form-item>
<el-form-item label="车间名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入车间名称" />
</el-form-item>
<el-form-item label="所属部门" prop="deptId">
<el-tree-select
v-model="formData.deptId"
:data="deptList"
:props="defaultProps"
check-strictly
node-key="id"
placeholder="请选择归属部门"
/>
</el-form-item>
<el-form-item label="负责人" prop="leaderUserId">
<el-select v-model="formData.leaderUserId"
placeholder="请输入负责人"
:remote-method="remoteUserSearch"
remote
reserve-keyword
filterable
:loading="userSelectLoading"
>
<el-option
v-for="item in userSelectList"
:key="item.id"
:label="item.nickname"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="描述信息" prop="description">
<el-input type="textarea" v-model="formData.description" height="150px" />
</el-form-item>
<el-form-item label="启用状态" prop="status">
<el-radio-group v-model="formData.status">
<el-radio
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_STATUS)"
:key="dict.value"
:label="dict.value"
>
{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import * as WorkshopApi from '@/api/heli/workshop'
import {defaultProps, handleTree} from "@/utils/tree";
import * as DeptApi from '@/api/system/dept'
import * as UserApi from "@/api/system/user";
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
id: undefined,
code: undefined,
name: undefined,
deptId: undefined,
leaderUserId: undefined,
description: undefined,
status: undefined,
})
const formRules = reactive({
name: [{ required: true, message: '车间名称不能为空', trigger: 'blur' }],
deptId: [{ required: true, message: '所属部门不能为空', trigger: 'blur' }],
status: [{ required: true, message: '启用状态不能为空', trigger: 'blur' }],
})
const formRef = ref() // Ref
const deptList = ref<Tree[]>([]) //
const userList = ref<UserApi.UserVO[]>([]) //
const userSelectList = ref<UserApi.UserVO[]>([])
const userSelectLoading = ref(false);
const remoteUserSearch = (query: string) => {
if (query) {
userSelectLoading.value = true
setTimeout(() => {
userSelectLoading.value = false
userSelectList.value = userList.value.filter((item) => {
return item.nickname.toLowerCase().includes(query.toLowerCase())
})
}, 200)
} else {
userSelectList.value = []
}
}
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
resetForm()
//
formLoading.value = true
try {
if (id) {
formData.value = await WorkshopApi.getWorkshop(id)
}
//
deptList.value = handleTree(await DeptApi.getSimpleDeptList())
//
const data = await UserApi.getSimpleUserList()
userList.value = data;
userSelectList.value = data;
} finally {
formLoading.value = false
}
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
await formRef.value.validate()
//
formLoading.value = true
try {
const data = formData.value as unknown as WorkshopApi.WorkshopVO
if (formType.value === 'create') {
await WorkshopApi.createWorkshop(data)
message.success(t('common.createSuccess'))
} else {
await WorkshopApi.updateWorkshop(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
code: undefined,
name: undefined,
deptId: undefined,
leaderUserId: undefined,
description: undefined,
status: undefined,
}
formRef.value?.resetFields()
}
</script>

@ -0,0 +1,214 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="车间编码" prop="code">
<el-input
v-model="queryParams.code"
placeholder="请输入车间编码"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="车间名称" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入车间名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="启用状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="请选择启用状态"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['heli:workshop:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<!-- <el-button
type="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['heli:workshop:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>-->
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="序号" type="index" width="100" />
<el-table-column label="车间编码" align="center" prop="code" />
<el-table-column label="车间名称" align="center" prop="name" />
<el-table-column label="所属部门" align="center" prop="deptName" />
<el-table-column label="负责人" align="center" prop="leaderUserName" />
<el-table-column label="描述信息" align="center" prop="description" />
<el-table-column label="启用状态" align="center" prop="status">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_COMMON_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['heli:workshop:update']"
>
编辑
</el-button>
<!-- <el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['heli:workshop:delete']"
>
删除
</el-button>-->
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<WorkshopForm ref="formRef" @success="getList" />
</template>
<script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import * as WorkshopApi from '@/api/heli/workshop'
import WorkshopForm from './WorkshopForm.vue'
import {getSimpleUserName} from "@/api/system/user";
defineOptions({ name: 'Workshop' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const list = ref([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
code: undefined,
name: undefined,
deptId: undefined,
leaderUserId: undefined,
description: undefined,
status: undefined,
createTime: [],
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await WorkshopApi.getWorkshopPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await WorkshopApi.deleteWorkshop(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await WorkshopApi.exportWorkshop(queryParams)
download.excel(data, '车间.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 初始化 **/
onMounted(() => {
getList()
})
</script>

@ -10,10 +10,10 @@
:inline="true"
label-width="68px"
>
<el-form-item label="用户编" prop="userId">
<el-form-item label="用户编" prop="userId">
<el-input
v-model="queryParams.userId"
placeholder="请输入用户编"
placeholder="请输入用户编"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
@ -91,8 +91,8 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column label="日志编" align="center" prop="id" />
<el-table-column label="用户编" align="center" prop="userId" />
<el-table-column label="日志编" align="center" prop="id" />
<el-table-column label="用户编" align="center" prop="userId" />
<el-table-column label="用户类型" align="center" prop="userType">
<template #default="scope">
<dict-tag :type="DICT_TYPE.USER_TYPE" :value="scope.row.userType" />

@ -10,7 +10,7 @@
<el-descriptions-item label="应用名">
{{ detailData.applicationName }}
</el-descriptions-item>
<el-descriptions-item label="用户编">
<el-descriptions-item label="用户编">
{{ detailData.userId }}
<dict-tag :type="DICT_TYPE.USER_TYPE" :value="detailData.userType" />
</el-descriptions-item>

@ -10,10 +10,10 @@
:inline="true"
label-width="68px"
>
<el-form-item label="用户编" prop="userId">
<el-form-item label="用户编" prop="userId">
<el-input
v-model="queryParams.userId"
placeholder="请输入用户编"
placeholder="请输入用户编"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
@ -88,8 +88,8 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column label="日志编" align="center" prop="id" />
<el-table-column label="用户编" align="center" prop="userId" />
<el-table-column label="日志编" align="center" prop="id" />
<el-table-column label="用户编" align="center" prop="userId" />
<el-table-column label="用户类型" align="center" prop="userType">
<template #default="scope">
<dict-tag :type="DICT_TYPE.USER_TYPE" :value="scope.row.userType" />

@ -191,7 +191,7 @@
<el-form-item prop="treeParentColumnId">
<template #label>
<span>
父编字段
父编字段
<el-tooltip content="树显示的父编码字段名, 如parent_Id" placement="top">
<Icon icon="ep:question-filled" />
</el-tooltip>

@ -18,7 +18,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column label="主键编" align="center" prop="id" />
<el-table-column label="主键编" align="center" prop="id" />
<el-table-column label="数据源名称" align="center" prop="name" />
<el-table-column label="数据源连接" align="center" prop="url" :show-overflow-tooltip="true" />
<el-table-column label="用户名" align="center" prop="username" />

@ -67,7 +67,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="名字" align="center" prop="name" />
<el-table-column label="性别" align="center" prop="sex">
<template #default="scope">

@ -10,14 +10,14 @@
<el-form-item label="名字" prop="name">
<el-input v-model="formData.name" placeholder="请输入名字" />
</el-form-item>
<el-form-item label="父级编" prop="parentId">
<el-form-item label="父级编" prop="parentId">
<el-tree-select
v-model="formData.parentId"
:data="demo02CategoryTree"
:props="defaultProps"
check-strictly
default-expand-all
placeholder="请选择父级编"
placeholder="请选择父级编"
/>
</el-form-item>
</el-form>
@ -45,7 +45,7 @@ const formData = ref({
})
const formRules = reactive({
name: [{ required: true, message: '名字不能为空', trigger: 'blur' }],
parentId: [{ required: true, message: '父级编不能为空', trigger: 'blur' }]
parentId: [{ required: true, message: '父级编不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref
const demo02CategoryTree = ref() //

@ -68,7 +68,7 @@
:default-expand-all="isExpandAll"
v-if="refreshTable"
>
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="名字" align="center" prop="name" />
<el-table-column
label="创建时间"

@ -37,7 +37,7 @@ const formData = ref({
score: undefined
})
const formRules = reactive({
studentId: [{ required: true, message: '学生编不能为空', trigger: 'blur' }],
studentId: [{ required: true, message: '学生编不能为空', trigger: 'blur' }],
name: [{ required: true, message: '名字不能为空', trigger: 'blur' }],
score: [{ required: true, message: '分数不能为空', trigger: 'blur' }]
})

@ -10,7 +10,7 @@
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="名字" align="center" prop="name" />
<el-table-column label="分数" align="center" prop="score" />
<el-table-column
@ -62,7 +62,7 @@ const { t } = useI18n() // 国际化
const message = useMessage() //
const props = defineProps<{
studentId: undefined //
studentId: undefined //
}>()
const loading = ref(false) //
const list = ref([]) //

@ -37,7 +37,7 @@ const formData = ref({
teacher: undefined
})
const formRules = reactive({
studentId: [{ required: true, message: '学生编不能为空', trigger: 'blur' }],
studentId: [{ required: true, message: '学生编不能为空', trigger: 'blur' }],
name: [{ required: true, message: '名字不能为空', trigger: 'blur' }],
teacher: [{ required: true, message: '班主任不能为空', trigger: 'blur' }]
})

@ -10,7 +10,7 @@
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="名字" align="center" prop="name" />
<el-table-column label="班主任" align="center" prop="teacher" />
<el-table-column
@ -62,7 +62,7 @@ const { t } = useI18n() // 国际化
const message = useMessage() //
const props = defineProps<{
studentId: undefined //
studentId: undefined //
}>()
const loading = ref(false) //
const list = ref([]) //

@ -74,7 +74,7 @@
highlight-current-row
@current-change="handleCurrentChange"
>
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="名字" align="center" prop="name" />
<el-table-column label="性别" align="center" prop="sex">
<template #default="scope">

@ -38,12 +38,12 @@
import * as Demo03StudentApi from '@/api/infra/demo/demo03/inner'
const props = defineProps<{
studentId: undefined //
studentId: undefined //
}>()
const formLoading = ref(false) //
const formData = ref([])
const formRules = reactive({
studentId: [{ required: true, message: '学生编不能为空', trigger: 'blur' }],
studentId: [{ required: true, message: '学生编不能为空', trigger: 'blur' }],
name: [{ required: true, message: '名字不能为空', trigger: 'blur' }],
score: [{ required: true, message: '分数不能为空', trigger: 'blur' }]
})

@ -2,7 +2,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="名字" align="center" prop="name" />
<el-table-column label="分数" align="center" prop="score" />
<el-table-column
@ -23,7 +23,7 @@ const { t } = useI18n() // 国际化
const message = useMessage() //
const props = defineProps<{
studentId: undefined //
studentId: undefined //
}>()
const loading = ref(false) //
const list = ref([]) //

@ -18,12 +18,12 @@
import * as Demo03StudentApi from '@/api/infra/demo/demo03/inner'
const props = defineProps<{
studentId: undefined //
studentId: undefined //
}>()
const formLoading = ref(false) //
const formData = ref([])
const formRules = reactive({
studentId: [{ required: true, message: '学生编不能为空', trigger: 'blur' }],
studentId: [{ required: true, message: '学生编不能为空', trigger: 'blur' }],
name: [{ required: true, message: '名字不能为空', trigger: 'blur' }],
teacher: [{ required: true, message: '班主任不能为空', trigger: 'blur' }]
})

@ -2,7 +2,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="名字" align="center" prop="name" />
<el-table-column label="班主任" align="center" prop="teacher" />
<el-table-column
@ -23,7 +23,7 @@ const { t } = useI18n() // 国际化
const message = useMessage() //
const props = defineProps<{
studentId: undefined //
studentId: undefined //
}>()
const loading = ref(false) //
const list = ref([]) //

@ -80,7 +80,7 @@
</el-tabs>
</template>
</el-table-column>
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="名字" align="center" prop="name" />
<el-table-column label="性别" align="center" prop="sex">
<template #default="scope">

@ -38,12 +38,12 @@
import * as Demo03StudentApi from '@/api/infra/demo/demo03/normal'
const props = defineProps<{
studentId: undefined //
studentId: undefined //
}>()
const formLoading = ref(false) //
const formData = ref([])
const formRules = reactive({
studentId: [{ required: true, message: '学生编不能为空', trigger: 'blur' }],
studentId: [{ required: true, message: '学生编不能为空', trigger: 'blur' }],
name: [{ required: true, message: '名字不能为空', trigger: 'blur' }],
score: [{ required: true, message: '分数不能为空', trigger: 'blur' }]
})

@ -18,12 +18,12 @@
import * as Demo03StudentApi from '@/api/infra/demo/demo03/normal'
const props = defineProps<{
studentId: undefined //
studentId: undefined //
}>()
const formLoading = ref(false) //
const formData = ref([])
const formRules = reactive({
studentId: [{ required: true, message: '学生编不能为空', trigger: 'blur' }],
studentId: [{ required: true, message: '学生编不能为空', trigger: 'blur' }],
name: [{ required: true, message: '名字不能为空', trigger: 'blur' }],
teacher: [{ required: true, message: '班主任不能为空', trigger: 'blur' }]
})

@ -67,7 +67,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="名字" align="center" prop="name" />
<el-table-column label="性别" align="center" prop="sex">
<template #default="scope">

@ -63,7 +63,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="配置名" align="center" prop="name" />
<el-table-column label="存储器" align="center" prop="storage">
<template #default="scope">
@ -195,7 +195,7 @@ const handleDelete = async (id: number) => {
/** 主配置按钮操作 */
const handleMaster = async (id) => {
try {
await message.confirm('是否确认修改配置编为"' + id + '"的数据项为主配置?')
await message.confirm('是否确认修改配置编为"' + id + '"的数据项为主配置?')
await FileConfigApi.updateFileConfigMaster(id)
message.success(t('common.updateSuccess'))
await getList()

@ -1,7 +1,7 @@
<template>
<Dialog v-model="dialogVisible" title="任务详细" width="700px">
<el-descriptions :column="1" border>
<el-descriptions-item label="任务编" min-width="60">
<el-descriptions-item label="任务编" min-width="60">
{{ detailData.id }}
</el-descriptions-item>
<el-descriptions-item label="任务名称">

@ -75,7 +75,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column label="任务编" align="center" prop="id" />
<el-table-column label="任务编" align="center" prop="id" />
<el-table-column label="任务名称" align="center" prop="name" />
<el-table-column label="任务状态" align="center" prop="status">
<template #default="scope">
@ -226,7 +226,7 @@ const handleChangeStatus = async (row: JobApi.JobVO) => {
//
const text = row.status === InfraJobStatusEnum.STOP ? '开启' : '关闭'
await message.confirm(
'确认要' + text + '定时任务编为"' + row.id + '"的数据项?',
'确认要' + text + '定时任务编为"' + row.id + '"的数据项?',
t('common.reminder')
)
const status =

@ -1,10 +1,10 @@
<template>
<Dialog v-model="dialogVisible" title="任务详细" width="700px">
<el-descriptions :column="1" border>
<el-descriptions-item label="日志编" min-width="60">
<el-descriptions-item label="日志编" min-width="60">
{{ detailData.id }}
</el-descriptions-item>
<el-descriptions-item label="任务编">
<el-descriptions-item label="任务编">
{{ detailData.jobId }}
</el-descriptions-item>
<el-descriptions-item label="处理器的名字">

@ -76,8 +76,8 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column label="日志编" align="center" prop="id" />
<el-table-column label="任务编" align="center" prop="jobId" />
<el-table-column label="日志编" align="center" prop="id" />
<el-table-column label="任务编" align="center" prop="jobId" />
<el-table-column label="处理器的名字" align="center" prop="handlerName" />
<el-table-column label="处理器的参数" align="center" prop="handlerParam" />
<el-table-column label="第几次执行" align="center" prop="executeIndex" />

@ -117,12 +117,12 @@ watchEffect(() => {
const single = content.single
if (single) {
messageList.value.push({
text: `【单发】用户编(${content.fromUserId})${content.text}`,
text: `【单发】用户编(${content.fromUserId})${content.text}`,
time: new Date().getTime()
})
} else {
messageList.value.push({
text: `【群发】用户编(${content.fromUserId})${content.text}`,
text: `【群发】用户编(${content.fromUserId})${content.text}`,
time: new Date().getTime()
})
}

@ -24,7 +24,7 @@ const props = defineProps({
modelValue: oneOfType<number | number[]>([Number, Array<Number>]),
//
multiple: propTypes.bool.def(false),
//
//
parentId: propTypes.number.def(undefined)
})

@ -20,8 +20,8 @@
<el-form-item label="工号" prop="userNickname">
<el-input v-model="queryParams.userNickname" placeholder="请输入工号" />
</el-form-item>
<el-form-item label="订单编" prop="orderId">
<el-input v-model="queryParams.orderId" placeholder="请输入订单编" />
<el-form-item label="订单编" prop="orderId">
<el-input v-model="queryParams.orderId" placeholder="请输入订单编" />
</el-form-item>
<el-form-item label="评论时间" prop="createTime">
<el-date-picker
@ -59,7 +59,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="false">
<el-table-column label="评论编" align="center" prop="id" min-width="80" />
<el-table-column label="评论编" align="center" prop="id" min-width="80" />
<el-table-column label="商品信息" align="center" min-width="400">
<template #default="scope">
<div class="row flex items-center gap-x-4px">

@ -53,7 +53,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column align="center" label="编" min-width="60" prop="id" />
<el-table-column align="center" label="编" min-width="60" prop="id" />
<el-table-column align="center" label="属性名称" prop="name" min-width="150" />
<el-table-column :show-overflow-tooltip="true" align="center" label="备注" prop="remark" />
<el-table-column

@ -7,7 +7,7 @@
:rules="formRules"
label-width="80px"
>
<el-form-item label="属性编" prop="category">
<el-form-item label="属性编" prop="category">
<el-input v-model="formData.propertyId" disabled="" />
</el-form-item>
<el-form-item label="名称" prop="name">

@ -45,7 +45,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column label="编" align="center" min-width="60" prop="id" />
<el-table-column label="编" align="center" min-width="60" prop="id" />
<el-table-column label="属性值名称" align="center" min-width="150" prop="name" />
<el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
<el-table-column

@ -76,7 +76,7 @@
</el-radio>
</template>
</el-table-column>
<el-table-column key="id" align="center" label="商品编" prop="id" min-width="60" />
<el-table-column key="id" align="center" label="商品编" prop="id" min-width="60" />
<el-table-column label="商品图" min-width="80">
<template #default="{ row }">
<el-image

@ -125,7 +125,7 @@
</el-form>
</template>
</el-table-column>
<el-table-column align="center" label="商品编" min-width="60" prop="id" />
<el-table-column align="center" label="商品编" min-width="60" prop="id" />
<el-table-column label="商品图" min-width="80">
<template #default="{ row }">
<el-image :src="row.picUrl" class="h-30px w-30px" @click="imagePreview(row.picUrl)" />

@ -63,7 +63,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
<el-table-column align="center" label="编" prop="id" min-width="100" />
<el-table-column align="center" label="编" prop="id" min-width="100" />
<el-table-column align="center" label="分类名称" prop="name" min-width="240" />
<el-table-column label="分类图图" min-width="80">
<template #default="{ row }">

@ -50,7 +50,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="活动编" prop="id" min-width="80" />
<el-table-column label="活动编" prop="id" min-width="80" />
<el-table-column label="活动名称" prop="name" min-width="140" />
<el-table-column label="活动时间" min-width="210">
<template #default="scope">

@ -3,7 +3,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="用户编" prop="userId" min-width="80px" />
<el-table-column label="用户编" prop="userId" min-width="80px" />
<el-table-column label="用户头像" prop="avatar" min-width="80px">
<template #default="scope">
<el-avatar :src="scope.row.avatar" />

@ -61,7 +61,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="编" min-width="50" prop="id" />
<el-table-column label="编" min-width="50" prop="id" />
<el-table-column label="发起用户" min-width="120">
<template #default="scope">
<el-image
@ -107,7 +107,7 @@
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="订单编" align="center" prop="orderId" />
<el-table-column label="订单编" align="center" prop="orderId" />
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button

@ -50,7 +50,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="活动编" prop="id" min-width="80" />
<el-table-column label="活动编" prop="id" min-width="80" />
<el-table-column label="活动名称" prop="name" min-width="140" />
<el-table-column label="活动时间" min-width="210">
<template #default="scope">

@ -3,7 +3,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column align="center" label="编" prop="id" min-width="50" />
<el-table-column align="center" label="编" prop="id" min-width="50" />
<el-table-column align="center" label="头像" prop="avatar" min-width="80">
<template #default="scope">
<el-avatar :src="scope.row.avatar" />

@ -114,7 +114,7 @@
<!-- 分页列表数据展示 -->
<ContentWrap>
<el-table v-loading="loading" :data="pageList">
<el-table-column align="center" label="编" prop="id" min-width="50" />
<el-table-column align="center" label="编" prop="id" min-width="50" />
<el-table-column align="center" label="头像" prop="avatar" min-width="80">
<template #default="scope">
<el-avatar :src="scope.row.avatar" />

@ -15,7 +15,7 @@
</SkuList>
</template>
</el-table-column>
<el-table-column key="id" align="center" label="商品编" prop="id" />
<el-table-column key="id" align="center" label="商品编" prop="id" />
<el-table-column label="商品图" min-width="80">
<template #default="{ row }">
<el-image :src="row.picUrl" class="h-30px w-30px" @click="imagePreview(row.picUrl)" />

@ -67,7 +67,7 @@
</template>
</el-table-column>
<el-table-column type="selection" width="55" />
<el-table-column key="id" align="center" label="商品编" prop="id" />
<el-table-column key="id" align="center" label="商品编" prop="id" />
<el-table-column label="商品图" min-width="80">
<template #default="{ row }">
<el-image :src="row.picUrl" class="h-30px w-30px" @click="imagePreview(row.picUrl)" />

@ -110,7 +110,7 @@ const queryParams = ref({
canTakeTypes: [CouponTemplateTakeTypeEnum.ADMIN.type]
}) //
const queryFormRef = ref() //
//
//
let userIds: number[] = []
/** 打开弹窗 */

@ -218,7 +218,7 @@ const formData = ref({
fixedStartTerm: undefined,
fixedEndTerm: undefined,
productScope: PromotionProductScopeEnum.ALL.scope,
productScopeValues: [], //
productScopeValues: [], //
productCategoryIds: [], //
productSpuIds: [] //
})
@ -349,7 +349,7 @@ const resetForm = () => {
const getProductScope = async () => {
switch (formData.value.productScope) {
case PromotionProductScopeEnum.SPU.scope:
//
//
formData.value.productSpuIds = formData.value.productScopeValues
break
case PromotionProductScopeEnum.CATEGORY.scope:
@ -359,7 +359,7 @@ const getProductScope = async () => {
// 使
productCategoryIds = productCategoryIds[0]
}
//
//
formData.value.productCategoryIds = productCategoryIds
})
break

@ -262,7 +262,7 @@ const handleStatusChange = async (row: any) => {
const handleDelete = async (id: number) => {
try {
//
await message.confirm('是否确认删除优惠劵编为"' + id + '"的数据项?')
await message.confirm('是否确认删除优惠劵编为"' + id + '"的数据项?')
//
await CouponTemplateApi.deleteCouponTemplate(id)
message.success(t('common.delSuccess'))

@ -60,7 +60,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="活动编" prop="id" min-width="80" />
<el-table-column label="活动编" prop="id" min-width="80" />
<el-table-column label="活动名称" prop="name" min-width="140" />
<el-table-column label="活动时间" min-width="210">
<template #default="scope">

@ -67,7 +67,7 @@ const route = useRoute()
onMounted(() => {
resetForm()
if (!route.params.id) {
message.warning('参数错误,页面编不能为空!')
message.warning('参数错误,页面编不能为空!')
delView(unref(currentRoute))
return
}

@ -46,7 +46,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="编" align="center" prop="id" />
<el-table-column label="预览图" align="center" prop="previewImageUrls">
<template #default="scope">
<el-image

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save