Commit 4a167a50 authored by “yiyousong”'s avatar “yiyousong”

perf: 优化皮肤管理板块

parent cadb12e9
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
</a-space> </a-space>
<div style="width: 300px"> <div style="width: 300px">
<a-input-search <a-input-search
v-model="leftVal" v-model="templateTable.searchForm.productName"
allowClear allowClear
placeholder="请输入设备名称进行搜索" placeholder="请输入设备名称进行搜索"
enter-button="搜索" enter-button="搜索"
...@@ -31,52 +31,47 @@ ...@@ -31,52 +31,47 @@
<!-- 表格 --> <!-- 表格 -->
<div class="table-content"> <div class="table-content">
<!-- 表格 --> <!-- 表格 -->
<a-table <y-table
bordered
size="middle" size="middle"
:columns="templateTable.columns"
:data="templateTable.data"
:pageSize.sync="templateTable.size"
:page.sync="templateTable.page"
:total="templateTable.total"
:loading="templateTable.loading"
:scroll="{ y: 550 }" :scroll="{ y: 550 }"
:loading="leftLoading"
:pagination="{ :pagination="{
showTotal: (total) => `共 ${total} 条`, showSizeChanger: false,
current: leftCurrent, showQuickJumper: false,
total: leftTotal,
defaultPageSize: 10000,
}"
:columns="leftColumns"
:data-source="skinTemplate"
:rowKey="(record) => record.id"
:row-selection="{
onChange: onSelectChange,
selectedRowKeys: leftSelectedRowKeys,
}" }"
@changePagination="getTemplateList"
> >
<template slot="num" slot-scope="text, record, index"> <span slot="index" slot-scope="{ index }">{{
<span> (templateTable.page - 1) * templateTable.size + index + 1
{{ (leftCurrent - 1) * leftSize + index + 1 }} }}</span>
</span>
</template>
<!-- 创建日期 --> <!-- 创建日期 -->
<template slot="createTime" slot-scope="text"> <template slot="createTime" slot-scope="{ record }">
{{ text.createTime | dateFormat }} {{ record.createTime | dateFormat }}
</template> </template>
<!-- 操作 --> <!-- 操作 -->
<template slot="action" slot-scope="text"> <template slot="action" slot-scope="{ record }">
<a-space size="middle"> <a-space size="middle">
<a <a
href="javascript:;" href="javascript:;"
class="primary" class="primary"
@click="handleEdit(text)" @click="handleEdit(record)"
>编辑</a >编辑</a
> >
<a <a
href="javascript:;" href="javascript:;"
class="delete" class="delete"
@click="handleDel(text.id)" @click="handleDel(record.id)"
>删除</a >删除</a
> >
</a-space> </a-space>
</template> </template>
</a-table> </y-table>
</div> </div>
</a-card> </a-card>
</div> </div>
...@@ -93,14 +88,14 @@ ...@@ -93,14 +88,14 @@
</a-space> </a-space>
</div> </div>
<a-select <a-select
v-model="rightVal" v-model="templateFieldTable.searchForm.templateId"
style="width: 220px" style="width: 220px"
default-value="all" default-value="all"
@change="handleChange" @change="handleChange"
> >
<a-select-option value=""> 全部皮肤模板 </a-select-option> <a-select-option value=""> 全部皮肤模板 </a-select-option>
<a-select-option <a-select-option
v-for="v in skinTemplate" v-for="v in templateTable.data"
:key="v.id" :key="v.id"
:value="v.id" :value="v.id"
> >
...@@ -111,68 +106,50 @@ ...@@ -111,68 +106,50 @@
<!-- 表格 --> <!-- 表格 -->
<div class="table-content"> <div class="table-content">
<!-- 表格 --> <!-- 表格 -->
<a-table <y-table
bordered
:scroll="{ y: 550 }"
:pagination="{
showTotal: (total) => `共 ${total} 条`,
current: rightCurrent,
total: rightTotal,
pageSize: rightSize,
showSizeChanger: true,
showQuickJumper: true,
pageSizeOptions: pageSizeOptions,
onChange: changeRight,
onShowSizeChange: showSizeChangeRight,
}"
:loading="rightLoading"
size="middle" size="middle"
:rowKey="(record) => record.id" :columns="templateFieldTable.columns"
:row-selection="{ :data="templateFieldTable.data"
selectedRowKeys: rightSelectedRowKeys, :pageSize.sync="templateFieldTable.size"
onChange: onRightSelectChange, :page.sync="templateFieldTable.page"
}" :total="templateFieldTable.total"
:columns="rightColumns" :loading="templateFieldTable.loading"
:data-source="fieldList" :scroll="{ y: 550 }"
@changePagination="getFieldList"
> >
<template slot="num" slot-scope="text, record, index"> <span slot="index" slot-scope="{ index }">{{
<span> (templateFieldTable.page - 1) * templateFieldTable.size +
{{ (rightCurrent - 1) * rightSize + index + 1 }} index +
</span> 1
</template> }}</span>
<!-- 数据类型 --> <!-- 数据类型 -->
<template slot="fieldType" slot-scope="text"> <template slot="fieldType" slot-scope="{ record }">
{{ text.fieldType === "1" ? "颜色" : "图片" }} {{ record.fieldType === "1" ? "颜色" : "图片" }}
</template> </template>
<!-- 是否使用 --> <!-- 是否使用 -->
<template slot="enabled" slot-scope="text"> <template slot="enabled" slot-scope="{ record }">
<span>
{{ text.enabled === 1 ? "" : "" }}
</span>
</template>
<!-- 排序 -->
<template slot="fieldOrderNo" slot-scope="text">
<span> <span>
{{ text.fieldOrderNo ? text.fieldOrderNo : "--" }} {{ record.enabled === 1 ? "" : "" }}
</span> </span>
</template> </template>
<!-- 创建日期 --> <!-- 创建日期 -->
<template slot="createTime" slot-scope="text"> <template slot="createTime" slot-scope="{ record }">
{{ text.createTime | dateFormat }} {{ record.createTime | dateFormat }}
</template> </template>
<!-- 操作 --> <!-- 操作 -->
<template slot="action" slot-scope="text"> <template slot="action" slot-scope="{ record }">
<a-space size="middle"> <a-space size="middle">
<a class="primary" @click="handleEditRight(text)">编辑</a> <a class="primary" @click="handleEditRight(record)">编辑</a>
<a <a
href="javascript:;" href="javascript:;"
class="delete" class="delete"
@click="handleDelRight(text.id)" @click="handleDelRight(record.id)"
>删除</a >删除</a
> >
</a-space> </a-space>
</template> </template>
</a-table> </y-table>
</div> </div>
</a-card> </a-card>
</div> </div>
...@@ -188,7 +165,7 @@ ...@@ -188,7 +165,7 @@
<!-- 新增模板属性弹窗 --> <!-- 新增模板属性弹窗 -->
<AddField <AddField
ref="AddField" ref="AddField"
:tempLateList="skinTemplate" :tempLateList="templateTable.data"
:titleField="titleField" :titleField="titleField"
:visibleField.sync="visibleField" :visibleField.sync="visibleField"
@addField="addField" @addField="addField"
...@@ -206,12 +183,33 @@ import { ...@@ -206,12 +183,33 @@ import {
} from "@/services/surface"; } from "@/services/surface";
import AddTemplate from "./modal/AddTemplate.vue"; import AddTemplate from "./modal/AddTemplate.vue";
import AddField from "./modal/AddField.vue"; import AddField from "./modal/AddField.vue";
import { pageSizeOptions } from "@/config/pageConfig.js"; import YTable from "@/components/YTable.vue";
const leftColumns = [ export default {
components: {
AddTemplate,
AddField,
YTable,
},
data() {
return {
visibleTemplate: false,
visibleField: false,
titleTemplate: "",
titleField: "",
templateTable: {
loading: false,
page: 1,
size: 1000,
total: 0,
data: [],
searchForm: {
productName: "",
},
columns: [
{ {
title: "序号", title: "序号",
width: "6%", width: "80px",
scopedSlots: { customRender: "num" }, scopedSlots: { customRender: "index" },
}, },
{ {
title: "设备名称", title: "设备名称",
...@@ -234,12 +232,22 @@ const leftColumns = [ ...@@ -234,12 +232,22 @@ const leftColumns = [
customRender: "action", customRender: "action",
}, },
}, },
]; ],
const rightColumns = [ },
templateFieldTable: {
loading: false,
page: 1,
size: 10,
total: 0,
data: [],
searchForm: {
templateId: "",
},
columns: [
{ {
title: "序号", title: "序号",
width: "6%", width: "80px",
scopedSlots: { customRender: "num" }, scopedSlots: { customRender: "index" },
}, },
{ {
title: "字段名称", title: "字段名称",
...@@ -287,34 +295,9 @@ const rightColumns = [ ...@@ -287,34 +295,9 @@ const rightColumns = [
customRender: "action", customRender: "action",
}, },
}, },
]; ],
export default {
components: {
AddTemplate,
AddField,
}, },
data() {
return {
leftColumns,
rightColumns,
leftLoading: false,
rightLoading: false,
leftCurrent: 1,
leftSize: -1,
leftTotal: 0,
rightCurrent: 1,
rightSize: 10,
rightTotal: 0,
pageSizeOptions,
visibleTemplate: false,
visibleField: false,
titleTemplate: "",
titleField: "",
leftVal: "", // 左边搜索
rightVal: "", // 右边搜索
productList: [], // 设备列表 productList: [], // 设备列表
skinTemplate: [], // 皮肤模板列表
fieldList: [], // 属性列表
leftSelectedRowKeys: [], leftSelectedRowKeys: [],
rightSelectedRowKeys: [], rightSelectedRowKeys: [],
}; };
...@@ -333,42 +316,42 @@ export default { ...@@ -333,42 +316,42 @@ export default {
}, },
// 获取模板列表 // 获取模板列表
async getTemplateList(search = {}) { async getTemplateList(search = {}) {
this.leftLoading = true; this.templateTable.loading = true;
let res = await getTemplateList({ let res = await getTemplateList({
page: this.leftCurrent, page: this.templateTable.page,
size: this.leftSize, size: this.templateTable.size,
productName: `%${this.leftVal}%`, productName: `%${this.templateTable.searchForm.productName}%`,
...search, ...search,
}); });
let { pageInfo, data } = res.data.data; let { pageInfo, data } = res.data.data;
if (!data.length && this.leftCurrent > 1) { if (!data.length && this.templateTable.page > 1) {
this.leftCurrent -= 1; this.templateTable.page -= 1;
this.getTemplateList(); this.getTemplateList();
} }
this.leftTotal = pageInfo.totalResult; this.templateTable.total = pageInfo.totalResult;
this.skinTemplate = data.sort((a, b) => { this.templateTable.data = data.sort((a, b) => {
return b.createTime - a.createTime; return b.createTime - a.createTime;
}); });
this.leftLoading = false; this.templateTable.loading = false;
}, },
// 获取属性字段列表() // 获取属性字段列表()
async getFieldList(search = {}) { async getFieldList(search = {}) {
this.rightLoading = true; this.templateFieldTable.loading = true;
let res = await getFieldList({ let res = await getFieldList({
page: this.rightCurrent, page: this.templateFieldTable.page,
size: this.rightSize, size: this.templateFieldTable.size,
skinId: 0, skinId: 0,
templateId: this.rightVal, templateId: this.templateFieldTable.searchForm.templateId,
...search, ...search,
}); });
let { pageInfo, data } = res.data.data; let { pageInfo, data } = res.data.data;
if (!data.length && this.rightCurrent > 1) { if (!data.length && this.templateFieldTable.page > 1) {
this.rightCurrent -= 1; this.templateFieldTable.page -= 1;
this.getFieldList(); this.getFieldList();
} }
this.fieldList = data; this.templateFieldTable.data = data;
this.rightTotal = pageInfo.totalResult; this.templateFieldTable.total = pageInfo.totalResult;
this.rightLoading = false; this.templateFieldTable.loading = false;
}, },
// 新增模板 // 新增模板
handleAddTemplate() { handleAddTemplate() {
...@@ -382,36 +365,16 @@ export default { ...@@ -382,36 +365,16 @@ export default {
this.visibleField = true; this.visibleField = true;
this.$refs.AddField.onAdd(); this.$refs.AddField.onAdd();
}, },
// 左边翻页
changeLeft(num) {
this.leftCurrent = num;
this.getTemplateList();
},
// 左边改变每页显示数量
showSizeChange(current, size) {
this.leftCurrent = current;
this.leftSize = size;
this.getTemplateList();
},
// 右边翻页
changeRight(num) {
this.rightCurrent = num;
this.getFieldList();
},
// 右边改变显示数量
showSizeChangeRight(current, size) {
this.rightCurrent = current;
this.rightSize = size;
this.getFieldList();
},
// 左边搜索 // 左边搜索
onSearchLift() { onSearchLift() {
this.leftCurrent = 1; this.templateTable.page = 1;
this.leftSelectedRowKeys = [];
this.getTemplateList(); this.getTemplateList();
}, },
// 右边搜索 // 右边搜索
handleChange() { handleChange() {
this.rightCurrent = 1; this.templateFieldTable.page = 1;
this.rightSelectedRowKeys = [];
this.getFieldList(); this.getFieldList();
}, },
// 左边选择 // 左边选择
......
...@@ -60,6 +60,20 @@ import InfoDisSkin from "../infoDisSkin/InfoDisSkin.vue"; ...@@ -60,6 +60,20 @@ import InfoDisSkin from "../infoDisSkin/InfoDisSkin.vue";
import DefaultShow from "../defaultshow/DefaultShow.vue"; import DefaultShow from "../defaultshow/DefaultShow.vue";
import { mapState, mapMutations } from "vuex"; import { mapState, mapMutations } from "vuex";
import { filterItems } from "@/utils"; import { filterItems } from "@/utils";
const skinCompontens = {
pdj: "LandscapeMode",
ckp: "WindowSkin",
hjq: "CallOutSkin",
jzxsp: "CentralizeSkin",
dsj: "SignDevicekin",
pjq: "AppraiseSkin",
zzfwzd: "SelfService",
tdj: "WriteFormSkin",
ybj: "SampleFormSkin",
xxfbp: "InformationSkin",
zmszzfwzd: "DesSelfService",
xxgk: "InfoDisSkin",
};
export default { export default {
components: { components: {
LandscapeMode, LandscapeMode,
...@@ -79,6 +93,7 @@ export default { ...@@ -79,6 +93,7 @@ export default {
props: {}, props: {},
data() { data() {
return { return {
skinCompontens,
filterItems, filterItems,
skinInfo: {}, skinInfo: {},
}; };
...@@ -88,47 +103,8 @@ export default { ...@@ -88,47 +103,8 @@ export default {
...mapState("site", ["imageResolution", "curSkin", "curSkinIndex"]), ...mapState("site", ["imageResolution", "curSkin", "curSkinIndex"]),
component() { component() {
let str = ""; let str = "";
switch (this.curSkin.productCode) { str = this.skinCompontens[this.curSkin.productCode];
case "pdj": return str || "DefaultShow";
str = "LandscapeMode";
break;
case "ckp":
str = "WindowSkin";
break;
case "hjq":
str = "CallOutSkin";
break;
case "jzxsp":
str = "CentralizeSkin";
break;
case "dsj":
str = "SignDevicekin";
break;
case "pjq":
str = "AppraiseSkin";
break;
case "zzfwzd":
str = "SelfService";
break;
case "tdj":
str = "WriteFormSkin";
break;
case "ybj":
str = "SampleFormSkin";
break;
case "xxfbp":
str = "InformationSkin";
break;
case "zmszzfwzd":
str = "DesSelfService";
break;
case "xxgk":
str = "InfoDisSkin";
break;
default:
str = "DefaultShow";
}
return str;
}, },
}, },
......
...@@ -201,7 +201,20 @@ import { uploadFile, skinSave, getTemplateList } from "@/services/surface"; ...@@ -201,7 +201,20 @@ import { uploadFile, skinSave, getTemplateList } from "@/services/surface";
import html2canvas from "html2canvas"; import html2canvas from "html2canvas";
import { Empty } from "ant-design-vue"; import { Empty } from "ant-design-vue";
import { mapState } from "vuex"; import { mapState } from "vuex";
const skinCompontens = {
pdj: "LandscapeMode",
ckp: "WindowSkin",
hjq: "CallOutSkin",
jzxsp: "CentralizeSkin",
dsj: "SignDevicekin",
pjq: "AppraiseSkin",
zzfwzd: "SelfService",
tdj: "WriteFormSkin",
ybj: "SampleFormSkin",
xxfbp: "InformationSkin",
zmszzfwzd: "DesSelfService",
xxgk: "InfoDisSkin",
};
export default { export default {
components: { components: {
LandscapeMode, LandscapeMode,
...@@ -234,6 +247,7 @@ export default { ...@@ -234,6 +247,7 @@ export default {
}, },
data() { data() {
return { return {
skinCompontens,
loading: false, loading: false,
formLoading: false, formLoading: false,
simpleImage: Empty.PRESENTED_IMAGE_SIMPLE, simpleImage: Empty.PRESENTED_IMAGE_SIMPLE,
...@@ -277,47 +291,8 @@ export default { ...@@ -277,47 +291,8 @@ export default {
}, },
component() { component() {
let str = ""; let str = "";
switch (this.curProduct.productCode) { str = this.skinCompontens[this.curProduct.productCode];
case "pdj": return str || "DefaultShow";
str = "LandscapeMode";
break;
case "ckp":
str = "WindowSkin";
break;
case "hjq":
str = "CallOutSkin";
break;
case "jzxsp":
str = "CentralizeSkin";
break;
case "dsj":
str = "SignDevicekin";
break;
case "pjq":
str = "AppraiseSkin";
break;
case "zzfwzd":
str = "SelfService";
break;
case "tdj":
str = "WriteFormSkin";
break;
case "ybj":
str = "SampleFormSkin";
break;
case "xxfbp":
str = "InformationSkin";
break;
case "zmszzfwzd":
str = "DesSelfService";
break;
case "xxgk":
str = "InfoDisSkin";
break;
default:
str = "DefaultShow";
}
return str;
}, },
...mapState("site", ["imageResolution", "curProduct"]), ...mapState("site", ["imageResolution", "curProduct"]),
}, },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment