Commit 24642f43897b7dc1ed2eab73e2337cb5b8926ff3

Authored by 李宇
2 parents c0b6dd95 7a9f4368

Merge branch 'master' of http://39.98.150.180/antissoft/lvqianmeiye_ERP

antis-ncc-admin/src/views/lqKdKdjlb/index.vue
1 1 <template>
2   - <div class="NCC-common-layout">
3   - <div class="NCC-common-layout-center">
4   - <el-row class="NCC-common-search-box" :gutter="16">
5   - <el-form @submit.native.prevent>
6   - <!-- <el-col :span="6">
  2 + <div class="NCC-common-layout">
  3 + <div class="NCC-common-layout-center">
  4 + <el-row class="NCC-common-search-box" :gutter="16">
  5 + <el-form @submit.native.prevent>
  6 + <!-- <el-col :span="6">
7 7 <el-form-item label="开单会员">
8 8 <el-select v-model="query.kdhy" placeholder="开单会员" clearable >
9 9 <el-option v-for="(item, index) in kdhyOptions" :key="index" :label="item.fullName" :value="item.id" />
10 10 </el-select>
11 11 </el-form-item>
12 12 </el-col> -->
13   - <el-col :span="6">
14   - <el-form-item label="开单日期">
15   - <el-date-picker v-model="query.kdrq" type="daterange" value-format="timestamp" format="yyyy-MM-dd" start-placeholder="开始日期" end-placeholder="结束日期">
16   - </el-date-picker>
17   - </el-form-item>
18   - </el-col>
19   - <el-col :span="6">
20   - <el-form-item label="开单会员">
21   - <el-input v-model="query.kdhyc" placeholder="开单会员" clearable />
22   - </el-form-item>
23   - </el-col>
24   - <el-col :span="6">
25   - <el-form-item label="会员手机号">
26   - <el-input v-model="query.kdhysjh" placeholder="会员手机号" clearable />
27   - </el-form-item>
28   - </el-col>
29   -
30   - <template v-if="showAll">
31   -
32   - <el-col :span="6">
33   - <el-form-item label="单据门店">
34   - <el-select v-model="query.djmd" placeholder="单据门店" clearable >
35   - <el-option v-for="(item, index) in djmdOptions" :key="index" :label="item.fullName" :value="item.id" />
36   - </el-select>
37   - </el-form-item>
38   - </el-col>
39   - <el-col :span="6">
40   - <el-form-item label="合作机构">
41   - <el-select v-model="query.hgjg" placeholder="合作机构" clearable >
42   - <el-option v-for="(item, index) in hgjgOptions" :key="index" :label="item.fullName" :value="item.id" />
43   - </el-select>
44   - </el-form-item>
45   - </el-col>
46   - <el-col :span="6">
47   - <el-form-item label="整单业绩">
48   - <el-input v-model="query.zdyj" placeholder="整单业绩" clearable />
49   - </el-form-item>
50   - </el-col>
51   - <el-col :span="6">
52   - <el-form-item label="实付业绩">
53   - <el-input v-model="query.sfyj" placeholder="实付业绩" clearable />
54   - </el-form-item>
55   - </el-col>
56   - <el-col :span="6">
57   - <el-form-item label="欠款">
58   - <el-input v-model="query.qk" placeholder="欠款" clearable />
59   - </el-form-item>
60   - </el-col>
61   - <el-col :span="6">
62   - <el-form-item label="付款方式">
63   - <el-select v-model="query.fkfs" placeholder="付款方式" clearable >
64   - <el-option v-for="(item, index) in fkfsOptions" :key="index" :label="item.fullName" :value="item.id" />
65   - </el-select>
66   - </el-form-item>
67   - </el-col>
68   - <el-col :span="6">
69   - <el-form-item label="付款医院">
70   - <el-select v-model="query.fkyy" placeholder="付款医院" clearable >
71   - <el-option v-for="(item, index) in fkyyOptions" :key="index" :label="item.fullName" :value="item.id" />
72   - </el-select>
73   - </el-form-item>
74   - </el-col>
  13 + <el-col :span="6">
  14 + <el-form-item label="开单日期">
  15 + <el-date-picker v-model="query.kdrq" type="daterange" value-format="timestamp" format="yyyy-MM-dd"
  16 + start-placeholder="开始日期" end-placeholder="结束日期">
  17 + </el-date-picker>
  18 + </el-form-item>
  19 + </el-col>
  20 + <el-col :span="6">
  21 + <el-form-item label="开单会员">
  22 + <el-input v-model="query.kdhyc" placeholder="开单会员" clearable />
  23 + </el-form-item>
  24 + </el-col>
  25 + <el-col :span="6">
  26 + <el-form-item label="会员手机号">
  27 + <el-input v-model="query.kdhysjh" placeholder="会员手机号" clearable />
  28 + </el-form-item>
  29 + </el-col>
75 30  
76   - <el-col :span="6">
77   - <el-form-item label="是否首开订单">
78   - <el-select v-model="query.sfskdd" placeholder="是否首开订单" >
79   - <el-option v-for="(item, index) in sfskddOptions" :key="index" :label="item.fullName" :value="item.id" />
80   - </el-select>
81   - </el-form-item>
82   - </el-col>
  31 + <template v-if="showAll">
83 32  
  33 + <el-col :span="6">
  34 + <el-form-item label="单据门店">
  35 + <el-select v-model="query.djmd" placeholder="单据门店" clearable>
  36 + <el-option v-for="(item, index) in djmdOptions" :key="index" :label="item.fullName"
  37 + :value="item.id" />
  38 + </el-select>
  39 + </el-form-item>
  40 + </el-col>
  41 + <el-col :span="6">
  42 + <el-form-item label="合作机构">
  43 + <el-select v-model="query.hgjg" placeholder="合作机构" clearable>
  44 + <el-option v-for="(item, index) in hgjgOptions" :key="index" :label="item.fullName"
  45 + :value="item.id" />
  46 + </el-select>
  47 + </el-form-item>
  48 + </el-col>
  49 + <el-col :span="6">
  50 + <el-form-item label="整单业绩">
  51 + <el-input v-model="query.zdyj" placeholder="整单业绩" clearable />
  52 + </el-form-item>
  53 + </el-col>
  54 + <el-col :span="6">
  55 + <el-form-item label="实付业绩">
  56 + <el-input v-model="query.sfyj" placeholder="实付业绩" clearable />
  57 + </el-form-item>
  58 + </el-col>
  59 + <el-col :span="6">
  60 + <el-form-item label="欠款">
  61 + <el-input v-model="query.qk" placeholder="欠款" clearable />
  62 + </el-form-item>
  63 + </el-col>
  64 + <el-col :span="6">
  65 + <el-form-item label="付款方式">
  66 + <el-select v-model="query.fkfs" placeholder="付款方式" clearable>
  67 + <el-option v-for="(item, index) in fkfsOptions" :key="index" :label="item.fullName"
  68 + :value="item.id" />
  69 + </el-select>
  70 + </el-form-item>
  71 + </el-col>
  72 + <el-col :span="6">
  73 + <el-form-item label="付款医院">
  74 + <el-select v-model="query.fkyy" placeholder="付款医院" clearable>
  75 + <el-option v-for="(item, index) in fkyyOptions" :key="index" :label="item.fullName"
  76 + :value="item.id" />
  77 + </el-select>
  78 + </el-form-item>
  79 + </el-col>
