仓库,仓储配置页面功能完善

master
maxw@mesnac.com 4 months ago
parent 455c1c14f7
commit 3aeb34bacf

@ -318,7 +318,7 @@
<el-dialog v-model="parentTableInfoVisible" title="修改父表格" width="40%">
<el-form :model="parentTableInfoForm" label-width="120px">
<el-form-item label="物料大类" prop="materialCategories">
<el-select v-model="parentTableInfoForm.materialCategories" placeholder="请选择物料大类">
<el-select v-model="parentTableInfoForm.materialCategories" placeholder="请选择物料大类" :disabled="true">
<el-option
v-for="dict in material_mategories"
:key="dict.value"
@ -341,7 +341,7 @@
<el-input v-model="form.orderNo" placeholder="请输入订单编号" />
</el-form-item> -->
<el-form-item label="审核人" prop="auditBy">
<el-select v-model="parentTableInfoForm.auditBy" placeholder="请选择审核人">
<el-select v-model="parentTableInfoForm.auditBy" placeholder="请选择审核人" :disabled="true">
<el-option
v-for="item in userList"
:key="item.userId"
@ -351,7 +351,7 @@
</el-select>
</el-form-item>
<el-form-item label="仓库ID" prop="warehouseId">
<el-select v-model="parentTableInfoForm.warehouseCode" placeholder="请选择所属仓库">
<el-select v-model="parentTableInfoForm.warehouseCode" placeholder="请选择所属仓库" :disabled="true">
<el-option
v-for="item in baseStoreList"
:key="item.warehouseId"

@ -171,7 +171,7 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="计划仓库ID" prop="planWarehouseId">
<el-form-item label="计划仓库" prop="planWarehouseId">
<el-select v-model="form.planWarehouseId" placeholder="请选择所属仓库">
<el-option
v-for="item in baseStoreList"

@ -408,8 +408,9 @@ const getUserList = async () => {
};
const getMaterialList = async () => {
const locationCode = form.value.planLocationCode;
const materialCategories = form.value.materialCategories;
console.log(locationCode)
let res = await getMaterialInfoList({'locationCode':locationCode});
let res = await getMaterialInfoList({'locationCode':locationCode,'materialCategories':materialCategories});
materialList.value = res.data;
console.log(materialList.value)
};

@ -40,7 +40,7 @@
<el-card shadow="never">
<template #header>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['wms:wmsPurchaseOrderDetail:add']"></el-button>
</el-col>
<el-col :span="1.5">
@ -48,7 +48,7 @@
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['wms:wmsPurchaseOrderDetail:remove']"></el-button>
</el-col>
</el-col> -->
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['wms:wmsPurchaseOrderDetail:export']"></el-button>
</el-col>

