Commit 6399992260b049ec2417167a8c1ddac9f8922c2c

Authored by “wangming”
1 parent ffd6aaca

fix: 修复开单升单逻辑Bug,新增历史开单记录服务,更新集团驾驶舱标题

- 修复UpdateForNoDelete方法中升单字段赋值错误(升医美和升生美字段错位)
- 新增历史开单记录服务(LqOrderRecordsService),支持通过会员编号或手机号查询
- 更新集团驾驶舱及相关子页面标题为更专业的名称
antis-ncc-admin/src/components/kpi-drill/billing-analysis.vue
... ... @@ -6,7 +6,7 @@
6 6 <div class="chart-card trend-card">
7 7 <div class="chart-title">
8 8 <i class="el-icon-date"></i>
9   - 每日开单金额 & 人数
  9 + 日度成交趋势
10 10 </div>
11 11 <div ref="billingTrendChart" class="chart-mini"></div>
12 12 </div>
... ... @@ -15,7 +15,7 @@
15 15 <div class="table-header">
16 16 <div class="table-title">
17 17 <i class="el-icon-document"></i>
18   - 本月成交明细
  18 + 成交明细清单
19 19 </div>
20 20 <div class="list-filters inline">
21 21 <el-select v-model="listFilter.store" size="mini" placeholder="门店" style="width: 180px;" clearable
... ...
antis-ncc-admin/src/components/kpi-drill/consume-analysis.vue
... ... @@ -6,7 +6,7 @@
6 6 <div class="chart-card trend-card">
7 7 <div class="chart-title">
8 8 <i class="el-icon-date"></i>
9   - 每日消耗金额 & 人数
  9 + 日度消耗趋势
10 10 </div>
11 11 <div ref="consumeTrendChart" class="chart-mini"></div>
12 12 </div>
... ... @@ -15,7 +15,7 @@
15 15 <div class="table-header">
16 16 <div class="table-title">
17 17 <i class="el-icon-document"></i>
18   - 本月消耗明细
  18 + 消耗明细清单
19 19 </div>
20 20 <div class="list-filters inline">
21 21 <el-select v-model="listFilter.store" size="mini" placeholder="门店" style="width: 180px;" clearable
... ...
antis-ncc-admin/src/components/kpi-drill/refund-analysis.vue
... ... @@ -6,7 +6,7 @@
6 6 <div class="chart-card">
7 7 <div class="chart-title">
8 8 <i class="el-icon-s-data"></i>
9   - 各门店退卡金额分布(不包含转卡)
  9 + 门店退卡分布
10 10 <el-tooltip content="实际退卡额,且不含转卡:产生了实际现金支出的退款" placement="top">
11 11 <i class="el-icon-info" style="margin-left: 2px; color: #909399; cursor: help;"></i>
12 12 </el-tooltip>
... ... @@ -18,7 +18,7 @@
18 18 <div class="table-header">
19 19 <div class="table-title">
20 20 <i class="el-icon-document"></i>
21   - 退卡明细
  21 + 退卡明细清单
22 22 <el-button v-if="selectedStoreName" type="text" size="small" icon="el-icon-refresh" @click="showAllStores"
23 23 style="margin-left: 12px; color: #409EFF;">
24 24 显示全部
... ...
antis-ncc-admin/src/views/extend/annualSummary/dashboard/index.vue
... ... @@ -3,7 +3,7 @@
3 3 <!-- 顶部状态栏 & 筛选器 -->
4 4 <div class="cockpit-header">
5 5 <div class="header-left">
6   - <h1 class="page-title">年度经营统计分析</h1>
  6 + <h1 class="page-title">年度经营全景报告</h1>
7 7 </div>
8 8 <div class="header-right">
9 9 <el-form :inline="true" :model="query" class="search-form-compact">
... ... @@ -29,31 +29,31 @@
29 29 <!-- 标签页导航 -->
30 30 <el-tabs v-model="activeMenu" @tab-click="handleTabClick" class="dashboard-tabs">
31 31 <el-tab-pane name="monthly-trend">
32   - <span slot="label"><i class="el-icon-data-line"></i> 月度趋势分析</span>
  32 + <span slot="label"><i class="el-icon-data-line"></i> 月度经营趋势</span>
33 33 </el-tab-pane>
34 34 <el-tab-pane name="performance-stat">
35   - <span slot="label"><i class="el-icon-trophy"></i> 全年门店业绩表</span>
  35 + <span slot="label"><i class="el-icon-trophy"></i> 年度业绩总览</span>
36 36 </el-tab-pane>
37 37 <el-tab-pane name="consume-stat">
38   - <span slot="label"><i class="el-icon-shopping-cart-2"></i> 全年门店消耗表</span>
  38 + <span slot="label"><i class="el-icon-shopping-cart-2"></i> 年度消耗总览</span>
