add 客商关系
This commit is contained in:
parent
4faaf478f4
commit
2b94c7ac52
@ -38,8 +38,8 @@
|
||||
<% if (process.env.VUE_APP_NODE_ENV === 'dev') { %>
|
||||
<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.49:8080/pms-am'; // tengyun
|
||||
// window.SITE_CONFIG['apiURL'] = 'http://192.168.1.62:8080/pms-am'; // tao
|
||||
</script>
|
||||
<% } %>
|
||||
<!-- 集成测试环境 -->
|
||||
|
@ -49,7 +49,7 @@
|
||||
|
||||
<uploadBtn
|
||||
v-if="col.upload"
|
||||
:key="'upload_' + Math.random()"
|
||||
:key="'upload_' + rowIndex + colIndex"
|
||||
:action="col.actionUrl"
|
||||
:file-list="dataForm['files']"
|
||||
:disabled="detailMode || !dataForm.id"
|
||||
@ -105,12 +105,13 @@ import "quill/dist/quill.bubble.css";
|
||||
|
||||
import { quillEditor } from "vue-quill-editor";
|
||||
|
||||
|
||||
// TODO: 这个函数不需要了(该函数有逻辑也有问题),让后端直接给 tree 接口
|
||||
function reConstructTreeData(listObj) {
|
||||
const entry = [];
|
||||
Object.keys(listObj).map((key) => {
|
||||
const currentNode = listObj[key];
|
||||
currentNode.label = currentNode.name;
|
||||
currentNode.value = currentNode.id;
|
||||
|
||||
if (currentNode.parentId === "0") {
|
||||
entry.push(listObj[key]);
|
||||
return; // return { label: currentNode.name, value: currentNode.id, children: currentNode.children ?? [] };
|
||||
@ -121,6 +122,7 @@ function reConstructTreeData(listObj) {
|
||||
}
|
||||
parentNode.children.push(currentNode);
|
||||
});
|
||||
console.log("[reConstructTreeData]", entry);
|
||||
return entry;
|
||||
}
|
||||
|
||||
@ -176,6 +178,7 @@ export default {
|
||||
// 再过滤这个对象
|
||||
let filteredList = reConstructTreeData(obj);
|
||||
// 最后设置 options
|
||||
console.log("[DialogJustForm fetchTreeData 2 -->]", filteredList);
|
||||
this.$set(col, "options", filteredList);
|
||||
} else {
|
||||
col.options.splice(0);
|
||||
@ -231,7 +234,7 @@ export default {
|
||||
id: file.id,
|
||||
name: file.name,
|
||||
url: file.url,
|
||||
typeCode: file.typeCode
|
||||
typeCode: file.typeCode,
|
||||
}));
|
||||
},
|
||||
|
||||
@ -342,6 +345,7 @@ export default {
|
||||
case "add":
|
||||
case "update": {
|
||||
if ("parentId" in this.dataForm) {
|
||||
console.log("[DialogJustForm parentId]", this.dataForm.parentId);
|
||||
// 对特殊的键做特殊处理,如 parentId 是一个 cascader,获取的值是 ["xxx"],后端只需要xxx
|
||||
const lastItem = this.dataForm.parentId.length - 1;
|
||||
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: "父类",
|
||||
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: "描述信息" } }],
|
||||
|
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