@@ -39,8 +39,8 @@ | |||
<script> | |||
// window.SITE_CONFIG['apiURL'] = 'http://192.168.1.103:8080/pms-am'; | |||
// window.SITE_CONFIG['apiURL'] = 'http://192.168.1.49:8080/pms-am'; // tengyun | |||
window.SITE_CONFIG['apiURL'] = 'http://192.168.1.62:8080/pms-am'; // tao | |||
// window.SITE_CONFIG['apiURL'] = 'http://192.168.1.21:8080/pms-am'; // xv | |||
// window.SITE_CONFIG['apiURL'] = 'http://192.168.1.62:8080/pms-am'; // tao | |||
window.SITE_CONFIG['apiURL'] = 'http://192.168.1.21:8080/pms-am'; // xv | |||
</script> | |||
<% } %> | |||
<!-- 集成测试环境 --> | |||
@@ -81,7 +81,7 @@ export default { | |||
style: { color: this.colors[opt.name] || '#0b58ff' }, | |||
on: { click: this.emit.bind(null, opt) } | |||
}, | |||
opt.icon ? opt.showText ? this.text[opt.name] ?? opt.label : '' : '' | |||
opt.icon ? opt.showText ? this.text[opt.name] ?? opt.label : '' : opt.label ?? this.text[opt.name] | |||
) | |||
) | |||
} | |||
@@ -5,6 +5,7 @@ | |||
@close="handleClose" | |||
:destroy-on-close="false" | |||
:close-on-click-modal="configs.clickModalToClose ?? true" | |||
:fullscreen="fullscreen" | |||
> | |||
<!-- title --> | |||
<div slot="title" class="dialog-title"> | |||
@@ -105,6 +106,10 @@ export default { | |||
type: Boolean, | |||
default: false, | |||
}, | |||
fullscreen: { | |||
type: Boolean, | |||
default: false | |||
} | |||
}, | |||
inject: ["urls"], | |||
data() { | |||
@@ -26,23 +26,21 @@ | |||
:total="totalPage" | |||
layout="total, sizes, prev, pager, next, jumper" | |||
></el-pagination> | |||
<DialogJustForm ref="order-dialog" v-if="dialogVisible" /> | |||
</section> | |||
</template> | |||
<script> | |||
import BaseListTable from "./BaseListTable.vue"; | |||
import BaseSearchForm from "./BaseSearchForm.vue"; | |||
import DialogWithMenu from "@/components/DialogWithMenu.vue"; | |||
import DialogJustForm from "./DialogJustForm.vue"; | |||
import moment from "moment"; | |||
const DIALOG_WITH_MENU = "DialogWithMenu"; | |||
const DIALOG_JUST_FORM = "DialogJustForm"; | |||
const dictList = JSON.parse(localStorage.getItem("dictList")); | |||
export default { | |||
name: "ListSectionWithHead", | |||
components: { BaseSearchForm, BaseListTable, DialogWithMenu, DialogJustForm }, | |||
components: { BaseSearchForm, BaseListTable, DialogJustForm }, | |||
props: { | |||
headConfig: { | |||
type: Object, | |||
@@ -71,18 +69,25 @@ export default { | |||
type: Object, | |||
default: () => ({}), | |||
}, | |||
refreshKey: { | |||
type: String, | |||
required: true, | |||
}, | |||
}, | |||
computed: { | |||
dialogType() { | |||
return this.dialogConfigs.menu ? DIALOG_WITH_MENU : DIALOG_JUST_FORM; | |||
}, | |||
}, | |||
watch: { | |||
refreshKey(newVal) { | |||
// 外部触发更新列表 | |||
this.getAList(Object.assign({}, this.listQuery, this.extraSearchConditions, this.params)); | |||
}, | |||
}, | |||
data() { | |||
return { | |||
refreshLayoutKey: null, | |||
DIALOG_WITH_MENU, | |||
DIALOG_JUST_FORM, | |||
dialogVisible: false, | |||
tableLoading: false, | |||
params: {}, // 由 search form 生成的查询条件 | |||
@@ -90,21 +95,6 @@ export default { | |||
limit: 20, | |||
page: 1, | |||
}, | |||
conditions: { | |||
ongoing: { | |||
limit: 20, | |||
code: "", | |||
page: 1, | |||
}, | |||
pending: { | |||
limit: 20, | |||
page: 1, | |||
}, | |||
finished: { | |||
limit: 20, | |||
page: 1, | |||
}, | |||
}, | |||
dataList: [], | |||
totalPage: 0, | |||
}; | |||
@@ -155,9 +145,113 @@ export default { | |||
// 编辑、删除、跳转路由、打开弹窗(动态component)都可以在配置里加上 url | |||
// payload: { type: string, data: string | number | object } | |||
switch (type) { | |||
// 确认订单 | |||
case "confirm-order": { | |||
this.$http | |||
.post("/pms/order/confirm", data, { | |||
headers: { | |||
"Content-Type": "application/json", | |||
}, | |||
}) | |||
.then(({ data: res }) => { | |||
if (res.code === 0) { | |||
// success | |||
this.$message({ | |||
message: "已确认!", | |||
type: "success", | |||
duration: 2000, | |||
onClose: () => { | |||
this.getAList(Object.assign({}, this.listQuery, this.extraSearchConditions, this.params)); | |||
this.$emit("refresh-tables", ["ongoing"]); | |||
}, | |||
}); | |||
} else { | |||
// failed | |||
throw new Error(res.msg); | |||
} | |||
}) | |||
.catch((errMsg) => { | |||
this.$message({ | |||
message: errMsg, | |||
type: "error", | |||
duration: 2000, | |||
}); | |||
}); | |||
break; | |||
} | |||
// 废除订单 | |||
case "destroy-order": | |||
// 结束订单 | |||
case "end-order": { | |||
this.$http | |||
.post("/pms/order/end", data, { | |||
headers: { | |||
"Content-Type": "application/json", | |||
}, | |||
}) | |||
.then(({ data: res }) => { | |||
if (res.code === 0) { | |||
// success | |||
this.$message({ | |||
message: "已结束订单!", | |||
type: "success", | |||
duration: 2000, | |||
onClose: () => { | |||
this.getAList(Object.assign({}, this.listQuery, this.extraSearchConditions, this.params)); | |||
this.$emit("refresh-tables", ["finished"]); | |||
}, | |||
}); | |||
} else { | |||
// failed | |||
throw new Error(res.msg); | |||
} | |||
}) | |||
.catch((errMsg) => { | |||
this.$message({ | |||
message: errMsg, | |||
type: "error", | |||
duration: 2000, | |||
}); | |||
}); | |||
break; | |||
} | |||
// 上移 | |||
case "move-up": | |||
// 下移 | |||
case "move-down": | |||
// 移至顶部 | |||
case "move-to-top": | |||
// 移至底部 | |||
case "move-to-bottom": { | |||
const locationMap = { | |||
"move-up": 1, | |||
"move-down": 2, | |||
"move-to-bottom": 3, | |||
"move-to-top": 0, | |||
}; | |||
return this.$http | |||
.get("/pms/order/change", { params: { id: data, location: locationMap[type] } }) | |||
.then(({ data: res }) => { | |||
if (res.code === 0) { | |||
// success | |||
this.getAList(Object.assign({}, this.listQuery, this.extraSearchConditions, this.params)); | |||
} else { | |||
// failed | |||
throw new Error(res.msg); | |||
} | |||
}) | |||
.catch((errMsg) => { | |||
this.$message({ | |||
message: errMsg, | |||
type: "error", | |||
duration: 2000, | |||
}); | |||
}); | |||
} | |||
case "delete": { | |||
// 确认是否删除 | |||
return this.$confirm(`确定要删除 "${data.name}" 吗?`, "提示", { | |||
return this.$confirm(`确定要删除 "${data.code ?? data.id}" 吗?`, "提示", { | |||
confirmButtonText: "确认", | |||
cancelButtonText: "我再想想", | |||
type: "warning", | |||
@@ -165,7 +259,7 @@ export default { | |||
.then(() => { | |||
// this.$http.delete(this.urls.base + `/${data}`).then((res) => { | |||
this.$http({ | |||
url: this.urls.base, | |||
url: '/pms/order', | |||
method: "DELETE", | |||
data: [`${data.id}`], | |||
}).then(({ data: res }) => { | |||
@@ -232,7 +326,7 @@ export default { | |||
this.dialogVisible = true; | |||
this.$nextTick(() => { | |||
// this.$refs["edit-dialog"].init(/** some args... */ row_id, detail_mode); | |||
this.$refs["order-dialog"].init(/** some args... */ row_id, detail_mode); | |||
}); | |||
}, | |||
}, | |||
@@ -23,7 +23,7 @@ export default function () { | |||
const operations = { | |||
'ongoing': [ | |||
// { name: 'view-detail', label: '查看详情' }, | |||
{ name: 'confirm-order', label: '确认', icon: 'success', showText: true }, | |||
// { name: 'confirm-order', label: '确认', icon: 'success', showText: true }, | |||
{ name: 'end-order', label: '结束', icon: 'error', showText: true }, | |||
{ name: 'move-up', label: '上移', icon: 'caret-top', showText: true }, | |||
{ name: 'move-down', label: '下移', icon: 'caret-bottom', showText: true }, | |||
@@ -38,10 +38,11 @@ export default function () { | |||
{ name: 'move-down', label: '下移', icon: 'caret-bottom', showText: true }, | |||
{ name: 'move-to-top', label: '至顶', icon: 'upload2', showText: true }, | |||
{ name: 'move-to-bottom', label: '至底', icon: 'download', showText: true }, | |||
'delete' | |||
{ name: 'delete', emitFull: true, permission: '' } | |||
], | |||
'finished': [ | |||
{ name: 'end-order', label: '结束订单', icon: 'error', showText: true }, | |||
// { name: 'view', label: '查看详情' } | |||
// { name: 'end-order', label: '结束订单', icon: 'error', showText: true }, | |||
] | |||
} | |||
@@ -76,14 +77,14 @@ export default function () { | |||
{ width: 120, prop: "pcsKilnCar", label: "托盘码放砖数", }, | |||
{ prop: "description", label: "详情", subcomponent: TableTextComponent }, | |||
{ width: 200, prop: "remark", label: "备注" }, | |||
{ | |||
type !== 'finished' ? { | |||
prop: "operations", | |||
name: "操作", | |||
fixed: "right", | |||
subcomponent: TableOperaionComponent, | |||
options: operations[type], | |||
width: operations[type].length * 64 | |||
} | |||
}: {} | |||
]; | |||
@@ -10,28 +10,34 @@ | |||
<!-- <ListViewWithHead :table-configs="tableConfigs" :head-configs="headFormConfigs" :dialog-configs="dialogConfigs" /> --> | |||
<ListSectionWithHead | |||
id="ongoing" | |||
:refresh-key="keys.ongoing" | |||
:extra-search-conditions="{ code: '' }" | |||
:page-url="allUrls.confirmedOrder" | |||
:table-config="{ table: null, column: tableConfigs.ongoingTable }" | |||
:head-config="{ title: '进行中的订单', form: headFormConfigs.ongoingTableSearch }" | |||
:dialog-config="null" | |||
/> | |||
<ListSectionWithHead | |||
@refresh-tables="handleRefreshTable" | |||
/> | |||
<ListSectionWithHead | |||
id="pending" | |||
:refresh-key="keys.pending" | |||
:extra-search-conditions="{ code: '' }" | |||
:page-url="allUrls.unConfirmedOrder" | |||
:table-config="{ table: null, column: tableConfigs.pendingTable }" | |||
:head-config="{ title: '等待中的订单', form: headFormConfigs.pendingTableSearch }" | |||
:dialog-config="null" | |||
/> | |||
<ListSectionWithHead | |||
@refresh-tables="handleRefreshTable" | |||
/> | |||
<ListSectionWithHead | |||
id="finished" | |||
:refresh-key="keys.finished" | |||
:extra-search-conditions="{ code: '' }" | |||
:page-url="allUrls.finishedOrder" | |||
:table-config="{ table: null, column: tableConfigs.finishedTable }" | |||
:head-config="{ title: '完成的订单', form: headFormConfigs.finishedTableSearch }" | |||
:dialog-config="null" | |||
/> | |||
@refresh-tables="handleRefreshTable" | |||
/> | |||
</div> | |||
</div> | |||
@@ -70,6 +76,11 @@ export default { | |||
allUrls: urls, | |||
dialogConfigs, | |||
activeTable: "", | |||
keys: { | |||
ongoing: Math.random().toString(), | |||
pending: Math.random().toString(), | |||
finished: Math.random().toString(), | |||
}, | |||
}; | |||
// return { | |||
// dataList: [ | |||
@@ -107,6 +118,16 @@ export default { | |||
const [item] = this.dataList.splice($index, 1); | |||
this.dataList.splice($index + 1, 0, item); | |||
}, | |||
// | |||
handleRefreshTable(tableNameList) { | |||
if (Array.isArray(tableNameList)) { | |||
tableNameList.forEach(name => { | |||
this.keys[name] = Math.random().toString() | |||
}) | |||
} else { | |||
console.log('handleRefreshTable 需要传递数组!') | |||
} | |||
} | |||
}, | |||
}; | |||
</script> | |||