39 39 </el-tab-pane>
40 40 <el-tab-pane name="headcount-stat">
41   - <span slot="label"><i class="el-icon-user"></i> 年度门店人头表</span>
  41 + <span slot="label"><i class="el-icon-user"></i> 年度客流量总览</span>
42 42 </el-tab-pane>
43 43 <el-tab-pane name="persontime-stat">
44   - <span slot="label"><i class="el-icon-user-solid"></i> 年度门店人次表</span>
  44 + <span slot="label"><i class="el-icon-user-solid"></i> 年度到店频次总览</span>
45 45 </el-tab-pane>
46 46 <el-tab-pane name="project-stat">
47   - <span slot="label"><i class="el-icon-goods"></i> 年度门店项目数表</span>
  47 + <span slot="label"><i class="el-icon-goods"></i> 年度项目量总览</span>
48 48 </el-tab-pane>
49 49 <el-tab-pane name="store-indicators">
50   - <span slot="label"><i class="el-icon-pie-chart"></i> 门店五项指标统计</span>
  50 + <span slot="label"><i class="el-icon-pie-chart"></i> 门店综合指标</span>
51 51 </el-tab-pane>
52 52 <el-tab-pane name="bu-indicators">
53   - <span slot="label"><i class="el-icon-s-data"></i> 事业部五项指标统计</span>
  53 + <span slot="label"><i class="el-icon-s-data"></i> 事业部综合指标</span>
54 54 </el-tab-pane>
55 55 <el-tab-pane name="bu-summary">
56   - <span slot="label"><i class="el-icon-tickets"></i> 事业部内部汇总</span>
  56 + <span slot="label"><i class="el-icon-tickets"></i> 事业部经营汇总</span>
57 57 </el-tab-pane>
58 58 </el-tabs>
59 59  
... ... @@ -67,7 +67,7 @@
67 67 <el-card shadow="hover" class="dashboard-card chart-card">
68 68 <div slot="header" class="card-title">
69 69 <i class="el-icon-trophy"></i>
70   - <span>业绩势对比</span>
  70 + <span>业绩势对比</span>
71 71 </div>
72 72 <div id="perfTrend" class="chart-box"></div>
73 73 </el-card>
... ... @@ -76,7 +76,7 @@
76 76 <el-card shadow="hover" class="dashboard-card chart-card">
77 77 <div slot="header" class="card-title">
78 78 <i class="el-icon-shopping-cart-2"></i>
79   - <span>消耗势对比</span>
  79 + <span>消耗势对比</span>
80 80 </div>
81 81 <div id="consumeTrend" class="chart-box"></div>
82 82 </el-card>
... ... @@ -87,7 +87,7 @@
87 87 <el-card shadow="hover" class="dashboard-card chart-card">
88 88 <div slot="header" class="card-title">
89 89 <i class="el-icon-user"></i>
90   - <span>客头数走势</span>
  90 + <span>客流量趋势</span>
91 91 </div>
92 92 <div id="headCountTrend" class="chart-box"></div>
93 93 </el-card>
... ... @@ -96,7 +96,7 @@
96 96 <el-card shadow="hover" class="dashboard-card chart-card">
97 97 <div slot="header" class="card-title">
98 98 <i class="el-icon-user-solid"></i>
99   - <span>客次数走势</span>
  99 + <span>到店频次趋势</span>
100 100 </div>
101 101 <div id="personTimeTrend" class="chart-box"></div>
102 102 </el-card>
... ... @@ -105,7 +105,7 @@
105 105 <el-card shadow="hover" class="dashboard-card chart-card">
106 106 <div slot="header" class="card-title">
107 107 <i class="el-icon-goods"></i>
108   - <span>项目数走势</span>
  108 + <span>项目量趋势</span>
109 109 </div>
110 110 <div id="projectCountTrend" class="chart-box"></div>
111 111 </el-card>
... ... @@ -115,7 +115,7 @@
115 115 <el-card shadow="hover" class="dashboard-card table-card">
116 116 <div slot="header" class="card-title">
117 117 <i class="el-icon-s-grid"></i>
118   - <span>月度趋势数据列表</span>
  118 + <span>月度趋势明细</span>
119 119 </div>
120 120 <NCC-table v-loading="trendTableLoading" :data="trendTableData" border stripe style="width: 100%">
121 121 <el-table-column v-for="col in trendTableColumns" :key="col.prop" :prop="col.prop" :label="col.label"
... ... @@ -137,7 +137,7 @@
137 137 <el-card shadow="hover" class="dashboard-card chart-card">
138 138 <div slot="header" class="card-title">
139 139 <i class="el-icon-data-line"></i>
140   - <span>业绩势图</span>
  140 + <span>业绩势图</span>
