feat(aps-plan): 新增排产单分页、批量操作与转单功能
1. 为PlanSheetList添加分页导航按钮与空状态提示 2. 优化排产单列表项样式与布局 3. 为排产单详情页新增批量删除、批量转单功能 4. 新增转单对话框,支持单条/批量转单到其他排产单 5. 优化批量新增弹窗,新增合同选择/明细选择双tab页 6. 修复部分组件的换行与代码格式问题 7. 优化ContractSelect组件的代码排版
This commit is contained in:
@@ -6,7 +6,8 @@
|
||||
:label="item.contractCode" />
|
||||
</el-select>
|
||||
<!-- 编辑按钮:点击打开弹窗 -->
|
||||
<el-button v-if="mode == 'today'" @click="openSelectDialog" type="primary" size="small" style="margin-left: 8px; padding: 0 12px;">
|
||||
<el-button v-if="mode == 'today'" @click="openSelectDialog" type="primary" size="small"
|
||||
style="margin-left: 8px; padding: 0 12px;">
|
||||
<i class="el-icon-setting"></i>
|
||||
</el-button>
|
||||
|
||||
@@ -50,15 +51,16 @@
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
<!-- 所有合同tab -->
|
||||
<el-tab-pane label="所有合同" name="all">
|
||||
<div style="margin-bottom: 16px;">
|
||||
<el-input v-model="searchKeyword" placeholder="搜索合同" @input="handleSearch" clearable size="small">
|
||||
<el-input v-model="searchKeyword" placeholder="搜索合同" @input="handleSearch" clearable
|
||||
size="small">
|
||||
<el-button slot="append" icon="el-icon-search" size="small"></el-button>
|
||||
</el-input>
|
||||
</div>
|
||||
|
||||
|
||||
<el-table :data="allContracts" style="width: 100%" size="mini" height="600">
|
||||
<el-table-column prop="contractCode" label="合同编号" width="160" />
|
||||
<el-table-column prop="contractName" label="合同名称" width="180" />
|
||||
@@ -72,34 +74,25 @@
|
||||
<el-table-column prop="remark" label="备注" show-overflow-tooltip />
|
||||
<el-table-column label="状态" width="80">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="isContractInList(scope.row.orderId)" type="success" size="small">已添加</el-tag>
|
||||
<el-tag v-if="isContractInList(scope.row.orderId)" type="success"
|
||||
size="small">已添加</el-tag>
|
||||
<el-tag v-else type="info" size="small">未添加</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-if="!isContractInList(scope.row.orderId)"
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="addContract(scope.row)"
|
||||
plain
|
||||
>
|
||||
<el-button v-if="!isContractInList(scope.row.orderId)" type="primary" size="mini"
|
||||
@click="addContract(scope.row)" plain>
|
||||
添加
|
||||
</el-button>
|
||||
<el-button
|
||||
v-else
|
||||
type="danger"
|
||||
size="mini"
|
||||
@click="removeContract(scope.row.orderId)"
|
||||
plain
|
||||
>
|
||||
<el-button v-else type="danger" size="mini" @click="removeContract(scope.row.orderId)"
|
||||
plain>
|
||||
移除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
|
||||
<div v-if="allContracts.length === 0" style="text-align: center; padding: 20px;">
|
||||
暂无合同数据
|
||||
</div>
|
||||
@@ -159,16 +152,17 @@ export default {
|
||||
const storedContracts = localStorage.getItem('todayContracts');
|
||||
if (storedContracts) {
|
||||
this.contractList = JSON.parse(storedContracts);
|
||||
} else {
|
||||
// 如果localStorage中没有,从接口获取
|
||||
this.loadContractList();
|
||||
}
|
||||
// else {
|
||||
// 如果localStorage中没有,从接口获取
|
||||
this.loadContractList();
|
||||
// }
|
||||
} catch (error) {
|
||||
console.error('Failed to load contracts from localStorage:', error);
|
||||
this.loadContractList();
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
// 保存合同列表到localStorage
|
||||
saveToLocalStorage() {
|
||||
try {
|
||||
@@ -177,7 +171,7 @@ export default {
|
||||
console.error('Failed to save contracts to localStorage:', error);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
// 加载合同列表
|
||||
async loadContractList(keyword) {
|
||||
if (this.mode == "all") {
|
||||
@@ -200,7 +194,7 @@ export default {
|
||||
// 合并合同列表,保留手动添加的合同
|
||||
this.contractList = [...apiContracts, ...existingManualContracts];
|
||||
// 去重,避免重复合同
|
||||
this.contractList = this.contractList.filter((item, index, self) =>
|
||||
this.contractList = this.contractList.filter((item, index, self) =>
|
||||
index === self.findIndex(t => t.orderId === item.orderId)
|
||||
);
|
||||
// 保存到localStorage
|
||||
@@ -213,7 +207,7 @@ export default {
|
||||
// 加载所有合同供选择
|
||||
await this.loadAllContracts();
|
||||
},
|
||||
|
||||
|
||||
// 加载所有合同
|
||||
async loadAllContracts() {
|
||||
try {
|
||||
@@ -224,7 +218,7 @@ export default {
|
||||
});
|
||||
// 合并现有合同(包括手动添加的)
|
||||
const existingContracts = this.contractList;
|
||||
this.allContracts = [...res.rows || [], ...existingContracts].filter((item, index, self) =>
|
||||
this.allContracts = [...res.rows || [], ...existingContracts].filter((item, index, self) =>
|
||||
index === self.findIndex(t => t.orderId === item.orderId)
|
||||
);
|
||||
} catch (error) {
|
||||
@@ -232,17 +226,17 @@ export default {
|
||||
this.allContracts = [];
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
// 搜索合同
|
||||
handleSearch() {
|
||||
this.loadAllContracts();
|
||||
},
|
||||
|
||||
|
||||
// 检查合同是否在列表中
|
||||
isContractInList(orderId) {
|
||||
return this.contractList.some(item => item.orderId === orderId);
|
||||
},
|
||||
|
||||
|
||||
// 添加合同
|
||||
addContract(contract) {
|
||||
if (!this.isContractInList(contract.orderId)) {
|
||||
@@ -253,13 +247,13 @@ export default {
|
||||
this.saveToLocalStorage();
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
// 移除合同
|
||||
removeContract(orderId) {
|
||||
this.contractList = this.contractList.filter(item => item.orderId !== orderId);
|
||||
this.saveToLocalStorage();
|
||||
},
|
||||
|
||||
|
||||
// 刷新合同列表
|
||||
handleRefresh() {
|
||||
this.loadContractList();
|
||||
|
||||
Reference in New Issue
Block a user