add 客商关系

This commit is contained in:
lb 2023-02-13 13:52:42 +08:00
parent 4faaf478f4
commit 2b94c7ac52
7 changed files with 393 additions and 7 deletions

View File

@ -38,8 +38,8 @@
<% if (process.env.VUE_APP_NODE_ENV === 'dev') { %> <% if (process.env.VUE_APP_NODE_ENV === 'dev') { %>
<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.62:8080/pms-am'; // tao
</script> </script>
<% } %> <% } %>
<!-- 集成测试环境 --> <!-- 集成测试环境 -->

View File

@ -49,7 +49,7 @@
<uploadBtn <uploadBtn
v-if="col.upload" v-if="col.upload"
:key="'upload_' + Math.random()" :key="'upload_' + rowIndex + colIndex"
:action="col.actionUrl" :action="col.actionUrl"
:file-list="dataForm['files']" :file-list="dataForm['files']"
:disabled="detailMode || !dataForm.id" :disabled="detailMode || !dataForm.id"
@ -105,12 +105,13 @@ import "quill/dist/quill.bubble.css";
import { quillEditor } from "vue-quill-editor"; import { quillEditor } from "vue-quill-editor";
// TODO: tree
function reConstructTreeData(listObj) { function reConstructTreeData(listObj) {
const entry = []; const entry = [];
Object.keys(listObj).map((key) => { Object.keys(listObj).map((key) => {
const currentNode = listObj[key]; const currentNode = listObj[key];
currentNode.label = currentNode.name;
currentNode.value = currentNode.id;
if (currentNode.parentId === "0") { if (currentNode.parentId === "0") {
entry.push(listObj[key]); entry.push(listObj[key]);
return; // return { label: currentNode.name, value: currentNode.id, children: currentNode.children ?? [] }; return; // return { label: currentNode.name, value: currentNode.id, children: currentNode.children ?? [] };
@ -121,6 +122,7 @@ function reConstructTreeData(listObj) {
} }
parentNode.children.push(currentNode); parentNode.children.push(currentNode);
}); });
console.log("[reConstructTreeData]", entry);
return entry; return entry;
} }
@ -176,6 +178,7 @@ export default {
// //
let filteredList = reConstructTreeData(obj); let filteredList = reConstructTreeData(obj);
// options // options
console.log("[DialogJustForm fetchTreeData 2 -->]", filteredList);
this.$set(col, "options", filteredList); this.$set(col, "options", filteredList);
} else { } else {
col.options.splice(0); col.options.splice(0);
@ -231,7 +234,7 @@ export default {
id: file.id, id: file.id,
name: file.name, name: file.name,
url: file.url, url: file.url,
typeCode: file.typeCode typeCode: file.typeCode,
})); }));
}, },
@ -342,6 +345,7 @@ export default {
case "add": case "add":
case "update": { case "update": {
if ("parentId" in this.dataForm) { if ("parentId" in this.dataForm) {
console.log("[DialogJustForm parentId]", this.dataForm.parentId);
// parentId cascader ["xxx"]xxx // parentId cascader ["xxx"]xxx
const lastItem = this.dataForm.parentId.length - 1; const lastItem = this.dataForm.parentId.length - 1;
this.dataForm.parentId = this.dataForm.parentId[lastItem]; this.dataForm.parentId = this.dataForm.parentId[lastItem];

View File

@ -0,0 +1,159 @@
import TableOperaionComponent from "@/components/noTemplateComponents/operationComponent";
import switchBtn from "@/components/noTemplateComponents/switchBtn";
import request from "@/utils/request";
export default function () {
const tableProps = [
{ prop: "name", label: "客户名称" },
{ prop: "code", label: "编码" },
{ prop: "tel", label: "联系电话" },
{ prop: "email", label: "联系邮箱" },
{ prop: "address", label: "地址" },
{ prop: "contact", label: "联系人" },
// { prop: "status", label: "产线状态", subcomponent: switchBtn }, // subcomponent
{ prop: "description", label: "描述" },
{ prop: "remark", label: "备注" },
{
prop: "operations",
name: "操作",
fixed: "right",
width: 120,
subcomponent: TableOperaionComponent,
options: ["edit", { name: "delete", permission: "pms:customer:delete" }],
},
];
const headFormFields = [
{
prop: 'key',
label: "客户名称/编码",
input: true,
default: { value: "" },
bind: {
placeholder: '请输入客户名称或编码'
}
},
{
button: {
type: "primary",
name: "查询",
},
},
{
button: {
type: "primary",
name: "新增",
permission: "pms:customer:save"
},
bind: {
plain: true,
}
},
];
/**
* dialog config 有两个版本一个适用于 DialogWithMenu 组件另一个适用于 DialogJustForm 组件
* 适用于 DialogWithMenu 组件的配置示例详见 blenderStep/config.js
* 此为后者的配置:
*/
const dialogJustFormConfigs = {
form: {
rows: [
[
{
input: true,
label: "客户名称",
prop: "name",
rules: { required: true, message: "not empty", trigger: "blur" },
elparams: { placeholder: "请输入客户名称" },
},
{
input: true,
label: "编码",
prop: "code",
rules: { required: true, message: "not empty", trigger: "blur" },
elparams: { placeholder: "请输入编码" },
},
],
[
{
input: true,
label: "联系电话",
prop: "tel",
// rules: { required: true, message: "not empty", trigger: "blur" },
elparams: { placeholder: "请输入联系电话" },
},
{
input: true,
label: "联系邮箱",
prop: "email",
// rules: { required: true, message: "not empty", trigger: "blur" },
elparams: { placeholder: "请输入联系邮箱" },
},
// {
// select: true,
// label: "所属工厂",
// prop: "factoryId",
// fetchData: () => this.$http.get("/pms/factory/page", { params: { limit: 999, page: 1 } }),
// option: [],
// rules: { required: true, message: "not empty", trigger: "change" },
// },
// {
// input: true,
// label: "产线TT值",
// prop: "tvalue",
// rules: [
// { required: true, message: "not empty", trigger: "blur" },
// { type: "number", message: "数字", trigger: "blur", transform: (val) => Number(val) },
// ],
// elparams: { placeholder: "设定TT值每小时下片数量" },
// },
],
[
{
input: true,
label: "地址",
prop: "address",
// rules: { required: true, message: "not empty", trigger: "blur" },
elparams: { placeholder: "请输入客户地址" },
},
{
input: true,
label: "联系人",
prop: "contact",
// rules: { required: true, message: "not empty", trigger: "blur" },
elparams: { placeholder: "请输入联系人" },
},
],
[{ textarea: true, label: "描述信息", prop: "description", elparams: { placeholder: "描述信息" } }],
[{ input: true, label: "备注", prop: "remark", elparams: { placeholder: "备注" } }],
],
operations: [
{ name: "add", label: "保存", type: "primary", permission: "pms:customer:save", showOnEdit: false },
{ name: "update", label: "更新", type: "primary", permission: "pms:customer:update", showOnEdit: true },
{ name: "reset", label: "重置", type: "warning", showAlways: true },
// { name: 'cancel', label: '取消', showAlways: true },
],
},
};
// 备注:弹窗弹出的时间和网速有关......
return {
dialogConfigs: dialogJustFormConfigs,
tableConfig: {
table: null, // 此处可省略el-table 上的配置项
column: tableProps, // el-column-item 上的配置项
},
headFormConfigs: {
rules: null, // 名称是由 BaseSearchForm.vue 组件固定的
fields: headFormFields, // 名称是由 BaseSearchForm.vue 组件固定的
},
urls: {
base: "/pms/customer",
page: "/pms/customer/page",
// subase: '/pms/blenderStepParam',
// subpage: '/pms/blenderStepParam/page',
// more...
},
};
}

View File

@ -0,0 +1,32 @@
<template>
<ListViewWithHead :table-config="tableConfig" :head-config="headFormConfigs" :dialog-configs="dialogConfigs" />
</template>
<script>
import initConfig from './config';
import ListViewWithHead from '@/views/atomViews/ListViewWithHead.vue';
export default {
name: 'ProductionLineView',
components: { ListViewWithHead },
provide() {
return {
urls: this.allUrls
}
},
data() {
const { tableConfig, headFormConfigs, urls, dialogConfigs } = initConfig.call(this);
return {
tableConfig,
headFormConfigs,
allUrls: urls,
dialogConfigs,
};
},
created() {},
mounted() {},
methods: {},
};
</script>
<style scoped></style>

View File

@ -90,7 +90,7 @@ export default function () {
}, },
label: "父类", label: "父类",
rules: { required: false, message: "not empty", trigger: "change" }, rules: { required: false, message: "not empty", trigger: "change" },
elparams: { placeholder: "请输选择父类", 'show-all-levels': false, props: { checkStrictly: true } }, elparams: { placeholder: "请输选择父类", 'show-all-levels': false, props: { checkStrictly: true, value: 'id', label: 'name' } },
}, },
], ],
// [{ textarea: true, label: "描述信息", prop: "description", elparams: { placeholder: "描述信息" } }], // [{ textarea: true, label: "描述信息", prop: "description", elparams: { placeholder: "描述信息" } }],

