|
|
@@ -21,7 +21,8 @@
|
|
|
<el-form-item>
|
|
|
<el-button type="primary" @click="handleSearch">查询</el-button>
|
|
|
<el-button @click="handleReset">重置</el-button>
|
|
|
- <el-button type="success" @click="handleRefreshData">刷新数据</el-button>
|
|
|
+ <el-button :loading="loading" @click="refreshList">刷新</el-button>
|
|
|
+ <el-button type="success" @click="handleRefreshData">同步数据</el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
@@ -121,92 +122,9 @@
|
|
|
/>
|
|
|
</div>
|
|
|
|
|
|
- <!-- 交付跟踪弹窗 -->
|
|
|
- <el-dialog v-model="trackDialogVisible" title="交付跟踪" width="80%" destroy-on-close>
|
|
|
- <div v-if="trackingData">
|
|
|
- <el-descriptions :column="2" border>
|
|
|
- <el-descriptions-item label="订单编号">{{ trackingData.billNo }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="客户编码">{{ trackingData.customNo }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="物料代码">{{ trackingData.itemNumber }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="物料名称">{{ trackingData.descr }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="规格型号">{{ trackingData.descr1 }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="数量">{{ trackingData.qty }}</el-descriptions-item>
|
|
|
- </el-descriptions>
|
|
|
-
|
|
|
- <el-divider content-position="left">时间节点</el-divider>
|
|
|
-
|
|
|
- <el-timeline>
|
|
|
- <el-timeline-item v-if="trackingData.updateTime" :timestamp="trackingData.updateTime" placement="top">
|
|
|
- 生产通知
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.bomStart" :timestamp="trackingData.bomStart" placement="top">
|
|
|
- BOM设计开始
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.bomEnd" :timestamp="trackingData.bomEnd" placement="top">
|
|
|
- BOM设计结束
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.lineStart" :timestamp="trackingData.lineStart" placement="top">
|
|
|
- 工艺设计开始
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.lineEnd" :timestamp="trackingData.lineEnd" placement="top">
|
|
|
- 工艺设计结束
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.needTime" :timestamp="trackingData.needTime" placement="top">
|
|
|
- 物料需求
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.cgNeedTime" :timestamp="trackingData.cgNeedTime" placement="top">
|
|
|
- 采购下单
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.cgEnd" :timestamp="trackingData.cgEnd" placement="top">
|
|
|
- 采购到货
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.blStart" :timestamp="trackingData.blStart" placement="top">
|
|
|
- 备料开始
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.blEnd" :timestamp="trackingData.blEnd" placement="top">
|
|
|
- 备料结束
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.productStart" :timestamp="trackingData.productStart" placement="top">
|
|
|
- 生产开始
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.productEnd" :timestamp="trackingData.productEnd" placement="top">
|
|
|
- 生产结束
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.startTime" :timestamp="trackingData.startTime" placement="top">
|
|
|
- 报工开始
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.endTime" :timestamp="trackingData.endTime" placement="top">
|
|
|
- 报工结束
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.ipqcJyStart" :timestamp="trackingData.ipqcJyStart" placement="top">
|
|
|
- IQC检验开始
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.ipqcJyEnd" :timestamp="trackingData.ipqcJyEnd" placement="top">
|
|
|
- IQC检验结束
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.fqcJyStart" :timestamp="trackingData.fqcJyStart" placement="top">
|
|
|
- FQC检验开始
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.fqcJyEnd" :timestamp="trackingData.fqcJyEnd" placement="top">
|
|
|
- FQC检验结束
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.rkStart" :timestamp="trackingData.rkStart" placement="top">
|
|
|
- 入库开始
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.rkEnd" :timestamp="trackingData.rkEnd" placement="top">
|
|
|
- 入库结束
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.fyStartTime" :timestamp="trackingData.fyStartTime" placement="top">
|
|
|
- 发运开始
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.fyEndTime" :timestamp="trackingData.fyEndTime" placement="top">
|
|
|
- 发运结束
|
|
|
- </el-timeline-item>
|
|
|
- <el-timeline-item v-if="trackingData.sysCapacityDate" :timestamp="trackingData.sysCapacityDate" placement="top">
|
|
|
- 合同交期
|
|
|
- </el-timeline-item>
|
|
|
- </el-timeline>
|
|
|
- </div>
|
|
|
+ <!-- 交付跟踪(价值流) -->
|
|
|
+ <el-dialog v-model="flowVisible" title="交付跟踪" width="1200px" destroy-on-close>
|
|
|
+ <OrderDeliveryFlow :entry-id="flowEntryId" />
|
|
|
</el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -214,12 +132,15 @@
|
|
|
<script setup lang="ts" name="aidopBusinessLinkagePlanList">
|
|
|
import { onMounted, reactive, ref } from 'vue';
|
|
|
import { ElMessage, ElMessageBox } from 'element-plus';
|
|
|
-import { fetchLinkagePlanList, fetchLinkagePlanDetail, refreshLinkagePlanData, type LinkagePlanRow, type LinkagePlanDetail } from '../api/linkagePlan';
|
|
|
+import { fetchLinkagePlanList, refreshLinkagePlanData, runLinkagePlanProcedure, type LinkagePlanRow } from '../api/linkagePlan';
|
|
|
+import OrderDeliveryFlow from './orderDeliveryFlow.vue';
|
|
|
|
|
|
const loading = ref(false);
|
|
|
const tableData = ref<LinkagePlanRow[]>([]);
|
|
|
-const trackDialogVisible = ref(false);
|
|
|
-const trackingData = ref<LinkagePlanDetail | null>(null);
|
|
|
+
|
|
|
+// ── 交付跟踪(价值流)──
|
|
|
+const flowVisible = ref(false);
|
|
|
+const flowEntryId = ref<number | null>(null);
|
|
|
|
|
|
const searchForm = reactive({
|
|
|
billNo: '',
|
|
|
@@ -261,6 +182,20 @@ async function loadData() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+async function refreshList() {
|
|
|
+ try {
|
|
|
+ loading.value = true;
|
|
|
+ await runLinkagePlanProcedure();
|
|
|
+ ElMessage.success('计划联动刷新成功');
|
|
|
+ await loadData();
|
|
|
+ } catch (error: any) {
|
|
|
+ console.error('刷新失败:', error);
|
|
|
+ ElMessage.error(error?.message || '刷新失败');
|
|
|
+ } finally {
|
|
|
+ loading.value = false;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
function handleSearch() {
|
|
|
pagination.page = 1;
|
|
|
loadData();
|
|
|
@@ -286,15 +221,13 @@ function handleCurrentChange(page: number) {
|
|
|
loadData();
|
|
|
}
|
|
|
|
|
|
-async function handleTrackDelivery(row: LinkagePlanRow) {
|
|
|
- try {
|
|
|
- const detail = await fetchLinkagePlanDetail(row.id);
|
|
|
- trackingData.value = detail;
|
|
|
- trackDialogVisible.value = true;
|
|
|
- } catch (error) {
|
|
|
- console.error('获取详情失败:', error);
|
|
|
- ElMessage.error('获取详情失败');
|
|
|
+function handleTrackDelivery(row: LinkagePlanRow) {
|
|
|
+ if (row.businessId == null) {
|
|
|
+ ElMessage.warning('该行无关联订单明细,无法跟踪');
|
|
|
+ return;
|
|
|
}
|
|
|
+ flowEntryId.value = row.businessId;
|
|
|
+ flowVisible.value = true;
|
|
|
}
|
|
|
|
|
|
function getRowStyle({ row }: { row: LinkagePlanRow }) {
|
|
|
@@ -366,12 +299,4 @@ onMounted(() => {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-:deep(.el-timeline) {
|
|
|
- padding-left: 0;
|
|
|
-
|
|
|
- .el-timeline-item {
|
|
|
- padding-bottom: 12px;
|
|
|
- }
|
|
|
-}
|
|
|
</style>
|