This commit is contained in:
tzy 2025-09-14 16:51:45 +08:00
parent 6514ae0510
commit 9c0d5a65a8
4 changed files with 139 additions and 6 deletions

View File

@ -42,3 +42,11 @@ export function delAssetCard(id) {
method: 'delete'
})
}
// 批量更新金蝶资产卡片
export function updateAssetCardBatch() {
return request({
url: '/system/assetCard/updateAssetCard',
method: 'post'
})
}

View File

@ -119,3 +119,12 @@ export function uploadPDF(id) {
headers: { 'Content-Type': 'application/json; application/octet-stream' }
})
}
// 下载生产工艺计划表
export function exportRoute(id) {
return request({
url: `/system/orderPro/exportRoute?id=${id}`,
method: 'post',
responseType: 'blob'
})
}

View File

@ -65,12 +65,12 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
@ -114,12 +114,23 @@
v-hasPermi="['system:assetCard:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="info"
plain
icon="el-icon-refresh"
size="mini"
@click="handleUpdateAssetCard"
v-hasPermi="['system:assetCard:update']"
>获取数据</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="assetCardList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="ID" align="center" prop="id" v-if="true"/>
<!-- <el-table-column label="ID" align="center" prop="id" v-if="true"/>-->
<el-table-column label="资产ID" align="center" prop="assetId" />
<el-table-column label="资产类别" align="center" prop="assetCategory" />
<el-table-column label="卡片编码" align="center" prop="cardCode" />
<el-table-column label="计量单位" align="center" prop="assetUnit" />
@ -128,7 +139,18 @@
<el-table-column label="资产数量" align="center" prop="assetQuantity" />
<el-table-column label="资产名称" align="center" prop="assetName" />
<el-table-column label="制造商" align="center" prop="assetManufacturer" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column label="所属人" align="center" prop="owner" />
<el-table-column label="金蝶修改日期" align="center" prop="kdUpdateTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.kdUpdateTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="金蝶创建日期" align="center" prop="kdCreateTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.kdCreateTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
@ -145,7 +167,7 @@
v-hasPermi="['system:assetCard:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table-column>-->
</el-table>
<pagination
@ -159,6 +181,9 @@
<!-- 添加或修改金蝶资产卡片对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="资产ID" prop="assetId">
<el-input v-model="form.assetId" placeholder="请输入资产ID" />
</el-form-item>
<el-form-item label="资产类别" prop="assetCategory">
<el-input v-model="form.assetCategory" placeholder="请输入资产类别" />
</el-form-item>
@ -183,6 +208,25 @@
<el-form-item label="制造商" prop="assetManufacturer">
<el-input v-model="form.assetManufacturer" placeholder="请输入制造商" />
</el-form-item>
<el-form-item label="所属人" prop="owner">
<el-input v-model="form.owner" placeholder="请输入所属人" />
</el-form-item>
<el-form-item label="金蝶修改日期" prop="kdUpdateTime">
<el-date-picker clearable
v-model="form.kdUpdateTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择金蝶修改日期">
</el-date-picker>
</el-form-item>
<el-form-item label="金蝶创建日期" prop="kdCreateTime">
<el-date-picker clearable
v-model="form.kdCreateTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择金蝶创建日期">
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
@ -193,7 +237,7 @@
</template>
<script>
import { listAssetCard, getAssetCard, delAssetCard, addAssetCard, updateAssetCard } from "@/api/system/assetCard";
import { listAssetCard, getAssetCard, delAssetCard, addAssetCard, updateAssetCard, updateAssetCardBatch } from "@/api/system/assetCard";
export default {
name: "AssetCard",
@ -223,6 +267,7 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
assetId: undefined,
assetCategory: undefined,
cardCode: undefined,
assetUnit: undefined,
@ -231,6 +276,9 @@ export default {
assetQuantity: undefined,
assetName: undefined,
assetManufacturer: undefined,
owner: undefined,
kdUpdateTime: undefined,
kdCreateTime: undefined
},
//
form: {},
@ -239,6 +287,9 @@ export default {
id: [
{ required: true, message: "ID不能为空", trigger: "blur" }
],
assetId: [
{ required: true, message: "资产ID不能为空", trigger: "blur" }
],
assetCategory: [
{ required: true, message: "资产类别不能为空", trigger: "blur" }
],
@ -263,6 +314,15 @@ export default {
assetManufacturer: [
{ required: true, message: "制造商不能为空", trigger: "blur" }
],
owner: [
{ required: true, message: "所属人不能为空", trigger: "blur" }
],
kdUpdateTime: [
{ required: true, message: "金蝶修改日期不能为空", trigger: "blur" }
],
kdCreateTime: [
{ required: true, message: "金蝶创建日期不能为空", trigger: "blur" }
]
}
};
},
@ -288,6 +348,7 @@ export default {
reset() {
this.form = {
id: undefined,
assetId: undefined,
assetCategory: undefined,
cardCode: undefined,
assetUnit: undefined,
@ -297,9 +358,12 @@ export default {
assetName: undefined,
assetManufacturer: undefined,
createBy: undefined,
owner: undefined,
updateBy: undefined,
createTime: undefined,
updateTime: undefined
kdUpdateTime: undefined,
updateTime: undefined,
kdCreateTime: undefined
};
this.resetForm("form");
},
@ -382,6 +446,19 @@ export default {
this.download('system/assetCard/export', {
...this.queryParams
}, `assetCard_${new Date().getTime()}.xlsx`)
},
/** 获取数据按钮操作 */
handleUpdateAssetCard() {
this.$modal.confirm('是否确认从金蝶系统获取最新的资产卡片数据?').then(() => {
this.loading = true;
return updateAssetCardBatch();
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("数据获取成功");
}).catch(() => {
this.loading = false;
});
}
}
};

View File

@ -284,6 +284,9 @@
<el-button type="primary" @click="downloadPDF" style="margin-bottom: 10px; margin-left: 10px;">
下载PDF
</el-button>
<el-button type="warning" @click="downloadRoute" style="margin-bottom: 10px; margin-left: 10px;" v-hasPermi="['system:route:exportRoute']">
下载生产工艺计划表
</el-button>
<el-progress :text-inside="true" :stroke-width="26" :percentage="percentage"></el-progress>
<el-card shadow="never" style="background: #f9f9f9; min-height: 120px; max-height: 220px; overflow-y: auto;">
<div style="font-size: 13px; color: #333; white-space: pre-line;">
@ -645,6 +648,7 @@ import {
executDrawing,
delSave,
uploadPDF,
exportRoute,
getMRPResults
} from "@/api/system/orderPro";
import {processList} from "../../../api/system/orderPro";
@ -1614,6 +1618,41 @@ export default {
this.$message.error('PDF文件下载失败: ' + (error.message || error));
});
},
downloadRoute() {
if (!this.productionObj || !this.productionObj.id) {
this.$message.error('请先选择生产令号');
return;
}
this.$message.success('开始下载生产工艺计划表');
console.log('开始下载生产令号ID:', this.productionObj.id);
// API
exportRoute(this.productionObj.id)
.then(response => {
//
if (response.size === 0) {
this.$message.error('文件为空或下载失败');
return;
}
// blob
let blob = new Blob([response], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});
let url = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = `${this.productionObj.productionOrderNo}_生产工艺计划表.xlsx`;
link.click();
window.URL.revokeObjectURL(url);
this.$message.success('生产工艺计划表下载成功');
})
.catch(error => {
console.error('下载失败:', error);
//
this.$message.error('下载失败: ' + (error.message || '项目未出图'));
});
},
},
beforeMount() {
clearInterval(this.time);