提交 661c380f authored 作者: lidongxu's avatar lidongxu

refactor(promotion/display): 调整:切换展示列方式和列选择对应问题

上级 31a19c40
...@@ -39,14 +39,35 @@ ...@@ -39,14 +39,35 @@
<template v-for="item in columns" <template v-for="item in columns"
:key="item.key"> :key="item.key">
<el-dropdown-item> <el-dropdown-item>
<el-checkbox :checked="item.visible" <el-checkbox v-model="item.visible"
@change="checkboxChange($event, item.label)"
:label="item.label" /> :label="item.label" />
</el-dropdown-item> </el-dropdown-item>
</template> </template>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
<!-- 树结构选择方式 -->
<el-dropdown trigger="click"
:hide-on-click="false"
style="padding-left: 12px"
v-if="showColumnsType == 'tree'">
<el-button circle
icon="Menu" />
<template #dropdown>
<el-dropdown-menu class="tree-dropdown-menu">
<el-tree
:data="treeData"
show-checkbox
node-key="prop"
ref="columnTree"
:props="treeProps"
default-expand-all
check-on-click-node
:default-checked-keys="defaultCheckedKeys"
@check="handleTreeCheck" />
</el-dropdown-menu>
</template>
</el-dropdown>
</el-tooltip> </el-tooltip>
<!-- 自定义功能 --> <!-- 自定义功能 -->
<slot></slot> <slot></slot>
...@@ -79,7 +100,7 @@ const props = defineProps({ ...@@ -79,7 +100,7 @@ const props = defineProps({
type: Boolean, type: Boolean,
default: true, default: true,
}, },
/* 显隐列类型(transfer穿梭框、checkbox复选框) */ /* 显隐列类型(transfer穿梭框、checkbox复选框、tree树形结构) */
showColumnsType: { showColumnsType: {
type: String, type: String,
default: "checkbox", default: "checkbox",
...@@ -89,6 +110,19 @@ const props = defineProps({ ...@@ -89,6 +110,19 @@ const props = defineProps({
type: Number, type: Number,
default: 10, default: 10,
}, },
/* 树形结构配置(可选) */
treeConfig: {
type: Object,
default: () => ({
labelKey: 'label',
childrenKey: 'children'
})
},
/* 树形结构默认选中的节点 */
defaultCheckedKeys: {
type: Array,
default: () => []
}
}) })
const emits = defineEmits(['update:showSearch', 'queryTable']); const emits = defineEmits(['update:showSearch', 'queryTable']);
...@@ -99,6 +133,15 @@ const value = ref([]); ...@@ -99,6 +133,15 @@ const value = ref([]);
const title = ref("显示/隐藏"); const title = ref("显示/隐藏");
// 是否显示弹出层 // 是否显示弹出层
const open = ref(false); const open = ref(false);
// 树结构数据
const treeData = ref([]);
// 树结构配置
const treeProps = {
label: props.treeConfig.labelKey || 'label',
children: props.treeConfig.childrenKey || 'children'
};
// 树引用
const columnTree = ref(null);
const style = computed(() => { const style = computed(() => {
const ret = {}; const ret = {};
...@@ -131,6 +174,80 @@ function showColumn() { ...@@ -131,6 +174,80 @@ function showColumn() {
open.value = true; open.value = true;
} }
// 树形结构节点勾选变化
function handleTreeCheck(currentNode, checkedInfo) {
const node = currentNode;
// 判断当前节点是否被勾选(检查当前节点prop是否在checkedKeys中)
const isChecked = checkedInfo.checkedKeys.includes(node.prop);
// 处理父节点的特殊情况:如果是父节点(有children),则更新其所有子节点
if (node.children && node.children.length > 0) {
// 获取该父节点下的所有子节点prop
const allChildProps = [];
const collectChildProps = (nodes) => {
nodes.forEach(child => {
if (child.children && child.children.length > 0) {
collectChildProps(child.children);
} else {
allChildProps.push(child.prop);
}
});
};
collectChildProps(node.children);
// 更新所有子节点的visible属性
allChildProps.forEach(prop => {
updateColumnVisibilityByProp(prop, isChecked);
});
} else {
// 对于单个节点,直接更新其visible属性
updateColumnVisibilityByProp(node.prop, isChecked);
}
}
// 新增:根据prop更新对应列的visible属性
function updateColumnVisibilityByProp(prop, visible) {
const updateColumn = (columns) => {
for (let i = 0; i < columns.length; i++) {
const item = columns[i];
if (item.children && item.children.length > 0) {
// 递归查找子节点
const found = updateColumn(item.children);
if (found) return true;
} else if (item.prop === prop) {
// 找到匹配的节点,更新其visible属性
item.visible = visible;
return true;
}
}
return false;
};
// 从props.columns中查找并更新
updateColumn(props.columns);
}
// 3. 修改initTreeData方法,确保正确处理prop字段
function initTreeData() {
if (props.columns && props.showColumnsType === 'tree') {
// 创建树数据但不深拷贝,保持引用关系
treeData.value = props.columns;
}
}
watch(() => props.columns, () => {
initTreeData();
})
// 再添加一个watcher来监听showColumnsType变化
watch(
() => props.showColumnsType,
(newType, oldType) => {
if (newType === 'tree') {
initTreeData();
}
}
)
if (props.showColumnsType == 'transfer') { if (props.showColumnsType == 'transfer') {
// 显隐列初始默认隐藏列 // 显隐列初始默认隐藏列
for (let item in props.columns) { for (let item in props.columns) {
...@@ -138,13 +255,19 @@ if (props.showColumnsType == 'transfer') { ...@@ -138,13 +255,19 @@ if (props.showColumnsType == 'transfer') {
value.value.push(parseInt(item)); value.value.push(parseInt(item));
} }
} }
} else if (props.showColumnsType === 'tree') {
// 初始化树数据
initTreeData();
} }
// 勾选 // 勾选 - 修改为更健壮的实现
function checkboxChange(event, label) { // function checkboxChange(event, label) {
props.columns.filter(item => item.label == label)[0].visible = event; // // 使用find方法而不是filter,更高效
} // const column = props.columns.find(item => item.label === label);
// if (column) {
// column.visible = event;
// }
// }
</script> </script>
<style lang='scss' <style lang='scss'
...@@ -174,4 +297,25 @@ function checkboxChange(event, label) { ...@@ -174,4 +297,25 @@ function checkboxChange(event, label) {
} }
} }
/* 树结构下拉菜单样式 */
.tree-dropdown-menu {
max-height: 400px;
overflow-y: auto;
min-width: 300px;
padding: 10px;
}
:deep(.el-tree) {
max-height: 380px;
overflow-y: auto;
}
/* 添加选中节点文字蓝色样式 */
:deep(.el-tree-node.is-checked > .el-tree-node__content .el-tree-node__label) {
color: #409EFF;
}
:deep(.el-tree-node__content .el-checkbox__input.is-checked + .el-checkbox__label) {
color: #409EFF;
}
</style> </style>
\ No newline at end of file
...@@ -103,14 +103,14 @@ service.interceptors.response.use(async res => { ...@@ -103,14 +103,14 @@ service.interceptors.response.use(async res => {
// PC/移动端刷新 token 有效期 // PC/移动端刷新 token 有效期
// await useUserStore().refreshTokenFn() // await useUserStore().refreshTokenFn()
// return service(res.config) // return service(res.config)
// ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => { ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => {
// isRelogin.show = false; isRelogin.show = false;
// useUserStore().logOut().then(() => { useUserStore().logOut().then(() => {
// location.href = '#/login'; location.href = '#/login';
// }) })
// }).catch(() => { }).catch(() => {
// isRelogin.show = false; isRelogin.show = false;
// }); });
return Promise.reject('无效的会话,或者会话已过期,请重新登录。') return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 403) { } else if (code === 403) {
......
<template>
<div class="app-container">
<div class="container">
卤币明细
</div>
</div>
</template>
<script setup>
</script>
<style scoped
lang="scss"></style>
\ No newline at end of file
<template>
<div class="app-container">
<div class="container">
<el-row>
<el-form-item label="操作类型">
<el-radio-group v-model="operation"
@change="checkTableColumns">
<el-radio-button label="全部列"
value="全部列" />
<el-radio-button label="填报列"
value="填报列" />
</el-radio-group>
</el-form-item>
<right-toolbar v-model:showSearch="showSearch"
@queryTable="getTableList()"
:columns="chooseColumns"
:showColumnsType="operation === '全部列' ? 'tree' : 'checkbox'"
:defaultCheckedKeys="visibleProps">
</right-toolbar>
</el-row>
<!-- 筛选列组的按钮 -->
<el-table :data="tableData"
border
:scroll-x="'max-content'"
class="auto-fit-header-table"
fit>
<el-table-column v-for="col in tableColumns"
:key="col.prop"
:label="col.label"
:prop="col.prop"
align="center"
:min-width="getColumnMinWidth(col)"
show-overflow-tooltip />
</el-table>
</div>
</div>
</template>
<script setup>
/*************** 操作类型 ***************/
const operation = ref('全部列');
// 全部列
const baseColumns = ref([
{
label: "基础信息",
children: [{ label: "销售大区", prop: "regionName", visible: true },
{ label: "销售战区", prop: "districtName", visible: true },
{ label: "经销商-省份", prop: "dealerProvince", visible: true },
{ label: "经销商-城市", prop: "dealerCity", visible: true },
{ label: "经销商-代码", prop: "dealerCode", visible: true },
{ label: "经销商名称", prop: "dealerName", visible: true },
{ label: "经销商-类型", prop: "dealerType", visible: true },
{ label: "开户日期", prop: "openingDate", visible: true },
{ label: "闭户日期", prop: "closingDate", visible: true },
{ label: "大区总监", prop: "regionManager", visible: true },
{ label: "战区经理", prop: "districtManager", visible: true },
{ label: "城市经理", prop: "cityManager", visible: true },
{ label: "门店编码", prop: "storeCode", visible: true },
{ label: "门店名称", prop: "storeName", visible: true },
{ label: "门店-省份", prop: "storeProvince", visible: true },
{ label: "门店-城市", prop: "storeCity", visible: true },
{ label: "系统名称", prop: "lineName", visible: true },
{ label: "系统类型", prop: "lineType", visible: true },
{ label: "渠道大类", prop: "channelDl", visible: true },
{ label: "渠道小类", prop: "channelXl", visible: true },
{ label: "门店类型", prop: "storeType", visible: true },
{ label: "系统业态", prop: "systemFormat", visible: true },
{ label: "门店面积", prop: "storeArea", visible: true },
{ label: "门店分级(销量坎级)", prop: "storeLevel", visible: true },
{ label: "门店地址", prop: "storeAddress", visible: true },
{ label: "品项数", prop: "productCount", visible: true }],
prop: 'baseColumns',
visible: true
},
{
label: "大业态测试",
children: [
{ label: "大业态测试-动销模型", prop: "lfSalesModel", visible: true },
{ label: "大业态测试-月均POS", prop: "lfMonthlyPos", visible: true },
],
prop: 'lfColumns',
visible: true
},
{
label: "费用计划",
prop: 'fpColumns',
children: [
{ label: "计划主货架-形式", prop: "plannedMainShelfType", visible: true },
{ label: "计划主货架-数量", prop: "plannedMainShelfQty", visible: true },
{ label: "计划主货架-单个费用", prop: "plannedMainShelfUnitCost", visible: true },
{ label: "计划主货架-总费用", prop: "plannedMainShelfTotalCost", visible: true },
{ label: "实际主货架-形式", prop: "actualMainShelfType", visible: true },
{ label: "实际主货架-数量", prop: "actualMainShelfQty", visible: true },
{ label: "实际主货架-是否执行", prop: "actualMainShelfExecuted", visible: true },
{ label: "计划端架-数量", prop: "plannedEndCapQty", visible: true },
{ label: "计划端架-总费用", prop: "plannedEndCapTotalCost", visible: true },
{ label: "计划端架-单个费用", prop: "plannedEndCapUnitCost", visible: true },
{ label: "实际端架-数量", prop: "actualEndCapQty", visible: true },
{ label: "实际端架-是否执行", prop: "actualEndCapExecuted", visible: true },
{ label: "计划地堆-平米数(㎡)", prop: "plannedFloorStackArea", visible: true },
{ label: "计划地堆-数量", prop: "plannedFloorStackQty", visible: true },
{ label: "计划主题地堆-是否", prop: "plannedThemedFloorStack", visible: true },
{ label: "计划地堆-总费用", prop: "plannedFloorStackTotalCost", visible: true },
{ label: "计划折算1㎡-单个费用", prop: "plannedFloorStackUnitCostPerSqm", visible: true },
{ label: "实际地堆-平米数(㎡)", prop: "actualFloorStackArea", visible: true },
{ label: "实际地堆-数量", prop: "actualFloorStackQty", visible: true },
{ label: "实际主题地堆-是否", prop: "actualThemedFloorStack", visible: true },
{ label: "实际地堆是否执行", prop: "actualFloorStackExecuted", visible: true },
{ label: "计划多点陈列-数量+形式", prop: "plannedMultiDisplay", visible: true },
{ label: "计划多点陈列-总费用", prop: "plannedMultiDisplayTotalCost", visible: true },
{ label: "实际多点陈列-数量+形式", prop: "actualMultiDisplay", visible: true },
{ label: "实际多点陈列-是否执行", prop: "actualMultiDisplayExecuted", visible: true },
{ label: "合计费用-费用", prop: "totalCost", visible: true },
{ label: "合计费用-费率", prop: "totalCostRate", visible: true },
{ label: "常规陈列是否执行", prop: "regularDisplayExecuted", visible: true },
{ label: "综合标签-拜访辅助列", prop: "visitAssistTag", visible: true },
{ label: "付费陈列- 是否", prop: "paidDisplay", visible: true },
{ label: "当月拜访目标", prop: "monthlyVisitTarget", visible: true },
{ label: "当月是否拜访", prop: "monthlyVisited", visible: true }
],
visible: true
}
// ...baseColumns.value,
// ...lfColumns.value,
// ...fpColumns.value
]);
// 填报列
const fillColumns = ref([
{ label: "经销商名称", prop: "dealerName", visible: true },
{ label: "门店编码", prop: "storeCode", visible: true },
{ label: "门店名称", prop: "storeName", visible: true },
// 从fpColumns中提取的匹配对象
{ label: "实际主货架-形式", prop: "actualMainShelfType", visible: true },
{ label: "实际主货架-数量", prop: "actualMainShelfQty", visible: true },
{ label: "实际主货架-是否执行", prop: "actualMainShelfExecuted", visible: true },
{ label: "实际端架-数量", prop: "actualEndCapQty", visible: true },
{ label: "实际端架-是否执行", prop: "actualEndCapExecuted", visible: true },
{ label: "实际地堆-平米数(㎡)", prop: "actualFloorStackArea", visible: true },
{ label: "实际地堆-数量", prop: "actualFloorStackQty", visible: true },
{ label: "实际主题地堆-是否", prop: "actualThemedFloorStack", visible: true },
{ label: "实际地堆是否执行", prop: "actualFloorStackExecuted", visible: true },
{ label: "实际多点陈列-数量+形式", prop: "actualMultiDisplay", visible: true },
{ label: "实际多点陈列-是否执行", prop: "actualMultiDisplayExecuted", visible: true },
{ label: "常规陈列是否执行", prop: "regularDisplayExecuted", visible: true },
{ label: "当月是否拜访", prop: "monthlyVisited", visible: true }
])
// 表格列数据
const tableColumns = ref([])
// 右上角工具选择列
const chooseColumns = ref([])
// 计算列具体数据
const checkTableColumns = () => {
if (operation.value === '全部列') {
chooseColumns.value = baseColumns.value
tableColumns.value = baseColumns.value.flatMap(item => {
if (item.children) {
// 在扁平化时就过滤掉 visible 为 false 的列
return item.children.filter(child => child.visible);
}
// 如果是没有 children 的单元素,也检查其 visible 属性
return item.visible ? item : [];
}).filter(Boolean); // 过滤掉空数组项
} else if (operation.value === '填报列') {
chooseColumns.value = fillColumns.value
console.log(fillColumns, 'fill')
tableColumns.value = fillColumns.value.filter(item => item.visible);
}
}
checkTableColumns()
// 选择列默认选中哪些
const visibleProps = computed(() => {
// 分情况返回
return tableColumns.value.flatMap(item => {
if (item.children) {
return item.children.map(child => child.prop);
}
return item.prop;
});
});
// 监听chooseColumns变化,当列的visible属性改变时重新计算tableColumns
watch(
() => chooseColumns.value,
() => {
// 不需要重新赋值,只需要重新计算tableColumns
checkTableColumns();
},
{ deep: true }
);
// 表格数据
const tableData = ref([
{
sadId: "SAD2024001",
regionName: "华东大区",
districtName: "上海战区",
dealerProvince: "上海市",
dealerCity: "上海市",
dealerCode: "SHDL001",
dealerName: "上海申联商贸有限公司",
dealerType: "一级经销商",
openingDate: "2023-01-15",
closingDate: "", // 未闭户,空字符串
regionManager: "张建军",
districtManager: "李娜",
cityManager: "王浩",
storeCode: "STSH001",
storeName: "上海浦东家乐福超市(张江店)",
storeProvince: "上海市",
storeCity: "上海市",
lineName: "家乐福中国",
lineType: "连锁超市",
channelDl: "现代渠道",
channelXl: "连锁综合超市",
storeType: "标准超市",
systemFormat: "大卖场",
storeArea: 1800, // 门店面积(㎡)
storeLevel: "A级(月销50万+)",
storeAddress: "上海市浦东新区张江高科技园区博云路2号",
productCount: 120, // 品项数
lfSalesModel: "动销率≥85%",
lfMonthlyPos: 4500, // 月均POS笔数
plannedMainShelfType: "双面货架(1.2m宽)",
plannedMainShelfQty: 3, // 计划数量
plannedMainShelfUnitCost: 1200, // 单个费用(元)
plannedMainShelfTotalCost: 3600, // 总费用=数量×单个费用
actualMainShelfType: "双面货架(1.2m宽)",
actualMainShelfQty: 3,
actualMainShelfExecuted: true, // 已执行
plannedEndCapQty: 2,
plannedEndCapTotalCost: 4000,
plannedEndCapUnitCost: 2000,
actualEndCapQty: 2,
actualEndCapExecuted: true,
plannedFloorStackArea: 15, // 计划地堆面积(㎡)
plannedFloorStackQty: 1,
plannedThemedFloorStack: true, // 是主题地堆
plannedFloorStackTotalCost: 7500,
plannedFloorStackUnitCostPerSqm: 500, // 每㎡费用
actualFloorStackArea: 15,
actualFloorStackQty: 1,
actualThemedFloorStack: true,
actualFloorStackExecuted: true,
plannedMultiDisplay: "4个-堆头陈列(入口+生鲜区)",
plannedMultiDisplayTotalCost: 3200,
actualMultiDisplay: "4个-堆头陈列(入口+生鲜区)",
actualMultiDisplayExecuted: true,
totalCost: 18300, // 合计费用=3600+4000+7500+3200
totalCostRate: 2.5, // 费率(%)
regularDisplayExecuted: true,
visitAssistTag: "重点拜访门店(月销TOP10)",
paidDisplay: true, // 是付费陈列
monthlyVisitTarget: 4, // 当月拜访目标(次)
monthlyVisited: true // 当月已拜访
},
{
sadId: "SAD2024002",
regionName: "华北大区",
districtName: "北京战区",
dealerProvince: "北京市",
dealerCity: "北京市",
dealerCode: "BJD L002",
dealerName: "北京京贸源供应链管理有限公司",
dealerType: "一级经销商",
openingDate: "2023-03-20",
closingDate: "",
regionManager: "赵卫东",
districtManager: "陈曦",
cityManager: "刘阳",
storeCode: "STBJ002",
storeName: "北京朝阳沃尔玛超市(国贸店)",
storeProvince: "北京市",
storeCity: "北京市",
lineName: "沃尔玛中国",
lineType: "连锁超市",
channelDl: "现代渠道",
channelXl: "连锁综合超市",
storeType: "精品超市",
systemFormat: "大卖场",
storeArea: 2200,
storeLevel: "A级(月销60万+)",
storeAddress: "北京市朝阳区国贸中心B1层",
productCount: 150,
lfSalesModel: "动销率≥90%",
lfMonthlyPos: 5200,
plannedMainShelfType: "单面货架(1.5m宽)",
plannedMainShelfQty: 4,
plannedMainShelfUnitCost: 1500,
plannedMainShelfTotalCost: 6000,
actualMainShelfType: "单面货架(1.5m宽)",
actualMainShelfQty: 3, // 实际比计划少1个
actualMainShelfExecuted: true,
plannedEndCapQty: 3,
plannedEndCapTotalCost: 6600,
plannedEndCapUnitCost: 2200,
actualEndCapQty: 3,
actualEndCapExecuted: true,
plannedFloorStackArea: 20,
plannedFloorStackQty: 1,
plannedThemedFloorStack: true,
plannedFloorStackTotalCost: 10000,
plannedFloorStackUnitCostPerSqm: 500,
actualFloorStackArea: 18, // 实际面积减少
actualFloorStackQty: 1,
actualThemedFloorStack: true,
actualFloorStackExecuted: true,
plannedMultiDisplay: "5个-端架陈列(零食区+日用品区)",
plannedMultiDisplayTotalCost: 4500,
actualMultiDisplay: "5个-端架陈列(零食区+日用品区)",
actualMultiDisplayExecuted: true,
totalCost: 27100, // 6000+6600+9000(18㎡×500)+4500
totalCostRate: 3.0,
regularDisplayExecuted: true,
visitAssistTag: "核心门店(品牌合作标杆)",
paidDisplay: true,
monthlyVisitTarget: 4,
monthlyVisited: true
},
{
sadId: "SAD2024003",
regionName: "华南大区",
districtName: "广州战区",
dealerProvince: "广东省",
dealerCity: "广州市",
dealerCode: "GZD L003",
dealerName: "广州粤通商贸有限公司",
dealerType: "二级经销商",
openingDate: "2023-05-10",
closingDate: "",
regionManager: "黄志强",
districtManager: "林悦",
cityManager: "郑凯",
storeCode: "STGZ003",
storeName: "广州天河永辉超市(体育西路店)",
storeProvince: "广东省",
storeCity: "广州市",
lineName: "永辉超市",
lineType: "连锁超市",
channelDl: "现代渠道",
channelXl: "连锁综合超市",
storeType: "社区超市",
systemFormat: "社区店",
storeArea: 800,
storeLevel: "B级(月销20-30万)",
storeAddress: "广州市天河区体育西路191号",
productCount: 80,
lfSalesModel: "动销率≥80%",
lfMonthlyPos: 2800,
plannedMainShelfType: "双面货架(1.0m宽)",
plannedMainShelfQty: 2,
plannedMainShelfUnitCost: 800,
plannedMainShelfTotalCost: 1600,
actualMainShelfType: "双面货架(1.0m宽)",
actualMainShelfQty: 2,
actualMainShelfExecuted: true,
plannedEndCapQty: 1,
plannedEndCapTotalCost: 1800,
plannedEndCapUnitCost: 1800,
actualEndCapQty: 1,
actualEndCapExecuted: true,
plannedFloorStackArea: 8,
plannedFloorStackQty: 1,
plannedThemedFloorStack: false, // 非主题地堆
plannedFloorStackTotalCost: 3200,
plannedFloorStackUnitCostPerSqm: 400,
actualFloorStackArea: 8,
actualFloorStackQty: 1,
actualThemedFloorStack: false,
actualFloorStackExecuted: true,
plannedMultiDisplay: "2个-挂钩陈列(饮料区)",
plannedMultiDisplayTotalCost: 1200,
actualMultiDisplay: "2个-挂钩陈列(饮料区)",
actualMultiDisplayExecuted: true,
totalCost: 7800, // 1600+1800+3200+1200
totalCostRate: 2.2,
regularDisplayExecuted: true,
visitAssistTag: "常规拜访门店",
paidDisplay: true,
monthlyVisitTarget: 3,
monthlyVisited: false // 当月未拜访
},
{
sadId: "SAD2024004",
regionName: "华北大区",
districtName: "天津战区",
dealerProvince: "天津市",
dealerCity: "天津市",
dealerCode: "TJD L004",
dealerName: "天津津达商贸有限公司",
dealerType: "二级经销商",
openingDate: "2023-07-05",
closingDate: "",
regionManager: "赵卫东",
districtManager: "吴鹏",
cityManager: "马丽",
storeCode: "STTJ004",
storeName: "天津和平7-Eleven(滨江道店)",
storeProvince: "天津市",
storeCity: "天津市",
lineName: "7-Eleven",
lineType: "便利店",
channelDl: "现代渠道",
channelXl: "连锁便利店",
storeType: "便利店",
systemFormat: "便利店",
storeArea: 60,
storeLevel: "C级(月销5-10万)",
storeAddress: "天津市和平区滨江道205号",
productCount: 50,
lfSalesModel: "动销率≥75%",
lfMonthlyPos: 1500,
plannedMainShelfType: "迷你货架(0.6m宽)",
plannedMainShelfQty: 1,
plannedMainShelfUnitCost: 500,
plannedMainShelfTotalCost: 500,
actualMainShelfType: "迷你货架(0.6m宽)",
actualMainShelfQty: 1,
actualMainShelfExecuted: true,
plannedEndCapQty: 0, // 无计划端架
plannedEndCapTotalCost: 0,
plannedEndCapUnitCost: 0,
actualEndCapQty: 0,
actualEndCapExecuted: false,
plannedFloorStackArea: 0, // 无计划地堆
plannedFloorStackQty: 0,
plannedThemedFloorStack: false,
plannedFloorStackTotalCost: 0,
plannedFloorStackUnitCostPerSqm: 0,
actualFloorStackArea: 0,
actualFloorStackQty: 0,
actualThemedFloorStack: false,
actualFloorStackExecuted: false,
plannedMultiDisplay: "1个-柜台陈列(收银台)",
plannedMultiDisplayTotalCost: 800,
actualMultiDisplay: "1个-柜台陈列(收银台)",
actualMultiDisplayExecuted: true,
totalCost: 1300, // 500+0+0+800
totalCostRate: 1.8,
regularDisplayExecuted: true,
visitAssistTag: "高频拜访门店(人流密集)",
paidDisplay: false, // 非付费陈列
monthlyVisitTarget: 5,
monthlyVisited: true
},
{
sadId: "SAD2024005",
regionName: "华东大区",
districtName: "苏州战区",
dealerProvince: "江苏省",
dealerCity: "苏州市",
dealerCode: "JSD L005",
dealerName: "苏州苏顺供应链有限公司",
dealerType: "一级经销商",
openingDate: "2023-09-12",
closingDate: "",
regionManager: "张建军",
districtManager: "周明",
cityManager: "朱婷",
storeCode: "STSZ005",
storeName: "苏州工业园区大润发(湖东店)",
storeProvince: "江苏省",
storeCity: "苏州市",
lineName: "大润发",
lineType: "连锁超市",
channelDl: "现代渠道",
channelXl: "连锁综合超市",
storeType: "标准超市",
systemFormat: "大卖场",
storeArea: 1500,
storeLevel: "A级(月销45万+)",
storeAddress: "苏州市工业园区湖东新街口1号",
productCount: 110,
lfSalesModel: "动销率≥88%",
lfMonthlyPos: 4200,
plannedMainShelfType: "双面货架(1.2m宽)",
plannedMainShelfQty: 3,
plannedMainShelfUnitCost: 1100,
plannedMainShelfTotalCost: 3300,
actualMainShelfType: "双面货架(1.2m宽)",
actualMainShelfQty: 3,
actualMainShelfExecuted: true,
plannedEndCapQty: 2,
plannedEndCapTotalCost: 4400,
plannedEndCapUnitCost: 2200,
actualEndCapQty: 2,
actualEndCapExecuted: true,
plannedFloorStackArea: 12,
plannedFloorStackQty: 1,
plannedThemedFloorStack: true,
plannedFloorStackTotalCost: 6000,
plannedFloorStackUnitCostPerSqm: 500,
actualFloorStackArea: 12,
actualFloorStackQty: 1,
actualThemedFloorStack: true,
actualFloorStackExecuted: true,
plannedMultiDisplay: "3个-堆头陈列(粮油区+零食区)",
plannedMultiDisplayTotalCost: 2700,
actualMultiDisplay: "3个-堆头陈列(粮油区+零食区)",
actualMultiDisplayExecuted: true,
totalCost: 16400, // 3300+4400+6000+2700
totalCostRate: 2.6,
regularDisplayExecuted: true,
visitAssistTag: "重点培育门店(增长潜力大)",
paidDisplay: true,
monthlyVisitTarget: 4,
monthlyVisited: true
},
{
sadId: "SAD2024006",
regionName: "华南大区",
districtName: "深圳战区",
dealerProvince: "广东省",
dealerCity: "深圳市",
dealerCode: "GZD L006",
dealerName: "深圳深南商贸有限公司",
dealerType: "二级经销商",
openingDate: "2023-11-20",
closingDate: "",
regionManager: "黄志强",
districtManager: "谢芳",
cityManager: "陈明",
storeCode: "STSZ006",
storeName: "深圳南山华润万家(万象城店)",
storeProvince: "广东省",
storeCity: "深圳市",
lineName: "华润万家",
lineType: "连锁超市",
channelDl: "现代渠道",
channelXl: "高端精品超市",
storeType: "精品超市",
systemFormat: "高端超市",
storeArea: 1000,
storeLevel: "B级(月销30-40万)",
storeAddress: "深圳市南山区万象城B2层",
productCount: 95,
lfSalesModel: "动销率≥92%",
lfMonthlyPos: 3500,
plannedMainShelfType: "高端单面货架(1.4m宽)",
plannedMainShelfQty: 2,
plannedMainShelfUnitCost: 2000,
plannedMainShelfTotalCost: 4000,
actualMainShelfType: "高端单面货架(1.4m宽)",
actualMainShelfQty: 2,
actualMainShelfExecuted: true,
plannedEndCapQty: 1,
plannedEndCapTotalCost: 3000,
plannedEndCapUnitCost: 3000,
actualEndCapQty: 1,
actualEndCapExecuted: true,
plannedFloorStackArea: 10,
plannedFloorStackQty: 1,
plannedThemedFloorStack: true,
plannedFloorStackTotalCost: 5500,
plannedFloorStackUnitCostPerSqm: 550,
actualFloorStackArea: 10,
actualFloorStackQty: 1,
actualThemedFloorStack: true,
actualFloorStackExecuted: true,
plannedMultiDisplay: "2个-精品陈列(进口食品区)",
plannedMultiDisplayTotalCost: 3000,
actualMultiDisplay: "2个-精品陈列(进口食品区)",
actualMultiDisplayExecuted: true,
totalCost: 15500, // 4000+3000+5500+3000
totalCostRate: 2.8,
regularDisplayExecuted: true,
visitAssistTag: "高端门店(客单价高)",
paidDisplay: true,
monthlyVisitTarget: 3,
monthlyVisited: false
},
{
sadId: "SAD2024007",
regionName: "华东大区",
districtName: "杭州战区",
dealerProvince: "浙江省",
dealerCity: "杭州市",
dealerCode: "ZJD L007",
dealerName: "杭州杭联商贸有限公司",
dealerType: "二级经销商",
openingDate: "2024-01-08",
closingDate: "",
regionManager: "张建军",
districtManager: "吴涛",
cityManager: "刘敏",
storeCode: "STHZ007",
storeName: "杭州西湖物美超市(文三路店)",
storeProvince: "浙江省",
storeCity: "杭州市",
lineName: "物美超市",
lineType: "连锁超市",
channelDl: "现代渠道",
channelXl: "社区超市",
storeType: "社区超市",
systemFormat: "社区店",
storeArea: 700,
storeLevel: "B级(月销18-25万)",
storeAddress: "杭州市西湖区文三路555号",
productCount: 75,
lfSalesModel: "动销率≥78%",
lfMonthlyPos: 2600,
plannedMainShelfType: "双面货架(1.0m宽)",
plannedMainShelfQty: 2,
plannedMainShelfUnitCost: 900,
plannedMainShelfTotalCost: 1800,
actualMainShelfType: "双面货架(1.0m宽)",
actualMainShelfQty: 2,
actualMainShelfExecuted: true,
plannedEndCapQty: 1,
plannedEndCapTotalCost: 1900,
plannedEndCapUnitCost: 1900,
actualEndCapQty: 1,
actualEndCapExecuted: true,
plannedFloorStackArea: 6,
plannedFloorStackQty: 1,
plannedThemedFloorStack: false,
plannedFloorStackTotalCost: 2400,
plannedFloorStackUnitCostPerSqm: 400,
actualFloorStackArea: 6,
actualFloorStackQty: 1,
actualThemedFloorStack: false,
actualFloorStackExecuted: true,
plannedMultiDisplay: "1个-堆头陈列(日用品区)",
plannedMultiDisplayTotalCost: 1000,
actualMultiDisplay: "1个-堆头陈列(日用品区)",
actualMultiDisplayExecuted: true,
totalCost: 7100, // 1800+1900+2400+1000
totalCostRate: 2.1,
regularDisplayExecuted: true,
visitAssistTag: "社区核心门店(复购率高)",
paidDisplay: true,
monthlyVisitTarget: 3,
monthlyVisited: true
},
{
sadId: "SAD2024008",
regionName: "华北大区",
districtName: "石家庄战区",
dealerProvince: "河北省",
dealerCity: "石家庄市",
dealerCode: "HBD L008",
dealerName: "石家庄石汇商贸有限公司",
dealerType: "三级经销商",
openingDate: "2024-02-15",
closingDate: "",
regionManager: "赵卫东",
districtManager: "王力",
cityManager: "孙佳",
storeCode: "STSJ008",
storeName: "石家庄长安北国超市(建设大街店)",
storeProvince: "河北省",
storeCity: "石家庄市",
lineName: "北国超市",
lineType: "区域连锁超市",
channelDl: "区域渠道",
channelXl: "区域连锁超市",
storeType: "标准超市",
systemFormat: "区域大卖场",
storeArea: 1200,
storeLevel: "B级(月销25-35万)",
storeAddress: "石家庄市长安区建设南大街100号",
productCount: 90,
lfSalesModel: "动销率≥82%",
lfMonthlyPos: 3200,
plannedMainShelfType: "双面货架(1.1m宽)",
plannedMainShelfQty: 3,
plannedMainShelfUnitCost: 1000,
plannedMainShelfTotalCost: 3000,
actualMainShelfType: "双面货架(1.1m宽)",
actualMainShelfQty: 2, // 实际减少1个
actualMainShelfExecuted: true,
plannedEndCapQty: 2,
plannedEndCapTotalCost: 3800,
plannedEndCapUnitCost: 1900,
actualEndCapQty: 2,
actualEndCapExecuted: true,
plannedFloorStackArea: 10,
plannedFloorStackQty: 1,
plannedThemedFloorStack: true,
plannedFloorStackTotalCost: 4800,
plannedFloorStackUnitCostPerSqm: 480,
actualFloorStackArea: 10,
actualFloorStackQty: 1,
actualThemedFloorStack: true,
actualFloorStackExecuted: true,
plannedMultiDisplay: "2个-端架陈列(食品区)",
plannedMultiDisplayTotalCost: 2000,
actualMultiDisplay: "2个-端架陈列(食品区)",
actualMultiDisplayExecuted: true,
totalCost: 13600, // 2000(2个×1000)+3800+4800+2000
totalCostRate: 2.3,
regularDisplayExecuted: true,
visitAssistTag: "区域重点门店",
paidDisplay: true,
monthlyVisitTarget: 3,
monthlyVisited: false
},
{
sadId: "SAD2024009",
regionName: "华南大区",
districtName: "南宁战区",
dealerProvince: "广西壮族自治区",
dealerCity: "南宁市",
dealerCode: "GXDL009",
dealerName: "南宁桂南商贸有限公司",
dealerType: "三级经销商",
openingDate: "2024-03-10",
closingDate: "",
regionManager: "黄志强",
districtManager: "韦娜",
cityManager: "李刚",
storeCode: "STNN009",
storeName: "南宁青秀南城百货(民族大道店)",
storeProvince: "广西壮族自治区",
storeCity: "南宁市",
lineName: "南城百货",
lineType: "区域连锁超市",
channelDl: "区域渠道",
channelXl: "区域连锁超市",
storeType: "社区超市",
systemFormat: "社区店",
storeArea: 600,
storeLevel: "C级(月销10-18万)",
storeAddress: "南宁市青秀区民族大道129号",
productCount: 65,
lfSalesModel: "动销率≥72%",
lfMonthlyPos: 2100,
plannedMainShelfType: "双面货架(0.9m宽)",
plannedMainShelfQty: 2,
plannedMainShelfUnitCost: 700,
plannedMainShelfTotalCost: 1400,
actualMainShelfType: "双面货架(0.9m宽)",
actualMainShelfQty: 2,
actualMainShelfExecuted: true,
plannedEndCapQty: 1,
plannedEndCapTotalCost: 1500,
plannedEndCapUnitCost: 1500,
actualEndCapQty: 0, // 实际未做端架
actualEndCapExecuted: false,
plannedFloorStackArea: 5,
plannedFloorStackQty: 1,
plannedThemedFloorStack: false,
plannedFloorStackTotalCost: 2000,
plannedFloorStackUnitCostPerSqm: 400,
actualFloorStackArea: 5,
actualFloorStackQty: 1,
actualThemedFloorStack: false,
actualFloorStackExecuted: true,
plannedMultiDisplay: "1个-挂钩陈列(零食区)",
plannedMultiDisplayTotalCost: 900,
actualMultiDisplay: "1个-挂钩陈列(零食区)",
actualMultiDisplayExecuted: true,
totalCost: 5800, // 1400+0+2000+900
totalCostRate: 1.9,
regularDisplayExecuted: true,
visitAssistTag: "常规维护门店",
paidDisplay: false,
monthlyVisitTarget: 2,
monthlyVisited: true
},
{
sadId: "SAD2024010",
regionName: "华东大区",
districtName: "宁波战区",
dealerProvince: "浙江省",
dealerCity: "宁波市",
dealerCode: "ZJD L010",
dealerName: "宁波甬通商贸有限公司",
dealerType: "二级经销商",
openingDate: "2024-04-05",
closingDate: "",
regionManager: "张建军",
districtManager: "陈杰",
cityManager: "林燕",
storeCode: "STNB010",
storeName: "宁波鄞州三江购物(天童北路店)",
storeProvince: "浙江省",
storeCity: "宁波市",
lineName: "三江购物",
lineType: "区域连锁超市",
channelDl: "区域渠道",
channelXl: "区域连锁超市",
storeType: "社区超市",
systemFormat: "社区店",
storeArea: 500,
storeLevel: "C级(月销8-15万)",
storeAddress: "宁波市鄞州区天童北路888号",
productCount: 60,
lfSalesModel: "动销率≥70%",
lfMonthlyPos: 1800,
plannedMainShelfType: "双面货架(0.8m宽)",
plannedMainShelfQty: 1,
plannedMainShelfUnitCost: 600,
plannedMainShelfTotalCost: 600,
actualMainShelfType: "双面货架(0.8m宽)",
actualMainShelfQty: 1,
actualMainShelfExecuted: true,
plannedEndCapQty: 0,
plannedEndCapTotalCost: 0,
plannedEndCapUnitCost: 0,
actualEndCapQty: 0,
actualEndCapExecuted: false,
plannedFloorStackArea: 4,
plannedFloorStackQty: 1,
plannedThemedFloorStack: false,
plannedFloorStackTotalCost: 1600,
plannedFloorStackUnitCostPerSqm: 400,
actualFloorStackArea: 4,
actualFloorStackQty: 1,
actualThemedFloorStack: false,
actualFloorStackExecuted: true,
plannedMultiDisplay: "1个-柜台陈列(收银台)",
plannedMultiDisplayTotalCost: 700,
actualMultiDisplay: "1个-柜台陈列(收银台)",
actualMultiDisplayExecuted: true,
totalCost: 2900, // 600+0+1600+700
totalCostRate: 1.6,
regularDisplayExecuted: true,
visitAssistTag: "基础拜访门店",
paidDisplay: false,
monthlyVisitTarget: 2,
monthlyVisited: false
},
{
sadId: "SAD2024010",
regionName: "华东大区",
districtName: "宁波战区",
dealerProvince: "浙江省",
dealerCity: "宁波市",
dealerCode: "ZJD L010",
dealerName: "宁波甬通商贸有限公司",
dealerType: "二级经销商",
openingDate: "2024-04-05",
closingDate: "",
regionManager: "张建军",
districtManager: "陈杰",
cityManager: "林燕",
storeCode: "STNB010",
storeName: "宁波鄞州三江购物(天童北路店)",
storeProvince: "浙江省",
storeCity: "宁波市",
lineName: "三江购物",
lineType: "区域连锁超市",
channelDl: "区域渠道",
channelXl: "区域连锁超市",
storeType: "社区超市",
systemFormat: "社区店",
storeArea: 500,
storeLevel: "C级(月销8-15万)",
storeAddress: "宁波市鄞州区天童北路888号",
productCount: 60,
lfSalesModel: "动销率≥70%",
lfMonthlyPos: 1800,
plannedMainShelfType: "双面货架(0.8m宽)",
plannedMainShelfQty: 1,
plannedMainShelfUnitCost: 600,
plannedMainShelfTotalCost: 600,
actualMainShelfType: "双面货架(0.8m宽)",
actualMainShelfQty: 1,
actualMainShelfExecuted: true,
plannedEndCapQty: 0,
plannedEndCapTotalCost: 0,
plannedEndCapUnitCost: 0,
actualEndCapQty: 0,
actualEndCapExecuted: false,
plannedFloorStackArea: 4,
plannedFloorStackQty: 1,
plannedThemedFloorStack: false,
plannedFloorStackTotalCost: 1600,
plannedFloorStackUnitCostPerSqm: 400,
actualFloorStackArea: 4,
actualFloorStackQty: 1,
actualThemedFloorStack: false,
actualFloorStackExecuted: true,
plannedMultiDisplay: "1个-柜台陈列(收银台)",
plannedMultiDisplayTotalCost: 700,
actualMultiDisplay: "1个-柜台陈列(收银台)",
actualMultiDisplayExecuted: true,
totalCost: 2900, // 600+0+1600+700
totalCostRate: 1.6,
regularDisplayExecuted: true,
visitAssistTag: "基础拜访门店",
paidDisplay: false,
monthlyVisitTarget: 2,
monthlyVisited: false
},
{
sadId: "SAD2024010",
regionName: "华东大区",
districtName: "宁波战区",
dealerProvince: "浙江省",
dealerCity: "宁波市",
dealerCode: "ZJD L010",
dealerName: "宁波甬通商贸有限公司",
dealerType: "二级经销商",
openingDate: "2024-04-05",
closingDate: "",
regionManager: "张建军",
districtManager: "陈杰",
cityManager: "林燕",
storeCode: "STNB010",
storeName: "宁波鄞州三江购物(天童北路店)",
storeProvince: "浙江省",
storeCity: "宁波市",
lineName: "三江购物",
lineType: "区域连锁超市",
channelDl: "区域渠道",
channelXl: "区域连锁超市",
storeType: "社区超市",
systemFormat: "社区店",
storeArea: 500,
storeLevel: "C级(月销8-15万)",
storeAddress: "宁波市鄞州区天童北路888号",
productCount: 60,
lfSalesModel: "动销率≥70%",
lfMonthlyPos: 1800,
plannedMainShelfType: "双面货架(0.8m宽)",
plannedMainShelfQty: 1,
plannedMainShelfUnitCost: 600,
plannedMainShelfTotalCost: 600,
actualMainShelfType: "双面货架(0.8m宽)",
actualMainShelfQty: 1,
actualMainShelfExecuted: true,
plannedEndCapQty: 0,
plannedEndCapTotalCost: 0,
plannedEndCapUnitCost: 0,
actualEndCapQty: 0,
actualEndCapExecuted: false,
plannedFloorStackArea: 4,
plannedFloorStackQty: 1,
plannedThemedFloorStack: false,
plannedFloorStackTotalCost: 1600,
plannedFloorStackUnitCostPerSqm: 400,
actualFloorStackArea: 4,
actualFloorStackQty: 1,
actualThemedFloorStack: false,
actualFloorStackExecuted: true,
plannedMultiDisplay: "1个-柜台陈列(收银台)",
plannedMultiDisplayTotalCost: 700,
actualMultiDisplay: "1个-柜台陈列(收银台)",
actualMultiDisplayExecuted: true,
totalCost: 2900, // 600+0+1600+700
totalCostRate: 1.6,
regularDisplayExecuted: true,
visitAssistTag: "基础拜访门店",
paidDisplay: false,
monthlyVisitTarget: 2,
monthlyVisited: false
},
{
sadId: "SAD2024010",
regionName: "华东大区",
districtName: "宁波战区",
dealerProvince: "浙江省",
dealerCity: "宁波市",
dealerCode: "ZJD L010",
dealerName: "宁波甬通商贸有限公司",
dealerType: "二级经销商",
openingDate: "2024-04-05",
closingDate: "",
regionManager: "张建军",
districtManager: "陈杰",
cityManager: "林燕",
storeCode: "STNB010",
storeName: "宁波鄞州三江购物(天童北路店)",
storeProvince: "浙江省",
storeCity: "宁波市",
lineName: "三江购物",
lineType: "区域连锁超市",
channelDl: "区域渠道",
channelXl: "区域连锁超市",
storeType: "社区超市",
systemFormat: "社区店",
storeArea: 500,
storeLevel: "C级(月销8-15万)",
storeAddress: "宁波市鄞州区天童北路888号",
productCount: 60,
lfSalesModel: "动销率≥70%",
lfMonthlyPos: 1800,
plannedMainShelfType: "双面货架(0.8m宽)",
plannedMainShelfQty: 1,
plannedMainShelfUnitCost: 600,
plannedMainShelfTotalCost: 600,
actualMainShelfType: "双面货架(0.8m宽)",
actualMainShelfQty: 1,
actualMainShelfExecuted: true,
plannedEndCapQty: 0,
plannedEndCapTotalCost: 0,
plannedEndCapUnitCost: 0,
actualEndCapQty: 0,
actualEndCapExecuted: false,
plannedFloorStackArea: 4,
plannedFloorStackQty: 1,
plannedThemedFloorStack: false,
plannedFloorStackTotalCost: 1600,
plannedFloorStackUnitCostPerSqm: 400,
actualFloorStackArea: 4,
actualFloorStackQty: 1,
actualThemedFloorStack: false,
actualFloorStackExecuted: true,
plannedMultiDisplay: "1个-柜台陈列(收银台)",
plannedMultiDisplayTotalCost: 700,
actualMultiDisplay: "1个-柜台陈列(收银台)",
actualMultiDisplayExecuted: true,
totalCost: 2900, // 600+0+1600+700
totalCostRate: 1.6,
regularDisplayExecuted: true,
visitAssistTag: "基础拜访门店",
paidDisplay: false,
monthlyVisitTarget: 2,
monthlyVisited: false
},
{
sadId: "SAD2024010",
regionName: "华东大区",
districtName: "宁波战区",
dealerProvince: "浙江省",
dealerCity: "宁波市",
dealerCode: "ZJD L010",
dealerName: "宁波甬通商贸有限公司",
dealerType: "二级经销商",
openingDate: "2024-04-05",
closingDate: "",
regionManager: "张建军",
districtManager: "陈杰",
cityManager: "林燕",
storeCode: "STNB010",
storeName: "宁波鄞州三江购物(天童北路店)",
storeProvince: "浙江省",
storeCity: "宁波市",
lineName: "三江购物",
lineType: "区域连锁超市",
channelDl: "区域渠道",
channelXl: "区域连锁超市",
storeType: "社区超市",
systemFormat: "社区店",
storeArea: 500,
storeLevel: "C级(月销8-15万)",
storeAddress: "宁波市鄞州区天童北路888号",
productCount: 60,
lfSalesModel: "动销率≥70%",
lfMonthlyPos: 1800,
plannedMainShelfType: "双面货架(0.8m宽)",
plannedMainShelfQty: 1,
plannedMainShelfUnitCost: 600,
plannedMainShelfTotalCost: 600,
actualMainShelfType: "双面货架(0.8m宽)",
actualMainShelfQty: 1,
actualMainShelfExecuted: true,
plannedEndCapQty: 0,
plannedEndCapTotalCost: 0,
plannedEndCapUnitCost: 0,
actualEndCapQty: 0,
actualEndCapExecuted: false,
plannedFloorStackArea: 4,
plannedFloorStackQty: 1,
plannedThemedFloorStack: false,
plannedFloorStackTotalCost: 1600,
plannedFloorStackUnitCostPerSqm: 400,
actualFloorStackArea: 4,
actualFloorStackQty: 1,
actualThemedFloorStack: false,
actualFloorStackExecuted: true,
plannedMultiDisplay: "1个-柜台陈列(收银台)",
plannedMultiDisplayTotalCost: 700,
actualMultiDisplay: "1个-柜台陈列(收银台)",
actualMultiDisplayExecuted: true,
totalCost: 2900, // 600+0+1600+700
totalCostRate: 1.6,
regularDisplayExecuted: true,
visitAssistTag: "基础拜访门店",
paidDisplay: false,
monthlyVisitTarget: 2,
monthlyVisited: false
},
{
sadId: "SAD2024010",
regionName: "华东大区",
districtName: "宁波战区",
dealerProvince: "浙江省",
dealerCity: "宁波市",
dealerCode: "ZJD L010",
dealerName: "宁波甬通商贸有限公司",
dealerType: "二级经销商",
openingDate: "2024-04-05",
closingDate: "",
regionManager: "张建军",
districtManager: "陈杰",
cityManager: "林燕",
storeCode: "STNB010",
storeName: "宁波鄞州三江购物(天童北路店)",
storeProvince: "浙江省",
storeCity: "宁波市",
lineName: "三江购物",
lineType: "区域连锁超市",
channelDl: "区域渠道",
channelXl: "区域连锁超市",
storeType: "社区超市",
systemFormat: "社区店",
storeArea: 500,
storeLevel: "C级(月销8-15万)",
storeAddress: "宁波市鄞州区天童北路888号",
productCount: 60,
lfSalesModel: "动销率≥70%",
lfMonthlyPos: 1800,
plannedMainShelfType: "双面货架(0.8m宽)",
plannedMainShelfQty: 1,
plannedMainShelfUnitCost: 600,
plannedMainShelfTotalCost: 600,
actualMainShelfType: "双面货架(0.8m宽)",
actualMainShelfQty: 1,
actualMainShelfExecuted: true,
plannedEndCapQty: 0,
plannedEndCapTotalCost: 0,
plannedEndCapUnitCost: 0,
actualEndCapQty: 0,
actualEndCapExecuted: false,
plannedFloorStackArea: 4,
plannedFloorStackQty: 1,
plannedThemedFloorStack: false,
plannedFloorStackTotalCost: 1600,
plannedFloorStackUnitCostPerSqm: 400,
actualFloorStackArea: 4,
actualFloorStackQty: 1,
actualThemedFloorStack: false,
actualFloorStackExecuted: true,
plannedMultiDisplay: "1个-柜台陈列(收银台)",
plannedMultiDisplayTotalCost: 700,
actualMultiDisplay: "1个-柜台陈列(收银台)",
actualMultiDisplayExecuted: true,
totalCost: 2900, // 600+0+1600+700
totalCostRate: 1.6,
regularDisplayExecuted: true,
visitAssistTag: "基础拜访门店",
paidDisplay: false,
monthlyVisitTarget: 2,
monthlyVisited: false
},
{
sadId: "SAD2024010",
regionName: "华东大区",
districtName: "宁波战区",
dealerProvince: "浙江省",
dealerCity: "宁波市",
dealerCode: "ZJD L010",
dealerName: "宁波甬通商贸有限公司",
dealerType: "二级经销商",
openingDate: "2024-04-05",
closingDate: "",
regionManager: "张建军",
districtManager: "陈杰",
cityManager: "林燕",
storeCode: "STNB010",
storeName: "宁波鄞州三江购物(天童北路店)",
storeProvince: "浙江省",
storeCity: "宁波市",
lineName: "三江购物",
lineType: "区域连锁超市",
channelDl: "区域渠道",
channelXl: "区域连锁超市",
storeType: "社区超市",
systemFormat: "社区店",
storeArea: 500,
storeLevel: "C级(月销8-15万)",
storeAddress: "宁波市鄞州区天童北路888号",
productCount: 60,
lfSalesModel: "动销率≥70%",
lfMonthlyPos: 1800,
plannedMainShelfType: "双面货架(0.8m宽)",
plannedMainShelfQty: 1,
plannedMainShelfUnitCost: 600,
plannedMainShelfTotalCost: 600,
actualMainShelfType: "双面货架(0.8m宽)",
actualMainShelfQty: 1,
actualMainShelfExecuted: true,
plannedEndCapQty: 0,
plannedEndCapTotalCost: 0,
plannedEndCapUnitCost: 0,
actualEndCapQty: 0,
actualEndCapExecuted: false,
plannedFloorStackArea: 4,
plannedFloorStackQty: 1,
plannedThemedFloorStack: false,
plannedFloorStackTotalCost: 1600,
plannedFloorStackUnitCostPerSqm: 400,
actualFloorStackArea: 4,
actualFloorStackQty: 1,
actualThemedFloorStack: false,
actualFloorStackExecuted: true,
plannedMultiDisplay: "1个-柜台陈列(收银台)",
plannedMultiDisplayTotalCost: 700,
actualMultiDisplay: "1个-柜台陈列(收银台)",
actualMultiDisplayExecuted: true,
totalCost: 2900, // 600+0+1600+700
totalCostRate: 1.6,
regularDisplayExecuted: true,
visitAssistTag: "基础拜访门店",
paidDisplay: false,
monthlyVisitTarget: 2,
monthlyVisited: false
},
{
sadId: "SAD2024010",
regionName: "华东大区",
districtName: "宁波战区",
dealerProvince: "浙江省",
dealerCity: "宁波市",
dealerCode: "ZJD L010",
dealerName: "宁波甬通商贸有限公司",
dealerType: "二级经销商",
openingDate: "2024-04-05",
closingDate: "",
regionManager: "张建军",
districtManager: "陈杰",
cityManager: "林燕",
storeCode: "STNB010",
storeName: "宁波鄞州三江购物(天童北路店)",
storeProvince: "浙江省",
storeCity: "宁波市",
lineName: "三江购物",
lineType: "区域连锁超市",
channelDl: "区域渠道",
channelXl: "区域连锁超市",
storeType: "社区超市",
systemFormat: "社区店",
storeArea: 500,
storeLevel: "C级(月销8-15万)",
storeAddress: "宁波市鄞州区天童北路888号",
productCount: 60,
lfSalesModel: "动销率≥70%",
lfMonthlyPos: 1800,
plannedMainShelfType: "双面货架(0.8m宽)",
plannedMainShelfQty: 1,
plannedMainShelfUnitCost: 600,
plannedMainShelfTotalCost: 600,
actualMainShelfType: "双面货架(0.8m宽)",
actualMainShelfQty: 1,
actualMainShelfExecuted: true,
plannedEndCapQty: 0,
plannedEndCapTotalCost: 0,
plannedEndCapUnitCost: 0,
actualEndCapQty: 0,
actualEndCapExecuted: false,
plannedFloorStackArea: 4,
plannedFloorStackQty: 1,
plannedThemedFloorStack: false,
plannedFloorStackTotalCost: 1600,
plannedFloorStackUnitCostPerSqm: 400,
actualFloorStackArea: 4,
actualFloorStackQty: 1,
actualThemedFloorStack: false,
actualFloorStackExecuted: true,
plannedMultiDisplay: "1个-柜台陈列(收银台)",
plannedMultiDisplayTotalCost: 700,
actualMultiDisplay: "1个-柜台陈列(收银台)",
actualMultiDisplayExecuted: true,
totalCost: 2900, // 600+0+1600+700
totalCostRate: 1.6,
regularDisplayExecuted: true,
visitAssistTag: "基础拜访门店",
paidDisplay: false,
monthlyVisitTarget: 2,
monthlyVisited: false
},
{
sadId: "SAD2024010",
regionName: "华东大区",
districtName: "宁波战区",
dealerProvince: "浙江省",
dealerCity: "宁波市",
dealerCode: "ZJD L010",
dealerName: "宁波甬通商贸有限公司",
dealerType: "二级经销商",
openingDate: "2024-04-05",
closingDate: "",
regionManager: "张建军",
districtManager: "陈杰",
cityManager: "林燕",
storeCode: "STNB010",
storeName: "宁波鄞州三江购物(天童北路店)",
storeProvince: "浙江省",
storeCity: "宁波市",
lineName: "三江购物",
lineType: "区域连锁超市",
channelDl: "区域渠道",
channelXl: "区域连锁超市",
storeType: "社区超市",
systemFormat: "社区店",
storeArea: 500,
storeLevel: "C级(月销8-15万)",
storeAddress: "宁波市鄞州区天童北路888号",
productCount: 60,
lfSalesModel: "动销率≥70%",
lfMonthlyPos: 1800,
plannedMainShelfType: "双面货架(0.8m宽)",
plannedMainShelfQty: 1,
plannedMainShelfUnitCost: 600,
plannedMainShelfTotalCost: 600,
actualMainShelfType: "双面货架(0.8m宽)",
actualMainShelfQty: 1,
actualMainShelfExecuted: true,
plannedEndCapQty: 0,
plannedEndCapTotalCost: 0,
plannedEndCapUnitCost: 0,
actualEndCapQty: 0,
actualEndCapExecuted: false,
plannedFloorStackArea: 4,
plannedFloorStackQty: 1,
plannedThemedFloorStack: false,
plannedFloorStackTotalCost: 1600,
plannedFloorStackUnitCostPerSqm: 400,
actualFloorStackArea: 4,
actualFloorStackQty: 1,
actualThemedFloorStack: false,
actualFloorStackExecuted: true,
plannedMultiDisplay: "1个-柜台陈列(收银台)",
plannedMultiDisplayTotalCost: 700,
actualMultiDisplay: "1个-柜台陈列(收银台)",
actualMultiDisplayExecuted: true,
totalCost: 2900, // 600+0+1600+700
totalCostRate: 1.6,
regularDisplayExecuted: true,
visitAssistTag: "基础拜访门店",
paidDisplay: false,
monthlyVisitTarget: 2,
monthlyVisited: false
},
{
sadId: "SAD2024010",
regionName: "华东大区",
districtName: "宁波战区",
dealerProvince: "浙江省",
dealerCity: "宁波市",
dealerCode: "ZJD L010",
dealerName: "宁波甬通商贸有限公司",
dealerType: "二级经销商",
openingDate: "2024-04-05",
closingDate: "",
regionManager: "张建军",
districtManager: "陈杰",
cityManager: "林燕",
storeCode: "STNB010",
storeName: "宁波鄞州三江购物(天童北路店)",
storeProvince: "浙江省",
storeCity: "宁波市",
lineName: "三江购物",
lineType: "区域连锁超市",
channelDl: "区域渠道",
channelXl: "区域连锁超市",
storeType: "社区超市",
systemFormat: "社区店",
storeArea: 500,
storeLevel: "C级(月销8-15万)",
storeAddress: "宁波市鄞州区天童北路888号",
productCount: 60,
lfSalesModel: "动销率≥70%",
lfMonthlyPos: 1800,
plannedMainShelfType: "双面货架(0.8m宽)",
plannedMainShelfQty: 1,
plannedMainShelfUnitCost: 600,
plannedMainShelfTotalCost: 600,
actualMainShelfType: "双面货架(0.8m宽)",
actualMainShelfQty: 1,
actualMainShelfExecuted: true,
plannedEndCapQty: 0,
plannedEndCapTotalCost: 0,
plannedEndCapUnitCost: 0,
actualEndCapQty: 0,
actualEndCapExecuted: false,
plannedFloorStackArea: 4,
plannedFloorStackQty: 1,
plannedThemedFloorStack: false,
plannedFloorStackTotalCost: 1600,
plannedFloorStackUnitCostPerSqm: 400,
actualFloorStackArea: 4,
actualFloorStackQty: 1,
actualThemedFloorStack: false,
actualFloorStackExecuted: true,
plannedMultiDisplay: "1个-柜台陈列(收银台)",
plannedMultiDisplayTotalCost: 700,
actualMultiDisplay: "1个-柜台陈列(收银台)",
actualMultiDisplayExecuted: true,
totalCost: 2900, // 600+0+1600+700
totalCostRate: 1.6,
regularDisplayExecuted: true,
visitAssistTag: "基础拜访门店",
paidDisplay: false,
monthlyVisitTarget: 2,
monthlyVisited: false
},
{
sadId: "SAD2024010",
regionName: "华东大区",
districtName: "宁波战区",
dealerProvince: "浙江省",
dealerCity: "宁波市",
dealerCode: "ZJD L010",
dealerName: "宁波甬通商贸有限公司",
dealerType: "二级经销商",
openingDate: "2024-04-05",
closingDate: "",
regionManager: "张建军",
districtManager: "陈杰",
cityManager: "林燕",
storeCode: "STNB010",
storeName: "宁波鄞州三江购物(天童北路店)",
storeProvince: "浙江省",
storeCity: "宁波市",
lineName: "三江购物",
lineType: "区域连锁超市",
channelDl: "区域渠道",
channelXl: "区域连锁超市",
storeType: "社区超市",
systemFormat: "社区店",
storeArea: 500,
storeLevel: "C级(月销8-15万)",
storeAddress: "宁波市鄞州区天童北路888号",
productCount: 60,
lfSalesModel: "动销率≥70%",
lfMonthlyPos: 1800,
plannedMainShelfType: "双面货架(0.8m宽)",
plannedMainShelfQty: 1,
plannedMainShelfUnitCost: 600,
plannedMainShelfTotalCost: 600,
actualMainShelfType: "双面货架(0.8m宽)",
actualMainShelfQty: 1,
actualMainShelfExecuted: true,
plannedEndCapQty: 0,
plannedEndCapTotalCost: 0,
plannedEndCapUnitCost: 0,
actualEndCapQty: 0,
actualEndCapExecuted: false,
plannedFloorStackArea: 4,
plannedFloorStackQty: 1,
plannedThemedFloorStack: false,
plannedFloorStackTotalCost: 1600,
plannedFloorStackUnitCostPerSqm: 400,
actualFloorStackArea: 4,
actualFloorStackQty: 1,
actualThemedFloorStack: false,
actualFloorStackExecuted: true,
plannedMultiDisplay: "1个-柜台陈列(收银台)",
plannedMultiDisplayTotalCost: 700,
actualMultiDisplay: "1个-柜台陈列(收银台)",
actualMultiDisplayExecuted: true,
totalCost: 2900, // 600+0+1600+700
totalCostRate: 1.6,
regularDisplayExecuted: true,
visitAssistTag: "基础拜访门店",
paidDisplay: false,
monthlyVisitTarget: 2,
monthlyVisited: false
}
]);
// 筛选工具
const showSearch = ref(true);
const getTableList = async () => {
}
// 列宽度
const getColumnMinWidth = (column) => {
// 根据列名或属性判断合适的最小宽度
const widthMap = {
// 短文本列
'dealerProvince': 100,
'dealerCity': 100,
'storeProvince': 100,
'storeCity': 100,
'openingDate': 120,
'closingDate': 120,
'monthlyVisitTarget': 80,
// 中等长度文本列
'regionName': 120,
'districtName': 120,
'dealerType': 120,
'lineName': 140,
'lineType': 120,
'channelDl': 120,
'channelXl': 120,
'storeType': 120,
'systemFormat': 120,
'monthlyVisitTarget': 120,
// 长文本列
'dealerName': 200,
'storeName': 220,
'storeAddress': 300,
'visitAssistTag': 180,
'storeLevel': 170,
'plannedFloorStackArea': 170,
'plannedFloorStackUnitCostPerSqm': 170,
'actualFloorStackArea': 170,
'actualMultiDisplay': 190,
'plannedMultiDisplay': 190,
'actualMultiDisplayExecuted': 170
};
return widthMap[column.prop] || 150; // 默认宽度
};
</script>
<style scoped
lang="scss">
.container {
.el-form-item {
align-items: center;
}
.auto-fit-header-table {
width: 100%;
--el-table-header-cell-text-color: #333;
--el-table-header-cell-padding: 0 16px;
/* 列头内边距(可调整) */
.el-table__header th.el-table__cell {
white-space: nowrap;
/* 禁止列头文本换行 */
text-overflow: clip;
/* 溢出不隐藏(若想隐藏用 ellipsis,但需配合 overflow: hidden) */
overflow: visible;
/* 允许内容撑满(避免文本被截断) */
}
/* 保持原有的单元格样式,但优化内容显示 */
.el-table__body td.el-table__cell {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
/* 优化超长文本的显示效果 */
.cell {
padding: 0 8px;
}
}
}
</style>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论