141 141 </div>
142 142 <div id="performanceChart" class="chart-box-large"></div>
143 143 </el-card>
... ... @@ -145,7 +145,7 @@
145 145 <el-card shadow="hover" class="dashboard-card table-card">
146 146 <div slot="header" class="card-title">
147 147 <i class="el-icon-s-grid"></i>
148   - <span>业绩数据列表</span>
  148 + <span>业绩明细表</span>
149 149 </div>
150 150 <NCC-table v-loading="performanceTableLoading" :data="performanceTableData" border stripe
151 151 style="width: 100%">
... ... @@ -168,7 +168,7 @@
168 168 <el-card shadow="hover" class="dashboard-card chart-card">
169 169 <div slot="header" class="card-title">
170 170 <i class="el-icon-data-line"></i>
171   - <span>消耗势图</span>
  171 + <span>消耗势图</span>
172 172 </div>
173 173 <div id="consumeChart" class="chart-box-large"></div>
174 174 </el-card>
... ... @@ -176,7 +176,7 @@
176 176 <el-card shadow="hover" class="dashboard-card table-card">
177 177 <div slot="header" class="card-title">
178 178 <i class="el-icon-s-grid"></i>
179   - <span>消耗数据列表</span>
  179 + <span>消耗明细表</span>
180 180 </div>
181 181 <NCC-table v-loading="consumeTableLoading" :data="consumeTableData" border stripe style="width: 100%">
182 182 <el-table-column v-for="col in consumeTableColumns" :key="col.prop" :prop="col.prop" :label="col.label"
... ... @@ -198,7 +198,7 @@
198 198 <el-card shadow="hover" class="dashboard-card chart-card">
199 199 <div slot="header" class="card-title">
200 200 <i class="el-icon-data-line"></i>
201   - <span>人头数走势图</span>
  201 + <span>客流量趋势图</span>
202 202 </div>
203 203 <div id="headCountChart" class="chart-box-large"></div>
204 204 </el-card>
... ... @@ -206,7 +206,7 @@
206 206 <el-card shadow="hover" class="dashboard-card table-card">
207 207 <div slot="header" class="card-title">
208 208 <i class="el-icon-s-grid"></i>
209   - <span>人头数据列表</span>
  209 + <span>客流量明细表</span>
210 210 </div>
211 211 <NCC-table v-loading="headCountTableLoading" :data="headCountTableData" border stripe style="width: 100%">
212 212 <el-table-column v-for="col in headCountTableColumns" :key="col.prop" :prop="col.prop"
... ... @@ -228,7 +228,7 @@
228 228 <el-card shadow="hover" class="dashboard-card chart-card">
229 229 <div slot="header" class="card-title">
230 230 <i class="el-icon-data-line"></i>
231   - <span>人次走势图</span>
  231 + <span>到店频次趋势图</span>
232 232 </div>
233 233 <div id="personTimeChart" class="chart-box-large"></div>
234 234 </el-card>
... ... @@ -236,7 +236,7 @@
236 236 <el-card shadow="hover" class="dashboard-card table-card">
237 237 <div slot="header" class="card-title">
238 238 <i class="el-icon-s-grid"></i>
239   - <span>人次数据列表</span>
  239 + <span>到店频次明细表</span>
240 240 </div>
241 241 <NCC-table v-loading="personTimeTableLoading" :data="personTimeTableData" border stripe
242 242 style="width: 100%">
... ... @@ -259,7 +259,7 @@
259 259 <el-card shadow="hover" class="dashboard-card chart-card">
260 260 <div slot="header" class="card-title">
261 261 <i class="el-icon-data-line"></i>
262   - <span>项目数走势图</span>
  262 + <span>项目量趋势图</span>
263 263 </div>
264 264 <div id="projectCountChart" class="chart-box-large"></div>
265 265 </el-card>
... ... @@ -267,7 +267,7 @@
267 267 <el-card shadow="hover" class="dashboard-card table-card">
268 268 <div slot="header" class="card-title">
269 269 <i class="el-icon-s-grid"></i>
270   - <span>项目数据列表</span>
  270 + <span>项目量明细表</span>
271 271 </div>
272 272 <NCC-table v-loading="projectCountTableLoading" :data="projectCountTableData" border stripe
273 273 style="width: 100%">
... ...
antis-ncc-admin/src/views/statisticsList/form9.vue
... ... @@ -3,7 +3,7 @@
3 3 <!-- 顶部状态栏 & 筛选器 -->
4 4 <div class="cockpit-header">
5 5 <div class="header-left">
6   - <h1 class="page-title">集团驾驶舱 <span class="subtitle">本月经营动态监测</span></h1>
  6 + <h1 class="page-title">战略决策指挥中心 <span class="subtitle">实时经营态势感知</span></h1>
