【需求开发】订单归档日志 基础功能提交

pull/1/head
zengchenxi 9 months ago
parent a7dbb0f7e4
commit 393373d73e

@ -10,7 +10,8 @@ import lombok.Getter;
@Getter
public enum BusinesTypeEnum {
PROJECT_ORDER("销售订单");
PROJECT_ORDER("销售订单"),
PROJECT_ORDER_SNAPSHOT("销售订单快照");
private String description;

@ -19,6 +19,7 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -67,6 +68,7 @@ public class ProjectOrderController {
@Operation(summary = "操作项目订单")
@PreAuthorize("@ss.hasPermission('heli:project-order:update')")
@OperateLog(enable = false)
@Transactional(rollbackFor = Exception.class)
public CommonResult<Long> operateProjectOrder(@Valid @RequestBody ProjectOrderSaveReqVO operateReqVO) {
LocalDateTime startTime = LocalDateTime.now();
projectOrderService.operateProjectOrder(operateReqVO);
@ -78,6 +80,14 @@ public class ProjectOrderController {
operateReqVO.getId(),
OperateTypeEnum.valueOf(operateReqVO.getActive()).getType(),
operateReqVO.getActiveOpinion());
// 批准、终止记录快照
switch (OperateTypeEnum.valueOf(operateReqVO.getActive())){
case APPROVE:
case TERMINATE:
projectOrderService.createProjectOrderSnapshot(operateReqVO);
break;
}
return success(operateReqVO.getId());
}

@ -113,4 +113,21 @@ public class ProjectOrderPageReqVO extends PageParam {
@Schema(description = "客户名称")
private String businessManName;
@Schema(description = "是否快照")
private Integer isSnapshot;
@Schema(description = "快照原始id", example = "19436")
private Long snapshotId;
@Schema(description = "快照原始单据号")
private String snapshotCode;
@Schema(description = "单据日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] orderTime;
@Schema(description = "快照原始单据日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] snapshotOrderTime;
}

@ -152,4 +152,25 @@ public class ProjectOrderRespVO {
@ExcelProperty("合同编号")
private String contractNo;
@Schema(description = "是否快照", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty(value = "是否快照", converter = DictConvert.class)
@DictFormat("heli_common_is_or_not") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer isSnapshot;
@Schema(description = "快照原始id", example = "19436")
@ExcelProperty("快照原始id")
private Long snapshotId;
@Schema(description = "快照原始单据号")
@ExcelProperty("快照原始单据号")
private String snapshotCode;
@Schema(description = "单据日期", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("单据日期")
private LocalDateTime orderTime;
@Schema(description = "快照原始单据日期")
@ExcelProperty("快照原始单据日期")
private LocalDateTime snapshotOrderTime;
}

@ -126,4 +126,19 @@ public class ProjectOrderSaveReqVO {
@Schema(description = "项目订单子项目列表")
private List<ProjectOrderSubDO> projectOrderSubs;
@Schema(description = "是否快照", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer isSnapshot;
@Schema(description = "快照原始id", example = "19436")
private Long snapshotId;
@Schema(description = "快照原始单据号")
private String snapshotCode;
@Schema(description = "单据日期", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime orderTime;
@Schema(description = "快照原始单据日期")
private LocalDateTime snapshotOrderTime;
}

@ -164,6 +164,28 @@ public class ProjectOrderDO extends BaseDO {
*
*/
private String contractNo;
/**
*
*
* {@link TODO heli_common_is_or_not }
*/
private Integer isSnapshot;
/**
* id
*/
private Long snapshotId;
/**
*
*/
private String snapshotCode;
/**
*
*/
private LocalDateTime orderTime;
/**
*
*/
private LocalDateTime snapshotOrderTime;
@TableField(exist = false)
private String businessDeptName;

@ -35,7 +35,10 @@ public interface ProjectOrderMapper extends BaseMapperX<ProjectOrderDO> {
.eq(reqVO.getHasPrice() != null, ProjectOrderDO::getHasPrice, reqVO.getHasPrice())
.eq(reqVO.getOrderStatus() != null, ProjectOrderDO::getOrderStatus, reqVO.getOrderStatus())
.eq(reqVO.getDeliveryStatus() != null, ProjectOrderDO::getDeliveryStatus, reqVO.getDeliveryStatus())
.in(reqVO.getOrderStatusList() != null && !reqVO.getOrderStatusList().isEmpty(), ProjectOrderDO::getOrderStatus, reqVO.getOrderStatusList());
.in(reqVO.getOrderStatusList() != null && !reqVO.getOrderStatusList().isEmpty(), ProjectOrderDO::getOrderStatus, reqVO.getOrderStatusList())
.eq(reqVO.getIsSnapshot() != null, ProjectOrderDO::getIsSnapshot, reqVO.getIsSnapshot())
.like(!StringUtils.isEmpty(reqVO.getSnapshotCode()), ProjectOrderDO::getSnapshotCode, reqVO.getSnapshotCode());
;
return selectPage(reqVO, query);
}

@ -68,4 +68,10 @@ public interface ProjectOrderService {
* @param operateReqVO
*/
void operateProjectOrder(ProjectOrderSaveReqVO operateReqVO);
/**
*
* @param operateReqVO
*/
void createProjectOrderSnapshot(ProjectOrderSaveReqVO operateReqVO);
}

@ -14,6 +14,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderMappe
import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper;
import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum;
import com.chanko.yunxi.mes.module.heli.enums.ProjectOrderStatusEnum;
import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum;
import com.chanko.yunxi.mes.module.heli.service.customer.CustomerService;
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
import org.springframework.stereotype.Service;
@ -22,6 +23,7 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
@ -54,6 +56,7 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
@Transactional(rollbackFor = Exception.class)
public Long createProjectOrder(ProjectOrderSaveReqVO createReqVO) {
// 插入
createReqVO.setOrderTime(LocalDateTime.now());
ProjectOrderDO projectOrder = BeanUtils.toBean(createReqVO, ProjectOrderDO.class);
// 月度流水号
SerialNumberDO serialNumberDO = serialNumberService.getSerialNumber(BusinesTypeEnum.PROJECT_ORDER.name(), new SimpleDateFormat("yyyyMM").format(new Date()));
@ -65,7 +68,7 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
// 插入子表
createProjectOrderSubList(projectOrder.getId(), createReqVO.getProjectOrderSubs());
createReqVO.setId(projectOrder.getId());
createReqVO.setId(projectOrder.getId()).setCode(projectOrder.getCode());
// 回写序列记录
serialNumberService.updateSerialNumber(serialNumberDO);
@ -73,6 +76,28 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
return projectOrder.getId();
}
@Override
@Transactional(rollbackFor = Exception.class)
public void createProjectOrderSnapshot(ProjectOrderSaveReqVO createReqVO) {
ProjectOrderDO projectOrder = BeanUtils.toBean(createReqVO, ProjectOrderDO.class);
// 快照流水号
SerialNumberDO serialNumberDO = serialNumberService.getSerialNumber(BusinesTypeEnum.PROJECT_ORDER_SNAPSHOT.name(), projectOrder.getCode());
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
projectOrder.setId(null)
.setIsSnapshot(YesOrNoEnum.YES.getCode())
.setSnapshotId(createReqVO.getId())
.setSnapshotCode(createReqVO.getCode())
.setSnapshotOrderTime(createReqVO.getOrderTime())
.setCode(String.format("%s-%s", createReqVO.getCode(), serialNumberDO.getSerialNumber().intValue()))
.setOrderTime(LocalDateTime.now())
;
projectOrderMapper.insert(projectOrder);
createProjectOrderSubList(projectOrder.getId(), createReqVO.getProjectOrderSubs());
// 回写序列记录
serialNumberService.updateSerialNumber(serialNumberDO);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateProjectOrder(ProjectOrderSaveReqVO updateReqVO) {
@ -85,6 +110,7 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
ProjectOrderDO updateObj = BeanUtils.toBean(updateReqVO, ProjectOrderDO.class);
updateObj.setOrderStatus(ProjectOrderStatusEnum.valueOf(updateReqVO.getActive()).getCode());
projectOrderMapper.updateById(updateObj);
updateReqVO.setOrderStatus(updateObj.getOrderStatus());
// 更新子表
updateProjectOrderSubList(updateReqVO.getId(), updateReqVO.getProjectOrderSubs());
@ -144,7 +170,7 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
}
private void createProjectOrderSubList(Long projectOrderId, List<ProjectOrderSubDO> list) {
list.forEach(o -> o.setProjectOrderId(projectOrderId));
list.forEach(o -> o.setId(null).setProjectOrderId(projectOrderId));
projectOrderSubMapper.insertBatch(list);
}

@ -83,7 +83,7 @@ public class SerialNumberServiceImpl implements SerialNumberService {
@Transactional(rollbackFor = Exception.class)
public SerialNumberDO getSerialNumber(String businessType, String segment) {
LambdaQueryWrapperX<SerialNumberDO> query = new LambdaQueryWrapperX<SerialNumberDO>() {{
eq(SerialNumberDO::getBusinessType, BusinesTypeEnum.PROJECT_ORDER.name());
eq(SerialNumberDO::getBusinessType, businessType);
eq(SerialNumberDO::getSegment, segment);
last("LIMIT 1 FOR UPDATE");
}};

@ -32,7 +32,11 @@ export interface ProjectOrderVO {
active: string
activeOpinion: string
projectOrderSubs: any
isSnapshot: number
snapshotId: number
snapshotCode: string
orderTime: Date
snapshotOrderTime: Date
}
// 查询项目订单分页

@ -300,6 +300,7 @@ export default {
audit: 'Audit',
approve: 'Approve',
terminate: 'Terminate',
detailArchive: 'Detail',
typeCreate: 'Dict Type Create',
typeUpdate: 'Dict Type Eidt',
dataCreate: 'Dict Data Create',

@ -301,6 +301,7 @@ export default {
audit: '审核',
approve: '批准',
terminate: '终止',
detailArchive: '详情',
typeCreate: '字典类型新增',
typeUpdate: '字典类型编辑',
dataCreate: '字典数据新增',

@ -232,4 +232,5 @@ export enum DICT_TYPE {
HELI_PROJECT_ORDER_SUB_UNIT = 'heli_project_order_sub_unit', // 子项目单位
HELI_PROJECT_ORDER_AUDIT_STATUS = 'heli_project_order_audit_status', // 项目单据审核页状态
HELI_PROJECT_ORDER_APPROVE_STATUS = 'heli_project_order_approve_status', // 项目单据批准页状态
HELI_PROJECT_ORDER_ALTER_STATUS = 'heli_project_order_alter_status', // 项目单据变更页状态
}

@ -123,7 +123,7 @@
fixed
label="订单日期"
align="center"
prop="createTime"
prop="orderTime"
:formatter="dateFormatter2"
width="180"
/>
@ -263,6 +263,11 @@ const queryParams = reactive({
status: undefined,
createTime: [],
businessManName: undefined,
isSnapshot: 0,
snapshotId: undefined,
snapshotCode: undefined,
orderTime: [],
snapshotOrderTime: [],
})
const queryFormRef = ref() //
const exportLoading = ref(false) //

@ -0,0 +1,337 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="项目编号" prop="snapshotCode">
<el-input
v-model="queryParams.snapshotCode"
placeholder="请输入项目编号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="客户名称" prop="customerName">
<el-input
v-model="queryParams.customerName"
placeholder="请输入客户名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="业务员" prop="businessManName">
<el-input
v-model="queryParams.businessManName"
placeholder="请输入业务员"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="模具名称" prop="mouldName">
<el-input
v-model="queryParams.mouldName"
placeholder="请输入模具名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="是否有价格" prop="hasPrice">
<el-select
v-model="queryParams.hasPrice"
placeholder="请选择是否有价格"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="单据状态" prop="orderStatus">
<el-select
v-model="queryParams.orderStatus"
placeholder="请选择单据状态"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_ORDER_ALTER_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="发货状态" prop="deliveryStatus">
<el-select
v-model="queryParams.deliveryStatus"
placeholder="请选择发货状态"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_DELIVERY_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="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['heli:project-order: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 fixed label="序号" type="index" width="100"/>
<el-table-column fixed label="项目编号" align="center" prop="snapshotCode" width="240"/>
<el-table-column
fixed
label="归档日期"
align="center"
prop="orderTime"
:formatter="dateFormatter2"
width="180"
/>
<el-table-column
fixed
label="订单日期"
align="center"
prop="snapshotOrderTime"
:formatter="dateFormatter2"
width="180"
/>
<el-table-column label="提出部门" align="center" prop="businessDeptName" width="150" />
<el-table-column label="业务员" align="center" prop="businessManName" width="150" />
<el-table-column label="客户名称" align="center" prop="customerName" width="240" />
<el-table-column label="合同编号" align="center" prop="contractNo" width="180"/>
<el-table-column label="模具名称" align="center" prop="mouldName" width="180" />
<el-table-column label="所属业务线" align="center" prop="businessLine" width="150">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_BUSINESS_LINE" :value="scope.row.businessLine" />
</template>
</el-table-column>
<el-table-column label="是否有价格" align="center" prop="hasPrice" width="150">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_COMMON_IS_OR_NOT" :value="scope.row.hasPrice" />
</template>
</el-table-column>
<el-table-column label="价格(元)" align="center" prop="price" width="150"/>
<el-table-column label="币种" align="center" prop="currency" width="150">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_CURRENCY" :value="scope.row.currency" />
</template>
</el-table-column>
<el-table-column label="是否紧急" align="center" prop="isUrgency" width="150">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_COMMON_IS_OR_NOT" :value="scope.row.isUrgency" />
</template>
</el-table-column>
<el-table-column label="性质" align="center" prop="property" width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_PROJECT_PROPERTY" :value="scope.row.property" />
</template>
</el-table-column>
<el-table-column label="起止日期" align="center" prop="projectStartTime" width="260">
<template #default="scope">
{{formatDate(scope.row.projectStartTime,'YYYY-MM-DD') + '~' + formatDate(scope.row.projectEndTime, 'YYYY-MM-DD')}}
</template>
</el-table-column>
<el-table-column label="是否已变更" align="center" prop="hasAlter" width="150">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_COMMON_IS_OR_NOT" :value="scope.row.hasAlter" />
</template>
</el-table-column>
<el-table-column label="单据状态" align="center" prop="orderStatus" fixed="right" width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_PROJECT_ORDER_STATUS" :value="scope.row.orderStatus" />
</template>
</el-table-column>
<el-table-column label="发货状态" align="center" prop="deliveryStatus" fixed="right" width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_DELIVERY_STATUS" :value="scope.row.deliveryStatus" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right" width="260">
<template #default="scope">
<el-button
link
type="primary"
@click="openDetail('detailArchive', scope.row.id)"
>
查看详情
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap>
</template>
<script setup lang="ts">
import { getIntDictOptions, getStrDictOptions, DICT_TYPE } from '@/utils/dict'
import {dateFormatter, dateFormatter2, formatDate} from '@/utils/formatTime'
import download from '@/utils/download'
import * as ProjectOrderApi from '@/api/heli/projectorder'
defineOptions({ name: 'ProjectOrderArchive' })
const message = useMessage() //
const { t } = useI18n() //
const router = useRouter();
const loading = ref(true) //
const list = ref([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
code: undefined,
orderStatus: undefined,
deliveryStatus: undefined,
businessDeptId: undefined,
customerName: undefined,
mouldName: undefined,
businessLine: undefined,
blueprintNo: undefined,
hasPrice: undefined,
price: undefined,
currency: undefined,
projectStartTime: [],
projectEndTime: [],
isUrgency: undefined,
property: undefined,
referenceTechnology: undefined,
hasAlter: undefined,
lastAlterTime: [],
qualityRequirement: undefined,
remark: undefined,
hasContract: undefined,
hasTechnologyProtocol: undefined,
hasBlueprint: undefined,
blueprintRemark: undefined,
status: undefined,
createTime: [],
businessManName: undefined,
isSnapshot: 1,
snapshotId: undefined,
snapshotCode: undefined,
orderTime: [],
snapshotOrderTime: [],
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await ProjectOrderApi.getProjectOrderPage(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 openDetail = (type: string, id?: number) => {
router.push({
name: 'ProjectOrderDetail',
query: {
active: type,
id: id
}
})
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await ProjectOrderApi.deleteProjectOrder(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await ProjectOrderApi.exportProjectOrder(queryParams)
download.excel(data, '项目订单.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 初始化 **/
onMounted(() => {
getList()
})
onActivated(() => {
getList()
})
</script>
<style scoped>
.el-dropdown-link {
cursor: pointer;
color: var(--el-color-primary);
display: flex;
align-items: center;
}
</style>

@ -123,7 +123,7 @@
fixed
label="订单日期"
align="center"
prop="createTime"
prop="orderTime"
:formatter="dateFormatter2"
width="180"
/>
@ -255,6 +255,11 @@ const queryParams = reactive({
status: undefined,
createTime: [],
businessManName: undefined,
isSnapshot: 0,
snapshotId: undefined,
snapshotCode: undefined,
orderTime: [],
snapshotOrderTime: [],
})
const queryFormRef = ref() //
const exportLoading = ref(false) //

@ -493,7 +493,7 @@
</el-col>
</el-row>
</el-card>
<el-card class="hl-card-info">
<el-card class="hl-card-info" v-if="query.active != 'detailArchive'">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">操作日志</span>
</template>
@ -536,7 +536,7 @@
> </el-button
>
<el-button v-if="query.active == 'alter' && formData.orderStatus == 32" @click="submitForm('ALTER')" type="danger" size="large"
>确定变更</el-button
>发起变更</el-button
>
<el-button v-if="'audit,approve'.indexOf(query.active) > -1 && (formData.orderStatus == 8 || formData.orderStatus == 16)" @click="activeOpinionDialogVisible=true" type="danger" size="large"
> </el-button
@ -725,6 +725,10 @@ const queryData = async (type: string, id?: number) => {
//
formData.value.projectOrderSubs = await ProjectOrderApi.getProjectOrderSubListByProjectOrderId(id);
//
if(type == 'detailArchive'){
id = formData.value.snapshotId
}
//
let logParams = {
pageNo: 1,
@ -1019,7 +1023,7 @@ onMounted(() => {
if(query.active == 'alter'){
alterDisabled.value = true;
}
if('detail,audit,approve,terminate'.indexOf(query.active) > -1){
if('detail,audit,approve,terminate,detailArchive'.indexOf(query.active) > -1){
detailDisabled.value = true;
}
queryData(query.active, query.id);

@ -123,7 +123,7 @@
fixed
label="订单日期"
align="center"
prop="createTime"
prop="orderTime"
:formatter="dateFormatter2"
width="180"
/>
@ -205,9 +205,9 @@
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item command="detail">查看详情</el-dropdown-item>
<el-dropdown-item command="printProject">打印开发项目启动单</el-dropdown-item>
<el-dropdown-item v-if="scope.row.orderStatus == 32" command="printProject"></el-dropdown-item>
<el-dropdown-item v-if="scope.row.orderStatus == 32" command="alter"></el-dropdown-item>
<el-dropdown-item command="viewAlter">查看变更日志</el-dropdown-item>
<el-dropdown-item v-if="scope.row.hasAlter" command="viewAlter"></el-dropdown-item>
<el-dropdown-item v-if="scope.row.orderStatus == 32" command="delivery"></el-dropdown-item>
</el-dropdown-menu>
</template>
@ -271,6 +271,11 @@ const queryParams = reactive({
status: undefined,
createTime: [],
businessManName: undefined,
isSnapshot: 0,
snapshotId: undefined,
snapshotCode: undefined,
orderTime: [],
snapshotOrderTime: [],
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
@ -343,6 +348,18 @@ const handleCommand = async (command, id) => {
case 'detail':
openDetail('detail', id);
break;
case 'printProject':
// TODO
break;
case 'alter':
openDetail('alter', id);
break;
case 'viewAlter':
// TODO
break;
case 'delivery':
// TODO
break;
}
}

@ -118,12 +118,17 @@ CREATE TABLE `project_order_sub` (
ALTER TABLE project_order ADD COLUMN `contract_no` VARCHAR ( 128 ) COMMENT '模具名称' AFTER customer_id;
ALTER TABLE project_order_sub ADD COLUMN `unit` CHAR ( 1 ) NOT NULL COMMENT '单位' AFTER amount;
ALTER TABLE project_order ADD COLUMN `order_time` datetime NOT NULL COMMENT '单据日期' AFTER order_status;
ALTER TABLE project_order ADD COLUMN `snapshot_order_time` datetime COMMENT '快照原始单据日期' AFTER blueprint_remark;
ALTER TABLE project_order ADD COLUMN `snapshot_code` VARCHAR ( 64 ) COMMENT '快照原始单据号' AFTER blueprint_remark;
ALTER TABLE project_order ADD COLUMN `snapshot_id` BIGINT ( 20 ) COMMENT '快照原始id' AFTER blueprint_remark;
ALTER TABLE project_order ADD COLUMN `is_snapshot` TINYINT ( 1 ) NOT NULL DEFAULT '0' COMMENT '是否快照' AFTER blueprint_remark;
DROP TABLE IF EXISTS `base_serial_number`;
CREATE TABLE `base_serial_number` (
`id` BIGINT ( 20 ) NOT NULL AUTO_INCREMENT COMMENT '自增字段,唯一',
`business_type` VARCHAR ( 32 ) NOT NULL COMMENT '业务类型 用于业务关联',
`segment` VARCHAR ( 16 ) NOT NULL COMMENT '序列参考段',
`segment` VARCHAR ( 64 ) NOT NULL COMMENT '序列参考段',
`serial_number` BIGINT ( 20 ) NOT NULL DEFAULT '0' COMMENT '序列号',
`status` TINYINT ( 1 ) NOT NULL DEFAULT '1' COMMENT '状态,1表示正常2表示禁用',
`creator` VARCHAR ( 64 ) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',

Loading…
Cancel
Save