add 客商关系
This commit is contained in:
parent
4faaf478f4
commit
2b94c7ac52
@ -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>
|
||||||
<% } %>
|
<% } %>
|
||||||
<!-- 集成测试环境 -->
|
<!-- 集成测试环境 -->
|
||||||
|
@ -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];
|
||||||
|
159
src/views/modules/pms/customer/config.js
Normal file
159
src/views/modules/pms/customer/config.js
Normal 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...
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
32
src/views/modules/pms/customer/index.vue
Normal file
32
src/views/modules/pms/customer/index.vue
Normal 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>
|
@ -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: "描述信息" } }],
|
||||||
|
159
src/views/modules/pms/supplier/config.js
Normal file
159
src/views/modules/pms/supplier/config.js
Normal 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...
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
32
src/views/modules/pms/supplier/index.vue
Normal file
32
src/views/modules/pms/supplier/index.vue
Normal 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>
|
Loading…
Reference in New Issue
Block a user