84 80  
85   - </template>
86   - <el-col :span="6">
87   - <el-form-item>
88   - <el-button type="primary" icon="el-icon-search" @click="search()">查询</el-button>
89   - <el-button icon="el-icon-refresh-right" @click="reset()">重置</el-button>
90   - <el-button type="text" icon="el-icon-arrow-down" @click="showAll=true" v-if="!showAll">展开</el-button>
91   - <el-button type="text" icon="el-icon-arrow-up" @click="showAll=false" v-else>收起</el-button>
92   - </el-form-item>
93   - </el-col>
94   - </el-form>
95   - </el-row>
96   - <div class="NCC-common-layout-main NCC-flex-main">
97   - <div class="NCC-common-head">
98   - <div>
99   - <!-- <el-button type="primary" icon="el-icon-plus" @click="addOrUpdateHandle()">新增</el-button>
100   - <el-button type="success" icon="el-icon-user" @click="openMemberCreateDialog()">建档</el-button>
101   - <el-button type="text" icon="el-icon-download" @click="exportData()">导出</el-button> -->
102   - <el-button type="text" icon="el-icon-delete" @click="handleBatchRemoveDel()">批量删除</el-button>
103   - </div>
104   - <div class="NCC-common-head-right">
105   - <el-tooltip effect="dark" content="刷新" placement="top">
106   - <el-link icon="icon-ym icon-ym-Refresh NCC-common-head-icon" :underline="false" @click="reset()" />
107   - </el-tooltip>
108   - <screenfull isContainer />
109   - </div>
110   - </div>
111   - <NCC-table
112   - v-loading="listLoading"
113   - :data="list"
114   - has-c
115   - @selection-change="handleSelectionChange"
116   - :header-cell-style="{ background: '#f5f7fa', color: '#606266' }"
117   - >
118   - <!-- 开单编号 -->
119   - <el-table-column label="开单编号" width="180" align="center" v-if="isshow">
120   - <template slot-scope="scope">
121   - <div class="order-info">
122   - <i class="el-icon-document order-icon"></i>
123   - <span class="text-nowrap">{{ scope.row.id || '无' }}</span>
124   - </div>
125   - </template>
126   - </el-table-column>
127   -
128   - <!-- 开单会员 -->
129   - <!-- <el-table-column label="开单会员" width="100" align="center">
  81 + <el-col :span="6">
  82 + <el-form-item label="是否首开订单">
  83 + <el-select v-model="query.sfskdd" placeholder="是否首开订单">
  84 + <el-option v-for="(item, index) in sfskddOptions" :key="index" :label="item.fullName"
  85 + :value="item.id" />
  86 + </el-select>
  87 + </el-form-item>
  88 + </el-col>
  89 +
  90 +
  91 + </template>
  92 + <el-col :span="6">
  93 + <el-form-item>
  94 + <el-button type="primary" icon="el-icon-search" @click="search()">查询</el-button>
  95 + <el-button icon="el-icon-refresh-right" @click="reset()">重置</el-button>
  96 + <el-button type="text" icon="el-icon-arrow-down" @click="showAll = true" v-if="!showAll">展开</el-button>
  97 + <el-button type="text" icon="el-icon-arrow-up" @click="showAll = false" v-else>收起</el-button>
  98 + </el-form-item>
  99 + </el-col>
  100 + </el-form>
  101 + </el-row>
  102 + <div class="NCC-common-layout-main NCC-flex-main">
  103 + <div class="NCC-common-head">
  104 + <div>
  105 + <el-button type="primary" icon="el-icon-plus" @click="addOrUpdateHandle()">新增</el-button>
  106 + <el-button type="success" icon="el-icon-user" @click="openMemberCreateDialog()">建档</el-button>
  107 + <el-button type="text" icon="el-icon-download" @click="exportData()">导出</el-button>
  108 + <el-button type="text" icon="el-icon-delete" @click="handleBatchRemoveDel()">批量删除</el-button>
  109 + </div>
  110 + <div class="NCC-common-head-right">
  111 + <el-tooltip effect="dark" content="刷新" placement="top">
  112 + <el-link icon="icon-ym icon-ym-Refresh NCC-common-head-icon" :underline="false" @click="reset()" />
  113 + </el-tooltip>
  114 + <screenfull isContainer />
  115 + </div>
  116 + </div>
  117 + <NCC-table v-loading="listLoading" :data="list" has-c @selection-change="handleSelectionChange"
  118 + :header-cell-style="{ background: '#f5f7fa', color: '#606266' }">
  119 + <!-- 开单编号 -->
  120 + <el-table-column label="开单编号" width="180" align="center" v-if="isshow">
  121 + <template slot-scope="scope">
  122 + <div class="order-info">
  123 + <i class="el-icon-document order-icon"></i>
  124 + <span class="text-nowrap">{{ scope.row.id || '无' }}</span>
  125 + </div>
  126 + </template>
  127 + </el-table-column>
  128 +
  129 + <!-- 开单会员 -->
  130 + <!-- <el-table-column label="开单会员" width="100" align="center">