7 7 </div>
8 8 <div class="header-right">
9 9 <el-form :inline="true" class="search-form-compact">
... ... @@ -60,7 +60,7 @@
60 60 <el-col :span="8">
61 61 <el-card class="dashboard-card member-overview-card" shadow="hover">
62 62 <div slot="header" class="card-title">
63   - <span><i class="el-icon-user-solid"></i> 会员核心指标</span>
  63 + <span><i class="el-icon-user-solid"></i> 会员资产全景</span>
64 64 </div>
65 65 <div class="member-overview-grid">
66 66 <div class="member-stat-item stat-item-1">
... ... @@ -246,7 +246,7 @@
246 246 <el-col :span="8">
247 247 <el-card class="dashboard-card member-type-card" shadow="hover">
248 248 <div slot="header" class="card-title">
249   - <span><i class="el-icon-pie-chart"></i> 会员类型分布</span>
  249 + <span><i class="el-icon-pie-chart"></i> 会员结构洞察</span>
250 250 </div>
251 251 <div ref="memberTypeChart" class="member-type-chart"></div>
252 252 </el-card>
... ... @@ -256,7 +256,7 @@
256 256 <el-col :span="8">
257 257 <el-card class="dashboard-card member-category-card" shadow="hover">
258 258 <div slot="header" class="card-title">
259   - <span><i class="el-icon-data-analysis"></i> 会员分类统计</span>
  259 + <span><i class="el-icon-data-analysis"></i> 会员价值分层</span>
260 260 </div>
261 261 <div class="member-category-content">
262 262 <div ref="memberCategoryChart" class="member-category-chart"></div>
... ... @@ -294,7 +294,7 @@
294 294 <el-col :span="16">
295 295 <el-card class="dashboard-card" shadow="hover">
296 296 <div slot="header" class="card-title">
297   - <span><i class="el-icon-data-line"></i> 营收与服务产出趋势分析</span>
  297 + <span><i class="el-icon-data-line"></i> 经营效能趋势</span>
298 298 <el-radio-group v-model="trendType" size="mini" style="float: right" @change="handleTrendTypeChange">
299 299 <el-radio-button label="month">按月</el-radio-button>
300 300 <el-radio-button label="day">按天</el-radio-button>
... ... @@ -308,7 +308,7 @@
308 308 <el-col :span="8">
309 309 <el-card class="dashboard-card funnel-card" shadow="hover">
310 310 <div slot="header" class="card-title">
311   - <span><i class="el-icon-filter"></i> 拓客全链路转化漏斗</span>
  311 + <span><i class="el-icon-filter"></i> 客户获取转化链</span>
312 312 </div>
313 313 <div id="tkFunnelChart" class="chart-box"></div>
314 314 <div class="funnel-stats">
... ... @@ -324,7 +324,7 @@
324 324 <!-- 门店排行榜 -->
325 325 <el-col :span="6">
326 326 <el-card class="dashboard-card" shadow="hover">
327   - <div slot="header" class="card-title"><span><i class="el-icon-office-building"></i> 门店业绩琅琊榜</span></div>
  327 + <div slot="header" class="card-title"><span><i class="el-icon-office-building"></i> 门店卓越榜</span></div>
328 328 <div class="rank-list">
329 329 <div class="rank-item" v-for="(item, idx) in storeRanking" :key="idx" @click="openStoreDataAnalysis(item)"
330 330 style="cursor: pointer;">
... ... @@ -339,7 +339,7 @@
339 339 <el-col :span="12">
340 340 <el-card class="dashboard-card" shadow="hover">
341 341 <div slot="header" class="card-title">
342   - <span><i class="el-icon-user"></i> 核心员效贡献矩阵</span>
  342 + <span><i class="el-icon-user"></i> 团队效能矩阵</span>
343 343 <el-button-group style="float: right">
344 344 <el-button size="mini" :type="coachRankType === 'billing' ? 'primary' : ''"
345 345 @click="coachRankType = 'billing'">开单榜</el-button>
... ... @@ -367,7 +367,7 @@
367 367 <!-- 金三角排名 -->
368 368 <el-col :span="6">
369 369 <el-card class="dashboard-card" shadow="hover">
370   - <div slot="header" class="card-title"><span><i class="el-icon-medal"></i> 金三角战队协同榜</span></div>
  370 + <div slot="header" class="card-title"><span><i class="el-icon-medal"></i> 协同作战榜</span></div>
