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