sale-client 3.4.206 → 3.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc +5 -5
- package/package.json +1 -1
- package/src/components/FilesManage/FileUserFiles.vue +11 -5
- package/src/components/FilesManage/UserEssentialInfoTest.vue +6 -6
- package/src/components/FilesManage/UserGeneralInfoTest.vue +1 -1
- package/src/components/charge/ChargeList.vue +2 -2
- package/src/components/charge/business/CardMeterCenter.vue +39 -1
- package/src/components/charge/business/IOTMeterCenter.vue +41 -2
- package/src/components/chargeBatch/ChargeBatchList.vue +2 -2
- package/src/components/common/userinfo_detail/UserBaseInfoNew.vue +4 -0
- package/src/components/matchmakingManagement/PlatformAddEdit.vue +145 -0
- package/src/components/matchmakingManagement/PlatformList.vue +150 -0
- package/src/components/matchmakingManagement/PlatformManage.vue +51 -0
- package/src/components/revenue/HandManager/MeterBookAdd.vue +2 -2
- package/src/components/revenue/HandManager/meterbookEntry.vue +20 -32
- package/src/components/revenue/base/leftview/Userinfo.vue +22 -18
- package/src/components/revenue/comprehen/Maintenance/revenue/StockListmain.vue +16 -16
- package/src/components/revenue/comprehen/Message/AllUser.vue +55 -1
- package/src/components/revenue/comprehen/Message/ArrearsList.vue +30 -1
- package/src/components/revenue/comprehen/Message/MessageList.vue +29 -25
- package/src/components/revenue/comprehen/wechatpay/WeChatPayContrast.vue +3 -2
- package/src/components/revenue/comprehen/wechatpay/WeChatPayDetail.vue +3 -1
- package/src/components/revenue/concentrator/ncArchivesAdd.vue +13 -4
- package/src/components/revenue/concentrator/ncArchivesList.vue +1 -1
- package/src/components/revenue/concentrator/ncUserfilesList2.vue +30 -0
- package/src/filiale/macheng/HandManager.vue +6 -0
- package/src/filiale/qianneng/MessageList.vue +28 -25
- package/src/filiale/qianneng/eticket/EticketRecordList.vue +282 -0
- package/src/filiale/qianneng/sale.js +3 -3
- package/src/filiale/rizhao/ChargeList.vue +2 -2
- package/src/filiale/tongchuan/CardList.vue +7 -8
- package/src/filiale/tongchuan/IOTMeterCenter.vue +42 -3
- package/src/filiale/tongchuan/UserEssentialInfoTest.vue +1 -3
- package/src/filiale/tongchuan/Userinfo.vue +21 -17
- package/src/filiale/tongchuan/plugins/FileManageService.js +2 -1
- package/src/main.js +18 -18
- package/src/plugins/CardService.js +4 -4
- package/.gradle/3.5.1/file-changes/last-build.bin +0 -0
- package/.gradle/3.5.1/taskHistory/taskHistory.lock +0 -0
- package/.gradle/buildOutputCleanup/built.bin +0 -0
- package/.gradle/buildOutputCleanup/cache.properties +0 -2
- package/.gradle/buildOutputCleanup/cache.properties.lock +0 -1
- package/yarn-error.log +0 -9224
package/.babelrc
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
{
|
|
2
|
-
"presets": ["es2015", "stage-2"],
|
|
3
|
-
"plugins": ["transform-runtime"],
|
|
4
|
-
"comments": false
|
|
5
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"presets": ["es2015", "stage-2"],
|
|
3
|
+
"plugins": ["transform-runtime"],
|
|
4
|
+
"comments": false
|
|
5
|
+
}
|
package/package.json
CHANGED
|
@@ -228,7 +228,7 @@
|
|
|
228
228
|
</div>
|
|
229
229
|
<div
|
|
230
230
|
:class="{'col-sm-2':!$parent.$parent.createFile,'col-sm-4':$parent.$parent.createFile}"
|
|
231
|
-
class="form-group">
|
|
231
|
+
class="form-group" v-if="titleShow">
|
|
232
232
|
<label class="font_normal_body">使用类型</label>
|
|
233
233
|
<v-select :options='$parent.$parent.useoptions' :search='true'
|
|
234
234
|
:value.sync="model.f_usetype"
|
|
@@ -238,7 +238,7 @@
|
|
|
238
238
|
</div>
|
|
239
239
|
<div
|
|
240
240
|
:class="{'col-sm-2':!$parent.$parent.createFile,'col-sm-4':$parent.$parent.createFile}"
|
|
241
|
-
class="form-group">
|
|
241
|
+
class="form-group" v-if="titleShow">
|
|
242
242
|
<label class="font_normal_body">用户等级</label>
|
|
243
243
|
<v-select :options='$parent.$parent.userlevel' :search='true'
|
|
244
244
|
:value.sync="model.userlevel"
|
|
@@ -248,7 +248,7 @@
|
|
|
248
248
|
</div>
|
|
249
249
|
<div
|
|
250
250
|
:class="{'col-sm-2':!$parent.$parent.createFile,'col-sm-4':$parent.$parent.createFile}"
|
|
251
|
-
class="form-group">
|
|
251
|
+
class="form-group" v-if="titleShow">
|
|
252
252
|
<label class="font_normal_body">工业备注</label>
|
|
253
253
|
<v-select :options='$parent.$parent.industrycomments' :value.sync="model.f_gongye_type"
|
|
254
254
|
close-on-select condition="f_gongye_type='{}'"
|
|
@@ -331,7 +331,7 @@
|
|
|
331
331
|
<th v-if="!$parent.$parent.$parent.createFile">
|
|
332
332
|
<nobr>状态</nobr>
|
|
333
333
|
</th>
|
|
334
|
-
<th v-if="
|
|
334
|
+
<th v-if="titleShow">
|
|
335
335
|
<nobr>用户等级</nobr>
|
|
336
336
|
</th>
|
|
337
337
|
<!--<th>-->
|
|
@@ -362,7 +362,7 @@
|
|
|
362
362
|
<td style="text-align: center;">{{row.f_whether_hairpin}}</td>
|
|
363
363
|
<td style="text-align: center;" v-if="!$parent.$parent.$parent.createFile">{{row.f_userfiles_address}}</td>
|
|
364
364
|
<td style="text-align: center;" v-if="!$parent.$parent.$parent.createFile">{{row.f_user_state}}</td>
|
|
365
|
-
<td style="text-align: center;" v-if="
|
|
365
|
+
<td style="text-align: center;" v-if="titleShow">{{row.f_user_level}}</td>
|
|
366
366
|
<td style="text-align: center;">
|
|
367
367
|
<button type="button" name="button" class="button_search-2 button_spacing width-60"
|
|
368
368
|
v-if="row.f_user_state === '正常' || row.f_user_state==='预备'"
|
|
@@ -437,6 +437,7 @@
|
|
|
437
437
|
</div>
|
|
438
438
|
</article>
|
|
439
439
|
<footer slot="modal-footer" class="modal-footer">
|
|
440
|
+
<button class="button_search button_spacing" type="button" @click="goChargeManage()">去收费</button>
|
|
440
441
|
<button class="button_search button_spacing" type="button" @click="doCopy()">复制</button>
|
|
441
442
|
<button class="button_search button_spacing" type="button" @click="close2()">取消</button>
|
|
442
443
|
</footer>
|
|
@@ -580,6 +581,7 @@ let loadParamGem = async function (self) {
|
|
|
580
581
|
newdata: {},
|
|
581
582
|
resdata: '',
|
|
582
583
|
resshow: false,
|
|
584
|
+
titleShow: true, //是否显示部分档案信息类的筛选框
|
|
583
585
|
useoptions: this.$appdata.getParam('使用类型'),
|
|
584
586
|
|
|
585
587
|
userlevel: this.$appdata.getParam('用户等级') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('用户等级')] : []
|
|
@@ -587,6 +589,7 @@ let loadParamGem = async function (self) {
|
|
|
587
589
|
},
|
|
588
590
|
ready () {
|
|
589
591
|
loadParamGem(this)
|
|
592
|
+
this.titleShow = this.$appdata.getSingleValue('是否显示筛选框') == null? true : this.$appdata.getSingleValue('是否显示筛选框')
|
|
590
593
|
},
|
|
591
594
|
compiled () {
|
|
592
595
|
window.onresize = () => {
|
|
@@ -634,6 +637,9 @@ let loadParamGem = async function (self) {
|
|
|
634
637
|
this.isShowDetailInfo = true
|
|
635
638
|
this.rowData = obj
|
|
636
639
|
},
|
|
640
|
+
goChargeManage () {
|
|
641
|
+
this.$goto('charge-manage', {f: this.$login.f}, 'main')
|
|
642
|
+
},
|
|
637
643
|
async doCopy () {
|
|
638
644
|
await this.$copyText(this.resdata)
|
|
639
645
|
this.resshow = false
|
|
@@ -129,12 +129,12 @@
|
|
|
129
129
|
</div>
|
|
130
130
|
</div>
|
|
131
131
|
<div class="row">
|
|
132
|
-
<div style="" class="col-sm-4 form-group"
|
|
133
|
-
<label for="f_user_level" class="font_normal_body "> 用户等级</label
|
|
134
|
-
<v-select :value.sync="baseinfo.base.f_user_level" :search="false" :value-single="true"
|
|
135
|
-
:options='userlevel' placeholder='用户等级' close-on-select
|
|
136
|
-
</v-select
|
|
137
|
-
</div
|
|
132
|
+
<!-- <div style="" class="col-sm-4 form-group">-->
|
|
133
|
+
<!-- <label for="f_user_level" class="font_normal_body "> 用户等级</label>-->
|
|
134
|
+
<!-- <v-select :value.sync="baseinfo.base.f_user_level" :search="false" :value-single="true"-->
|
|
135
|
+
<!-- :options='userlevel' placeholder='用户等级' close-on-select>-->
|
|
136
|
+
<!-- </v-select>-->
|
|
137
|
+
<!-- </div>-->
|
|
138
138
|
<div class="col-sm-4 form-group">
|
|
139
139
|
<label for="f_user_nature" class="font_normal_body" title="用户性质"> 用气类型</label>
|
|
140
140
|
<input type="text" v-show="false" v-model="baseinfo.base.f_user_nature">
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
</div>
|
|
94
94
|
<div class="row">
|
|
95
95
|
<div class="col-sm-2"></div>
|
|
96
|
-
<input v-if="fileSaveData.reason
|
|
96
|
+
<input v-if="fileSaveData.reason==='其他'" class="input_search" style="width:60%" placeholder='修改原因' v-model="fileSaveData.modifyReason"/>
|
|
97
97
|
</div>
|
|
98
98
|
</article>
|
|
99
99
|
<footer slot="modal-footer" class="modal-footer">
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
condition="u.f_gasproperties = '{}'"
|
|
90
90
|
close-on-select style="width: 60%"></v-select>
|
|
91
91
|
</div>
|
|
92
|
-
<div class="form-group col-sm-3">
|
|
92
|
+
<div class="form-group col-sm-3" v-if="false">
|
|
93
93
|
<label class="font_normal_body">用户等级</label>
|
|
94
94
|
<v-select v-model="model.f_user_level"
|
|
95
95
|
placeholder='用户等级'
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
<input type="text" class="input_search" style="width:60%" v-model="model.f_card_id" placeholder='卡号'
|
|
113
113
|
condition="f_card_id like '%{}%'">
|
|
114
114
|
</div>
|
|
115
|
-
<div class="form-group col-sm-3">
|
|
115
|
+
<div class="form-group col-sm-3" v-if="false">
|
|
116
116
|
<label class="font_normal_body">使用类型</label>
|
|
117
117
|
<v-select v-model="model.f_usetype"
|
|
118
118
|
placeholder='使用类型'
|
|
@@ -380,6 +380,28 @@
|
|
|
380
380
|
let asyncCardMeterCenter = async function (self) {
|
|
381
381
|
await self.$getConfig(self, 'CardMeterCenter')
|
|
382
382
|
console.log('卡表收费config', self.config)
|
|
383
|
+
|
|
384
|
+
// 添加 “系统余额透支” 付款方式
|
|
385
|
+
let i = -1
|
|
386
|
+
for (const index in self.paytype) {
|
|
387
|
+
if (self.paytype[index].value == "系统余额透支"){
|
|
388
|
+
i = index
|
|
389
|
+
break
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
if (self.canOverdraftBalance()){
|
|
393
|
+
if (i == -1){
|
|
394
|
+
self.paytype.push({
|
|
395
|
+
label: "系统余额透支",
|
|
396
|
+
value: "系统余额透支"
|
|
397
|
+
})
|
|
398
|
+
}
|
|
399
|
+
}else {
|
|
400
|
+
if (i != -1){
|
|
401
|
+
self.paytype.splice(i, 1)
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
|
|
383
405
|
// 默认打印格式
|
|
384
406
|
self.model.f_print = self.config.printType instanceof Array ? self.config.printType : [self.config.printType]
|
|
385
407
|
self.model.f_payment = [self.config.payment]
|
|
@@ -461,7 +483,8 @@
|
|
|
461
483
|
billType: '燃气费', // 票据类型(燃气费,其他费用,调用的发票代码不同)
|
|
462
484
|
printType: '普通收据', // 收据/电子票/专用发票/国税发票
|
|
463
485
|
payment: '现金缴费',
|
|
464
|
-
floor: false
|
|
486
|
+
floor: false,
|
|
487
|
+
overdraftBalance: false // 是否支持系统余额透支
|
|
465
488
|
},
|
|
466
489
|
eticket_msg: false,
|
|
467
490
|
eticket_show: false,
|
|
@@ -599,6 +622,17 @@
|
|
|
599
622
|
methods: {
|
|
600
623
|
// 校验发票信息
|
|
601
624
|
checkInvoiceMsg (flag) {
|
|
625
|
+
// 校验是否超出最大透支余额
|
|
626
|
+
if (this.model.f_payment == '系统余额透支') {
|
|
627
|
+
const maxOverdraftBalance = - (this.$appdata.getSingleValue("最大透支余额") - 0)
|
|
628
|
+
const curSysBalance = (this.row.f_sys_balance - 0) - (this.model.f_totalcost - 0)
|
|
629
|
+
if (curSysBalance < maxOverdraftBalance){
|
|
630
|
+
this.$showAlert('您的系统余额将超出最大透支余额,请使用别的付款方式!', 'danger', 5000)
|
|
631
|
+
return
|
|
632
|
+
}
|
|
633
|
+
this.model.f_sys_balance = curSysBalance
|
|
634
|
+
}
|
|
635
|
+
|
|
602
636
|
// 收款回车时, 如果确认按钮是灰色不进行任何操作
|
|
603
637
|
if (flag) return
|
|
604
638
|
console.log(this.model.f_print[0])
|
|
@@ -806,6 +840,10 @@
|
|
|
806
840
|
// 减免后收款金额
|
|
807
841
|
this.model.f_after_discount = privilegeData.data.f_collection
|
|
808
842
|
}
|
|
843
|
+
},
|
|
844
|
+
// 判断当前用户是否可以使用系统余额透支
|
|
845
|
+
canOverdraftBalance(){
|
|
846
|
+
return this.config.overdraftBalance && this.row.f_user_type != "民用"
|
|
809
847
|
}
|
|
810
848
|
},
|
|
811
849
|
computed: {
|
|
@@ -372,6 +372,28 @@
|
|
|
372
372
|
let asyncCardMeterCenter = async function (self) {
|
|
373
373
|
await self.$getConfig(self, 'IOTMeterCenter')
|
|
374
374
|
console.log('卡表收费config', self.config)
|
|
375
|
+
|
|
376
|
+
// 添加 “系统余额透支” 付款方式
|
|
377
|
+
let i = -1
|
|
378
|
+
for (const index in self.paytype) {
|
|
379
|
+
if (self.paytype[index].value == '系统余额透支') {
|
|
380
|
+
i = index
|
|
381
|
+
break
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
if (self.canOverdraftBalance()) {
|
|
385
|
+
if (i == -1) {
|
|
386
|
+
self.paytype.push({
|
|
387
|
+
label: '系统余额透支',
|
|
388
|
+
value: '系统余额透支'
|
|
389
|
+
})
|
|
390
|
+
}
|
|
391
|
+
} else {
|
|
392
|
+
if (i != -1) {
|
|
393
|
+
self.paytype.splice(i, 1)
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
|
|
375
397
|
// 默认打印格式
|
|
376
398
|
self.model.f_print = self.config.printType instanceof Array ? self.config.printType : [self.config.printType]
|
|
377
399
|
self.model.f_payment = [self.config.payment]
|
|
@@ -423,7 +445,8 @@
|
|
|
423
445
|
hasBillManage: false, // 默认不启用发票管理
|
|
424
446
|
billType: '燃气费', // 票据类型(燃气费,其他费用,调用的发票代码不同)
|
|
425
447
|
printType: '普通收据', // 收据/电子票/专用发票/国税发票
|
|
426
|
-
payment: '现金缴费'
|
|
448
|
+
payment: '现金缴费',
|
|
449
|
+
overdraftBalance: false // 是否支持系统余额透支
|
|
427
450
|
},
|
|
428
451
|
model: {
|
|
429
452
|
f_purchase: 0,
|
|
@@ -439,7 +462,8 @@
|
|
|
439
462
|
f_voucher_number: '',
|
|
440
463
|
f_privilege_id: 0,
|
|
441
464
|
f_privilege_money: 0,
|
|
442
|
-
f_after_discount: 0
|
|
465
|
+
f_after_discount: 0,
|
|
466
|
+
f_sys_balance: 0
|
|
443
467
|
},
|
|
444
468
|
eticket_msg: false,
|
|
445
469
|
eticket_show: false,
|
|
@@ -558,6 +582,17 @@
|
|
|
558
582
|
methods: {
|
|
559
583
|
// 校验发票信息
|
|
560
584
|
checkInvoiceMsg () {
|
|
585
|
+
// 校验是否超出最大透支余额
|
|
586
|
+
if (this.model.f_payment == '系统余额透支') {
|
|
587
|
+
const maxOverdraftBalance = -(((this.$appdata.getSingleValue('最大透支余额') - 0) || 1000) - 0)
|
|
588
|
+
const curSysBalance = ((this.row.f_sys_balance || 0) - 0) - (this.model.f_totalcost - 0)
|
|
589
|
+
if (curSysBalance < maxOverdraftBalance) {
|
|
590
|
+
this.$showAlert('您的系统余额将超出最大透支余额,请使用别的付款方式!', 'danger', 5000)
|
|
591
|
+
return
|
|
592
|
+
}
|
|
593
|
+
this.model.f_sys_balance = curSysBalance
|
|
594
|
+
}
|
|
595
|
+
|
|
561
596
|
if (this.model.f_print[0] === '电子发票') {
|
|
562
597
|
if (!this.row.f_taxpayer_id) {
|
|
563
598
|
this.row.f_taxpayer_id = this.row.f_idnumber
|
|
@@ -721,6 +756,10 @@
|
|
|
721
756
|
// 减免后收款金额
|
|
722
757
|
this.model.f_after_discount = privilegeData.data.f_collection
|
|
723
758
|
}
|
|
759
|
+
},
|
|
760
|
+
// 判断当前用户是否可以使用系统余额透支
|
|
761
|
+
canOverdraftBalance () {
|
|
762
|
+
return this.config.overdraftBalance && this.row.f_user_type != '民用'
|
|
724
763
|
}
|
|
725
764
|
},
|
|
726
765
|
computed: {
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
condition="u.f_gasproperties = '{}'"
|
|
98
98
|
close-on-select style="width: 60%"></v-select>
|
|
99
99
|
</div>
|
|
100
|
-
<div class="form-group col-sm-4">
|
|
100
|
+
<div class="form-group col-sm-4" v-if="false">
|
|
101
101
|
<label class="font_normal_body">用户等级</label>
|
|
102
102
|
<v-select v-model="model.f_user_level"
|
|
103
103
|
placeholder='用户等级'
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
style="width: 60%">
|
|
121
121
|
</res-select>
|
|
122
122
|
</div>
|
|
123
|
-
<div class="form-group col-sm-4">
|
|
123
|
+
<div class="form-group col-sm-4" v-if="false">
|
|
124
124
|
<label class="font_normal_body">使用类型</label>
|
|
125
125
|
<v-select v-model="model.f_usetype"
|
|
126
126
|
placeholder='使用类型'
|
|
@@ -151,6 +151,7 @@
|
|
|
151
151
|
</div>
|
|
152
152
|
<div class="auto" style="float: right;">
|
|
153
153
|
<button class="button_clear " @click="cancelmain()" >返回</button>
|
|
154
|
+
<button class="button_search" type="button" @click="goChargeManage">去收费</button>
|
|
154
155
|
<button v-if="row.f_meter_brand.includes('西美')&&row.f_meter_type.includes('物联网表')"
|
|
155
156
|
class="button_search" type="button" @click="clearBarrier">清除障碍</button>
|
|
156
157
|
<button v-if="row.f_meter_type.includes('物联网表')"
|
|
@@ -316,6 +317,9 @@
|
|
|
316
317
|
uuidA = s.join('');
|
|
317
318
|
return uuidA;
|
|
318
319
|
},
|
|
320
|
+
goChargeManage () {
|
|
321
|
+
this.$goto('charge-manage', {f: this.$login.f}, 'main')
|
|
322
|
+
},
|
|
319
323
|
openUser () {
|
|
320
324
|
this.$showMessage(`是否需要给用户进行开户?`, ['confirm', 'cancel']).then(async (res) => {
|
|
321
325
|
if (res === 'confirm') {
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div id="articleAddEdit">
|
|
3
|
+
<div class="auto select-overspread">
|
|
4
|
+
<validator name='v'>
|
|
5
|
+
<ul class="nav nav-tabs">
|
|
6
|
+
<li class="bg-info text-center"><a href="#">{{{title}}}</a></li>
|
|
7
|
+
</ul>
|
|
8
|
+
<div class="form-horizontal select-overspread container-fluid auto" style="margin-top:20px;flex: 1;">
|
|
9
|
+
<div class="row">
|
|
10
|
+
<div class="col-sm-6 form-group">
|
|
11
|
+
<label class="font_normal_body">组织机构</label>
|
|
12
|
+
<res-select restype='organization'
|
|
13
|
+
@res-select="getorg"
|
|
14
|
+
is-mul="false"
|
|
15
|
+
:initresid='curorgid'>
|
|
16
|
+
</res-select>
|
|
17
|
+
</div>
|
|
18
|
+
<div class="col-sm-6 form-group">
|
|
19
|
+
<label class="font_normal_body">文章标题</label>
|
|
20
|
+
<input type="text" v-model="listinfo.f_title" class="input_search" style="width:60%" placeholder="文章标题">
|
|
21
|
+
</div>
|
|
22
|
+
<div class="col-sm-6 form-group">
|
|
23
|
+
<label class="font_normal_body">文章类型</label>
|
|
24
|
+
<v-select
|
|
25
|
+
v-model="listinfo.f_type"
|
|
26
|
+
placeholder='文章类型'
|
|
27
|
+
:value.sync="listinfo.f_type"
|
|
28
|
+
:options='getType'
|
|
29
|
+
close-on-select value-single>
|
|
30
|
+
</v-select>
|
|
31
|
+
</div>
|
|
32
|
+
<div class="col-sm-6 form-group">
|
|
33
|
+
<label class="font_normal_body">文章链接</label>
|
|
34
|
+
<input type="text" v-model="listinfo.f_link" class="input_search" style="width:60%" placeholder="文章链接">
|
|
35
|
+
</div>
|
|
36
|
+
<div class="col-sm-6 form-group">
|
|
37
|
+
<label class="font_normal_body">权  重</label>
|
|
38
|
+
<input type="number" v-model="listinfo.f_weight" class="input_search" style="width:60%" placeholder="权重">
|
|
39
|
+
</div>
|
|
40
|
+
<div class="col-sm-6 form-group">
|
|
41
|
+
<label class="font_normal_body">状  态</label>
|
|
42
|
+
<v-select
|
|
43
|
+
v-model="listinfo.f_state"
|
|
44
|
+
placeholder='文章类型'
|
|
45
|
+
:value.sync="listinfo.f_state"
|
|
46
|
+
:options='getState'
|
|
47
|
+
close-on-select value-single>
|
|
48
|
+
</v-select>
|
|
49
|
+
</div>
|
|
50
|
+
<div class="col-sm-6" v-if="listinfo.f_type === '轮播图'|| listinfo.f_type === '广告弹框' || listinfo.f_type === '便民服务'">
|
|
51
|
+
<label class="font_normal_body">文章图片</label>
|
|
52
|
+
<avatar-upload :img-src.sync="listinfo.img.content" :filename.sync="listinfo.img.filename"></avatar-upload>
|
|
53
|
+
</div>
|
|
54
|
+
<div class="col-sm-6" v-if="listinfo.f_img">
|
|
55
|
+
<label class="font_normal_body">现存图片</label>
|
|
56
|
+
<img-self :src="listinfo.f_img" alt="图片加载失败" :width="100" :height="100"></img-self>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
<div class="row">
|
|
61
|
+
<div style="float: right;">
|
|
62
|
+
<button @click='clear()' class="btn button_clear" style="width: 70px">
|
|
63
|
+
<span class="glyphicon glyphicon-log-out"></span>清空
|
|
64
|
+
</button>
|
|
65
|
+
<button @click="confirm()" class="btn button_search" style="width: 70px" :disabled="saveFlag">
|
|
66
|
+
<span class="glyphicon glyphicon-floppy-disk"></span>保存
|
|
67
|
+
</button>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
</validator>
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
</template>
|
|
74
|
+
<script>
|
|
75
|
+
export default {
|
|
76
|
+
data () {
|
|
77
|
+
return {
|
|
78
|
+
f_orgids: this.$login.f.orgid,
|
|
79
|
+
f_operator: this.$login.f.name,
|
|
80
|
+
curorgid: [this.$login.f.orgid],
|
|
81
|
+
f_orgid: '',
|
|
82
|
+
f_filialeids: ''
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
props: {
|
|
86
|
+
listinfo: {
|
|
87
|
+
type: Object
|
|
88
|
+
},
|
|
89
|
+
title: {
|
|
90
|
+
type: String
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
ready () {
|
|
94
|
+
},
|
|
95
|
+
methods: {
|
|
96
|
+
getorg (val) {
|
|
97
|
+
this.f_orgid = this.$login.convertToIn(val)
|
|
98
|
+
this.f_filialeids = val[0]
|
|
99
|
+
},
|
|
100
|
+
confirm () {
|
|
101
|
+
let data = {content : ''}
|
|
102
|
+
if (this.listinfo.id){
|
|
103
|
+
this.listinfo.img = data
|
|
104
|
+
}
|
|
105
|
+
this.listinfo['f_edit_date'] = this.$login.toStandardTimeString()
|
|
106
|
+
this.listinfo['f_operator'] = this.f_operator
|
|
107
|
+
this.listinfo['f_orgid'] = this.f_filialeids ? this.f_filialeids : this.f_orgids
|
|
108
|
+
this.$resetpost('wx/rs/logic/saveArticle', this.listinfo, {
|
|
109
|
+
resolveMsg: '保存成功。',
|
|
110
|
+
rejectMsg: '保存失败!!!',
|
|
111
|
+
aoteEncrypt: this.weixin_mmType,
|
|
112
|
+
encryKey: this.weixin_mm
|
|
113
|
+
}).then((res) => { this.$dispatch('refresh') }
|
|
114
|
+
)
|
|
115
|
+
},
|
|
116
|
+
clear () {
|
|
117
|
+
let id = this.listinfo['id']
|
|
118
|
+
if (id) {
|
|
119
|
+
this.listinfo = {id: id}
|
|
120
|
+
} else {
|
|
121
|
+
this.listinfo = {}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
watch: {},
|
|
126
|
+
computed: {
|
|
127
|
+
// 保存按钮条件
|
|
128
|
+
saveFlag () {
|
|
129
|
+
if (this.listinfo.f_type === '便民服务') {
|
|
130
|
+
return (!(this.listinfo.f_title && this.listinfo.f_type && this.listinfo.f_link && this.listinfo.f_state && this.listinfo.img.content))
|
|
131
|
+
} else {
|
|
132
|
+
return (!(this.listinfo.f_title && this.listinfo.f_type && this.listinfo.f_link && this.listinfo.f_state))
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
getState () {
|
|
136
|
+
return [{label: '有效', value: '有效'}, {label: '无效', value: '无效'}]
|
|
137
|
+
},
|
|
138
|
+
getType () {
|
|
139
|
+
return this.$appdata.getParam('微信文章类型')
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
</script>
|
|
144
|
+
<style lang="less">
|
|
145
|
+
</style>
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<criteria-paged :model="model" v-ref:paged>
|
|
3
|
+
<criteria partial='criteria' @condition-changed='$parent.selfSearch' v-ref:cri>
|
|
4
|
+
<div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
|
|
5
|
+
<div class="row">
|
|
6
|
+
<div class="col-sm-3 form-group">
|
|
7
|
+
<label class="font_normal_body">婚介所名称</label>
|
|
8
|
+
<input type="text" style="width:60%" class="input_search" v-model="model.f_orgname"
|
|
9
|
+
condition="f_orgname like '%{}%'" placeholder="婚介所名称"/>
|
|
10
|
+
</div>
|
|
11
|
+
<!-- <div class="col-sm-3 form-group">-->
|
|
12
|
+
<!-- <label class="font_normal_body">文章类型</label>-->
|
|
13
|
+
<!-- <v-select v-model="model.f_type" style="width:60%"-->
|
|
14
|
+
<!-- placeholder='文章类型'-->
|
|
15
|
+
<!-- :value.sync="model.f_type"-->
|
|
16
|
+
<!-- :options='$parent.$parent.getType'-->
|
|
17
|
+
<!-- condition= "f_type = '{}'"-->
|
|
18
|
+
<!-- close-on-select value-single>-->
|
|
19
|
+
<!-- </v-select>-->
|
|
20
|
+
<!-- </div>-->
|
|
21
|
+
|
|
22
|
+
<div class="col-sm-3 form-group">
|
|
23
|
+
<label class="font_normal_body">详细地址</label>
|
|
24
|
+
<input type="text" style="width:60%" class="input_search" v-model="model.f_org_site"
|
|
25
|
+
condition="f_org_site like '%{}%'" placeholder="详细地址"/>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="col-sm-2 form-group button-range" style="float: right">
|
|
28
|
+
<button class="button_search button_spacing" @click="search()" >查询</button>
|
|
29
|
+
<button class="button_new button_spacing" @click="$parent.$parent.add()">新增</button>
|
|
30
|
+
<button class="button_clear button_spacing" @click="clear">清空</button>
|
|
31
|
+
<div style="float: right" class="button_spacing" :class="{'button_shrink_top': criteriaShow,'button_shrink_bottom': !criteriaShow}" @click="criteriaShow = !criteriaShow"></div>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
<div class="row" v-show="criteriaShow">
|
|
35
|
+
<div class="col-sm-3 form-group">
|
|
36
|
+
<label class="font_normal_body">文章状态</label>
|
|
37
|
+
<v-select v-model="model.f_state" style="width:60%"
|
|
38
|
+
placeholder='状态'
|
|
39
|
+
:value.sync="model.f_state"
|
|
40
|
+
:options='$parent.$parent.getState'
|
|
41
|
+
condition= "f_state = '{}'"
|
|
42
|
+
close-on-select value-single>
|
|
43
|
+
</v-select>
|
|
44
|
+
</div>
|
|
45
|
+
<div class="col-sm-3 form-group">
|
|
46
|
+
<label class="font_normal_body">文章标题</label>
|
|
47
|
+
<input type="text" style="width:60%" class="input_search" v-model="model.f_title"
|
|
48
|
+
condition="f_title like '%{}%'" placeholder="文章标题"/>
|
|
49
|
+
</div>
|
|
50
|
+
<div class="col-sm-3 form-group">
|
|
51
|
+
<label class="font_normal_body">操作人员</label>
|
|
52
|
+
<input type="text" style="width:60%" class="input_search" v-model="model.f_operator"
|
|
53
|
+
condition="f_operator like '%{}%'" placeholder="操 作 人"/>
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</criteria>
|
|
58
|
+
<data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid>
|
|
59
|
+
<template partial='head'>
|
|
60
|
+
<tr>
|
|
61
|
+
<th>序  号</th>
|
|
62
|
+
<th>文章标题</th>
|
|
63
|
+
<th>文章类型</th>
|
|
64
|
+
<th>文章图片</th>
|
|
65
|
+
<th>权  重</th>
|
|
66
|
+
<th>状  态</th>
|
|
67
|
+
<th>操 作 人</th>
|
|
68
|
+
<th>创建时间</th>
|
|
69
|
+
<th>修改时间</th>
|
|
70
|
+
<th>操  作</th>
|
|
71
|
+
</tr>
|
|
72
|
+
</template>
|
|
73
|
+
<template partial='body'>
|
|
74
|
+
<tr>
|
|
75
|
+
<td style="text-align:center">{{$index+1}}</td>
|
|
76
|
+
<td style="text-align:center">{{row.f_title}}</td>
|
|
77
|
+
<td style="text-align:center">{{row.f_type}}</td>
|
|
78
|
+
<td style="text-align:center">
|
|
79
|
+
<img-self :src="row.f_img" v-if="row.f_img" :width="100" :height="100"></img-self>
|
|
80
|
+
<p v-else style="margin-top: 9px;">无图片</p>
|
|
81
|
+
</td>
|
|
82
|
+
<td style="text-align:center">{{row.f_weight}}</td>
|
|
83
|
+
<td style="text-align:center">{{row.f_state}}</td>
|
|
84
|
+
<td style="text-align:center">{{row.f_operator}}</td>
|
|
85
|
+
<td style="text-align:center">{{row.f_date}}</td>
|
|
86
|
+
<td style="text-align:center">{{row.f_edit_date}}</td>
|
|
87
|
+
<td style="text-align:center">
|
|
88
|
+
<button type="button" name="button" class="btn btn-link" @click.stop="$parent.$parent.$parent.preview(row.f_link)">预览</button>
|
|
89
|
+
</td>
|
|
90
|
+
</tr>
|
|
91
|
+
</template>
|
|
92
|
+
<template partial='foot'></template>
|
|
93
|
+
</data-grid>
|
|
94
|
+
</criteria-paged>
|
|
95
|
+
</template>
|
|
96
|
+
|
|
97
|
+
<script>
|
|
98
|
+
import {PagedList} from 'vue-client'
|
|
99
|
+
|
|
100
|
+
export default {
|
|
101
|
+
data () {
|
|
102
|
+
return {
|
|
103
|
+
model: new PagedList('wx/rs/sql/singleTable_OrderBy', 20, {tablename: '`t_article`', items: '`*`', orderitem: '`f_weight,f_date desc`'},
|
|
104
|
+
null, null, null, this.weixin_mmType, this.weixin_mm),
|
|
105
|
+
f_orgids: this.$login.f.orgid,
|
|
106
|
+
|
|
107
|
+
curorgid: [this.$login.f.orgid],
|
|
108
|
+
f_orgid: '',
|
|
109
|
+
f_filialeids: ''
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
ready () {
|
|
113
|
+
this.$refs.paged.$refs.cri.model.f_state = '有效'
|
|
114
|
+
this.search()
|
|
115
|
+
},
|
|
116
|
+
methods: {
|
|
117
|
+
getorg (val) {
|
|
118
|
+
this.f_orgid = this.$login.convertToIn(val)
|
|
119
|
+
this.f_filialeids = val[0]
|
|
120
|
+
},
|
|
121
|
+
search () {
|
|
122
|
+
this.$refs.paged.$refs.cri.search()
|
|
123
|
+
},
|
|
124
|
+
selfSearch (args) {
|
|
125
|
+
if (!this.f_orgid) {
|
|
126
|
+
this.getorg(this.curorgid)
|
|
127
|
+
}
|
|
128
|
+
args.condition = `${args.condition} and f_orgid in ${this.f_orgid}`
|
|
129
|
+
this.model.search(args.condition, args.model)
|
|
130
|
+
},
|
|
131
|
+
add () {
|
|
132
|
+
this.$refs.paged.$refs.grid.selectStore.selected = null
|
|
133
|
+
this.$dispatch('add')
|
|
134
|
+
},
|
|
135
|
+
preview (link) {
|
|
136
|
+
window.open(link)
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
computed: {
|
|
140
|
+
getState () {
|
|
141
|
+
return [{label: '全部', value: ''}, {label: '有效', value: '有效'}, {label: '无效', value: '无效'}]
|
|
142
|
+
},
|
|
143
|
+
getType () {
|
|
144
|
+
return [{label: '全部', value: ''}, ...this.$appdata.getParam('微信文章类型')]
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
</script>
|
|
149
|
+
<style lang="less" >
|
|
150
|
+
</style>
|