130 131 <template slot-scope="scope">
131 132 <div class="member-info">
132 133 <i class="el-icon-user member-icon"></i>
... ... @@ -134,234 +135,240 @@
134 135 </div>
135 136 </template>
136 137 </el-table-column> -->
137   -
138   - <!-- 开单会员名称 -->
139   - <el-table-column label="开单会员" width="100" align="center">
140   - <template slot-scope="scope">
141   - <div class="member-name">
142   - <i class="el-icon-user-solid member-name-icon"></i>
143   - <span class="text-nowrap">{{ scope.row.kdhyc || '无' }}</span>
144   - </div>
145   - </template>
146   - </el-table-column>
147   -
148   - <!-- 会员手机号 -->
149   - <el-table-column label="会员手机号" width="120" align="center">
150   - <template slot-scope="scope">
151   - <div class="phone-info">
152   - <i class="el-icon-phone phone-icon"></i>
153   - <span class="text-nowrap">{{ scope.row.kdhysjh || '无' }}</span>
154   - </div>
155   - </template>
156   - </el-table-column>
157   -
158   - <!-- 单据门店 -->
159   - <el-table-column label="单据门店" width="120" align="center">
160   - <template slot-scope="scope">
161   - <div class="store-info">
162   - <i class="el-icon-office-building store-icon"></i>
163   - <span class="text-nowrap">{{ scope.row.djmd | dynamicText(djmdOptions) || '无' }}</span>
164   - </div>
165   - </template>
166   - </el-table-column>
167   -
168   - <!-- 金三角 -->
169   - <el-table-column label="金三角" width="120" align="center">
170   - <template slot-scope="scope">
171   - <div class="jsj-info">
172   - <i class="el-icon-star-on jsj-icon"></i>
173   - <span class="text-nowrap">{{ scope.row.jsj | dynamicText(jsjOptions) || '无' }}</span>
174   - </div>
175   - </template>
176   - </el-table-column>
177   -
178   - <!-- 开单日期 -->
179   - <el-table-column prop="kdrq" label="开单日期" width="160" align="center" :formatter="ncc.tableDateFormat" />
180   -
181   -
182   - <!-- 顾客类型 -->
183   - <el-table-column label="顾客类型" width="120" align="center">
184   - <template slot-scope="scope">
185   - <div class="customer-type-info">
186   - <i class="el-icon-user customer-type-icon"></i>
187   - <span class="text-nowrap">{{ scope.row.gjlx }}</span>
188   - </div>
189   - </template>
190   - </el-table-column>
191   - <!-- 整单业绩 -->
192   - <el-table-column label="整单业绩" width="120" align="center">
193   - <template slot-scope="scope">
194   - <div class="amount-info">
195   - <i class="el-icon-money amount-icon"></i>
196   - <span class="text-nowrap">{{ scope.row.zdyj || '无' }}</span>
197   - </div>
198   - </template>
199   - </el-table-column>
200   -
201   - <!-- 实付业绩 -->
202   - <el-table-column label="实付业绩" width="120" align="center">
203   - <template slot-scope="scope">
204   - <div class="paid-amount-info">
205   - <i class="el-icon-coin paid-amount-icon"></i>
206   - <span class="text-nowrap">{{ scope.row.sfyj || '无' }}</span>
207   - </div>
208   - </template>
209   - </el-table-column>
210   -
211   - <!-- 欠款 -->
212   - <el-table-column label="欠款" width="100" align="center">
213   - <template slot-scope="scope">
214   - <div class="debt-info">
215   - <i class="el-icon-warning debt-icon"></i>
216   - <span class="text-nowrap">{{ scope.row.qk || '无' }}</span>
217   - </div>
218   - </template>
219   - </el-table-column>
220   -
221   - <!-- 储扣方式 -->
222   - <!-- <el-table-column label="储扣方式" width="120" align="center">
223   - <template slot-scope="scope">
224   - <div class="storage-info">
225   - <i class="el-icon-coin storage-icon"></i>
226   - <span class="text-nowrap">{{ scope.row.ckfs | dynamicText(ckfsOptions) || '无' }}</span>
227   - </div>
228   - </template>
229   - </el-table-column> -->
230   -
231   - <!-- 储扣明细 -->
232   - <el-table-column label="储扣明细" width="120" align="center" v-if="isshow">
233   - <template slot-scope="scope">
234   - <div class="storage-detail-info">
235   - <i class="el-icon-document storage-detail-icon"></i>
236   - <span class="text-nowrap">{{ scope.row.ckmx || '无' }}</span>
237   - </div>
238   - </template>
239   - </el-table-column>
240   -
241   - <!-- 付款方式 -->
242   - <el-table-column label="付款方式" width="120" align="center">
243   - <template slot-scope="scope">
244   - <div class="payment-info">
245   - <i class="el-icon-credit-card payment-icon"></i>
246   - <span class="text-nowrap">{{ scope.row.fkfs | dynamicText(fkfsOptions) || '无' }}</span>
247   - </div>
248   - </template>
249   - </el-table-column>
250   -
251   - <!-- 付款医院 -->
252   - <el-table-column label="付款医院" width="120" align="center">
253   - <template slot-scope="scope">
254   - <div class="hospital-info">
255   - <i class="el-icon-office-building hospital-icon"></i>
256   - <span class="text-nowrap">{{ scope.row.fkyy | dynamicText(fkyyOptions) || '无' }}</span>
257   - </div>
258   - </template>
259   - </el-table-column>
260   - <!-- 合作机构 -->
261   - <el-table-column label="合作机构" width="120" align="center">
262   - <template slot-scope="scope">
263   - <div class="cooperation-info">
264   - <i class="el-icon-office-building cooperation-icon"></i>
265   - <span class="text-nowrap">{{ scope.row.hgjg | dynamicText(hgjgOptions) || '无' }}</span>
266   - </div>
267   - </template>
268   - </el-table-column>
269   -
270   - <!-- 付款判断 -->
271   - <el-table-column label="付款判断" width="120" align="center" v-if="isshow">
272   - <template slot-scope="scope">
273   - <div class="payment-judge-info">
274   - <i class="el-icon-check payment-judge-icon"></i>
275   - <span class="text-nowrap">{{ scope.row.fkpd || '无' }}</span>
276   - </div>
277   - </template>
278   - </el-table-column>
279   -
280   - <!-- 客户来源 -->
281   - <el-table-column label="客户来源" width="120" align="center" v-if="isshow">
282   - <template slot-scope="scope">
283   - <div class="source-info">
284   - <i class="el-icon-connection source-icon"></i>
285   - <span class="text-nowrap">{{ scope.row.khly | dynamicText(khlyOptions) || '无' }}</span>
286   - </div>
287   - </template>
288   - </el-table-column>
289   -
290   - <!-- 推荐人 -->
291   - <el-table-column label="推荐人" width="100" align="center" v-if="isshow">
292   - <template slot-scope="scope">
293   - <div class="referrer-info">
294   - <i class="el-icon-user referrer-icon"></i>
295   - <span class="text-nowrap">{{ scope.row.tjr || '无' }}</span>
296   - </div>
297   - </template>
298   - </el-table-column>
299   -
300   - <!-- 是否首开订单 -->
301   - <el-table-column label="是否首开订单" width="140" align="center">
302   - <template slot-scope="scope">
303   - <div class="first-order-info">
304   - <i class="el-icon-star-on first-order-icon"></i>
305   - <span class="text-nowrap">{{ scope.row.sfskdd | dynamicText(sfskddOptions) || '无' }}</span>
306   - </div>
307   - </template>
308   - </el-table-column>
309   -
310   - <!-- 简介 -->
311   - <el-table-column label="简介" width="120" align="center" v-if="isshow">
312   - <template slot-scope="scope">
313   - <div class="intro-info">
314   - <i class="el-icon-document intro-icon"></i>
315   - <span class="text-nowrap">{{ scope.row.jj || '无' }}</span>
316   - </div>
317   - </template>
318   - </el-table-column>
319   -
320   - <!-- 备注 -->
321   - <el-table-column label="备注" min-width="150" show-overflow-tooltip v-if="isshow">
322   - <template slot-scope="scope">
323   - <div class="remark-info">
324   - <i class="el-icon-document remark-icon"></i>
325   - <span class="text-nowrap">{{ scope.row.bz || '无' }}</span>
326   - </div>
327   - </template>
328   - </el-table-column>
329   -
330   - <!-- 健康师业绩 -->
331   - <el-table-column label="健康师业绩" width="130" align="center" v-if="isshow">
332   - <template slot-scope="scope">
333   - <div class="jks-amount-info">
334   - <i class="el-icon-medicine-box jks-amount-icon"></i>
335   - <span class="text-nowrap">{{ scope.row.jksyj || '无' }}</span>
336   - </div>
337   - </template>
338   - </el-table-column>
339   -
340   - <!-- 科技部老师业绩 -->
341   - <el-table-column label="科技部老师业绩" width="150" align="center" v-if="isshow">
342   - <template slot-scope="scope">
343   - <div class="kjb-amount-info">
344   - <i class="el-icon-cpu kjb-amount-icon"></i>
345   - <span class="text-nowrap">{{ scope.row.kjblsyj || '无' }}</span>
346   - </div>
347   - </template>
348   - </el-table-column>
349   -
350   - <!-- 品项信息 -->
351   - <el-table-column label="品项信息" width="120" align="center" v-if="isshow">
352   - <template slot-scope="scope">
353   - <div class="product-info">
354   - <i class="el-icon-goods product-icon"></i>
355   - <span class="text-nowrap">{{ scope.row.pxxx || '无' }}</span>
356   - </div>
357   - </template>
358   - </el-table-column>
359   -
360   - <!-- 操作 -->
361   - <el-table-column label="操作" width="160" align="left" fixed="right">
362   - <template slot-scope="scope">
363   - <div class="action-buttons">
364   - <!-- <el-button
  138 +
  139 + <!-- 开单会员名称 -->
  140 + <el-table-column label="开单会员" width="100" align="center">
  141 + <template slot-scope="scope">
  142 + <div class="member-name">
  143 + <i class="el-icon-user-solid member-name-icon"></i>
  144 + <span class="text-nowrap">{{ scope.row.kdhyc || '无' }}</span>
  145 + </div>
  146 + </template>
  147 + </el-table-column>
  148 +
  149 + <!-- 会员手机号 -->
  150 + <el-table-column label="会员手机号" width="120" align="center">
  151 + <template slot-scope="scope">
  152 + <div class="phone-info">
  153 + <i class="el-icon-phone phone-icon"></i>
  154 + <span class="text-nowrap">{{ scope.row.kdhysjh || '无' }}</span>
  155 + </div>
  156 + </template>
  157 + </el-table-column>
  158 +
  159 + <!-- 单据门店 -->
  160 + <el-table-column label="单据门店" width="120" align="center">
  161 + <template slot-scope="scope">
  162 + <div class="store-info">
  163 + <i class="el-icon-office-building store-icon"></i>
  164 + <span class="text-nowrap">{{ scope.row.djmd | dynamicText(djmdOptions) || '无' }}</span>
  165 + </div>
  166 + </template>
  167 + </el-table-column>
  168 +
  169 + <!-- 金三角 -->
  170 + <el-table-column label="金三角" width="120" align="center">
  171 + <template slot-scope="scope">
  172 + <div class="jsj-info">
  173 + <i class="el-icon-star-on jsj-icon"></i>
  174 + <span class="text-nowrap">{{ scope.row.jsj | dynamicText(jsjOptions) || '无' }}</span>
  175 + </div>
  176 + </template>
  177 + </el-table-column>
  178 +
  179 + <!-- 开单日期 -->
  180 + <el-table-column label="开单日期" width="120" align="center">
  181 + <template slot-scope="scope">
  182 + <div class="date-info">
  183 + <i class="el-icon-date date-icon"></i>
  184 + <span class="text-nowrap">{{ formatDate(scope.row.kdrq) }}</span>
  185 + </div>
  186 + </template>
  187 + </el-table-column>
  188 +
  189 + <!-- 顾客类型 -->
  190 + <el-table-column label="顾客类型" width="120" align="center">
  191 + <template slot-scope="scope">
  192 + <div class="customer-type-info">
  193 + <i class="el-icon-user customer-type-icon"></i>
  194 + <span class="text-nowrap">{{ scope.row.gjlx }}</span>
  195 + </div>
  196 + </template>
  197 + </el-table-column>
  198 + <!-- 整单业绩 -->
  199 + <el-table-column label="整单业绩" width="120" align="center">
  200 + <template slot-scope="scope">
  201 + <div class="amount-info">
  202 + <i class="el-icon-money amount-icon"></i>
  203 + <span class="text-nowrap">{{ scope.row.zdyj || '无' }}</span>
  204 + </div>
  205 + </template>
  206 + </el-table-column>
  207 +
  208 + <!-- 实付业绩 -->
  209 + <el-table-column label="实付业绩" width="120" align="center">
  210 + <template slot-scope="scope">
  211 + <div class="paid-amount-info">
  212 + <i class="el-icon-coin paid-amount-icon"></i>
  213 + <span class="text-nowrap">{{ scope.row.sfyj || '无' }}</span>
  214 + </div>
  215 + </template>
  216 + </el-table-column>
  217 +
  218 + <!-- 欠款 -->
  219 + <el-table-column label="欠款" width="100" align="center">
  220 + <template slot-scope="scope">
  221 + <div class="debt-info">
  222 + <i class="el-icon-warning debt-icon"></i>
  223 + <span class="text-nowrap">{{ scope.row.qk || '无' }}</span>
  224 + </div>
  225 + </template>
  226 + </el-table-column>
  227 +
  228 + <!-- 储扣方式 -->
  229 + <el-table-column label="储扣方式" width="120" align="center">
  230 + <template slot-scope="scope">
  231 + <div class="storage-info">
  232 + <i class="el-icon-coin storage-icon"></i>
  233 + <span class="text-nowrap">{{ scope.row.ckfs | dynamicText(ckfsOptions) || '无' }}</span>
  234 + </div>
  235 + </template>
  236 + </el-table-column>
  237 +
  238 + <!-- 储扣明细 -->
  239 + <el-table-column label="储扣明细" width="120" align="center" v-if="isshow">
  240 + <template slot-scope="scope">
  241 + <div class="storage-detail-info">
  242 + <i class="el-icon-document storage-detail-icon"></i>
  243 + <span class="text-nowrap">{{ scope.row.ckmx || '无' }}</span>
  244 + </div>
  245 + </template>
  246 + </el-table-column>
  247 +
  248 + <!-- 付款方式 -->
  249 + <el-table-column label="付款方式" width="120" align="center">
  250 + <template slot-scope="scope">
  251 + <div class="payment-info">
  252 + <i class="el-icon-credit-card payment-icon"></i>
  253 + <span class="text-nowrap">{{ scope.row.fkfs | dynamicText(fkfsOptions) || '无' }}</span>
  254 + </div>
  255 + </template>
  256 + </el-table-column>
  257 +
  258 + <!-- 付款医院 -->
  259 + <el-table-column label="付款医院" width="120" align="center">
  260 + <template slot-scope="scope">
  261 + <div class="hospital-info">
  262 + <i class="el-icon-office-building hospital-icon"></i>
  263 + <span class="text-nowrap">{{ scope.row.fkyy | dynamicText(fkyyOptions) || '无' }}</span>
  264 + </div>
  265 + </template>
  266 + </el-table-column>
  267 + <!-- 合作机构 -->
  268 + <el-table-column label="合作机构" width="120" align="center">
  269 + <template slot-scope="scope">
  270 + <div class="cooperation-info">
  271 + <i class="el-icon-office-building cooperation-icon"></i>
  272 + <span class="text-nowrap">{{ scope.row.hgjg | dynamicText(hgjgOptions) || '无' }}</span>
  273 + </div>
  274 + </template>
  275 + </el-table-column>
  276 +
  277 + <!-- 付款判断 -->
  278 + <el-table-column label="付款判断" width="120" align="center" v-if="isshow">
  279 + <template slot-scope="scope">
  280 + <div class="payment-judge-info">
  281 + <i class="el-icon-check payment-judge-icon"></i>
  282 + <span class="text-nowrap">{{ scope.row.fkpd || '无' }}</span>
  283 + </div>
  284 + </template>
  285 + </el-table-column>
  286 +
  287 + <!-- 客户来源 -->
  288 + <el-table-column label="客户来源" width="120" align="center" v-if="isshow">
  289 + <template slot-scope="scope">
  290 + <div class="source-info">
  291 + <i class="el-icon-connection source-icon"></i>
  292 + <span class="text-nowrap">{{ scope.row.khly | dynamicText(khlyOptions) || '无' }}</span>
  293 + </div>
  294 + </template>
  295 + </el-table-column>
  296 +
  297 + <!-- 推荐人 -->
  298 + <el-table-column label="推荐人" width="100" align="center" v-if="isshow">
  299 + <template slot-scope="scope">
  300 + <div class="referrer-info">
  301 + <i class="el-icon-user referrer-icon"></i>
  302 + <span class="text-nowrap">{{ scope.row.tjr || '无' }}</span>
  303 + </div>
  304 + </template>
  305 + </el-table-column>
  306 +
  307 + <!-- 是否首开订单 -->
  308 + <el-table-column label="是否首开订单" width="140" align="center">
  309 + <template slot-scope="scope">
  310 + <div class="first-order-info">
  311 + <i class="el-icon-star-on first-order-icon"></i>
  312 + <span class="text-nowrap">{{ scope.row.sfskdd | dynamicText(sfskddOptions) || '无' }}</span>
  313 + </div>
  314 + </template>
  315 + </el-table-column>
  316 +
  317 + <!-- 简介 -->
  318 + <el-table-column label="简介" width="120" align="center" v-if="isshow">
  319 + <template slot-scope="scope">
  320 + <div class="intro-info">
  321 + <i class="el-icon-document intro-icon"></i>
  322 + <span class="text-nowrap">{{ scope.row.jj || '无' }}</span>
  323 + </div>
  324 + </template>
  325 + </el-table-column>
  326 +
  327 + <!-- 备注 -->
  328 + <el-table-column label="备注" show-overflow-tooltip>
  329 + <template slot-scope="scope">
  330 + <div class="remark-info">
  331 + <i class="el-icon-document remark-icon"></i>
  332 + <span class="text-nowrap">{{ scope.row.bz || '无' }}</span>
  333 + </div>
  334 + </template>
  335 + </el-table-column>
  336 +
  337 + <!-- 健康师业绩 -->
  338 + <el-table-column label="健康师业绩" width="130" align="center" v-if="isshow">
  339 + <template slot-scope="scope">
  340 + <div class="jks-amount-info">
  341 + <i class="el-icon-medicine-box jks-amount-icon"></i>
  342 + <span class="text-nowrap">{{ scope.row.jksyj || '无' }}</span>
  343 + </div>
  344 + </template>
  345 + </el-table-column>
  346 +
  347 + <!-- 科技部老师业绩 -->
  348 + <el-table-column label="科技部老师业绩" width="150" align="center" v-if="isshow">
  349 + <template slot-scope="scope">
  350 + <div class="kjb-amount-info">
  351 + <i class="el-icon-cpu kjb-amount-icon"></i>
  352 + <span class="text-nowrap">{{ scope.row.kjblsyj || '无' }}</span>
  353 + </div>
  354 + </template>
  355 + </el-table-column>
  356 +
  357 + <!-- 品项信息 -->
  358 + <el-table-column label="品项信息" width="120" align="center" v-if="isshow">
  359 + <template slot-scope="scope">
  360 + <div class="product-info">
  361 + <i class="el-icon-goods product-icon"></i>
  362 + <span class="text-nowrap">{{ scope.row.pxxx || '无' }}</span>
  363 + </div>
  364 + </template>
  365 + </el-table-column>
  366 +
  367 + <!-- 操作 -->
  368 + <el-table-column label="操作" width="160" align="left" fixed="right">
  369 + <template slot-scope="scope">
  370 + <div class="action-buttons">
  371 + <!-- <el-button
