|
|
|
|
@ -23,6 +23,18 @@
|
|
|
|
|
<el-option v-for="dict in wcs_task_status" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="创建时间" style="width: 410px">
|
|
|
|
|
<el-date-picker
|
|
|
|
|
v-model="dateRange"
|
|
|
|
|
:format="CREATED_TIME_PICKER_FORMAT"
|
|
|
|
|
:value-format="CREATED_TIME_VALUE_FORMAT"
|
|
|
|
|
type="datetimerange"
|
|
|
|
|
range-separator="-"
|
|
|
|
|
start-placeholder="开始时间"
|
|
|
|
|
end-placeholder="结束时间"
|
|
|
|
|
:default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
|
|
|
|
|
></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>
|
|
|
|
|
@ -89,9 +101,9 @@
|
|
|
|
|
<dict-tag :options="wcs_is_flag" :value="scope.row.isFlag" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="创建时间" align="center" prop="createdTime" width="100">
|
|
|
|
|
<el-table-column label="创建时间" align="center" prop="createdTime" width="180">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<span>{{ parseTime(scope.row.createdTime, '{y}-{m}-{d}') }}</span>
|
|
|
|
|
<span>{{ parseTime(scope.row.createdTime, CREATED_TIME_DISPLAY_FORMAT) }}</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="创建人" align="center" prop="createdByName" width="100" />
|
|
|
|
|
@ -134,7 +146,7 @@
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="物料条码" prop="materialBarcode">
|
|
|
|
|
<el-input v-model="form.materialBarcode" placeholder="请输入物料条码" />
|
|
|
|
|
<el-input v-model="form.materialBarcode" placeholder="物料条码" disabled />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
@ -218,6 +230,12 @@ import { getMaterialInfoList } from '@/api/wcs/materialInfo';
|
|
|
|
|
import { MaterialInfoVO } from '@/api/wcs/materialInfo/types';
|
|
|
|
|
import { getPathInfoList } from '@/api/wcs/pathInfo';
|
|
|
|
|
import { PathInfoVO } from '@/api/wcs/pathInfo/types';
|
|
|
|
|
import {
|
|
|
|
|
CREATED_TIME_DISPLAY_FORMAT,
|
|
|
|
|
CREATED_TIME_PICKER_FORMAT,
|
|
|
|
|
CREATED_TIME_VALUE_FORMAT,
|
|
|
|
|
getTodayCreatedTimeRange
|
|
|
|
|
} from '../utils/createdTimeRange';
|
|
|
|
|
|
|
|
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
|
|
|
const { wcs_is_flag, wcs_task_category, wcs_task_type, wcs_task_status } = toRefs<any>(
|
|
|
|
|
@ -235,6 +253,9 @@ const single = ref(true);
|
|
|
|
|
const multiple = ref(true);
|
|
|
|
|
const total = ref(0);
|
|
|
|
|
|
|
|
|
|
// 创建时间范围筛选,与 SysUser 一致由 addDateRange 注入到 params.beginTime/endTime。
|
|
|
|
|
const dateRange = ref<[string, string]>(getTodayCreatedTimeRange());
|
|
|
|
|
|
|
|
|
|
const queryFormRef = ref<ElFormInstance>();
|
|
|
|
|
const taskDetailFormRef = ref<ElFormInstance>();
|
|
|
|
|
|
|
|
|
|
@ -293,7 +314,8 @@ const { queryParams, form, rules } = toRefs(data);
|
|
|
|
|
const getList = async () => {
|
|
|
|
|
loading.value = true;
|
|
|
|
|
try {
|
|
|
|
|
const res = await listTaskDetail(queryParams.value);
|
|
|
|
|
// 走 addDateRange 把日期范围塞到 params.beginTime/endTime,对齐后端 SysUser 的范围筛选契约。
|
|
|
|
|
const res = await listTaskDetail(proxy?.addDateRange(queryParams.value, dateRange.value));
|
|
|
|
|
taskDetailList.value = res.rows;
|
|
|
|
|
total.value = res.total;
|
|
|
|
|
} finally {
|
|
|
|
|
@ -319,8 +341,8 @@ const loadFormOptions = async () => {
|
|
|
|
|
|
|
|
|
|
const handleMaterialChange = (materialCode?: string) => {
|
|
|
|
|
const material = materialList.value.find(item => item.materialCode === materialCode);
|
|
|
|
|
// 物料条码默认跟随主数据回填,保留手工调整入口以适配现场扫码差异。
|
|
|
|
|
form.value.materialBarcode = material?.materialBarcode || form.value.materialBarcode;
|
|
|
|
|
// 物料条码来自物料主数据,只能随物料选择同步,避免手工改出编码与条码不一致的数据。
|
|
|
|
|
form.value.materialBarcode = material?.materialBarcode;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const cancel = () => {
|
|
|
|
|
@ -340,6 +362,8 @@ const handleQuery = () => {
|
|
|
|
|
|
|
|
|
|
const resetQuery = () => {
|
|
|
|
|
queryFormRef.value?.resetFields();
|
|
|
|
|
// 重置后恢复当天完整范围,避免刚新增的数据落在旧结束时间之后。
|
|
|
|
|
dateRange.value = getTodayCreatedTimeRange();
|
|
|
|
|
handleQuery();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -366,14 +390,34 @@ const handleUpdate = async (row?: TaskDetailVO) => {
|
|
|
|
|
dialog.title = "修改实时任务明细";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const buildSubmitData = (): TaskDetailForm => ({
|
|
|
|
|
objId: form.value.objId,
|
|
|
|
|
taskCode: form.value.taskCode,
|
|
|
|
|
materialCode: form.value.materialCode,
|
|
|
|
|
palletBarcode: form.value.palletBarcode,
|
|
|
|
|
materialBarcode: form.value.materialBarcode,
|
|
|
|
|
materialCount: form.value.materialCount,
|
|
|
|
|
taskType: form.value.taskType,
|
|
|
|
|
taskCategory: form.value.taskCategory,
|
|
|
|
|
startPoint: form.value.startPoint,
|
|
|
|
|
endPoint: form.value.endPoint,
|
|
|
|
|
isValidate: form.value.isValidate,
|
|
|
|
|
pathCode: form.value.pathCode,
|
|
|
|
|
taskStatus: form.value.taskStatus,
|
|
|
|
|
isFlag: form.value.isFlag,
|
|
|
|
|
remark: form.value.remark
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const submitForm = () => {
|
|
|
|
|
taskDetailFormRef.value?.validate(async (valid: boolean) => {
|
|
|
|
|
if (valid) {
|
|
|
|
|
buttonLoading.value = true;
|
|
|
|
|
if (form.value.objId) {
|
|
|
|
|
await updateTaskDetail(form.value).finally(() => buttonLoading.value = false);
|
|
|
|
|
// 详情接口会带出物料名称、路径名称等展示字段,提交时白名单保留真实业务字段。
|
|
|
|
|
const submitData = buildSubmitData();
|
|
|
|
|
if (submitData.objId) {
|
|
|
|
|
await updateTaskDetail(submitData).finally(() => buttonLoading.value = false);
|
|
|
|
|
} else {
|
|
|
|
|
await addTaskDetail(form.value).finally(() => buttonLoading.value = false);
|
|
|
|
|
await addTaskDetail(submitData).finally(() => buttonLoading.value = false);
|
|
|
|
|
}
|
|
|
|
|
proxy?.$modal.msgSuccess("操作成功");
|
|
|
|
|
dialog.visible = false;
|
|
|
|
|
|