生产计划初始化代码

This commit is contained in:
userName 2024-02-19 11:04:30 +08:00
parent 5e6acda6b4
commit 2593c12b33
12 changed files with 920 additions and 108 deletions

View File

@ -0,0 +1,108 @@
package com.ruoyi.mts.controller;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.core.validate.QueryGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.mts.domain.vo.MesPlanDetailVo;
import com.ruoyi.mts.domain.bo.MesPlanDetailBo;
import com.ruoyi.mts.service.IMesPlanDetailService;
/**
* 生产计划明细
*
* @author jiangzhe
* @date 2024-02-19
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/mts/planDetail")
public class MesPlanDetailController extends BaseController {
private final IMesPlanDetailService iMesPlanDetailService;
/**
* 查询生产计划明细列表
*/
@SaCheckPermission("mts:planDetail:list")
@GetMapping("/list")
public R<List<MesPlanDetailVo>> list(MesPlanDetailBo bo) {
List<MesPlanDetailVo> list = iMesPlanDetailService.queryList(bo);
return R.ok(list);
}
/**
* 导出生产计划明细列表
*/
@SaCheckPermission("mts:planDetail:export")
@Log(title = "生产计划明细", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(MesPlanDetailBo bo, HttpServletResponse response) {
List<MesPlanDetailVo> list = iMesPlanDetailService.queryList(bo);
ExcelUtil.exportExcel(list, "生产计划明细", MesPlanDetailVo.class, response);
}
/**
* 获取生产计划明细详细信息
*
* @param id 主键
*/
@SaCheckPermission("mts:planDetail:query")
@GetMapping("/{id}")
public R<MesPlanDetailVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(iMesPlanDetailService.queryById(id));
}
/**
* 新增生产计划明细
*/
@SaCheckPermission("mts:planDetail:add")
@Log(title = "生产计划明细", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody MesPlanDetailBo bo) {
return toAjax(iMesPlanDetailService.insertByBo(bo));
}
/**
* 修改生产计划明细
*/
@SaCheckPermission("mts:planDetail:edit")
@Log(title = "生产计划明细", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody MesPlanDetailBo bo) {
return toAjax(iMesPlanDetailService.updateByBo(bo));
}
/**
* 删除生产计划明细
*
* @param ids 主键串
*/
@SaCheckPermission("mts:planDetail:remove")
@Log(title = "生产计划明细", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(iMesPlanDetailService.deleteWithValidByIds(Arrays.asList(ids), true));
}
}

View File

@ -0,0 +1,54 @@
package com.ruoyi.mts.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.TreeEntity;
/**
* 生产计划明细对象 mes_plan_detail
*
* @author jiangzhe
* @date 2024-02-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("mes_plan_detail")
public class MesPlanDetail extends TreeEntity<MesPlanDetail> {
private static final long serialVersionUID=1L;
/**
* 主键
*/
@TableId(value = "id")
private Long id;
/**
* 主表id
*/
private Long mainId;
/**
* 名称
*/
private String name;
/**
* 计划时间
*/
private Date planDate;
/**
* 实际时间
*/
private Date actualDate;
/**
* 删除标志(0存在2删除)
*/
@TableLogic
private String delFlag;
}

View File