371 371 <div class="rank-list">
372 372 <div class="rank-item" v-for="(item, idx) in goldTriangleRankingTop10" :key="idx">
373 373 <span class="rank-no" :class="'top' + (idx + 1)">{{ idx + 1 }}</span>
... ... @@ -384,14 +384,14 @@
384 384 <!-- 到店频次 -->
385 385 <el-col :span="8">
386 386 <el-card class="dashboard-card" shadow="hover">
387   - <div slot="header" class="card-title"><span><i class="el-icon-view"></i> 会员到店频次分布</span></div>
  387 + <div slot="header" class="card-title"><span><i class="el-icon-view"></i> 客户活跃度分析</span></div>
388 388 <div id="visitFreqChart" class="chart-box"></div>
389 389 </el-card>
390 390 </el-col>
391 391 <!-- 消耗品项TOP10 -->
392 392 <el-col :span="8">
393 393 <el-card class="dashboard-card" shadow="hover">
394   - <div slot="header" class="card-title"><span><i class="el-icon-present"></i> 消耗品项 TOP 10</span></div>
  394 + <div slot="header" class="card-title"><span><i class="el-icon-present"></i> 热门服务品项</span></div>
395 395 <div class="item-rank">
396 396 <div class="item-rank-row" v-for="(item, idx) in consumeItemTop10" :key="idx">
397 397 <span class="item-index">{{ idx + 1 }}</span>
... ... @@ -406,7 +406,7 @@
406 406 <!-- 开单品项TOP10 -->
407 407 <el-col :span="8">
408 408 <el-card class="dashboard-card" shadow="hover">
409   - <div slot="header" class="card-title"><span><i class="el-icon-pie-chart"></i> 开单品项 TOP 10</span></div>
  409 + <div slot="header" class="card-title"><span><i class="el-icon-pie-chart"></i> 热销产品品项</span></div>
