Browse Source

前端重构,数据输入和数据比对5个类型的务组件提取

master
wanggang 1 year ago
parent
commit
dd78339b0c
  1. 30
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/components/form/form-input.js
  2. 51
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/components/list/index.js
  3. 4
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/business-type.js
  4. 32
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/compare/compare.js
  5. 127
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/compare/fa-yun.js
  6. 118
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/input/edi.js
  7. 186
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/input/fa-yun.js
  8. 52
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/input/jie-suan-detail.js
  9. 23
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/input/jie-suan.js
  10. 8
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/tb_re-parts-relationship_service.js
  11. 4
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/request/index.js
  12. 1450
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/router/business.js
  13. 4
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/styles/site.css
  14. 98
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/compare/fa-yun.js
  15. 106
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/compare/jie-suan.js
  16. 23
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/input/edi.js
  17. 31
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/input/fa-yun.js
  18. 8
      code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/input/jie-suan.js

30
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/components/form/form-input.js

@ -22,10 +22,9 @@ export default {
<template v-if="getInput(schema)==='select'"> <template v-if="getInput(schema)==='select'">
<el-select <el-select
v-model="model[prop]" v-model="model[prop]"
:placeholder="$t('select')" :placeholder="schema.placeholder??schema.title"
:multiple="!!schema.multiple" :multiple="!!schema.multiple"
:clearable="!!schema.clearable" :clearable="!!schema.clearable"
style="width:100%"
> >
<el-option v-for="item in options" :key="item.key" :label="item.label" :value="item.value" /> <el-option v-for="item in options" :key="item.key" :label="item.label" :value="item.value" />
</el-select> </el-select>
@ -37,7 +36,9 @@ export default {
</el-tabs> </el-tabs>
<br /> <br />
</template> </template>
<template v-else-if="getInput(schema)==='month'||getInput(schema)==='datetime'"> <template
v-else-if="getInput(schema)==='month'||getInput(schema)==='datetime'||getInput(schema)==='datetimerange'"
>
<el-date-picker <el-date-picker
v-model="model[prop]" v-model="model[prop]"
:type="schema.input" :type="schema.input"
@ -45,13 +46,28 @@ export default {
/> />
</template> </template>
<template v-else-if="getInput(schema)==='number'"> <template v-else-if="getInput(schema)==='number'">
<el-input :disabled="getDisabled()" :placeholder="schema.title" v-model="model[prop]" type="number" /> <el-input
:disabled="getDisabled()"
:placeholder="schema.placeholder??schema.title"
v-model="model[prop]"
type="number"
/>
</template> </template>
<template v-else-if="getInput(schema)==='integer'"> <template v-else-if="getInput(schema)==='integer'">
<el-input-number :disabled="getDisabled()" :placeholder="schema.title" v-model="model[prop]" :precision="0" /> <el-input-number
:disabled="getDisabled()"
:placeholder="schema.placeholder??schema.title"
v-model="model[prop]"
:precision="0"
/>
</template> </template>
<template v-else-if="getInput(schema)==='boolean'"> <template v-else-if="getInput(schema)==='boolean'">
<el-select :disabled="getDisabled()" v-model="model[prop]" :placeholder="schema.title" v-if="schema.nullable"> <el-select
:disabled="getDisabled()"
v-model="model[prop]"
:placeholder="schema.placeholder??schema.title"
v-if="schema.nullable"
>
<el-option prop="select" value="" :label="$t('select')" /> <el-option prop="select" value="" :label="$t('select')" />
<el-option prop="true" :value="true" :label="$t('true')" /> <el-option prop="true" :value="true" :label="$t('true')" />
<el-option prop="false" :value="false" :label="$t('false')" /> <el-option prop="false" :value="false" :label="$t('false')" />
@ -89,7 +105,7 @@ export default {
<el-input <el-input
clearable clearable
:disabled="getDisabled()" :disabled="getDisabled()"
:placeholder="schema.title" :placeholder="schema.placeholder??schema.title"
v-model="model[prop]" v-model="model[prop]"
:type="schema.input??'text'" :type="schema.input??'text'"
:show-password="schema.input==='password'" :show-password="schema.input==='password'"

51
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/components/list/index.js

@ -81,12 +81,7 @@ export default {
</template> </template>
</el-table-column> </el-table-column>
<template v-for="(item,key) in config.table.schema.properties"> <template v-for="(item,key) in config.table.schema.properties">
<template v-if="key==='properties'"> <template v-if="item.navigation">
<el-table-column :label="subKey" v-for="(subItem,subKey) in item.properties">
<template #default="scope">{{ scope.row[key][subKey] }} </template>
</el-table-column>
</template>
<template v-else-if="item.navigation">
<el-table-column :prop="key" :label="item.title"> <el-table-column :prop="key" :label="item.title">
<template #default="scope">{{getProp(scope.row,item.navigation)}}</template> <template #default="scope">{{getProp(scope.row,item.navigation)}}</template>
</el-table-column> </el-table-column>
@ -121,10 +116,15 @@ export default {
</template> </template>
</el-table-column> </el-table-column>
</template> </template>
<template v-if="key==='extraProperties'"> </template>
<el-table-column v-for="item in scope.row['extraProperties']"> <template v-if="item.type==='object'">
<template #header="scope">{{$t(item.key)??item.key}}</template> <template v-for="(item2,key2) in item['properties']">
<template #default="scope"> {{item.value}} </template> <el-table-column :prop="key+'.'+key2">
<template #header="scope">{{item2.title}}</template>
<template #default="scope">
<app-form-input mode="details" :schema="item2" :prop="key+'.'+key2" v-model="scope.row[key]" />
{{scope.row[key][key2]}}
</template>
</el-table-column> </el-table-column>
</template> </template>
</template> </template>
@ -637,7 +637,7 @@ export default {
const url = config.edit.exportUrl; const url = config.edit.exportUrl;
const method = config.edit.exportMethod ?? "POST"; const method = config.edit.exportMethod ?? "POST";
const postData = { const postData = {
filters: [{ logic: "and", action: "equal", column: item.meta.key, value: rows[0][item.meta.key] }], [item.meta.key]: rows[0][item.meta.key],
}; };
const response = await request(url, postData, { method }); const response = await request(url, postData, { method });
if (!response.errors) { if (!response.errors) {
@ -646,16 +646,6 @@ export default {
} else { } else {
console.log(item); console.log(item);
} }
} else if (item.path === "compare") {
exportModel.value = defaultExportModel;
versions.value = (
await request("settleaccount/centralized-control/get-all", null, { method: "POST" })
).data.items.map((o) => ({
value: o.version,
label: o.version,
}));
editFormTitle.value = `${t(item.path)}${config.query.schema.title}`;
dialogVisible.value = true;
} else if (item.path === "import") { } else if (item.path === "import") {
//import //import
try { try {
@ -668,10 +658,6 @@ export default {
} finally { } finally {
editFormloading.value = false; editFormloading.value = false;
} }
} else if (item.path === "sync") {
const url = config.edit.syncUrl;
const method = config.edit.syncMethod;
await request(url, null, { method });
} else if (item === "filter") { } else if (item === "filter") {
editFormTitle.value = t("自定义查询"); editFormTitle.value = t("自定义查询");
dialogVisible.value = true; dialogVisible.value = true;
@ -722,11 +708,8 @@ export default {
const url = config.edit.importUrl; const url = config.edit.importUrl;
const formData = new FormData(); const formData = new FormData();
// //
if (config.query.schema.properties.businessType?.default) { if (route.meta.businessType) {
formData.append("businessType", config.query.schema.properties.businessType.default); formData.append("businessType", route.meta.businessType);
}
if (!router.currentRoute.value.path.startsWith("/base-data")) {
formData.append("version", queryModel.value.version);
} }
Object.keys(importModel.value).forEach((propertyName) => { Object.keys(importModel.value).forEach((propertyName) => {
if (importModel.value[propertyName]) { if (importModel.value[propertyName]) {
@ -869,6 +852,14 @@ export default {
const postData = JSON.parse(JSON.stringify(queryModel.value)); const postData = JSON.parse(JSON.stringify(queryModel.value));
Object.assign(postData, subListQuery.value.query); Object.assign(postData, subListQuery.value.query);
postData.filters = filterList.value.filter((o) => o.column && o.action && (o.value || o.value === false)); postData.filters = filterList.value.filter((o) => o.column && o.action && (o.value || o.value === false));
if (route.meta.businessType) {
postData.filters.push({
logic: "and",
column: "businessType",
action: "equal",
value: route.meta.businessType,
});
}
if (postData.items) { if (postData.items) {
delete postData["items"]; delete postData["items"];
} }

4
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/business-type.js

@ -1,4 +1,4 @@
export default [ const options = [
{ value: 0, label: "未定义" }, { value: 0, label: "未定义" },
{ value: 1, label: "JisBBAC" }, { value: 1, label: "JisBBAC" },
{ value: 2, label: "JisHBPO" }, { value: 2, label: "JisHBPO" },
@ -9,3 +9,5 @@ export default [
{ value: 7, label: "备件" }, { value: 7, label: "备件" },
{ value: 8, label: "印度件" }, { value: 8, label: "印度件" },
]; ];
const businessType = { title: "业务类型", type: "string", input: "select", options };
export default businessType;

32
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/compare/compare.js

@ -0,0 +1,32 @@
import defaultVersion from "../version.js";
const version = Object.assign({}, defaultVersion);
export default {
properties: {
version: Object.assign(version, { rules: [{ required: true }] }),
seDateTime: {
title: "发运日期",
type: "array",
input: "datetimerange",
},
downLineDateTime: {
title: "下线日期",
type: "array",
input: "datetimerange",
},
pn: {
title: "通用码",
type: "string",
input: "textarea",
columns: 1,
placeholder: "通用码",
},
lu: {
title: "客户零件号",
type: "string",
input: "textarea",
placeholder: "客户零件号",
},
},
};

127
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/compare/fa-yun.js

@ -0,0 +1,127 @@
import version from "../version.js";
import compareSchema from "./compare.js";
const stateName = {
title: "状态",
type: "string",
input: "select",
clearable: true,
options: [
{ label: "执行完成(任务成功)", value: "Succeeded" },
{ label: "执行完成(任务失败)", value: "Failed" },
{ label: "执行中", value: "Processing" },
{ label: "等待执行", value: "Enqueued" },
],
};
const schema = {
title: "数据对比",
type: "object",
properties: {
type: {
title: "版本号",
type: "string",
},
taskId: {
title: "单据流水号",
type: "string",
},
email: {
title: "创建人",
type: "string",
},
createdAt: {
title: "创建时间",
type: "DateTime",
},
remark: {
title: "说明",
type: "string",
},
stateName,
},
};
export default function (compareService) {
const queryUrl = "settleaccount/Job/list";
const deleteUrl = "settleaccount/Job/delete";
const exportUrl = "settleaccount/pub_sa_detail_service/export";
const compareUrl = `settleaccount/${compareService}`;
const queryMethod = "POST";
const deleteMethod = "POST";
const exportMethod = "POST";
const compareMethod = "POST";
return {
query: {
url: queryUrl,
method: queryMethod,
autoSubmit: true,
disableQueryOnLoad: false,
schema: {
title: "数据对比",
type: "object",
properties: {
type: Object.assign({ defaultSelected: false }, version),
name: {
type: "string",
hidden: true,
},
stateName,
businessType: {
type: "string",
hidden: true,
},
filters: {
type: "array",
hidden: true,
items: {
type: "object",
properties: {
logic: {
type: "int",
},
column: {
type: "string",
},
action: {
type: "int",
},
value: {
type: "string",
},
},
},
default: [],
},
skipCount: {
hidden: true,
default: 0,
},
maxResultCount: {
hidden: true,
default: 10,
},
sorting: {
hidden: true,
},
},
},
},
table: {
schema: schema,
},
edit: {
deleteUrl,
exportUrl,
compareUrl,
deleteMethod,
exportMethod,
compareMethod,
schema: schema,
},
compare: {
schema: compareSchema,
},
};
}

118
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/input/edi.js

@ -0,0 +1,118 @@
import version from "../version.js";
const schema = {
title: "EDI数据",
type: "object",
properties: {
keyCode: {
title: "LU+生产码",
type: "string",
},
version,
lu: {
title: "零件号",
type: "string",
},
pn: {
title: "生产码",
type: "string",
},
seqNumber: {
title: "日顺序号",
type: "string",
},
assemblyCode: {
title: "小总成号",
type: "string",
},
injectionCode: {
title: "注塑码",
type: "string",
},
qty: {
title: "EDI数量",
type: "number",
},
beginDate: {
title: "订货时间",
type: "string",
input: "datetime",
},
id: {
type: "string",
hidden: true,
showForList: false,
},
},
};
export default function (service) {
const queryUrl = `settleaccount/${service}/get-list`;
const exportUrl = `settleaccount/${service}/export`;
const queryMethod = "POST";
const exportMethod = "POST";
return {
query: {
url: queryUrl,
method: queryMethod,
hasFilter: true,
schema: {
title: "EDI数据",
type: "object",
properties: {
filters: {
title: "项目",
type: "array",
hidden: true,
items: {
type: "object",
properties: {
logic: {
type: "int",
},
column: {
type: "string",
},
action: {
type: "int",
},
value: {
type: "string",
},
},
},
default: [
{
logic: "and",
column: "version",
action: "equal",
value: null,
readOnly: true,
},
],
},
skipCount: {
hidden: true,
default: 0,
},
maxResultCount: {
hidden: true,
default: 10,
},
sorting: {
hidden: true,
},
},
},
},
table: {
schema: schema,
},
edit: {
exportUrl,
exportMethod,
schema: schema,
},
};
}

186
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/input/fa-yun.js

@ -0,0 +1,186 @@
const schema = {
title: "JIS发运数据",
type: "object",
properties: {
wmsBillNum: {
title: "发货单号",
type: "string",
},
num: {
title: "单据编号",
type: "string",
},
billTime: {
title: "发货时间",
type: "string",
input: "datetime",
},
oper: {
title: "发货人",
type: "string",
},
orderNum: {
title: "排序单号",
type: "string",
},
seq: {
title: "订单序号",
type: "string",
},
realCode: {
title: "实际生产码",
type: "string",
},
vinCode: {
title: "订单生产码",
type: "string",
},
codeType: {
title: "生产码类型",
type: "string",
},
realPartCode: {
title: "实际零件号",
type: "string",
},
partCode: {
title: "零件号",
type: "string",
},
batch: {
title: "批次",
type: "string",
},
mesConfigCode: {
title: "MES配置码",
type: "string",
},
fromLoc: {
title: "来源库位",
type: "string",
},
toLoc: {
title: "目标库位",
type: "string",
},
refVinCode: {
title: "参照订单生产码",
type: "string",
},
billCharacter: {
title: "单据性质",
type: "string",
},
refBillNum: {
title: "发货关联单号",
type: "string",
},
erpToLoc: {
title: "Erp目标库位",
type: "string",
},
origiCode: {
title: "原生产码",
type: "string",
},
remark: {
title: "备注",
type: "string",
},
uniqueCode: {
title: "塑件唯一码",
type: "string",
},
pjsNum: {
title: "PJS顺序号",
type: "string",
},
matchNumber: {
title: "虚拟小总成",
type: "string",
},
deliverCode: {
title: "发货条码",
type: "string",
},
position: {
title: "客户位置",
type: "string",
},
},
};
export default function (service, syncService) {
const queryUrl = `settleaccount/${service}/get-list`;
const exportUrl = `settleaccount/${service}/export`;
const syncUrl = `settleaccount/${syncService}`;
const queryMethod = "POST";
const exportMethod = "POST";
const syncMethod = "POST";
return {
query: {
url: queryUrl,
method: queryMethod,
hasFilter: true,
schema: {
title: "JIS发运数据",
type: "object",
properties: {
filters: {
title: "项目",
type: "array",
hidden: true,
items: {
type: "object",
properties: {
logic: {
type: "int",
},
column: {
type: "string",
},
action: {
type: "int",
},
value: {
type: "string",
},
},
},
default: [
{
logic: "and",
column: "wmsBillNum",
action: "like",
value: null,
readOnly: true,
},
],
},
skipCount: {
hidden: true,
default: 0,
},
maxResultCount: {
hidden: true,
default: 10,
},
sorting: {
hidden: true,
},
},
},
},
table: {
schema: schema,
},
edit: {
exportUrl,
syncUrl,
exportMethod,
syncMethod,
schema: schema,
},
};
}

52
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/input/jie-suan-detail.js

@ -33,6 +33,58 @@ const schema = {
title: "生产号", title: "生产号",
type: "string", type: "string",
}, },
extraProperties: {
title: "扩展属性",
type: "object",
properties: {
DeliveryNumber: {
title: "交货号",
},
InvoiceNumber: {
title: "发票号",
},
VendorCode: {
title: "供应商代码",
},
VendorName: {
title: "供应商名称",
},
PurchaseOrderNumber: {
title: "采购订单号",
},
DeliveryIndexNumber: {
title: "交付索引号",
},
PartName: {
title: "零件名称",
},
Price: {
title: "价格",
type: "number",
},
Amount: {
title: "金额",
type: "number",
},
Tallage: {
title: "税额",
type: "number",
},
Total: {
title: "价税合计",
type: "number",
},
ProtocolNumber: {
title: "协议编号",
},
Remark: {
title: "备注",
},
CommodityGroup: {
title: "商品组",
},
},
},
}, },
}; };

23
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/input/jie-suan.js

@ -1,5 +1,6 @@
import version from "../version.js"; import version from "../version.js";
import state from "../state.js"; import state from "../state.js";
import businessType from "../business-type.js";
const schema = { const schema = {
title: "结算数据", title: "结算数据",
@ -13,19 +14,14 @@ const schema = {
oneToMany: "/input/jie-suan/detail", oneToMany: "/input/jie-suan/detail",
config: "/models/input/jie-suan-detail.js", config: "/models/input/jie-suan-detail.js",
}, },
businessType: { businessType,
title: "业务类型",
type: "string",
hidden: true,
default: 0,
},
}, },
}; };
export default function (service = "pub_sa_service", detailService = "pub_sa_detail_service") { export default function (service, detailService) {
const queryUrl = `settleaccount/${service}/get-list`; const queryUrl = `settleaccount/${service}/get-list`;
const deleteUrl = `settleaccount/${service}/delete-list`; const deleteUrl = `settleaccount/${service}/delete-list`;
const importUrl = `settleaccount/${service}/import`; const importUrl = `settleaccount/pub_sa_service/import-by-business-type`;
const exportUrl = `settleaccount/${detailService}/export`; const exportUrl = `settleaccount/${detailService}/export`;
const queryMethod = "POST"; const queryMethod = "POST";
const deleteMethod = "POST"; const deleteMethod = "POST";
@ -83,16 +79,19 @@ export default function (service = "pub_sa_service", detailService = "pub_sa_det
sorting: { sorting: {
hidden: true, hidden: true,
}, },
businessType: {
hidden: true,
default: 0,
},
}, },
}, },
}, },
table: { table: {
schema: schema, schema: schema,
}, },
import: {
schema: {
properties: {
version: Object.assign(version, { rules: [{ required: true }] }),
},
},
},
edit: { edit: {
deleteUrl, deleteUrl,
importUrl, importUrl,

8
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/tb_re-parts-relationship_service.js

@ -1,4 +1,4 @@
import businessTypes from "./business-type.js"; import options from "./business-type.js";
const schema = { const schema = {
title: "客户替换件关系", title: "客户替换件关系",
@ -12,11 +12,7 @@ const schema = {
title: "替换厂内物料号", title: "替换厂内物料号",
type: "string", type: "string",
}, },
businessType: { options,
title: "业务分类",
input: "select",
options: businessTypes,
},
}, },
}; };

4
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/request/index.js

@ -51,9 +51,9 @@ const getResult = async (response) => {
}; };
if (response.status === 200 || response.status === 201 || response.status === 204) { if (response.status === 200 || response.status === 201 || response.status === 204) {
const contentType = response.headers.get("Content-Type"); const contentType = response.headers.get("Content-Type");
if (contentType.indexOf("application/json") > -1) { if (contentType?.indexOf("application/json") > -1) {
result.data = await response.json(); result.data = await response.json();
} else if (contentType.indexOf("text/plain") > -1) { } else if (contentType?.indexOf("text/plain") > -1) {
result.data = await response.text(); result.data = await response.text();
} else if (contentType === "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { } else if (contentType === "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") {
result.data = await response.blob(); result.data = await response.blob();

1450
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/router/business.js

File diff suppressed because it is too large

4
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/styles/site.css

@ -97,7 +97,7 @@ a.logo {
.el-form--inline .el-form-item__content { .el-form--inline .el-form-item__content {
width: 192px; width: 192px;
height: 32px; /* height: 32px; */
} }
.el-table .cell { .el-table .cell {
@ -125,7 +125,7 @@ a.logo {
.el-select, .el-select,
.el-input-number { .el-input-number {
width: 100%; /* width: 100%; */
} }
/* markdown component */ /* markdown component */

98
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/compare/fa-yun.js

@ -0,0 +1,98 @@
import AppList from "../../components/list/index.js";
import AppForm from "../../components/form/index.js";
import html from "html";
import { useRoute } from "vue-router";
import useConfig from "../../models/compare/fa-yun.js";
import { ref, onMounted, onUnmounted } from "vue";
import { schemaToModel } from "../../utils/index.js";
import request from "../../request/index.js";
export default {
components: { AppList, AppForm },
template: html`<app-list ref="appListRef" :config="config" @command="onCommand" />
<el-dialog v-model="dialogVisable" align-center destroy-on-close style="width:40%;height:50%;">
<template #header> <span class="el-dialog__title"> EDI与发运对比 </span> </template>
<el-scrollbar>
<app-form
ref="formRef"
:mode="create"
label-position="left"
:schema="schema"
v-model="model"
:hideButton="true"
@submit="submit"
/>
</el-scrollbar>
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="submit"> {{$t('confirm')}} </el-button>
</span>
</template>
</el-dialog>`,
styles: html`<style>
.el-dialog__body {
height: calc(100% - 120px);
}
</style>`,
setup() {
const route = useRoute();
const businessType = route.meta.businessType;
const dialogVisable = ref(false);
const loading = ref(false);
let config = null;
let name = null;
if (businessType === "JisBBAC") {
config = useConfig("edi-se-compare/bbacedi-se-compare");
name = "JisBBACEDI与发运数据对比";
} else if (businessType === "JisHBPO") {
config = useConfig("edi-se-compare/hbpoedi-se-compare");
name = "JisHBPOEDI与发运数据对比";
}
config.query.schema.properties.name.default = name;
const schema = config.compare.schema;
const defaultModel = schemaToModel(schema);
const model = ref(null);
const formRef = ref(null);
const onCommand = async (item, rows) => {
console.log(item.path, item, rows);
if (item.path === "compare") {
model.value = Object.assign({}, defaultModel);
dialogVisable.value = true;
}
};
const submit = async () => {
try {
const valid = await formRef.value.validate();
if (valid) {
loading.value = true;
}
const url = config.edit.compareUrl;
const data = Object.assign({ businessType, name }, model.value);
if (data.seDateTime?.length === 2) {
data.seStartDateTime = data.seDateTime[0];
data.seEndDateTime = data.seDateTime[1];
}
if (data.downLineDateTime?.length === 2) {
data.downLineStartDateTime = data.downLineDateTime[0];
data.downLineEndDateTime = data.downLineDateTime[1];
}
if (businessType) delete data["seDateTime"];
delete data["downLineDateTime"];
const result = await request(url, data, { method: "POST" }, true);
if (!result.errors) {
dialogVisable.value = false;
}
} catch (error) {
console.log(error);
} finally {
loading.value = false;
}
};
//
const appListRef = ref(null);
const event = "SaSeCompare";
onMounted(() => PubSub.subscribe(event, async () => await appListRef.value.load()));
onUnmounted(() => PubSub.unsubscribe(event));
return { config, onCommand, appListRef, dialogVisable, loading, schema, model, formRef, submit };
},
};

106
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/compare/jie-suan.js

@ -0,0 +1,106 @@
import AppList from "../../components/list/index.js";
import AppForm from "../../components/form/index.js";
import html from "html";
import { useRoute } from "vue-router";
import useConfig from "../../models/compare/fa-yun.js";
import { ref, onMounted, onUnmounted } from "vue";
import { schemaToModel } from "../../utils/index.js";
import request from "../../request/index.js";
export default {
components: { AppList, AppForm },
template: html`<app-list ref="appListRef" :config="config" @command="onCommand" />
<el-dialog v-model="dialogVisable" align-center destroy-on-close style="width:40%;height:50%;">
<template #header> <span class="el-dialog__title"> EDI发运与发运对比 </span> </template>
<el-scrollbar>
<app-form
ref="formRef"
:mode="create"
label-position="left"
:schema="schema"
v-model="model"
:hideButton="true"
@submit="submit"
/>
</el-scrollbar>
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="submit"> {{$t('confirm')}} </el-button>
</span>
</template>
</el-dialog>`,
styles: html`<style>
.el-dialog__body {
height: calc(100% - 120px);
}
</style>`,
setup() {
const route = useRoute();
const businessType = route.meta.businessType;
const dialogVisable = ref(false);
const loading = ref(false);
const nameList = {
JisBBAC: "JisBBAC结算与发运数据对比",
JisHBPO: "JisHBPO结算与发运数据对比",
ZhiGongJianBBAC: "直供件BBAC结算与发运数据对比",
ZhiGongJianHBPO: "直供件HBPO结算与发运数据对比",
MaiDanJianBBAC: "买单件BBAC结算与发运数据对比",
MaiDanJianHBPO: "买单件HBPO结算与发运数据对比",
BeiJian: "备件结算与发运数据对比",
YinDuJian: "印度件结算与发运数据对比",
};
let config = null;
let name = null;
if (businessType === "JisBBAC") {
config = useConfig("edi-se-compare/bbacedi-se-compare");
} else if (businessType === "JisHBPO") {
config = useConfig("edi-se-compare/hbpoedi-se-compare");
} else {
config = useConfig("pub_sa_detail_service/pub-sa-se-compare");
name = nameList[businessType];
}
config.query.schema.properties.businessType.default = businessType;
config.query.schema.properties.name.default = name;
const schema = config.compare.schema;
const defaultModel = schemaToModel(schema);
const model = ref(null);
const formRef = ref(null);
const onCommand = async (item, rows) => {
console.log(item.path, item, rows);
if (item.path === "compare") {
model.value = Object.assign({}, defaultModel);
dialogVisable.value = true;
}
};
const submit = async () => {
try {
const valid = await formRef.value.validate();
if (valid) {
loading.value = true;
}
const url = config.edit.compareUrl;
const data = Object.assign({}, model.value);
data.seStartDateTime = data.seDateTime[0];
data.seEndDateTime = data.seDateTime[1];
data.downLineStartDateTime = data.downLineDateTime[0];
data.downLineEndDateTime = data.downLineDateTime[1];
delete data["seDateTime"];
delete data["downLineDateTime"];
const result = await request(url, data, { method: "POST" }, true);
if (!result.errors) {
dialogVisable.value = false;
}
} catch (error) {
console.log(error);
} finally {
loading.value = false;
}
};
//
const appListRef = ref(null);
const event = "SaSeCompare";
onMounted(() => PubSub.subscribe(event, async () => await appListRef.value.load()));
onUnmounted(() => PubSub.unsubscribe(event));
return { config, onCommand, appListRef, dialogVisable, loading, schema, model, formRef, submit };
},
};

23
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/input/edi.js

@ -0,0 +1,23 @@
import AppList from "../../components/list/index.js";
import html from "html";
import { useRoute } from "vue-router";
import useConfig from "../../models/input/edi.js";
export default {
components: { AppList },
template: html`<app-list :config="config" @command="onCommand" />`,
setup() {
let config = null;
const route = useRoute();
const businessType = route.meta.businessType;
if (businessType === "JisBBAC") {
config = useConfig("bbac_se_edi_service");
} else if (businessType === "JisHBPO") {
config = useConfig("hbpo_se_edi_service");
}
const onCommand = async (item, rows) => {
console.log(item.path, item, rows);
};
return { config, onCommand };
},
};

31
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/input/fa-yun.js

@ -0,0 +1,31 @@
import AppList from "../../components/list/index.js";
import html from "html";
import { useRoute } from "vue-router";
import useConfig from "../../models/input/fa-yun.js";
import request from "../../request/index.js";
export default {
components: { AppList },
template: html`<app-list :config="config" @command="onCommand" />`,
setup() {
let config = null;
const route = useRoute();
const businessType = route.meta.businessType;
if (businessType === "JisBBAC") {
config = useConfig("bbac_se_detail_service", "bbacse-sync/invoke");
} else if (businessType === "JisHBPO") {
config = useConfig("hbpo_se_detail_service", "hbpose-sync/invoke");
} else {
config = useConfig("pub_se_detail_service", "hand-se-sync/sync");
}
const onCommand = async (item, rows) => {
console.log(item.path, item, rows);
if (item.path === "sync") {
const url = config.edit.syncUrl;
const method = config.edit.syncMethod;
await request(url, route.meta.businessType, { method });
}
};
return { config, onCommand };
},
};

8
code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/input/jie-suan.js

@ -1,4 +1,4 @@
import AppList from "../../../components/list/index.js"; import AppList from "../../components/list/index.js";
import html from "html"; import html from "html";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import useConfig from "../../models/input/jie-suan.js"; import useConfig from "../../models/input/jie-suan.js";
@ -15,12 +15,8 @@ export default {
} else if (businessType === "JisHBPO") { } else if (businessType === "JisHBPO") {
config = useConfig("hbpo_sa_service", "hbpo_sa_detail_service"); config = useConfig("hbpo_sa_service", "hbpo_sa_detail_service");
} else { } else {
config = useConfig(); config = useConfig("pub_sa_service", "pub_sa_detail_service");
} }
config.query.url = "settleaccount/bbac_sa_service/get-list";
config.edit.importUrl = "settleaccount/bbac_sa_service/import";
config.edit.exportUrl = "settleaccount/bbac_sa_detail_service/export";
config.edit.deleteUrl = "settleaccount/bbac_sa_service/delete-list";
const onCommand = async (item, rows) => { const onCommand = async (item, rows) => {
console.log(item.path, item, rows); console.log(item.path, item, rows);
}; };

Loading…
Cancel
Save