View File

@ -0,0 +1,159 @@
import TableOperaionComponent from "@/components/noTemplateComponents/operationComponent";
import switchBtn from "@/components/noTemplateComponents/switchBtn";
import request from "@/utils/request";
export default function () {
const tableProps = [
{ prop: "name", label: "供应商名称" },
{ prop: "code", label: "编码" },
{ prop: "tel", label: "联系电话" },
{ prop: "email", label: "联系邮箱" },
{ prop: "address", label: "地址" },
{ prop: "contact", label: "联系人" },
// { prop: "status", label: "产线状态", subcomponent: switchBtn }, // subcomponent
{ prop: "description", label: "描述" },
{ prop: "remark", label: "备注" },
{
prop: "operations",
name: "操作",
fixed: "right",
width: 120,
subcomponent: TableOperaionComponent,
options: ["edit", { name: "delete", permission: "pms:supplier:delete" }],
},
];
const headFormFields = [
{
prop: 'key',
label: "供应商名称/编码",
input: true,
default: { value: "" },
bind: {
placeholder: '请输入供应商名称或编码'
}
},
{
button: {
type: "primary",
name: "查询",
},
},
{
button: {
type: "primary",
name: "新增",
permission: "pms:supplier:save"
},
bind: {
plain: true,
}
},
];
/**
* dialog config 有两个版本一个适用于 DialogWithMenu 组件另一个适用于 DialogJustForm 组件
* 适用于 DialogWithMenu 组件的配置示例详见 blenderStep/config.js
* 此为后者的配置:
*/
const dialogJustFormConfigs = {
form: {
rows: [
[
{
input: true,
label: "供应商名称",
prop: "name",
rules: { required: true, message: "not empty", trigger: "blur" },
elparams: { placeholder: "请输入供应商名称" },
},
{
input: true,
label: "编码",
prop: "code",
rules: { required: true, message: "not empty", trigger: "blur" },
elparams: { placeholder: "请输入编码" },
},
],
[
{
input: true,
label: "联系电话",
prop: "tel",
// rules: { required: true, message: "not empty", trigger: "blur" },
elparams: { placeholder: "请输入联系电话" },
},
{
input: true,
label: "联系邮箱",
prop: "email",
// rules: { required: true, message: "not empty", trigger: "blur" },
elparams: { placeholder: "请输入联系邮箱" },
},
// {
// select: true,
// label: "所属工厂",
// prop: "factoryId",
// fetchData: () => this.$http.get("/pms/factory/page", { params: { limit: 999, page: 1 } }),
// option: [],
// rules: { required: true, message: "not empty", trigger: "change" },
// },
// {
// input: true,
// label: "产线TT值",
// prop: "tvalue",
// rules: [
// { required: true, message: "not empty", trigger: "blur" },
// { type: "number", message: "数字", trigger: "blur", transform: (val) => Number(val) },
// ],
// elparams: { placeholder: "设定TT值每小时下片数量" },
// },
],
[
{
input: true,
label: "地址",
prop: "address",
// rules: { required: true, message: "not empty", trigger: "blur" },
elparams: { placeholder: "请输入供应商地址" },
},
{
input: true,
label: "联系人",
prop: "contact",
// rules: { required: true, message: "not empty", trigger: "blur" },
elparams: { placeholder: "请输入联系人" },
},
],
[{ textarea: true, label: "描述信息", prop: "description", elparams: { placeholder: "描述信息" } }],
[{ input: true, label: "备注", prop: "remark", elparams: { placeholder: "备注" } }],
],
operations: [
{ name: "add", label: "保存", type: "primary", permission: "pms:supplier:save", showOnEdit: false },
{ name: "update", label: "更新", type: "primary", permission: "pms:supplier:update", showOnEdit: true },
{ name: "reset", label: "重置", type: "warning", showAlways: true },
// { name: 'cancel', label: '取消', showAlways: true },
],
},
};
// 备注:弹窗弹出的时间和网速有关......
return {
dialogConfigs: dialogJustFormConfigs,
tableConfig: {
table: null, // 此处可省略el-table 上的配置项
column: tableProps, // el-column-item 上的配置项
},
headFormConfigs: {
rules: null, // 名称是由 BaseSearchForm.vue 组件固定的
fields: headFormFields, // 名称是由 BaseSearchForm.vue 组件固定的
},
urls: {
base: "/pms/supplier",
page: "/pms/supplier/page",
// subase: '/pms/blenderStepParam',
// subpage: '/pms/blenderStepParam/page',
// more...
},
};
}

View File

@ -0,0 +1,32 @@
<template>
<ListViewWithHead :table-config="tableConfig" :head-config="headFormConfigs" :dialog-configs="dialogConfigs" />
</template>
<script>
import initConfig from './config';
import ListViewWithHead from '@/views/atomViews/ListViewWithHead.vue';
export default {
name: 'ProductionLineView',
components: { ListViewWithHead },
provide() {
return {
urls: this.allUrls
}
},
data() {
const { tableConfig, headFormConfigs, urls, dialogConfigs } = initConfig.call(this);
return {
tableConfig,
headFormConfigs,
allUrls: urls,
dialogConfigs,
};
},
created() {},
mounted() {},
methods: {},
};
</script>
<style scoped></style>