410 410 <div class="item-rank">
411 411 <div class="item-rank-row" v-for="(item, idx) in billingItemTop10" :key="idx">
412 412 <span class="item-index">{{ idx + 1 }}</span>
... ... @@ -617,12 +617,12 @@ export default {
617 617 const d = this.kpiData || {}
618 618 const tkCount = (this.tkStatisticsData && this.tkStatisticsData.TkCount) ? this.tkStatisticsData.TkCount : 0
619 619 return [
620   - { tooltip: '本月现金业绩,不包含退款业绩', key: 'billing', label: '本月成交总额', value: this.formatMoney(d.TotalBillingAmount), raw: d.TotalBillingAmount || 0, icon: 'el-icon-wallet', type: 'primary', isMoney: true },
621   - { tooltip: '', key: 'consume', label: '本月消耗金额', value: this.formatMoney(d.TotalConsumeAmount), raw: d.TotalConsumeAmount || 0, icon: 'el-icon-medal', type: 'success', isMoney: true },
622   - { tooltip: '成交总额-退款业绩', key: 'net', label: '完成业绩(净额)', value: this.formatMoney(d.CompletedBillingAmount), raw: d.CompletedBillingAmount || 0, icon: 'el-icon-trophy', type: 'warning', isMoney: true },
623   - { tooltip: '完成业绩(净额)/目标值', key: 'target', label: '开单目标达成', value: d.BillingCompletionRate || 0, raw: d.BillingCompletionRate || 0, icon: 'el-icon-pie-chart', type: 'info', isPercent: true, target: this.formatMoney(d.TargetBillingAmount), targetRaw: d.TargetBillingAmount || 0, status: (d.BillingCompletionRate >= 100) ? 'up' : 'down' },
624   - { tooltip: '', key: 'tk', label: '本月拓客人数', value: tkCount, raw: tkCount, icon: 'el-icon-user-solid', type: 'danger', isPercent: false, target: null, status: null },
625   - { tooltip: '实际退卡金额', key: 'refund', label: '退卡总计', value: this.formatMoney(d.TotalRefundAmount), raw: d.TotalRefundAmount || 0, icon: 'el-icon-warning-outline', type: 'error', isMoney: true }
  620 + { tooltip: '本月现金业绩,不包含退款业绩', key: 'billing', label: '营收核心指标', value: this.formatMoney(d.TotalBillingAmount), raw: d.TotalBillingAmount || 0, icon: 'el-icon-wallet', type: 'primary', isMoney: true },
  621 + { tooltip: '', key: 'consume', label: '服务产出价值', value: this.formatMoney(d.TotalConsumeAmount), raw: d.TotalConsumeAmount || 0, icon: 'el-icon-medal', type: 'success', isMoney: true },
  622 + { tooltip: '成交总额-退款业绩', key: 'net', label: '净收益达成', value: this.formatMoney(d.CompletedBillingAmount), raw: d.CompletedBillingAmount || 0, icon: 'el-icon-trophy', type: 'warning', isMoney: true },
  623 + { tooltip: '完成业绩(净额)/目标值', key: 'target', label: '目标完成度', value: d.BillingCompletionRate || 0, raw: d.BillingCompletionRate || 0, icon: 'el-icon-pie-chart', type: 'info', isPercent: true, target: this.formatMoney(d.TargetBillingAmount), targetRaw: d.TargetBillingAmount || 0, status: (d.BillingCompletionRate >= 100) ? 'up' : 'down' },
  624 + { tooltip: '', key: 'tk', label: '新客增长量', value: tkCount, raw: tkCount, icon: 'el-icon-user-solid', type: 'danger', isPercent: false, target: null, status: null },
  625 + { tooltip: '实际退卡金额', key: 'refund', label: '风险管控指标', value: this.formatMoney(d.TotalRefundAmount), raw: d.TotalRefundAmount || 0, icon: 'el-icon-warning-outline', type: 'error', isMoney: true }
626 626 ]
627 627 },
628 628 // 健康师排行榜数据切换
... ... @@ -713,12 +713,12 @@ export default {
713 713 }
714 714 // 根据类型设置专业的标题名称
715 715 const titleMap = {
716   - billing: '成交数据深度分析',
717   - consume: '消耗数据深度分析',
718   - net: '净业绩完成度分析',
719   - target: '开单目标达成度分析',
720   - tk: '拓客数据深度分析',
721   - refund: '退卡数据深度分析'
  716 + billing: '营收洞察报告',
  717 + consume: '服务价值分析',
  718 + net: '净收益达成分析',
  719 + target: '目标达成诊断',
  720 + tk: '客户增长分析',
  721 + refund: '风险预警分析'
722 722 }
723 723  
724 724 this.drillDialog = {
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqOrderRecords/LqOrderRecordsInfoOutput.cs 0 → 100644
  1 +using System;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqOrderRecords
  4 +{
  5 + /// <summary>
  6 + /// 历史开单记录详情输出
  7 + /// </summary>
  8 + public class LqOrderRecordsInfoOutput
  9 + {
  10 + /// <summary>
  11 + /// 主键ID
  12 + /// </summary>
  13 + public int id { get; set; }
  14 +
  15 + /// <summary>
  16 + /// 开单号
  17 + /// </summary>
  18 + public string orderNo { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 图片名称
  22 + /// </summary>
  23 + public string imageName { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 会员编号
  27 + /// </summary>
  28 + public string memberNo { get; set; }
  29 +
  30 + /// <summary>
  31 + /// 会员手机号
  32 + /// </summary>
  33 + public string memberPhone { get; set; }
  34 +
  35 + /// <summary>
  36 + /// 会员名称
  37 + /// </summary>
  38 + public string memberName { get; set; }
  39 +
  40 + /// <summary>
  41 + /// 备注
  42 + /// </summary>
  43 + public string remarks { get; set; }
  44 +
  45 + /// <summary>
  46 + /// 创建时间
  47 + /// </summary>
  48 + public DateTime? createdAt { get; set; }
  49 +
  50 + /// <summary>
  51 + /// 更新时间
  52 + /// </summary>
  53 + public DateTime? updatedAt { get; set; }
  54 + }
  55 +}
  56 +
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqOrderRecords/LqOrderRecordsListOutput.cs 0 → 100644
  1 +using System;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqOrderRecords
  4 +{
  5 + /// <summary>
  6 + /// 历史开单记录列表输出
  7 + /// </summary>
  8 + public class LqOrderRecordsListOutput
  9 + {
  10 + /// <summary>
  11 + /// 主键ID
  12 + /// </summary>
  13 + public int id { get; set; }
  14 +
  15 + /// <summary>
  16 + /// 开单号
  17 + /// </summary>
  18 + public string orderNo { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 图片名称
  22 + /// </summary>
  23 + public string imageName { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 会员编号
  27 + /// </summary>
  28 + public string memberNo { get; set; }
  29 +
  30 + /// <summary>
  31 + /// 会员手机号
  32 + /// </summary>
  33 + public string memberPhone { get; set; }
  34 +
  35 + /// <summary>
  36 + /// 会员名称
  37 + /// </summary>
  38 + public string memberName { get; set; }
  39 +
  40 + /// <summary>
  41 + /// 备注
  42 + /// </summary>
  43 + public string remarks { get; set; }
  44 +
  45 + /// <summary>
  46 + /// 创建时间
  47 + /// </summary>
  48 + public DateTime? createdAt { get; set; }
  49 +
  50 + /// <summary>
  51 + /// 更新时间
  52 + /// </summary>
  53 + public DateTime? updatedAt { get; set; }
  54 + }
  55 +}
  56 +
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqOrderRecords/LqOrderRecordsListQueryInput.cs 0 → 100644
  1 +using NCC.Common.Filter;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqOrderRecords
  4 +{
  5 + /// <summary>
  6 + /// 历史开单记录列表查询输入
  7 + /// </summary>
  8 + public class LqOrderRecordsListQueryInput : PageInputBase
  9 + {
  10 + /// <summary>
  11 + /// 会员编号
  12 + /// </summary>
  13 + public string memberNo { get; set; }
  14 +
  15 + /// <summary>
  16 + /// 会员手机号
  17 + /// </summary>
  18 + public string memberPhone { get; set; }
  19 + }
  20 +}
  21 +
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_order_records/LqOrderRecordsEntity.cs 0 → 100644
  1 +using NCC.Common.Const;
  2 +using SqlSugar;
  3 +using System;
  4 +
  5 +namespace NCC.Extend.Entitys.lq_order_records
  6 +{
  7 + /// <summary>
  8 + /// 历史开单记录(从老系统迁移)
  9 + /// </summary>
  10 + [SugarTable("lq_order_records")]
  11 + [Tenant(ClaimConst.TENANT_ID)]
  12 + public class LqOrderRecordsEntity
  13 + {
  14 + /// <summary>
  15 + /// 主键ID
  16 + /// </summary>
  17 + [SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsIdentity = true)]
  18 + public int Id { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 开单号
  22 + /// </summary>
  23 + [SugarColumn(ColumnName = "order_no")]
  24 + public string OrderNo { get; set; }
  25 +
  26 + /// <summary>
  27 + /// 图片名称
  28 + /// </summary>
  29 + [SugarColumn(ColumnName = "image_name")]
  30 + public string ImageName { get; set; }
  31 +
  32 + /// <summary>
  33 + /// 会员编号
  34 + /// </summary>
  35 + [SugarColumn(ColumnName = "member_no")]
  36 + public string MemberNo { get; set; }
  37 +
  38 + /// <summary>
  39 + /// 会员手机号
  40 + /// </summary>
  41 + [SugarColumn(ColumnName = "member_phone")]
  42 + public string MemberPhone { get; set; }
  43 +
  44 + /// <summary>
  45 + /// 会员名称
  46 + /// </summary>
  47 + [SugarColumn(ColumnName = "member_name")]
  48 + public string MemberName { get; set; }
  49 +
  50 + /// <summary>
  51 + /// 备注
  52 + /// </summary>
  53 + [SugarColumn(ColumnName = "remarks")]
  54 + public string Remarks { get; set; }
  55 +
  56 + /// <summary>
  57 + /// 创建时间
  58 + /// </summary>
  59 + [SugarColumn(ColumnName = "created_at")]
  60 + public DateTime? CreatedAt { get; set; }
  61 +
  62 + /// <summary>
  63 + /// 更新时间
  64 + /// </summary>
  65 + [SugarColumn(ColumnName = "updated_at")]
  66 + public DateTime? UpdatedAt { get; set; }
  67 + }
  68 +}
  69 +
... ...
netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs
... ... @@ -1192,11 +1192,11 @@ namespace NCC.Extend.LqKdKdjlb
1192 1192 var isMedicalProject = hasMedicalItemInCurrentBilling && await _db.Queryable<LqKdPxmxEntity>().Where(x => x.MemberId == entity.Kdhy && x.IsEffective == StatusEnum.有效.GetHashCode() && x.ItemCategory == "医美" && x.ActualPrice > 0 && x.Px != "61" && x.Glkdbh != id).AnyAsync();
1193 1193 if (isMedicalProject && MedicalItemInCurrentBillingAmount >= 1000)
1194 1194 {
1195   - entity.UpgradeLifeBeauty = "是";
  1195 + entity.UpgradeMedicalBeauty = "是";
1196 1196 }
1197 1197 else
1198 1198 {
1199   - entity.UpgradeLifeBeauty = "否";
  1199 + entity.UpgradeMedicalBeauty = "否";
1200 1200 }
1201 1201 //获取该会员之前开单品项里面是否有科美项目
1202 1202 var isTechProject = hasTechItemInCurrentBilling && await _db.Queryable<LqKdPxmxEntity>().Where(x => x.MemberId == entity.Kdhy && x.IsEffective == StatusEnum.有效.GetHashCode() && x.ItemCategory == "科美" && x.ActualPrice > 0 && x.Px != "61" && x.Glkdbh != id).AnyAsync();
... ... @@ -1212,11 +1212,11 @@ namespace NCC.Extend.LqKdKdjlb
1212 1212 var isLifeProject = hasLifeItemInCurrentBilling && await _db.Queryable<LqKdPxmxEntity>().Where(x => x.MemberId == entity.Kdhy && x.IsEffective == StatusEnum.有效.GetHashCode() && x.ItemCategory == "生美" && x.ActualPrice > 0 && x.Px != "61" && x.Glkdbh != id).AnyAsync();
1213 1213 if (isLifeProject)
1214 1214 {
1215   - entity.UpgradeMedicalBeauty = "是";
  1215 + entity.UpgradeLifeBeauty = "是";
1216 1216 }
1217 1217 else
1218 1218 {
1219   - entity.UpgradeMedicalBeauty = "否";
  1219 + entity.UpgradeLifeBeauty = "否";
1220 1220 }
1221 1221 //计算储扣总金额
1222 1222 entity.DeductAmount = input.lqKdKdjlbDeductList.Sum(x => x.Amount ?? 0);
... ...
netcore/src/Modularity/Extend/NCC.Extend/LqOrderRecordsService.cs 0 → 100644
  1 +using NCC.Common.Core.Manager;
  2 +using NCC.Common.Filter;
  3 +using NCC.Dependency;
  4 +using NCC.DynamicApiController;
  5 +using NCC.FriendlyException;
  6 +using Mapster;
  7 +using Microsoft.AspNetCore.Mvc;
  8 +using SqlSugar;
  9 +using System.Threading.Tasks;
  10 +using NCC.Extend.Entitys.lq_order_records;
  11 +using NCC.Extend.Entitys.Dto.LqOrderRecords;
  12 +
  13 +namespace NCC.Extend
  14 +{
  15 + /// <summary>
  16 + /// 历史开单记录服务(从老系统迁移)
  17 + /// </summary>
  18 + [ApiDescriptionSettings(Tag = "Extend", Name = "LqOrderRecords", Order = 200)]
  19 + [Route("api/Extend/[controller]")]
  20 + public class LqOrderRecordsService : IDynamicApiController, ITransient
  21 + {
  22 + private readonly ISqlSugarRepository<LqOrderRecordsEntity> _lqOrderRecordsRepository;
  23 + private readonly SqlSugarScope _db;
  24 + private readonly IUserManager _userManager;
  25 +
  26 + /// <summary>
  27 + /// 初始化一个<see cref="LqOrderRecordsService"/>类型的新实例
  28 + /// </summary>
  29 + public LqOrderRecordsService(
  30 + ISqlSugarRepository<LqOrderRecordsEntity> lqOrderRecordsRepository,
  31 + IUserManager userManager)
  32 + {
  33 + _lqOrderRecordsRepository = lqOrderRecordsRepository;
  34 + _db = _lqOrderRecordsRepository.Context;
  35 + _userManager = userManager;
  36 + }
  37 +
  38 + /// <summary>
  39 + /// 获取历史开单记录详情
  40 + /// </summary>
  41 + /// <param name="id">主键ID</param>
  42 + /// <returns></returns>
  43 + [HttpGet("{id}")]
  44 + public async Task<dynamic> GetInfo(int id)
  45 + {
  46 + var entity = await _db.Queryable<LqOrderRecordsEntity>().FirstAsync(p => p.Id == id);
  47 + if (entity == null)
  48 + {
  49 + throw NCCException.Oh("未找到该历史开单记录");
  50 + }
  51 + var output = entity.Adapt<LqOrderRecordsInfoOutput>();
  52 + return output;
  53 + }
  54 +
  55 + /// <summary>
  56 + /// 获取历史开单记录列表
  57 + /// </summary>
  58 + /// <param name="input">请求参数</param>
  59 + /// <returns></returns>
  60 + [HttpGet("")]
  61 + public async Task<dynamic> GetList([FromQuery] LqOrderRecordsListQueryInput input)
  62 + {
  63 + var sidx = input.sidx == null ? "id" : input.sidx;
  64 + var sort = input.sort == null ? "desc" : input.sort;
  65 +
  66 + var data = await _db.Queryable<LqOrderRecordsEntity>()
  67 + .WhereIF(!string.IsNullOrEmpty(input.memberNo), p => p.MemberNo.Contains(input.memberNo))
  68 + .WhereIF(!string.IsNullOrEmpty(input.memberPhone), p => p.MemberPhone.Contains(input.memberPhone))
  69 + .Select(it => new LqOrderRecordsListOutput
  70 + {
  71 + id = it.Id,
  72 + orderNo = it.OrderNo,
  73 + imageName = it.ImageName,
  74 + memberNo = it.MemberNo,
  75 + memberPhone = it.MemberPhone,
  76 + memberName = it.MemberName,
  77 + remarks = it.Remarks,
  78 + createdAt = it.CreatedAt,
  79 + updatedAt = it.UpdatedAt
  80 + })
  81 + .MergeTable()
  82 + .OrderBy($"{sidx} {sort}")
  83 + .ToPagedListAsync(input.currentPage, input.pageSize);
  84 +
  85 + return PageResult<LqOrderRecordsListOutput>.SqlSugarPageResult(data);
  86 + }
  87 + }
  88 +}
  89 +
... ...