@ -404,6 +404,7 @@ type PreviewType = 'xml' | 'bpmn';
const clickPreview = async (id: string, type: PreviewType) => {
loading.value = true;
const resp = await definitionXml(id);
console.log(resp)
if (previewRef.value) {
const xmlStr = resp.data.xmlStr;
loading.value = false;

@ -0,0 +1,151 @@
<template>
<div ref="bpmnContainer" class="bpmn-container"></div>
</template>
<script lang="ts" setup name="processInfo">
import { definitionXml
} from '@/api/workflow/processDefinition';
import { getHistoryList } from '@/api/workflow/processInstance';
import { ref, onMounted, watch } from 'vue';
import BpmnViewer from 'bpmn-js/lib/Viewer'; // BpmnViewer
import BpmnModeler from 'bpmn-js/lib/Modeler';
let diagramXML = null;
let bpmnViewer = null;
const bpmnContainer = ref(null);
// props
const props = ref([]);
const initializeBpmnViewer = async () => {
const resp = await definitionXml('ceshi:1:1888121144965664769');
diagramXML = resp.data.xmlStr;
bpmnViewer = new BpmnModeler({
container: bpmnContainer.value,
//
additionalModules: [
// {
// //
// paletteProvider: ['value', null], // paletteProvider null
// },
// {
// //
// contextPadProvider: ['value', null], // contextPadProvider null
// },
// {
// // 线
// modeling: ['value', {}], // modeling
// },
],
});
const resp1 = await getHistoryList('1889223417401753602');
console.log(resp1.data)
props.value = resp1.data.historyList;
await bpmnViewer.importXML(diagramXML,null, (err) => {
if (err) {
console.error('Failed to render BPMN diagram', err);
} else {
console.log('BPMN diagram rendered successfully');
highlightApprovalNodes();
}
})
// highlightApprovalNodes();
applyNodeStyles();
};
//
const getNodeStatus = async () => {
// console.log(props.value)
};
//
const highlightApprovalNodes = () => {
const elementRegistry = bpmnViewer.get('elementRegistry');
const modeling = bpmnViewer.get('modeling');
// 'bpmn:UserTask'
const approvalNodes = elementRegistry.filter((element) => element.type === 'bpmn:UserTask');
approvalNodes.forEach((node) => {
modeling.setColor(node, {
fill: '#f8f8f8', //
stroke: '#ff0000', //
});
});
};
//
const applyNodeStyles = () => {
const elementRegistry = bpmnViewer.get('elementRegistry');
const modeling = bpmnViewer.get('modeling');
//
console.log(modeling)
props.value.forEach((e) => {
console.log(e.taskDefinitionKey)
console.log(e.status)
const element = elementRegistry.get(e.taskDefinitionKey);
console.log(element)
if (element) {
let fill, stroke, color;
switch (e.status) {
case '已处理':
fill = '#d4f7d4'; // 绿
stroke = '#28a745'; // 绿
break;
case 'in-progress':
fill = '#fff3cd'; //
stroke = '#ffc107'; //
break;
case '已驳回':
fill = '#f8d7da'; //
stroke = '#dc3545'; //
break;
default:
fill = '#f8f9fa'; //
stroke = '#6c757d'; //
}
// modeler
modeling.setColor(element, {
fill,
stroke,
});
}
});
};
// diagramXML
watch(
() => diagramXML,
(newXML) => {
if (bpmnViewer) {
bpmnViewer.importXML(newXML, (err) => {
if (err) {
console.error('Failed to update BPMN diagram', err);
} else {
console.log('BPMN diagram updated successfully');
highlightApprovalNodes(); //
}
});
}
},
);
// BpmnViewer
onMounted(() => {
initializeBpmnViewer();
getNodeStatus();
});
// BpmnViewer
onUnmounted(() => {
if (bpmnViewer) {
bpmnViewer.destroy();
}
});
</script>
<style scoped>
.bpmn-container {
width: 100%;
height: 600px;
border: 1px solid #ccc;
pointer-events: none;
}
</style>

@ -74,6 +74,7 @@
<el-tag v-else type="success">已完成</el-tag>
</template>
</el-table-column>
<!-- <el-table-column v-if="tab === 'finish'" align="center" prop="businessStatusName" label="状态" width="160"></el-table-column> -->
<el-table-column v-if="tab === 'waiting'" align="center" prop="createTime" label="创建时间" width="160"></el-table-column>
<el-table-column v-if="tab === 'finish'" align="center" prop="startTime" label="创建时间" width="160"></el-table-column>
<el-table-column label="操作" align="center" :width="tab === 'finish' ? '80' : '151'">
@ -85,6 +86,12 @@
<el-col v-if="tab === 'waiting'" :span="1.5">
<el-button link type="primary" size="small" icon="Document" @click="handleInstanceVariable(scope.row)"></el-button>
</el-col>
<el-col v-if="tab === 'waiting'" :span="1.5">
<el-button link type="primary" size="small" icon="Document" @click="approvePass(scope.row)"></el-button>
</el-col>
<el-col v-if="tab === 'waiting'" :span="1.5">
<el-button link type="primary" size="small" icon="Document" @click="approveReject(scope.row)"></el-button>
</el-col>
</el-row>
<el-row v-if="scope.row.multiInstance" :gutter="10" class="mb8">
<el-col :span="1.5">
@ -133,7 +140,7 @@
</template>
<script lang="ts" setup>
import { getPageByAllTaskWait, getPageByAllTaskFinish, updateAssignee, getInstanceVariable } from '@/api/workflow/task';
import { getPageByAllTaskWait, getPageByAllTaskFinish, updateAssignee, getInstanceVariable, completeTask, backProcess } from '@/api/workflow/task';
import MultiInstanceUser from '@/components/Process/multiInstanceUser.vue';
import UserSelect from '@/components/UserSelect';
import { TaskQuery, TaskVO, VariableVo } from '@/api/workflow/task/types';
@ -269,6 +276,22 @@ const handleInstanceVariable = async (row: TaskVO) => {
variableList.value = data.data;
variableLoading.value = false;
};
//
const approvePass = async (row: TaskVO) => {
row.taskId = row.id;
console.log(row)
let data = await completeTask(row);
};
//
const approveReject = async (row: TaskVO) => {
row.taskId = row.id;
console.log(row)
let data = await backProcess(row);
};
/** 查看按钮操作 */
const handleView = (row) => {
const routerJumpVo = reactive<RouterJumpVo>({

Loading…
Cancel
Save