365 372 type="text"
366 373 icon="el-icon-edit"
367 374 @click="addOrUpdateHandle(scope.row.id)"
... ... @@ -369,14 +376,10 @@
369 376 >
370 377 编辑
371 378 </el-button> -->
372   - <el-button
373   - type="text"
374   - @click="detailHandle(scope.row.id)"
375   - class="edit-btn"
376   - >
377   - 详情
378   - </el-button>
379   - <!-- <el-button
  379 + <el-button type="text" @click="detailHandle(scope.row.id)" class="edit-btn">
  380 + 详情
  381 + </el-button>
  382 + <!-- <el-button
380 383 type="text"
381 384 icon="el-icon-delete"
382 385 @click="handleDel(scope.row.id)"
... ... @@ -384,304 +387,302 @@
384 387 >
385 388 删除
386 389 </el-button> -->
387   - </div>
388   - </template>
389   - </el-table-column>
390   - </NCC-table>
391   - <pagination :total="total" :page.sync="listQuery.currentPage" :limit.sync="listQuery.pageSize" @pagination="initData" />
392   - </div>
393   - </div>
394   - <NCC-Form v-if="formVisible" ref="NCCForm" @refresh="refresh" />
395   - <ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download" />
  390 + </div>
  391 + </template>
  392 + </el-table-column>
  393 + </NCC-table>
  394 + <pagination :total="total" :page.sync="listQuery.currentPage" :limit.sync="listQuery.pageSize"
  395 + @pagination="initData" />
  396 + </div>
  397 + </div>
  398 + <NCC-Form v-if="formVisible" ref="NCCForm" @refresh="refresh" />
  399 + <ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download" />
396 400 <LqKdKdjlbDetail ref="detailDialog" />
397   - <MemberCreateDialog
398   - :visible.sync="memberCreateVisible"
399   - @success="handleMemberCreateSuccess"
400   - />
401   - </div>
  401 + <MemberCreateDialog :visible.sync="memberCreateVisible" @success="handleMemberCreateSuccess" />
  402 + </div>