@ -0,0 +1,57 @@
package com.ruoyi.mts.domain.bo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.util.Date;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.TreeEntity;
/**
* 生产计划明细业务对象 mes_plan_detail
*
* @author jiangzhe
* @date 2024-02-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class MesPlanDetailBo extends TreeEntity<MesPlanDetailBo> {
/**
* 主键
*/
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
private Long id;
/**
* 主表id
*/
@NotNull(message = "主表id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long mainId;
/**
* 名称
*/
@NotBlank(message = "名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
/**
* 计划时间
*/
@NotNull(message = "计划时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date planDate;
/**
* 实际时间
*/
@NotNull(message = "实际时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date actualDate;
}

View File

@ -0,0 +1,63 @@
package com.ruoyi.mts.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
import lombok.Data;
import java.util.Date;
import java.io.Serializable;
/**
* 生产计划明细视图对象 mes_plan_detail
*
* @author jiangzhe
* @date 2024-02-19
*/
@Data
@ExcelIgnoreUnannotated
public class MesPlanDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ExcelProperty(value = "主键")
private Long id;
/**
* 父id
*/
@ExcelProperty(value = "父id")
private Long parentId;
/**
* 主表id
*/
@ExcelProperty(value = "主表id")
private Long mainId;
/**
* 名称
*/
@ExcelProperty(value = "名称")
private String name;
/**
* 计划时间
*/
@ExcelProperty(value = "计划时间")
private Date planDate;
/**
* 实际时间
*/
@ExcelProperty(value = "实际时间")
private Date actualDate;
}

View File

@ -0,0 +1,15 @@
package com.ruoyi.mts.mapper;
import com.ruoyi.mts.domain.MesPlanDetail;
import com.ruoyi.mts.domain.vo.MesPlanDetailVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
/**
* 生产计划明细Mapper接口
*
* @author jiangzhe
* @date 2024-02-19
*/
public interface MesPlanDetailMapper extends BaseMapperPlus<MesPlanDetailMapper, MesPlanDetail, MesPlanDetailVo> {
}

View File

@ -0,0 +1,43 @@
package com.ruoyi.mts.service;
import com.ruoyi.mts.domain.MesPlanDetail;
import com.ruoyi.mts.domain.vo.MesPlanDetailVo;
import com.ruoyi.mts.domain.bo.MesPlanDetailBo;
import java.util.Collection;
import java.util.List;
/**
* 生产计划明细Service接口
*
* @author jiangzhe
* @date 2024-02-19
*/
public interface IMesPlanDetailService {
/**
* 查询生产计划明细
*/
MesPlanDetailVo queryById(Long id);
/**
* 查询生产计划明细列表
*/
List<MesPlanDetailVo> queryList(MesPlanDetailBo bo);
/**
* 新增生产计划明细
*/
Boolean insertByBo(MesPlanDetailBo bo);
/**
* 修改生产计划明细
*/
Boolean updateByBo(MesPlanDetailBo bo);
/**
* 校验并批量删除生产计划明细信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,101 @@
package com.ruoyi.mts.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.ruoyi.mts.domain.bo.MesPlanDetailBo;
import com.ruoyi.mts.domain.vo.MesPlanDetailVo;
import com.ruoyi.mts.domain.MesPlanDetail;
import com.ruoyi.mts.mapper.MesPlanDetailMapper;
import com.ruoyi.mts.service.IMesPlanDetailService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 生产计划明细Service业务层处理
*
* @author jiangzhe
* @date 2024-02-19
*/
@RequiredArgsConstructor
@Service
public class MesPlanDetailServiceImpl implements IMesPlanDetailService {
private final MesPlanDetailMapper baseMapper;
/**
* 查询生产计划明细
*/
@Override
public MesPlanDetailVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 查询生产计划明细列表
*/
@Override
public List<MesPlanDetailVo> queryList(MesPlanDetailBo bo) {
LambdaQueryWrapper<MesPlanDetail> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<MesPlanDetail> buildQueryWrapper(MesPlanDetailBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<MesPlanDetail> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getParentId() != null, MesPlanDetail::getParentId, bo.getParentId());
lqw.eq(bo.getMainId() != null, MesPlanDetail::getMainId, bo.getMainId());
lqw.like(StringUtils.isNotBlank(bo.getName()), MesPlanDetail::getName, bo.getName());
lqw.eq(bo.getPlanDate() != null, MesPlanDetail::getPlanDate, bo.getPlanDate());
lqw.eq(bo.getActualDate() != null, MesPlanDetail::getActualDate, bo.getActualDate());
return lqw;
}
/**
* 新增生产计划明细
*/
@Override
public Boolean insertByBo(MesPlanDetailBo bo) {
MesPlanDetail add = BeanUtil.toBean(bo, MesPlanDetail.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改生产计划明细
*/
@Override
public Boolean updateByBo(MesPlanDetailBo bo) {
MesPlanDetail update = BeanUtil.toBean(bo, MesPlanDetail.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(MesPlanDetail entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除生产计划明细
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.mts.mapper.MesPlanDetailMapper">
<resultMap type="com.ruoyi.mts.domain.MesPlanDetail" id="MesPlanDetailResult">
<result property="id" column="id"/>
<result property="parentId" column="parent_id"/>
<result property="mainId" column="main_id"/>
<result property="name" column="name"/>
<result property="planDate" column="plan_date"/>
<result property="actualDate" column="actual_date"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
</resultMap>
</mapper>

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询生产计划明细列表
export function listPlanDetail(query) {
return request({
url: '/mts/planDetail/list',
method: 'get',
params: query
})
}
// 查询生产计划明细详细
export function getPlanDetail(id) {
return request({
url: '/mts/planDetail/' + id,
method: 'get'
})
}
// 新增生产计划明细
export function addPlanDetail(data) {
return request({
url: '/mts/planDetail',
method: 'post',
data: data
})
}
// 修改生产计划明细
export function updatePlanDetail(data) {
return request({
url: '/mts/planDetail',
method: 'put',
data: data
})
}
// 删除生产计划明细
export function delPlanDetail(id) {
return request({
url: '/mts/planDetail/' + id,
method: 'delete'
})
}

View File

@ -89,76 +89,90 @@ export const constantRoutes = [
// 动态路由,基于用户权限动态去加载
export const dynamicRoutes = [
{
path: '/system/user-auth',
path: "/system/user-auth",
component: Layout,
hidden: true,
permissions: ['system:user:edit'],
permissions: ["system:user:edit"],
children: [
{
path: 'role/:userId(\\d+)',
component: () => import('@/views/system/user/authRole'),
name: 'AuthRole',
meta: { title: '分配角色', activeMenu: '/system/user' }
}
]
path: "role/:userId(\\d+)",
component: () => import("@/views/system/user/authRole"),
name: "AuthRole",
meta: { title: "分配角色", activeMenu: "/system/user" },
},
],
},
{
path: '/system/role-auth',
path: "/system/role-auth",
component: Layout,
hidden: true,
permissions: ['system:role:edit'],
permissions: ["system:role:edit"],
children: [
{
path: 'user/:roleId(\\d+)',
component: () => import('@/views/system/role/authUser'),
name: 'AuthUser',
meta: { title: '分配用户', activeMenu: '/system/role' }
}
]
path: "user/:roleId(\\d+)",
component: () => import("@/views/system/role/authUser"),
name: "AuthUser",
meta: { title: "分配用户", activeMenu: "/system/role" },
},
],
},
{
path: '/system/dict-data',
path: "/system/dict-data",
component: Layout,
hidden: true,
permissions: ['system:dict:list'],
permissions: ["system:dict:list"],
children: [
{
path: 'index/:dictId(\\d+)',
component: () => import('@/views/system/dict/data'),
name: 'Data',
meta: { title: '字典数据', activeMenu: '/system/dict' }
}
]
path: "index/:dictId(\\d+)",
component: () => import("@/views/system/dict/data"),
name: "Data",
meta: { title: "字典数据", activeMenu: "/system/dict" },
},
],
},
{
path: '/system/oss-config',
path: "/mts/plan-detail",
component: Layout,
hidden: true,
permissions: ['system:oss:list'],
permissions: ["mts:planMain:list"],
children: [
{
path: 'index',
component: () => import('@/views/system/oss/config'),
name: 'OssConfig',
meta: { title: '配置管理', activeMenu: '/system/oss'}
}
]
path: "index/:mainId(\\d+)",
component: () => import("@/views/mts/planDetail"),
name: "detail",
meta: { title: "计划任务", activeMenu: "/mts/planMain" },
},
],
},
{
path: '/tool/gen-edit',
path: "/system/oss-config",
component: Layout,
hidden: true,
permissions: ['tool:gen:edit'],
permissions: ["system:oss:list"],
children: [
{
path: 'index/:tableId(\\d+)',
component: () => import('@/views/tool/gen/editTable'),
name: 'GenEdit',
meta: { title: '修改生成配置', activeMenu: '/tool/gen' }
}
]
}
]
path: "index",
component: () => import("@/views/system/oss/config"),
name: "OssConfig",
meta: { title: "配置管理", activeMenu: "/system/oss" },
},
],
},
{
path: "/tool/gen-edit",
component: Layout,
hidden: true,
permissions: ["tool:gen:edit"],
children: [
{
path: "index/:tableId(\\d+)",
component: () => import("@/views/tool/gen/editTable"),
name: "GenEdit",
meta: { title: "修改生成配置", activeMenu: "/tool/gen" },
},
],
},
];
const router = createRouter({
history: createWebHistory(import.meta.env.VITE_APP_CONTEXT_PATH),

View File

@ -0,0 +1,329 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="父id" prop="parentId">
<el-input
v-model="queryParams.parentId"
placeholder="请输入父id"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="主表id" prop="mainId">
<el-input
v-model="queryParams.mainId"
placeholder="请输入主表id"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="名称" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入名称"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="计划时间" prop="planDate">
<el-date-picker clearable
v-model="queryParams.planDate"
type="date"
value-format="YYYY-MM-DD"
placeholder="选择计划时间">
</el-date-picker>
</el-form-item>
<el-form-item label="实际时间" prop="actualDate">
<el-date-picker clearable
v-model="queryParams.actualDate"
type="date"
value-format="YYYY-MM-DD"
placeholder="选择实际时间">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @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="Plus"
@click="handleAdd"
v-hasPermi="['mts:planDetail:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="info"
plain
icon="Sort"
@click="toggleExpandAll"
>展开/折叠</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table
v-if="refreshTable"
v-loading="loading"
:data="planDetailList"
row-key="id"
:default-expand-all="isExpandAll"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
>
<el-table-column label="父id" prop="parentId" />
<el-table-column label="主表id" align="center" prop="mainId" />
<el-table-column label="名称" align="center" prop="name" />
<el-table-column label="计划时间" align="center" prop="planDate" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.planDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="实际时间" align="center" prop="actualDate" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.actualDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['mts:planDetail:edit']">修改</el-button>
<el-button link type="primary" icon="Plus" @click="handleAdd(scope.row)" v-hasPermi="['mts:planDetail:add']">新增</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['mts:planDetail:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 添加或修改生产计划明细对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="planDetailRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="父id" prop="parentId">
<el-tree-select
v-model="form.parentId"
:data="planDetailOptions"
:props="{ value: 'id', label: 'name', children: 'children' }"
value-key="id"
placeholder="请选择父id"
check-strictly
/>
</el-form-item>
<el-form-item label="主表id" prop="mainId">
<el-input v-model="form.mainId" placeholder="请输入主表id" />
</el-form-item>
<el-form-item label="名称" prop="name">
<el-input v-model="form.name" placeholder="请输入名称" />
</el-form-item>
<el-form-item label="计划时间" prop="planDate">
<el-date-picker clearable
v-model="form.planDate"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="选择计划时间">
</el-date-picker>
</el-form-item>
<el-form-item label="实际时间" prop="actualDate">
<el-date-picker clearable
v-model="form.actualDate"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="选择实际时间">
</el-date-picker>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="PlanDetail">
import { listPlanDetail, getPlanDetail, delPlanDetail, addPlanDetail, updatePlanDetail } from "@/api/mts/planDetail";
const { proxy } = getCurrentInstance();
const planDetailList = ref([]);
const planDetailOptions = ref([]);
const open = ref(false);
const buttonLoading = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const title = ref("");
const isExpandAll = ref(true);
const refreshTable = ref(true);
const data = reactive({
form: {},
queryParams: {
parentId: undefined,
mainId: undefined,
name: undefined,
planDate: undefined,
actualDate: undefined,
},
rules: {
id: [
{ required: true, message: "主键不能为空", trigger: "blur" }
],
parentId: [
{ required: true, message: "父id不能为空", trigger: "blur" }
],
mainId: [
{ required: true, message: "主表id不能为空", trigger: "blur" }
],
name: [
{ required: true, message: "名称不能为空", trigger: "blur" }
],
planDate: [
{ required: true, message: "计划时间不能为空", trigger: "blur" }
],
actualDate: [
{ required: true, message: "实际时间不能为空", trigger: "blur" }
],
}
});
const { queryParams, form, rules } = toRefs(data);
/** 查询生产计划明细列表 */
function getList() {
loading.value = true;
listPlanDetail(queryParams.value).then(response => {
planDetailList.value = proxy.handleTree(response.data, "id", "parentId");
loading.value = false;
});
}
/** 查询生产计划明细下拉树结构 */
function getTreeselect() {
listPlanDetail().then(response => {
planDetailOptions.value = [];
const data = { id: 0, name: '顶级节点', children: [] };
data.children = proxy.handleTree(response.data, "id", "parentId");
planDetailOptions.value.push(data);
});
}
//
function cancel() {
open.value = false;
reset();
}
//
function reset() {
form.value = {
id: null,
parentId: null,
mainId: null,
name: null,
planDate: null,
actualDate: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
delFlag: null
};
proxy.resetForm("planDetailRef");
}
/** 搜索按钮操作 */
function handleQuery() {
getList();
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm("queryRef");
handleQuery();
}
/** 新增按钮操作 */
function handleAdd(row) {
reset();
getTreeselect();
if (row != null && row.id) {
form.value.parentId = row.id;
} else {
form.value.parentId = 0;
}
open.value = true;
title.value = "添加生产计划明细";
}
/** 展开/折叠操作 */
function toggleExpandAll() {
refreshTable.value = false;
isExpandAll.value = !isExpandAll.value;
nextTick(() => {
refreshTable.value = true;
});
}
/** 修改按钮操作 */
async function handleUpdate(row) {
loading.value = true;
reset();
await getTreeselect();
if (row != null) {
form.value.parentId = row.parentId;
}
getPlanDetail(row.id).then(response => {
loading.value = false;
form.value = response.data;
open.value = true;
title.value = "修改生产计划明细";
});
}
/** 提交按钮 */
function submitForm() {
proxy.$refs["planDetailRef"].validate(valid => {
if (valid) {
buttonLoading.value = true;
if (form.value.id != null) {
updatePlanDetail(form.value).then(response => {
proxy.$modal.msgSuccess("修改成功");
open.value = false;
getList();
}).finally(() => {
buttonLoading.value = false;
});
} else {
addPlanDetail(form.value).then(response => {
proxy.$modal.msgSuccess("新增成功");
open.value = false;
getList();
}).finally(() => {
buttonLoading.value = false;
});
}
}
});
}
/** 删除按钮操作 */
function handleDelete(row) {
proxy.$modal.confirm('是否确认删除生产计划明细编号为"' + row.id + '"的数据项?').then(function() {
loading.value = true;
return delPlanDetail(row.id);
}).then(() => {
loading.value = false;
getList();
proxy.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
loading.value = false;
});
}
getList();
</script>

View File

@ -2,26 +2,15 @@
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="名称" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入名称"
clearable
@keyup.enter="handleQuery"
/>
<el-input v-model="queryParams.name" placeholder="请输入名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="开始时间" prop="startDate">
<el-date-picker clearable
v-model="queryParams.startDate"
type="date"
value-format="YYYY-MM-DD"
<el-date-picker clearable v-model="queryParams.startDate" type="date" value-format="YYYY-MM-DD"
placeholder="请选择开始时间">
</el-date-picker>
</el-form-item>
<el-form-item label="结束时间" prop="endDate">
<el-date-picker clearable
v-model="queryParams.endDate"
type="date"
value-format="YYYY-MM-DD"
<el-date-picker clearable v-model="queryParams.endDate" type="date" value-format="YYYY-MM-DD"
placeholder="请选择结束时间">
</el-date-picker>
</el-form-item>
@ -33,50 +22,32 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="Plus"
@click="handleAdd"
v-hasPermi="['mts:planMain:add']"
>新增</el-button>
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['mts:planMain:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="Edit"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['mts:planMain:edit']"
>修改</el-button>
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate"
v-hasPermi="['mts:planMain:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="Delete"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['mts:planMain:remove']"
>删除</el-button>
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete"
v-hasPermi="['mts:planMain:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="Download"
@click="handleExport"
v-hasPermi="['mts:planMain:export']"
>导出</el-button>
<el-button type="warning" plain icon="Download" @click="handleExport"
v-hasPermi="['mts:planMain:export']">导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="planMainList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键" align="center" prop="id" v-if="true"/>
<el-table-column label="名称" align="center" prop="name" />
<el-table-column label="名称" align="center" prop="name">
<template #default="scope">
<router-link :to="'/mts/plan-detail/index/' + scope.row.id" class="link-type">
<span>{{ scope.row.name }}</span>
</router-link>
</template>
</el-table-column>
<el-table-column label="开始时间" align="center" prop="startDate" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.startDate, '{y}-{m}-{d}') }}</span>
@ -90,19 +61,16 @@
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['mts:planMain:edit']">修改</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['mts:planMain:remove']">删除</el-button>
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
v-hasPermi="['mts:planMain:edit']">修改</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
v-hasPermi="['mts:planMain:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
@pagination="getList" />
<!-- 添加或修改生产计划主对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
@ -111,18 +79,12 @@
<el-input v-model="form.name" placeholder="请输入名称" />
</el-form-item>
<el-form-item label="开始时间" prop="startDate">
<el-date-picker clearable
v-model="form.startDate"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
<el-date-picker clearable v-model="form.startDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择开始时间">
</el-date-picker>
</el-form-item>
<el-form-item label="结束时间" prop="endDate">
<el-date-picker clearable
v-model="form.endDate"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
<el-date-picker clearable v-model="form.endDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择结束时间">
</el-date-picker>
</el-form-item>
@ -287,7 +249,7 @@ function submitForm() {
/** 删除按钮操作 */
function handleDelete(row) {
const _ids = row.id || ids.value;
proxy.$modal.confirm('是否确认删除生产计划主编号为"' + _ids + '"的数据项?').then(function() {
proxy.$modal.confirm('是否确认删除生产计划主编号为"' + _ids + '"的数据项?').then(function () {
loading.value = true;
return delPlanMain(_ids);
}).then(() => {