402 403 </template>
403 404 <script>
404   - import request from '@/utils/request'
405   - import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
406   - import NCCForm from './Form'
407   - import ExportBox from './ExportBox'
408   - import LqKdKdjlbDetail from './detail'
409   - import MemberCreateDialog from './MemberCreateDialog'
410   - import { previewDataInterface } from '@/api/systemData/dataInterface'
411   - export default {
412   - components: { NCCForm, ExportBox, MemberCreateDialog, LqKdKdjlbDetail },
413   - data() {
414   - return {
415   - isshow: false,
416   - showAll: false,
417   - query: {
418   - id:undefined,
419   - kdhy:undefined,
420   - kdhyc:undefined,
421   - kdhysjh:undefined,
422   - djmd:undefined,
423   - jsj:undefined,
424   - kdrq:undefined,
425   - gjlx:undefined,
426   - hgjg:undefined,
427   - zdyj:undefined,
428   - sfyj:undefined,
429   - qk:undefined,
430   - ckfs:undefined,
431   - ckmx:undefined,
432   - fkfs:undefined,
433   - fkyy:undefined,
434   - fkpd:undefined,
435   - khly:undefined,
436   - tjr:undefined,
437   - sfskdd:undefined,
438   - jj:undefined,
439   - bz:undefined,
440   - jksyj:undefined,
441   - kjblsyj:undefined,
442   - pxxx:undefined,
443   - },
444   - list: [],
445   - listLoading: true,
446   - multipleSelection: [], total: 0,
447   - listQuery: {
448   - currentPage: 1,
449   - pageSize: 20,
450   - sort: "desc",
451   - sidx: "",
452   - },
453   - formVisible: false,
454   - exportBoxVisible: false,
455   - memberCreateVisible: false,
456   - columnList: [
457   - { prop: 'id', label: '开单编号' },
458   - { prop: 'kdhy', label: '开单会员' },
459   - { prop: 'kdhyc', label: '开单会员名称' },
460   - { prop: 'kdhysjh', label: '会员手机号' },
461   - { prop: 'djmd', label: '单据门店' },
462   - { prop: 'jsj', label: '金三角' },
463   - { prop: 'kdrq', label: '开单日期' },
464   - { prop: 'gjlx', label: '顾客类型' },
465   - { prop: 'hgjg', label: '合作机构' },
466   - { prop: 'zdyj', label: '整单业绩' },
467   - { prop: 'sfyj', label: '实付业绩' },
468   - { prop: 'qk', label: '欠款' },
469   - { prop: 'ckfs', label: '储扣方式' },
470   - { prop: 'ckmx', label: '储扣明细' },
471   - { prop: 'fkfs', label: '付款方式' },
472   - { prop: 'fkyy', label: '付款医院' },
473   - { prop: 'fkpd', label: '付款判断' },
474   - { prop: 'khly', label: '客户来源' },
475   - { prop: 'tjr', label: '推荐人' },
476   - { prop: 'sfskdd', label: '是否首开订单' },
477   - { prop: 'jj', label: '简介' },
478   - { prop: 'bz', label: '备注' },
479   - { prop: 'jksyj', label: '健康师业绩' },
480   - { prop: 'kjblsyj', label: '科技部老师业绩' },
481   - { prop: 'pxxx', label: '品项信息' },
482   - ],
483   - kdhyOptions : [],
484   - djmdOptions : [],
485   - jsjOptions : [],
486   - hgjgOptions : [],
487   - ckfsOptions:[{"fullName":"储值卡","id":"储值卡"},{"fullName":"扣项","id":"扣项"},{"fullName":"套餐","id":"套餐"}],
488   - fkfsOptions:[{"fullName":"现金","id":"现金"},{"fullName":"微信","id":"微信"},{"fullName":"支付宝","id":"支付宝"},{"fullName":"银行卡","id":"银行卡"},{"fullName":"合作","id":"合作"},{"fullName":"医院","id":"医院"}],
489   - fkyyOptions : [],
490   - khlyOptions:[{"fullName":"自然到店","id":"自然到店"},{"fullName":"会员推广","id":"会员推广"},{"fullName":"网络推广","id":"网络推广"}],
491   - sfskddOptions:[{"fullName":"是","id":"是"},{"fullName":"否","id":"否"}],
492   - }
493   - },
494   - computed: {},
495   - created() {
496   - this.initData()
497   - // this.getkdhyOptions();
498   - this.getdjmdOptions();
499   - this.getjsjOptions();
500   - this.gethgjgOptions();
501   - this.getfkyyOptions();
502   - },
503   - methods: {
504   - detailHandle(id){
505   - this.$refs.detailDialog.init(id)
506   - },
507   - getkdhyOptions(){
508   - previewDataInterface('730998109110273285').then(res => {
509   - this.kdhyOptions = res.data
510   - });
511   - },
512   - getdjmdOptions(){
513   - previewDataInterface('730960205902251269').then(res => {
514   - this.djmdOptions = res.data
515   - });
516   - },
517   - getjsjOptions(){
518   - previewDataInterface('733894897408410885').then(res => {
519   - this.jsjOptions = res.data
520   - });
521   - },
522   - gethgjgOptions(){
523   - previewDataInterface('733896629660157189').then(res => {
524   - this.hgjgOptions = res.data
525   - });
526   - },
527   - getfkyyOptions(){
528   - previewDataInterface('733898797075137797').then(res => {
529   - this.fkyyOptions = res.data
530   - });
531   - },
532   - initData() {
533   - this.listLoading = true;
534   - let _query = {
535   - ...this.listQuery,
536   - ...this.query
537   - };
538   - let query = {}
539   - for (let key in _query) {
540   - if (Array.isArray(_query[key])) {
541   - query[key] = _query[key].join()
542   - } else {
543   - query[key] = _query[key]
544   - }
545   - }
546   - request({
547   - url: `/api/Extend/LqKdKdjlb`,
548   - method: 'GET',
549   - data: query
550   - }).then(res => {
551   - this.list = res.data.list
552   - this.total = res.data.pagination.total
553   - this.listLoading = false
554   - })
555   - },
556   - handleDel(id) {
557   - this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
558   - type: 'warning'
559   - }).then(() => {
560   - request({
561   - url: `/api/Extend/LqKdKdjlb/${id}`,
562   - method: 'DELETE'
563   - }).then(res => {
564   - this.$message({
565   - type: 'success',
566   - message: res.msg,
567   - onClose: () => {
568   - this.initData()
569   - }
570   - });
571   - })
572   - }).catch(() => {
573   - });
574   - },
575   - handleSelectionChange(val) {
576   - const res = val.map(item => item.id)
577   - this.multipleSelection = res
578   - },
579   - handleBatchRemoveDel() {
580   - if (!this.multipleSelection.length) {
581   - this.$message({
582   - type: 'error',
583   - message: '请选择一条数据',
584   - duration: 1500,
585   - })
586   - return
587   - }
588   - const ids = this.multipleSelection
589   - this.$confirm('您确定要删除这些数据吗, 是否继续?', '提示', {
590   - type: 'warning'
591   - }).then(() => {
592   - request({
593   - url: `/api/Extend/LqKdKdjlb/batchRemove`,
594   - method: 'POST',
595   - data: ids ,
596   - }).then(res => {
597   - this.$message({
598   - type: 'success',
599   - message: res.msg,
600   - onClose: () => {
601   - this.initData()
602   - }
603   - });
604   - })
605   - }).catch(() => { })
606   - },
607   - addOrUpdateHandle(id, isDetail) {
608   - this.formVisible = true
609   - this.$nextTick(() => {
610   - this.$refs.NCCForm.init(id, isDetail)
611   - })
612   - },
613   - exportData() {
614   - this.exportBoxVisible = true
615   - this.$nextTick(() => {
616   - this.$refs.ExportBox.init(this.columnList)
617   - })
618   - },
619   - download(data) {
620   - let query = { ...data, ...this.listQuery, ...this.query }
621   - request({
622   - url: `/api/Extend/LqKdKdjlb/Actions/Export`,
623   - method: 'GET',
624   - data: query
625   - }).then(res => {
626   - if (!res.data.url) return
627   - window.location.href = this.define.comUrl + res.data.url
628   - this.$refs.ExportBox.visible = false
629   - this.exportBoxVisible = false
630   - })
631   - },
632   - search() {
633   - this.listQuery = {
634   - currentPage: 1,
635   - pageSize: 20,
636   - sort: "desc",
637   - sidx: "",
638   - }
639   - this.initData()
640   - },
641   - refresh(isrRefresh) {
642   - this.formVisible = false
643   - if (isrRefresh) this.reset()
644   - },
645   - reset() {
646   - for (let key in this.query) {
647   - this.query[key] = undefined
648   - }
649   - this.listQuery = {
650   - currentPage: 1,
651   - pageSize: 20,
652   - sort: "desc",
653   - sidx: "",
654   - }
655   - this.initData()
656   - },
657   - // 格式化日期
658   - formatDate(date) {
659   - if (!date) return '无'
660   - const d = new Date(date)
661   - if (isNaN(d.getTime())) return '无'
662   - return d.toLocaleDateString('zh-CN', {
663   - year: 'numeric',
664   - month: '2-digit',
665   - day: '2-digit'
666   - })
667   - },
668   - // 打开会员建档弹窗
669   - openMemberCreateDialog() {
670   - this.memberCreateVisible = true
671   - },
672   - // 处理会员建档成功
673   - handleMemberCreateSuccess(memberData) {
674   - console.log('会员建档成功:', memberData)
675   - // 刷新会员列表
676   - this.getkdhyOptions()
677   - // 自动选择新创建的会员
678   - if (memberData && memberData.id) {
679   - this.query.kdhy = memberData.id
680   - this.$message.success('会员建档成功,已自动选择该会员')
681   - }
  405 +import request from '@/utils/request'
  406 +import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
  407 +import NCCForm from './Form'
  408 +import ExportBox from './ExportBox'
  409 +import LqKdKdjlbDetail from './detail'
  410 +import MemberCreateDialog from './MemberCreateDialog'
  411 +import { previewDataInterface } from '@/api/systemData/dataInterface'
  412 +export default {
  413 + components: { NCCForm, ExportBox, MemberCreateDialog, LqKdKdjlbDetail },
  414 + data() {
  415 + return {
  416 + isshow: false,
  417 + showAll: false,
  418 + query: {
  419 + id: undefined,
  420 + kdhy: undefined,
  421 + kdhyc: undefined,
  422 + kdhysjh: undefined,
  423 + djmd: undefined,
  424 + jsj: undefined,
  425 + kdrq: undefined,
  426 + gjlx: undefined,
  427 + hgjg: undefined,
  428 + zdyj: undefined,
  429 + sfyj: undefined,
  430 + qk: undefined,
  431 + ckfs: undefined,
  432 + ckmx: undefined,
  433 + fkfs: undefined,
  434 + fkyy: undefined,
  435 + fkpd: undefined,
  436 + khly: undefined,
  437 + tjr: undefined,
  438 + sfskdd: undefined,
  439 + jj: undefined,
  440 + bz: undefined,
  441 + jksyj: undefined,
  442 + kjblsyj: undefined,
  443 + pxxx: undefined,
  444 + },
  445 + list: [],
  446 + listLoading: true,
  447 + multipleSelection: [], total: 0,
  448 + listQuery: {
  449 + currentPage: 1,
  450 + pageSize: 20,
  451 + sort: "desc",
  452 + sidx: "",
  453 + },
  454 + formVisible: false,
  455 + exportBoxVisible: false,
  456 + memberCreateVisible: false,
  457 + columnList: [
  458 + { prop: 'id', label: '开单编号' },
  459 + { prop: 'kdhy', label: '开单会员' },
  460 + { prop: 'kdhyc', label: '开单会员名称' },
  461 + { prop: 'kdhysjh', label: '会员手机号' },
  462 + { prop: 'djmd', label: '单据门店' },
  463 + { prop: 'jsj', label: '金三角' },
  464 + { prop: 'kdrq', label: '开单日期' },
  465 + { prop: 'gjlx', label: '顾客类型' },
  466 + { prop: 'hgjg', label: '合作机构' },
  467 + { prop: 'zdyj', label: '整单业绩' },
  468 + { prop: 'sfyj', label: '实付业绩' },
  469 + { prop: 'qk', label: '欠款' },
  470 + { prop: 'ckfs', label: '储扣方式' },
  471 + { prop: 'ckmx', label: '储扣明细' },
  472 + { prop: 'fkfs', label: '付款方式' },
  473 + { prop: 'fkyy', label: '付款医院' },
  474 + { prop: 'fkpd', label: '付款判断' },
  475 + { prop: 'khly', label: '客户来源' },
  476 + { prop: 'tjr', label: '推荐人' },
  477 + { prop: 'sfskdd', label: '是否首开订单' },
  478 + { prop: 'jj', label: '简介' },
  479 + { prop: 'bz', label: '备注' },
  480 + { prop: 'jksyj', label: '健康师业绩' },
  481 + { prop: 'kjblsyj', label: '科技部老师业绩' },
  482 + { prop: 'pxxx', label: '品项信息' },
  483 + ],
  484 + kdhyOptions: [],
  485 + djmdOptions: [],
  486 + jsjOptions: [],
  487 + hgjgOptions: [],
  488 + ckfsOptions: [{ "fullName": "储值卡", "id": "储值卡" }, { "fullName": "扣项", "id": "扣项" }, { "fullName": "套餐", "id": "套餐" }],
  489 + fkfsOptions: [{ "fullName": "现金", "id": "现金" }, { "fullName": "微信", "id": "微信" }, { "fullName": "支付宝", "id": "支付宝" }, { "fullName": "银行卡", "id": "银行卡" }, { "fullName": "合作", "id": "合作" }, { "fullName": "医院", "id": "医院" }],
  490 + fkyyOptions: [],
  491 + khlyOptions: [{ "fullName": "自然到店", "id": "自然到店" }, { "fullName": "会员推广", "id": "会员推广" }, { "fullName": "网络推广", "id": "网络推广" }],
  492 + sfskddOptions: [{ "fullName": "是", "id": "是" }, { "fullName": "否", "id": "否" }],
  493 + }
  494 + },
  495 + computed: {},
  496 + created() {
  497 + this.initData()
  498 + // this.getkdhyOptions();
  499 + this.getdjmdOptions();
  500 + this.getjsjOptions();
  501 + this.gethgjgOptions();
  502 + this.getfkyyOptions();
  503 + },
  504 + methods: {
  505 + detailHandle(id) {
  506 + this.$refs.detailDialog.init(id)
  507 + },
  508 + getkdhyOptions() {
  509 + previewDataInterface('730998109110273285').then(res => {
  510 + this.kdhyOptions = res.data
  511 + });
  512 + },
  513 + getdjmdOptions() {
  514 + previewDataInterface('730960205902251269').then(res => {
  515 + this.djmdOptions = res.data
  516 + });
  517 + },
  518 + getjsjOptions() {
  519 + previewDataInterface('733894897408410885').then(res => {
  520 + this.jsjOptions = res.data
  521 + });
  522 + },
  523 + gethgjgOptions() {
  524 + previewDataInterface('733896629660157189').then(res => {
  525 + this.hgjgOptions = res.data
  526 + });
  527 + },
  528 + getfkyyOptions() {
  529 + previewDataInterface('733898797075137797').then(res => {
  530 + this.fkyyOptions = res.data
  531 + });
  532 + },
  533 + initData() {
  534 + this.listLoading = true;
  535 + let _query = {
  536 + ...this.listQuery,
  537 + ...this.query
  538 + };
  539 + let query = {}
  540 + for (let key in _query) {
  541 + if (Array.isArray(_query[key])) {
  542 + query[key] = _query[key].join()
  543 + } else {
  544 + query[key] = _query[key]
  545 + }
  546 + }
  547 + request({
  548 + url: `/api/Extend/LqKdKdjlb`,
  549 + method: 'GET',
  550 + data: query
  551 + }).then(res => {
  552 + this.list = res.data.list
  553 + this.total = res.data.pagination.total
  554 + this.listLoading = false
  555 + })
  556 + },
  557 + handleDel(id) {
  558 + this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
  559 + type: 'warning'
  560 + }).then(() => {
  561 + request({
  562 + url: `/api/Extend/LqKdKdjlb/${id}`,
  563 + method: 'DELETE'
  564 + }).then(res => {
  565 + this.$message({
  566 + type: 'success',
  567 + message: res.msg,
  568 + onClose: () => {
  569 + this.initData()
  570 + }
  571 + });
  572 + })
  573 + }).catch(() => {
  574 + });
  575 + },
  576 + handleSelectionChange(val) {
  577 + const res = val.map(item => item.id)
  578 + this.multipleSelection = res
  579 + },
  580 + handleBatchRemoveDel() {
  581 + if (!this.multipleSelection.length) {
  582 + this.$message({
  583 + type: 'error',
  584 + message: '请选择一条数据',
  585 + duration: 1500,
  586 + })
  587 + return
  588 + }
  589 + const ids = this.multipleSelection
  590 + this.$confirm('您确定要删除这些数据吗, 是否继续?', '提示', {
  591 + type: 'warning'
  592 + }).then(() => {
  593 + request({
  594 + url: `/api/Extend/LqKdKdjlb/batchRemove`,
  595 + method: 'POST',
  596 + data: ids,
  597 + }).then(res => {
  598 + this.$message({
  599 + type: 'success',
  600 + message: res.msg,
  601 + onClose: () => {
  602 + this.initData()
682 603 }
683   - }
  604 + });
  605 + })
  606 + }).catch(() => { })
  607 + },
  608 + addOrUpdateHandle(id, isDetail) {
  609 + this.formVisible = true
  610 + this.$nextTick(() => {
  611 + this.$refs.NCCForm.init(id, isDetail)
  612 + })
  613 + },
  614 + exportData() {
  615 + this.exportBoxVisible = true
  616 + this.$nextTick(() => {
  617 + this.$refs.ExportBox.init(this.columnList)
  618 + })
  619 + },
  620 + download(data) {
  621 + let query = { ...data, ...this.listQuery, ...this.query }
  622 + request({
  623 + url: `/api/Extend/LqKdKdjlb/Actions/Export`,
  624 + method: 'GET',
  625 + data: query
  626 + }).then(res => {
  627 + if (!res.data.url) return
  628 + window.location.href = this.define.comUrl + res.data.url
  629 + this.$refs.ExportBox.visible = false
  630 + this.exportBoxVisible = false
  631 + })
  632 + },
  633 + search() {
  634 + this.listQuery = {
  635 + currentPage: 1,
  636 + pageSize: 20,
  637 + sort: "desc",
  638 + sidx: "",
  639 + }
  640 + this.initData()
  641 + },
  642 + refresh(isrRefresh) {
  643 + this.formVisible = false
  644 + if (isrRefresh) this.reset()
  645 + },
  646 + reset() {
  647 + for (let key in this.query) {
  648 + this.query[key] = undefined
  649 + }
  650 + this.listQuery = {
  651 + currentPage: 1,
  652 + pageSize: 20,
  653 + sort: "desc",
  654 + sidx: "",
  655 + }
  656 + this.initData()
  657 + },
  658 + // 格式化日期
  659 + formatDate(date) {
  660 + if (!date) return '无'
  661 + const d = new Date(date)
  662 + if (isNaN(d.getTime())) return '无'
  663 + return d.toLocaleDateString('zh-CN', {
  664 + year: 'numeric',
  665 + month: '2-digit',
  666 + day: '2-digit'
  667 + })
  668 + },
  669 + // 打开会员建档弹窗
  670 + openMemberCreateDialog() {
  671 + this.memberCreateVisible = true
  672 + },
  673 + // 处理会员建档成功
  674 + handleMemberCreateSuccess(memberData) {
  675 + console.log('会员建档成功:', memberData)
  676 + // 刷新会员列表
  677 + this.getkdhyOptions()
  678 + // 自动选择新创建的会员
  679 + if (memberData && memberData.id) {
  680 + this.query.kdhy = memberData.id
  681 + this.$message.success('会员建档成功,已自动选择该会员')
  682 + }
684 683 }
  684 + }
  685 +}
685 686 </script>
686 687  
687 688 <style lang="scss" scoped>
... ... @@ -699,12 +700,12 @@
699 700 align-items: center;
700 701 justify-content: center;
701 702 gap: 6px;
702   -
  703 +
703 704 .order-icon {
704 705 color: #409EFF;
705 706 font-size: 16px;
706 707 }
707   -
  708 +
708 709 span {
709 710 font-weight: 500;
710 711 color: #303133;
... ... @@ -712,17 +713,19 @@
712 713 }
713 714  
714 715 // 会员信息样式
715   -.member-info, .member-name {
  716 +.member-info,
  717 +.member-name {
716 718 display: flex;
717 719 align-items: center;
718 720 justify-content: center;
719 721 gap: 6px;
720   -
721   - .member-icon, .member-name-icon {
  722 +
  723 + .member-icon,
  724 + .member-name-icon {
722 725 color: #67C23A;
723 726 font-size: 16px;
724 727 }
725   -
  728 +
726 729 span {
727 730 font-weight: 500;
728 731 color: #303133;
... ... @@ -735,12 +738,12 @@
735 738 align-items: center;
736 739 justify-content: center;
737 740 gap: 6px;
738   -
  741 +
739 742 .phone-icon {
740 743 color: #409EFF;
741 744 font-size: 16px;
742 745 }
743   -
  746 +
744 747 span {
745 748 font-weight: 500;
746 749 color: #303133;
... ... @@ -753,12 +756,12 @@
753 756 align-items: center;
754 757 justify-content: center;
755 758 gap: 6px;
756   -
  759 +
757 760 .store-icon {
758 761 color: #67C23A;
759 762 font-size: 16px;
760 763 }
761   -
  764 +
762 765 span {
763 766 font-weight: 500;
764 767 color: #303133;
... ... @@ -771,12 +774,12 @@
771 774 align-items: center;
772 775 justify-content: center;
773 776 gap: 6px;
774   -
  777 +
775 778 .jsj-icon {
776 779 color: #E6A23C;
777 780 font-size: 16px;
778 781 }
779   -
  782 +
780 783 span {
781 784 font-weight: 500;
782 785 color: #303133;
... ... @@ -789,12 +792,12 @@
789 792 align-items: center;
790 793 justify-content: center;
791 794 gap: 6px;
792   -
  795 +
793 796 .date-icon {
794 797 color: #909399;
795 798 font-size: 16px;
796 799 }
797   -
  800 +
798 801 span {
799 802 font-weight: 500;
800 803 color: #303133;
... ... @@ -802,17 +805,23 @@
802 805 }
803 806  
804 807 // 金额相关样式
805   -.amount-info, .paid-amount-info, .jks-amount-info, .kjb-amount-info {
  808 +.amount-info,
  809 +.paid-amount-info,
  810 +.jks-amount-info,
  811 +.kjb-amount-info {
806 812 display: flex;
807 813 align-items: center;
808 814 justify-content: center;
809 815 gap: 6px;
810   -
811   - .amount-icon, .paid-amount-icon, .jks-amount-icon, .kjb-amount-icon {
  816 +
  817 + .amount-icon,
  818 + .paid-amount-icon,
  819 + .jks-amount-icon,
  820 + .kjb-amount-icon {
812 821 color: #409EFF;
813 822 font-size: 16px;
814 823 }
815   -
  824 +
816 825 span {
817 826 font-weight: 600;
818 827 color: #409EFF;
... ... @@ -825,12 +834,12 @@
825 834 align-items: center;
826 835 justify-content: center;
827 836 gap: 6px;
828   -
  837 +
829 838 .debt-icon {
830 839 color: #F56C6C;
831 840 font-size: 16px;
832 841 }
833   -
  842 +
834 843 span {
835 844 font-weight: 500;
836 845 color: #F56C6C;
... ... @@ -843,12 +852,12 @@
843 852 align-items: center;
844 853 justify-content: center;
845 854 gap: 6px;
846   -
  855 +
847 856 .payment-icon {
848 857 color: #67C23A;
849 858 font-size: 16px;
850 859 }
851   -
  860 +
852 861 span {
853 862 font-weight: 500;
854 863 color: #303133;
... ... @@ -861,12 +870,12 @@
861 870 align-items: center;
862 871 justify-content: center;
863 872 gap: 6px;
864   -
  873 +
865 874 .source-icon {
866 875 color: #909399;
867 876 font-size: 16px;
868 877 }
869   -
  878 +
870 879 span {
871 880 font-weight: 500;
872 881 color: #303133;
... ... @@ -879,12 +888,12 @@
879 888 align-items: center;
880 889 justify-content: center;
881 890 gap: 6px;
882   -
  891 +
883 892 .referrer-icon {
884 893 color: #67C23A;
885 894 font-size: 16px;
886 895 }
887   -
  896 +
888 897 span {
889 898 font-weight: 500;
890 899 color: #303133;
... ... @@ -896,12 +905,12 @@
896 905 display: flex;
897 906 align-items: center;
898 907 gap: 6px;
899   -
  908 +
900 909 .remark-icon {
901 910 color: #909399;
902 911 font-size: 14px;
903 912 }
904   -
  913 +
905 914 span {
906 915 color: #606266;
907 916 }
... ... @@ -913,12 +922,12 @@
913 922 align-items: center;
914 923 justify-content: center;
915 924 gap: 6px;
916   -
  925 +
917 926 .customer-type-icon {
918 927 color: #67C23A;
919 928 font-size: 16px;
920 929 }
921   -
  930 +
922 931 span {
923 932 font-weight: 500;
924 933 color: #303133;
... ... @@ -931,12 +940,12 @@
931 940 align-items: center;
932 941 justify-content: center;
933 942 gap: 6px;
934   -
  943 +
935 944 .cooperation-icon {
936 945 color: #909399;
937 946 font-size: 16px;
938 947 }
939   -
  948 +
940 949 span {
941 950 font-weight: 500;
942 951 color: #303133;
... ... @@ -949,12 +958,12 @@
949 958 align-items: center;
950 959 justify-content: center;
951 960 gap: 6px;
952   -
  961 +
953 962 .storage-icon {
954 963 color: #E6A23C;
955 964 font-size: 16px;
956 965 }
957   -
  966 +
958 967 span {
959 968 font-weight: 500;
960 969 color: #303133;
... ... @@ -967,12 +976,12 @@
967 976 align-items: center;
968 977 justify-content: center;
969 978 gap: 6px;
970   -
  979 +
971 980 .storage-detail-icon {
972 981 color: #909399;
973 982 font-size: 16px;
974 983 }
975   -
  984 +
976 985 span {
977 986 font-weight: 500;
978 987 color: #303133;
... ... @@ -985,12 +994,12 @@
985 994 align-items: center;
986 995 justify-content: center;
987 996 gap: 6px;
988   -
  997 +
989 998 .hospital-icon {
990 999 color: #67C23A;
991 1000 font-size: 16px;
992 1001 }
993   -
  1002 +
994 1003 span {
995 1004 font-weight: 500;
996 1005 color: #303133;
... ... @@ -1003,12 +1012,12 @@
1003 1012 align-items: center;
1004 1013 justify-content: center;
1005 1014 gap: 6px;
1006   -
  1015 +
1007 1016 .payment-judge-icon {
1008 1017 color: #409EFF;
1009 1018 font-size: 16px;
1010 1019 }
1011   -
  1020 +
1012 1021 span {
1013 1022 font-weight: 500;
1014 1023 color: #303133;
... ... @@ -1021,12 +1030,12 @@
1021 1030 align-items: center;
1022 1031 justify-content: center;
1023 1032 gap: 6px;
1024   -
  1033 +
1025 1034 .first-order-icon {
1026 1035 color: #E6A23C;
1027 1036 font-size: 16px;
1028 1037 }
1029   -
  1038 +
1030 1039 span {
1031 1040 font-weight: 500;
1032 1041 color: #303133;
... ... @@ -1039,12 +1048,12 @@
1039 1048 align-items: center;
1040 1049 justify-content: center;
1041 1050 gap: 6px;
1042   -
  1051 +
1043 1052 .intro-icon {
1044 1053 color: #909399;
1045 1054 font-size: 16px;
1046 1055 }
1047   -
  1056 +
1048 1057 span {
1049 1058 font-weight: 500;
1050 1059 color: #303133;
... ... @@ -1057,12 +1066,12 @@
1057 1066 align-items: center;
1058 1067 justify-content: center;
1059 1068 gap: 6px;
1060   -
  1069 +
1061 1070 .product-icon {
1062 1071 color: #67C23A;
1063 1072 font-size: 16px;
1064 1073 }
1065   -
  1074 +
1066 1075 span {
1067 1076 font-weight: 500;
1068 1077 color: #303133;
... ... @@ -1074,22 +1083,21 @@
1074 1083 display: flex;
1075 1084 align-items: center;
1076 1085 gap: 8px;
1077   -
  1086 +
1078 1087 .edit-btn {
1079 1088 color: #409EFF;
1080   -
  1089 +
1081 1090 &:hover {
1082 1091 color: #66b1ff;
1083 1092 }
1084 1093 }
1085   -
  1094 +
1086 1095 .delete-btn {
1087 1096 color: #F56C6C;
1088   -
  1097 +
1089 1098 &:hover {
1090 1099 color: #f78989;
1091 1100 }
1092 1101 }
1093 1102 }
1094   -
1095 1103 </style>
1096 1104 \ No newline at end of file
... ...
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListOutput.cs
1 1 using System;
  2 +using System.Collections.Generic;
2 3  
3 4 namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
4 5 {
... ... @@ -156,5 +157,10 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
156 157 /// 开单用户名称
157 158 /// </summary>
158 159 public string CreateUserName { get; set; }
  160 +
  161 + /// <summary>
  162 + /// 开单品项明细列表
  163 + /// </summary>
  164 + public List<LqKdPxmxInfoOutput> ItemDetails { get; set; }
159 165 }
160 166 }
... ...
netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs
... ... @@ -20,15 +20,17 @@ using NCC.Extend.Entitys.Dto.Common;
20 20 using NCC.Extend.Entitys.Dto.LqKdDeductinfo;
21 21 using NCC.Extend.Entitys.Dto.LqKdKdjlb;
22 22 using NCC.Extend.Entitys.Enum;
  23 +using NCC.Extend.Entitys.lq_hytk_hytk;
23 24 using NCC.Extend.Entitys.lq_hytk_mx;
24 25 using NCC.Extend.Entitys.lq_jinsanjiao_user;
25 26 using NCC.Extend.Entitys.lq_kd_deductinfo;
  27 +using NCC.Extend.Entitys.lq_xh_hyhk;
  28 +using NCC.Extend.Entitys.lq_xh_pxmx;
26 29 using NCC.Extend.Entitys.lq_kd_jksyj;
27 30 using NCC.Extend.Entitys.lq_kd_kdjlb;
28 31 using NCC.Extend.Entitys.lq_kd_kjbsyj;
29 32 using NCC.Extend.Entitys.lq_kd_pxmx;
30 33 using NCC.Extend.Entitys.lq_khxx;
31   -using NCC.Extend.Entitys.lq_xh_pxmx;
32 34 using NCC.Extend.Entitys.lq_xmzl;
33 35 using NCC.Extend.Interfaces.LqKdKdjlb;
34 36 using NCC.Extend.Utils;
... ... @@ -254,6 +256,48 @@ namespace NCC.Extend.LqKdKdjlb
254 256 .MergeTable()
255 257 .OrderBy(sidx + " " + input.sort)
256 258 .ToPagedListAsync(input.currentPage, input.pageSize);
  259 +
  260 + // 获取当前页的开单记录ID列表
  261 + var billingIds = data.list.Select(x => x.id).ToList();
  262 +
  263 + // 批量查询品项明细
  264 + var itemDetails = new List<LqKdPxmxInfoOutput>();
  265 + if (billingIds.Any())
  266 + {
  267 + itemDetails = await _db.Queryable<LqKdPxmxEntity>()
  268 + .Where(x => billingIds.Contains(x.Glkdbh) && x.IsEffective == StatusEnum.有效.GetHashCode())
  269 + .Select(x => new LqKdPxmxInfoOutput
  270 + {
  271 + id = x.Id,
  272 + glkdbh = x.Glkdbh,
  273 + px = x.Px,
  274 + pxmc = x.Pxmc,
  275 + pxjg = x.Pxjg,
  276 + projectNumber = x.ProjectNumber,
  277 + isEnabled = x.IsEnabled,
  278 + sourceType = x.SourceType,
  279 + memberId = x.MemberId,
  280 + createTime = x.CreateTIme,
  281 + totalPrice = x.TotalPrice,
  282 + actualPrice = x.ActualPrice,
  283 + remark = x.Remark,
  284 + isEffective = x.IsEffective
  285 + })
  286 + .ToListAsync();
  287 + }
  288 +
  289 + // 按开单ID分组品项明细
  290 + var itemDetailsGrouped = itemDetails.GroupBy(x => x.glkdbh)
  291 + .ToDictionary(g => g.Key, g => g.ToList());
  292 +
  293 + // 为每个开单记录分配品项明细
  294 + foreach (var item in data.list)
  295 + {
  296 + item.ItemDetails = itemDetailsGrouped.ContainsKey(item.id)
  297 + ? itemDetailsGrouped[item.id]
  298 + : new List<LqKdPxmxInfoOutput>();
  299 + }
  300 +
257 301 return PageResult<LqKdKdjlbListOutput>.SqlSugarPageResult(data);
258 302 }
259 303 #endregion
... ... @@ -841,6 +885,22 @@ namespace NCC.Extend.LqKdKdjlb
841 885 {
842 886 //开启事务
843 887 _db.BeginTran();
  888 + // 检查是否有消耗记录
  889 + var billingItemIds = await _db.Queryable<LqKdPxmxEntity>().Where(p => ids.Contains(p.Glkdbh)).Select(p => p.Id).ToListAsync();
  890 + if (billingItemIds.Any())
  891 + {
  892 + var consumeRecords = await _db.Queryable<LqXhPxmxEntity>().Where(x => x.IsEffective == StatusEnum.有效.GetHashCode()).Where(x => billingItemIds.Contains(x.BillingItemId)).AnyAsync();
  893 + if (consumeRecords)
  894 + {
  895 + throw NCCException.Oh("选中的开单记录中有已消耗的记录,不能删除");
  896 + }
  897 + }
  898 + // 检查是否有储扣记录
  899 + var deductRecords = await _db.Queryable<LqKdDeductinfoEntity>().Where(x => ids.Contains(x.BillingId) && x.IsEffective == StatusEnum.有效.GetHashCode()).AnyAsync();
  900 + if (deductRecords)
  901 + {
  902 + throw NCCException.Oh("选中的开单记录中有储扣记录,不能删除");
  903 + }
844 904 //批量删除开单记录表
845 905 await _db.Deleteable<LqKdKdjlbEntity>().In(d => d.Id, ids).ExecuteCommandAsync();
846 906  
... ... @@ -1038,6 +1098,26 @@ namespace NCC.Extend.LqKdKdjlb
1038 1098 {
1039 1099 //开启事务
1040 1100 _db.BeginTran();
  1101 + //先查询开单品项明细
  1102 + var lqPxmxList = _db.Queryable<LqKdPxmxEntity>().Where(x => x.Glkdbh == id).ToList();
  1103 + //判断是否有对应的消耗记录
  1104 + var consumeRecords = await _db.Queryable<LqXhPxmxEntity>().Where(x => lqPxmxList.Select(y => y.Id).Contains(x.BillingItemId)).AnyAsync();
  1105 + if (consumeRecords)
  1106 + {
  1107 + throw NCCException.Oh("选中的开单记录中有已消耗的记录,不能删除");
  1108 + }
  1109 + //判断是否有对应的退卡记录
  1110 + var refundRecords = await _db.Queryable<LqHytkMxEntity>().Where(x => lqPxmxList.Select(y => y.Id).Contains(x.BillingItemId)).AnyAsync();
  1111 + if (refundRecords)
  1112 + {
  1113 + throw NCCException.Oh("选中的开单记录中有退卡记录,不能删除");
  1114 + }
  1115 + //判断是否有对应的储扣记录
  1116 + var deductRecords = await _db.Queryable<LqKdDeductinfoEntity>().Where(x => lqPxmxList.Select(y => y.Id).Contains(x.DeductId)).AnyAsync();
  1117 + if (deductRecords)
  1118 + {
  1119 + throw NCCException.Oh("选中的开单记录中有储扣记录,不能删除");
  1120 + }
1041 1121  
1042 1122 //删除开单记录表记录
1043 1123 await _db.Deleteable<LqKdKdjlbEntity>().Where(d => d.Id == id).ExecuteCommandAsync();
... ... @@ -1713,5 +1793,7 @@ namespace NCC.Extend.LqKdKdjlb
1713 1793 }
1714 1794 }
1715 1795 #endregion
  1796 +
  1797 +
1716 1798 }
1717 1799 }
... ...
netcore/src/Modularity/Extend/NCC.Extend/LqStatisticsService.cs
... ... @@ -1464,7 +1464,7 @@ namespace NCC.Extend.LqStatistics
1464 1464 SUM(CAST(jksyj.jksyj AS DECIMAL(18,2))) as order_performance
1465 1465 FROM lq_kd_jksyj jksyj
1466 1466 INNER JOIN lq_kd_pxmx pxmx ON jksyj.F_kdpxid = pxmx.F_Id AND pxmx.F_IsEffective = 1
1467   - INNER JOIN lq_kd_kdjlb kd ON jksyj.glkdbh COLLATE utf8mb4_general_ci = kd.F_Id COLLATE utf8mb4_general_ci
  1467 + INNER JOIN lq_kd_kdjlb kd ON jksyj.glkdbh = CONVERT(kd.F_Id USING utf8mb4)
1468 1468 WHERE jksyj.yjsj IS NOT NULL
1469 1469 AND jksyj.jksyj IS NOT NULL
1470 1470 AND jksyj.jksyj != ''
... ... @@ -2529,7 +2529,7 @@ namespace NCC.Extend.LqStatistics
2529 2529 SUM(CASE WHEN kd.sfskdd = '是' THEN COALESCE(kd.zdyj, 0) ELSE 0 END) as F_FirstOrderPerformance,
2530 2530 SUM(CASE WHEN kd.sfskdd = '否' THEN COALESCE(kd.zdyj, 0) ELSE 0 END) as F_UpgradeOrderPerformance
2531 2531 FROM lq_kd_kdjlb kd
2532   - LEFT JOIN lq_mdxx md ON kd.djmd COLLATE utf8mb4_general_ci = md.F_Id COLLATE utf8mb4_general_ci
  2532 + LEFT JOIN lq_mdxx md ON CONVERT(kd.djmd USING utf8mb4) = md.F_Id
2533 2533 WHERE kd.F_IsEffective = 1
2534 2534 AND DATE_FORMAT(kd.kdrq, '%Y%m') = @statisticsMonth
2535 2535 GROUP BY kd.djmd, md.dm
... ... @@ -2539,7 +2539,7 @@ namespace NCC.Extend.LqStatistics
2539 2539 kd.djmd as F_StoreId,
2540 2540 COUNT(pxmx.F_ProjectNumber) as F_ItemQuantity
2541 2541 FROM lq_kd_kdjlb kd
2542   - LEFT JOIN lq_kd_pxmx pxmx ON kd.F_Id COLLATE utf8mb4_general_ci = pxmx.glkdbh COLLATE utf8mb4_general_ci AND pxmx.F_IsEffective = 1
  2542 + LEFT JOIN lq_kd_pxmx pxmx ON CONVERT(kd.F_Id USING utf8mb4) = pxmx.glkdbh AND pxmx.F_IsEffective = 1
2543 2543 WHERE kd.F_IsEffective = 1
2544 2544 AND DATE_FORMAT(kd.kdrq, '%Y%m') = @statisticsMonth
2545 2545 GROUP BY kd.djmd
... ...