apply-clients 3.3.222 → 3.4.2-FuGu-4

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.
Files changed (114) hide show
  1. package/build/css-loaders.js +34 -0
  2. package/build/dev-android.js +101 -0
  3. package/build/dev-client.js +8 -0
  4. package/build/dev-server-app.js +76 -0
  5. package/build/dev-server.js +119 -0
  6. package/build/example-server.js +80 -0
  7. package/build/release.sh +28 -0
  8. package/build/utils.js +80 -0
  9. package/build/webpack.base.conf.js +85 -0
  10. package/build/webpack.baseandroid.conf.js +84 -0
  11. package/build/webpack.dev.conf.js +51 -0
  12. package/build/webpack.devandroid.conf.js +34 -0
  13. package/build/webpack.example.conf.js +49 -0
  14. package/build/webpack.prod.conf.js +60 -0
  15. package/build/webpack.prodandroid.conf.js +60 -0
  16. package/build/webpack.test.conf.js +31 -0
  17. package/dingding.html +23 -0
  18. package/index.html +1 -1
  19. package/package.json +4 -3
  20. package/src/AndroidApp.vue +18 -13
  21. package/src/App.vue +20 -20
  22. package/src/DingDingApp.vue +51 -0
  23. package/src/android.js +1 -1
  24. package/src/apply.js +75 -91
  25. package/src/applyAndroid.js +25 -54
  26. package/src/applyDingDing.js +12 -0
  27. package/src/components/android/AppOnetomany.vue +37 -21
  28. package/src/components/android/AppServiceView.vue +3 -7
  29. package/src/components/android/AppSign.vue +3 -3
  30. package/src/components/android/AppTakePic.vue +12 -13
  31. package/src/components/android/Process/AppExplorationUser.vue +88 -38
  32. package/src/components/android/Process/AppServiceControl.vue +87 -16
  33. package/src/components/android/Process/Processes/AppInstallationDetails.vue +90 -100
  34. package/src/components/android/ProgressReport/ProgressReportDetail.vue +64 -0
  35. package/src/components/android/ProgressReport/ProgressReportList.vue +209 -0
  36. package/src/components/android/Supervisory/AppProcessSupervisory.vue +73 -152
  37. package/src/components/android/Supervisory/AppSupervisoryCart.vue +29 -23
  38. package/src/components/android/TaskGraph.vue +125 -0
  39. package/src/components/build/Install/ExplorationUser.vue +304 -0
  40. package/src/components/build/Install/Process/zhongran/ZR_Design.vue +537 -0
  41. package/src/components/product/ApplyCharge/ApplyChargeList.vue +36 -50
  42. package/src/components/product/ApplyCharge/ApplyChargeSearch.vue +3 -3
  43. package/src/components/product/ApplyCharge/printCharge.vue +142 -0
  44. package/src/components/product/Function/InstallFunction.vue +11 -2
  45. package/src/components/product/Function/InstallInfoSelect.vue +29 -47
  46. package/src/components/product/Function/Service/FunctionServiceControl.vue +172 -6
  47. package/src/components/product/Onetomany.vue +105 -24
  48. package/src/components/product/Order/OrderApply.vue +30 -30
  49. package/src/components/product/Order/OrderApplyList.vue +78 -67
  50. package/src/components/product/Order/OrderMessage.vue +11 -88
  51. package/src/components/product/Process/ExplorationSelect.vue +176 -149
  52. package/src/components/product/Process/ExplorationUser.vue +95 -85
  53. package/src/components/product/Process/Processes/InstallationDetails.vue +440 -352
  54. package/src/components/product/Process/Processes/addressAndUserinfoManagement.vue +35 -9
  55. package/src/components/product/Process/Processes/chargeManagement.vue +634 -638
  56. package/src/components/product/Process/Processes/devicesManagement.vue +22 -2
  57. package/src/components/product/Process/Processes/selectApply.vue +1 -1
  58. package/src/components/product/Process/Service/ServiceControl.vue +1241 -883
  59. package/src/components/product/Process/Service/ShowBackReason.vue +33 -0
  60. package/src/components/product/ServiceView.vue +313 -423
  61. package/src/components/product/Stop/StopApply.vue +27 -25
  62. package/src/components/product/Stop/StopApplyList.vue +26 -11
  63. package/src/components/product/Supervisory/Service/SupervisoryServiceControl.vue +18 -349
  64. package/src/components/product/Supervisory/SupervisoryControl.vue +0 -8
  65. package/src/components/product/Supervisory/SupervisoryList.vue +27 -47
  66. package/src/components/product/Supervisory/SupervisoryhCart.vue +32 -54
  67. package/src/components/product/VueUtils/ApplyUpload.vue +273 -264
  68. package/src/components/product/VueUtils/HighMeter.vue +208 -0
  69. package/src/dingding.js +20 -0
  70. package/src/expandcssAndroid.less +879 -362
  71. package/src/main.js +1 -1
  72. package/src/components/android/Function/AppFunctionServiceControl.vue +0 -329
  73. package/src/components/android/Function/AppInstallFunction.vue +0 -330
  74. package/src/components/android/Order/ApplyOrder.vue +0 -141
  75. package/src/components/android/Process/Processes/AppBuildSign.vue +0 -47
  76. package/src/components/android/Process/Processes/AppChargeManagement.vue +0 -468
  77. package/src/components/android/Process/Processes/AppDevicesManagement.vue +0 -490
  78. package/src/components/android/Process/Processes/AppSupplementalAgreement.vue +0 -297
  79. package/src/components/android/Process/Processes/AppjiaSign.vue +0 -47
  80. package/src/components/android/Process/Processes/AppjiafangSign.vue +0 -47
  81. package/src/components/android/Process/Processes/ApptechnologySign.vue +0 -47
  82. package/src/components/image/danwei.png +0 -0
  83. package/src/components/image/dizhi.png +0 -0
  84. package/src/components/image/dwg.jpg +0 -0
  85. package/src/components/image/name.png +0 -0
  86. package/src/components/image/phone.png +0 -0
  87. package/src/components/image/type.png +0 -0
  88. package/src/components/image/yasuobao.jpg +0 -0
  89. package/src/components/image/zaixiantousu1.png +0 -0
  90. package/src/components/image/zizhukaitong.png +0 -0
  91. package/src/components/image//346/210/221/347/232/204.png +0 -0
  92. package/src/components/product/Function/Inform.vue +0 -73
  93. package/src/components/product/Function/MarketSurvey.vue +0 -81
  94. package/src/components/product/Process/Processes/printCharge.vue +0 -121
  95. package/src/components/product/Process/ShowBackReason.vue +0 -33
  96. package/src/components/product/Supervisory/Service/printChargeNode.vue +0 -873
  97. package/src/components/product/VueUtils/GaoPaiYi/HighMeter.vue +0 -1090
  98. package/src/components/product/VueUtils/ToolsPage.vue +0 -51
  99. package/src/components/product/VueUtils/Tree.vue +0 -330
  100. package/src/filiale/wuan/android.js +0 -0
  101. package/src/filiale/wuan/pc.js +0 -4
  102. package/src/filiale/yuchuan/android/AppServiceView.vue +0 -599
  103. package/src/filiale/yuchuan/android/Process/AppServiceControl.vue +0 -414
  104. package/src/filiale/yuchuan/android/Process/Processes/AppInstallationDetails.vue +0 -456
  105. package/src/filiale/yuchuan/android/Reserve/ApplyReserve.vue +0 -200
  106. package/src/filiale/yuchuan/android/SiteSurvey/TaskGraph.vue +0 -137
  107. package/src/filiale/yuchuan/android.js +0 -8
  108. package/src/filiale/yuchuan/pc/Order/OrderApply.vue +0 -517
  109. package/src/filiale/yuchuan/pc/Order/OrderApplyList.vue +0 -343
  110. package/src/filiale/yuchuan/pc/Process/ExplorationSelect.vue +0 -356
  111. package/src/filiale/yuchuan/pc/Process/ExplorationUser.vue +0 -131
  112. package/src/filiale/yuchuan/pc/Process/Processes/MapCom.vue +0 -51
  113. package/src/filiale/yuchuan/pc/Process/Service/ServiceControl.vue +0 -517
  114. package/src/filiale/yuchuan/pc.js +0 -13
@@ -1,141 +0,0 @@
1
- <template>
2
- <div style="background-color: aliceblue">
3
- <validator name='v'>
4
- <div partial class="auto" >
5
- <div style="width:auto;height: 50px; background-color: #0b87e2;margin-top: 40px ">
6
- <label style="color:white;margin-top:10px ;font-size: 20px;margin-left: 20px;">报装预约</label>
7
- </div>
8
- <div class="row form-group app-input" style="margin-top: 10px">
9
- <img src="../../image/name.png" style="width: 20px;height: 20px; margin-top: 15px; float: left;">
10
- <label class="font_normal_body">用&ensp;户&ensp;名</label>
11
- <input type="text" class="input" placeholder='请输入用户名' style="margin-top: 15px;" v-model="selectdata.f_user_name" v-validate:f_user_name = "['required']"/>
12
- </div>
13
- <div class="row form-group app-input">
14
- <img src="../../image/phone.png" style="width: 20px;height: 20px; margin-top: 15px;float: left;">
15
- <label class="font_normal_body">电&ensp;&ensp;&ensp;&ensp;话</label>
16
- <input type="number" class="input" style="margin-top: 15px;"placeholder='请输入用户人电话' v-model="selectdata.f_phone" v-validate:f_phone = "['required']" />
17
- </div>
18
- <div class="row form-group app-input">
19
- <img src="../../image/dizhi.png" style="width: 20px;height: 20px; margin-top: 15px;float: left;">
20
- <label class="font_normal_body">地&ensp;&ensp;&ensp;&ensp;址</label>
21
- <input type="text" class="input" style="margin-top: 15px;" placeholder='请输入用户人地址' v-model="selectdata.f_address" v-validate:f_address = "['required']" />
22
- </div>
23
- <div class="row form-group app-input">
24
- <img src="../../image/danwei.png" style="width: 20px;height: 20px;margin-top: 15px; float: left;">
25
- <label class="font_normal_body">预约公司</label>
26
- <v-select
27
- v-model="selectdata.f_orgname"
28
- class="select select_list"
29
- :options='orgnames'
30
- :value-single="true"
31
- :search="false"
32
- placeholder='请选择要预约的公司'
33
- style="margin-top: 15px;"
34
- width="77%"
35
- close-on-select >
36
- </v-select>
37
- </div>
38
- <!-- <div class="row form-group app-input">-->
39
- <!-- <label class="font_normal_body">公&ensp;&ensp;&ensp;司</label>-->
40
- <!--&lt;!&ndash; <input type="text" class="input_search" v-model="selectdata.f_orgname" v-validate:f_orgname = "['required']" />&ndash;&gt;-->
41
- <!-- </div>-->
42
- <div class="row form-group app-input">
43
- <img src="../../image/type.png" style="width: 20px;height: 20px; margin-top: 15px;float: left;">
44
- <label class="font_normal_body">用气位置</label>
45
- <input type="text" class="input" style="margin-top: 15px;" placeholder='请输入用气位置' v-model="selectdata.f_usegasposition" v-validate:f_usegasposition = "['required']" />
46
- </div>
47
- <div class="row form-group app-input">
48
- <img src="../../image/我的.png" style="width: 20px;height: 20px;margin-top: 15px; float: left;">
49
- <label class="font_normal_body">用戶类型</label>
50
- <input type="text" class="input" style="margin-top: 15px;"placeholder='请输入用户类型' v-model="selectdata.f_user_type" v-validate:f_user_type = "['required']" />
51
- </div>
52
- <div class="row form-group app-input">
53
- <img src="../../image/zizhukaitong.png" style="width: 20px;height: 20px;margin-top: 15px; float: left">
54
- <label class="font_normal_body">省&ensp;市&ensp;区</label>
55
- <input type="text" class="input" style="margin-top: 15px;"placeholder='请输入所在省市区' v-model="selectdata.f_pcd" v-validate:f_pcd = "['required']" />
56
- </div>
57
- <div class="row form-group app-input">
58
- <img src="../../image/phone.png" style="width: 20px;height: 20px; margin-top: 15px; float: left;">
59
- <label class="font_normal_body">备用电话</label>
60
- <input type="number" class="input" style="margin-top: 15px;" placeholder='请输入备用电话' v-model="selectdata.f_spare_phone" v-validate:f_spare_phone = "['required']" />
61
- </div>
62
- <div class="row form-group app-input">
63
- <img src="../../image/zizhukaitong.png" style="width: 20px;height: 20px; margin-top: 15px; float: left;">
64
- <label class="font_normal_body">安装情况</label>
65
- <input type="text" class="input" style="margin-top: 15px;" placeholder='请输入安装情况' v-model="selectdata.f_installation_situation" v-validate:f_installation_situation = "['required']" />
66
- </div>
67
-
68
- <div class="row form-group text-right" style="">
69
- <button class="button_search button_spacing" :disabled='!$v.valid'
70
- @click="checkOrder()">保存</button>
71
- <button class="button_clear button_spacing" @click="clear()">清除</button>
72
- </div>
73
- </div>
74
- </validator>
75
- </div>
76
- </template>
77
-
78
- <script>
79
- import Vue from "vue";
80
-
81
- export default {
82
- title: '预约报装',
83
- name: "ApplyOrder",
84
- data() {
85
- return {
86
- selectdata: null,
87
- orgnames:null
88
- // orgnames: [{label: '全部', value: ''}, ...this.$appdata.getParam('预约公司')]
89
- }
90
- },
91
- methods: {
92
- async GS(){
93
- let res = await this.$resetpost(
94
- `rs/sql/ApplyOrder`,
95
- {"data":{}},
96
- {resolveMsg: null, rejectMsg: '公司查询失败,请检查内容!!!'}
97
- )
98
- this.orgnames=res.data
99
- },
100
-
101
-
102
- async checkOrder() {
103
- let data = {
104
- selectdata: this.selectdata,
105
- check: this.check,
106
- user: this.$login.f
107
- }
108
-
109
- let res = await this.$resetpost(
110
- `rs/logic/ApplyOrder`,
111
- data,
112
- {resolveMsg: null, rejectMsg: '申请报装失败,请检查内容!!!'}
113
- )
114
- this.clear()
115
- },
116
- clear() {
117
- Object.keys(this.selectdata).forEach((key) => {
118
- this.selectdata[key] = null
119
- })
120
- }
121
- },
122
- ready(){
123
- this.GS()
124
- }
125
- }
126
- </script>
127
-
128
- <style scoped>
129
- /*查询输入框*/
130
- .input {
131
- padding: 6px;
132
- width: 77%;
133
- height: 28px;
134
- background-color: #ffffff;
135
- border-radius: 2px;
136
- border: solid 1px #c7c7c7;
137
- color: #333333;
138
- font-size: 12px;
139
- font-family: PingFang;
140
- }
141
- </style>
@@ -1,47 +0,0 @@
1
- <template>
2
- <h3>市场部负责人签字:</h3>
3
- <app-sign @sign-success="signSuccess" :file-path="selectdata.f_build_sign" @sign-clean="signClean"></app-sign>
4
- </template>
5
- <script>
6
- import {getNowDate,isEmpty} from '../../../Util'
7
- import {HttpResetClass} from 'vue-client'
8
- import Vue from "vue";
9
-
10
- export default {
11
- title: '告知单和调研表签字',
12
- props: {
13
- selectdata: {
14
- type: Object
15
- },
16
- mark: {
17
- type: Number,
18
- default: 0
19
- }
20
- },
21
- data () {
22
- return {
23
- }
24
- },
25
- ready () {
26
- console.log('===========市场部负责人签字================')
27
- },
28
- methods: {
29
- signClean () {
30
- this.selectdata.f_build_sign = null
31
- },
32
- signSuccess (fileUrl) {
33
- console.log('==============告知单和调研表回调==================')
34
- console.log(fileUrl)
35
- this.selectdata.f_build_sign = fileUrl
36
- }
37
- },
38
- events: {
39
- },
40
- computed: {
41
- },
42
- watch: {
43
- }
44
- }
45
- </script>
46
- <style scoped lang="less">
47
- </style>
@@ -1,468 +0,0 @@
1
- <template>
2
- <div>
3
- <div class="col-sm-12 col-xs-12 form-group app-btn">
4
- <button class="btn btn-info" @click.prevent="showChargeModal()">新增收费</button>
5
- </div>
6
- <div class="col-sm-12 col-xs-12">
7
- <list :model="model" partial='list'>
8
- <div partial class="auto app-text panel">
9
- <div class="panel-body panel-self">
10
- <div class="row" v-if="selectdata.f_apply_type !== '开发商集体报建'">
11
- <p class="col-xs-4 text-left font"><b>地址</b></p>
12
- <p class="col-xs-8 text-left input-font">{{ row.f_useraddres }}</p>
13
- </div>
14
- <div class="row">
15
- <p class="col-xs-4 text-left font"><b>缴费编号</b></p>
16
- <p class="col-xs-8 text-left input-font">{{ row.f_charge_number }}</p>
17
- </div>
18
- <div class="row">
19
- <p class="col-xs-4 text-left font"><b>收费金额</b></p>
20
- <p class="col-xs-8 text-left input-font">{{ row.f_charge_money }}</p>
21
- </div>
22
- <div class="row">
23
- <p class="col-xs-4 text-left font"><b>金额大写</b></p>
24
- <p class="col-xs-8 text-left input-font">{{ row.f_amount_words }}</p>
25
- </div>
26
- <div class="row">
27
- <p class="col-xs-4 text-left font"><b>收费项目</b></p>
28
- <p class="col-xs-8 text-left input-font">{{ row.f_payment_term }}</p>
29
- </div>
30
- <div class="row">
31
- <p class="col-xs-4 text-left font"><b>付款方式</b></p>
32
- <p class="col-xs-8 text-left input-font">{{ row.f_payment_method }}</p>
33
- </div>
34
- <div class="row" v-if="row.f_payment_method === '银行转账'">
35
- <p class="col-xs-4 text-left font"><b>付款方名称</b></p>
36
- <p class="col-xs-8 text-left input-font">{{ row.f_payer_name }}</p>
37
- </div>
38
- <div class="row" v-if="row.f_payment_method === '银行转账'">
39
- <p class="col-xs-4 text-left font"><b>付款方账号</b></p>
40
- <p class="col-xs-8 text-left input-font">{{ row.f_payer_account }}</p>
41
- </div>
42
- <div class="row" v-if="row.f_payment_method === '银行转账'">
43
- <p class="col-xs-4 text-left font"><b>付款流水号</b></p>
44
- <p class="col-xs-8 text-left input-font">{{ row.f_payer_number }}</p>
45
- </div>
46
- <div class="row">
47
- <p class="col-xs-4 text-left font"><b>收费人员</b></p>
48
- <p class="col-xs-8 text-left input-font">{{ row.f_charge_collectors }}</p>
49
- </div>
50
- <div class="row">
51
- <p class="col-xs-4 text-left font"><b>收费日期</b></p>
52
- <p class="col-xs-8 text-left input-font">{{ row.f_charge_date }}</p>
53
- </div>
54
- <div class="row">
55
- <p class="col-xs-4 text-left font"><b>备注</b></p>
56
- <p class="col-xs-8 text-left input-font">{{ row.f_charge_remarks }}</p>
57
- </div>
58
- </div>
59
- </div>
60
- </list>
61
- </div>
62
-
63
- <modal v-if="showCharge" :show.sync="showCharge" v-ref:modal :large="true" :backdrop="false" title="收费明细">
64
- <header slot="modal-header" class="modal-header">
65
- <button type="button" class="close" @click="closeModal"><span>&times;</span></button>
66
- <h4 class="modal-title">收费明细</h4>
67
- </header>
68
- <article slot="modal-body" class="modal-body clearfix">
69
- <div class="form-group row vertical-center" :class="charge.f_payment_term ? '':'has-error'">
70
- <label class="col-xs-4 control-label">收费项目:</label>
71
- <div class="col-xs-8">
72
- <input-select class="select select_list"
73
- v-model="charge.f_payment_term"
74
- :value.sync="charge.f_payment_term"
75
- :options='paymentTerm'
76
- :value-single="true"
77
- close-on-select ></input-select>
78
- </div>
79
- </div>
80
- <div class="form-group row vertical-center" :class="charge.f_charge_money ? '':'has-error'">
81
- <label class="col-xs-4 control-label">收费金额:</label>
82
- <div class="col-xs-8">
83
- <input class="form-control input_view" style="" type="number"
84
- v-model="charge.f_charge_money"
85
- @keyup="handleInput"
86
- @change="moneyChange"
87
- :readonly="false"/>
88
- </div>
89
- </div>
90
- <div class="form-group row vertical-center">
91
- <label class="col-xs-4 control-label">金额大写:</label>
92
- <div class="col-xs-8">
93
- <input class="form-control input_view" style=""
94
- v-model="charge.f_amount_words"
95
- :value="smalltoBIG(0)"
96
- :readonly="true"/>
97
- </div>
98
- </div>
99
- <div class="form-group row vertical-center">
100
- <label class="col-xs-4 control-label">应交总金额:</label>
101
- <div class="col-xs-8">
102
- <input class="form-control input_view" style=""
103
- v-model="selectdata.f_due_money"
104
- :readonly="true"/>
105
- </div>
106
- </div>
107
- <div class="form-group row vertical-center">
108
- <label class="col-xs-4 control-label">缴费总金额:</label>
109
- <div class="col-xs-8">
110
- <input class="form-control input_view" style=""
111
- v-model="selectdata.f_cumulative_payment_money"
112
- :readonly="true"/>
113
- </div>
114
- </div>
115
- <div class="form-group row vertical-center">
116
- <label class="col-xs-4 control-label">未结总金额:</label>
117
- <div class="col-xs-8">
118
- <input class="form-control input_view" style=""
119
- v-model="selectdata.f_surplus_money"
120
- :readonly="true"/>
121
- </div>
122
- </div>
123
- </article>
124
- <footer slot="modal-footer" class="modal-footer">
125
- <button type="button" class="btn btn-primary" @click.prevent="openQrCode()">确认</button>
126
- </footer>
127
- </modal>
128
-
129
- <modal v-if="showCharge" :show.sync="showQrCode" v-ref:qrcodemodal :large="true" :backdrop="false" style="height: 100%">
130
- <header slot="modal-header" class="modal-header">
131
- <h4 class="modal-title">微信扫码支付</h4>
132
- </header>
133
- <article slot="modal-body" class="modal-body clearfix">
134
- <div class="text-center">
135
- <p><b>收费金额:{{ charge.f_charge_money }}¥</b></p>
136
- <p><b>收费项目:{{ charge.f_payment_term }}</b></p>
137
- <div id="qrcode" class="qrcode" v-ref:qrcode></div>
138
- <p>
139
- 等待支付,剩余&ensp;<span style="color: #ff791a">{{timeLeft}}</span>&ensp;秒
140
- </p>
141
- </div>
142
- </article>
143
- <footer slot="modal-footer"></footer>
144
- </modal>
145
- </div>
146
- </template>
147
- <script>
148
- import {getNowDate,isEmpty} from '../../../Util'
149
- import {PagedList} from 'vue-client'
150
- import {HttpResetClass} from 'vue-client'
151
- // import QRCode from 'qrcodejs2'
152
- import Vue from "vue";
153
-
154
- export default {
155
- title: '收费管理',
156
- props: {
157
- selectdata: {
158
- type: Object
159
- },
160
- mark: {
161
- type: Number,
162
- default: 0
163
- }
164
- },
165
- data () {
166
- return {
167
- showCharge: false, // 收费明细
168
- showQrCode : false, // 二维码
169
- model: {
170
- rows: null
171
- }, // 记录
172
- useraddresList: [], // 地址列表
173
- charge: {
174
-
175
- },
176
- order: null,
177
- timeLeft: 60,
178
- paymentInterval: null,
179
- orderInterval: null,
180
- config: {
181
-
182
- }
183
- }
184
- },
185
- ready () {
186
- this.search()
187
- this.getConfig()
188
- },
189
- methods: {
190
- // 新增收费
191
- async saveCharge() {
192
- let http = new HttpResetClass()
193
- let data = {
194
- apply: this.selectdata,
195
- charge: this.charge,
196
- user: Vue.user
197
- // user: {"f_show_department_name":"","parentname":"周口运营部","functions":[{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","parentname":"客服系统","icon":"/images/lefticon/档案管理.png","hasright":false,"resourcetype":"function","parentid":"27","children":[{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","parentname":"档案管理","link":"city-manage","hasright":true,"resourcetype":"function","parentid":"212","children":[],"selfid":"231","name":"街道管理","templatename":"functionedit","id":"230","position":"1","fullname":"资源管理.功能模块.客服系统.档案管理.街道管理","fullid":"3.21.27.212.230","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","parentname":"档案管理","link":"area-manage","hasright":true,"resourcetype":"function","parentid":"212","children":[],"selfid":"219","name":"小区管理","templatename":"functionedit","id":"218","position":"3","fullname":"资源管理.功能模块.客服系统.档案管理.小区管理","fullid":"3.21.27.212.218","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","parentname":"档案管理","link":"address-manage","hasright":true,"resourcetype":"function","parentid":"212","children":[],"selfid":"33664","name":"地址管理","templatename":"functionedit","id":"33663","position":"5","fullname":"资源管理.功能模块.客服系统.档案管理.地址管理","fullid":"3.21.27.212.33663","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","parentname":"档案管理","link":"file-user-files","hasright":true,"resourcetype":"function","parentid":"212","children":[],"selfid":"237","name":"用户档案","templatename":"functionedit","id":"236","position":"5","fullname":"资源管理.功能模块.客服系统.档案管理.用户档案","fullid":"3.21.27.212.236","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"档案管理","link":"file-user-files-new","hasright":true,"resourcetype":"function","parentid":"212","f_parentname":"档案管理","children":[],"selfid":"39450","name":"预备户管理","templatename":"functionedit","id":"39449","position":"6","fullname":"资源管理.功能模块.客服系统.档案管理.预备户管理","fullid":"3.21.27.212.39449","tablename":"t_function"}],"selfid":"213","name":"档案管理","templatename":"functionedit","id":"212","position":"2","fullname":"资源管理.功能模块.客服系统.档案管理","fullid":"3.21.27.212","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"客服系统","icon":"/images/lefticon/报建系统.png","hasright":true,"resourcetype":"function","parentid":"27","f_parentname":"客服系统","children":[{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"install-function","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34680","name":"功能业务","templatename":"functionedit","id":"34679","position":"1","fullname":"资源管理.功能模块.客服系统.报建业务.功能业务","fullid":"3.21.27.34673.34679","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"exploration-user","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34686","name":"流程业务","templatename":"functionedit","id":"34685","position":"2","fullname":"资源管理.功能模块.客服系统.报建业务.流程业务","fullid":"3.21.27.34673.34685","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"supervisory-control","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34692","name":"流程监控","templatename":"functionedit","id":"34691","position":"3","fullname":"资源管理.功能模块.客服系统.报建业务.流程监控","fullid":"3.21.27.34673.34691","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"apply-charge-search","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34698","name":"收费明细","templatename":"functionedit","id":"34697","position":"4","fullname":"资源管理.功能模块.客服系统.报建业务.收费明细","fullid":"3.21.27.34673.34697","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"order-apply","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34704","name":"预约申请","templatename":"functionedit","id":"34703","position":"5","fullname":"资源管理.功能模块.客服系统.报建业务.预约申请","fullid":"3.21.27.34673.34703","tablename":"t_function"},{"pagenames":"公共通讯录维护模板","processnames":"发邮件流程","loginid":"15","parentname":"报建业务","link":"stop-apply","hasright":true,"resourcetype":"function","parentid":"34673","f_parentname":"报建业务","children":[],"selfid":"34710","name":"终止报建","templatename":"functionedit","id":"34709","position":"6","fullname":"资源管理.功能模块.客服系统.报建业务.终止报建","fullid":"3.21.27.34673.34709","tablename":"t_function"}],"selfid":"34674","name":"报建业务","templatename":"functionedit","id":"34673","position":"12","fullname":"资源管理.功能模块.客服系统.报建业务","fullid":"3.21.27.34673","tablename":"t_function"}],"qrcode":"/rs/user/getQRcode?QRCODE=12b2-1631604191812-03447","rolesnames":"营业厅报装,市场部报装,设计部报装,工程部报装,运营部报装,财务部报装,角色监控","f_sex":"男","roles":"51383,51485,51707,51767,51833,51905,52289","f_icon":"tree_user","fullnames":"河南亿星集团实业有限公司.周口市天然气有限公司.周口运营部.报建测试","dir":"ZhouKou","userid":"12b2-1631604191812-03447","accesstime":"1631606085945","parentid":"46569","f_show_rolestr":"","fullids":"30463.10101.46569.51953.","number":"10101","f_dep_id":"1010101203","f_idnumber":{},"selfid":"51954","templatename":"useredit","id":"51953","state":"在职","tablename":"t_user","deptype":"部门","depids":"46569","loginid":"15","imgid":{},"f_user_telephone":{},"rolestr":"营业厅报装,市场部报装,设计部报装,工程部报装,运营部报装,财务部报装,角色监控","deps":"周口运营部","f_age":{},"resourcetype":"user","orgid":"10101","f_department_name":"周口运营部","ename":"bjcs","deleted":"false","entitytype":"t_user","f_description":{},"loginip":"192.168.66.37","name":"报建测试","position":"1","orgs":"周口市天然气有限公司","haslicense":true,"f_role_name":"营业厅报装 市场部报装 设计部报装 工程部报装 运营部报装 财务部报装 角色监控 ","f_allArea":[],"f_gasman":[],"lics":[]}
198
- }
199
-
200
- let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/logic/addApplyChargeRecord`, {data:data}, {
201
- resolveMsg: null,
202
- rejectMsg: '缴费失败!!!'
203
- })
204
- this.selectdata = res.data
205
-
206
- this.$dispatch('breakControl')
207
- },
208
- // 获取订单信息
209
- async getOrderInformation () {
210
- // 查询订单信息
211
- console.log('查询订单信息!!!')
212
- let data = {
213
- out_trade_no: this.order.out_trade_no,
214
- filiale: this.config[Vue.user.number]
215
- }
216
- // 查询订单状态
217
- let http = new HttpResetClass()
218
- let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/wx/rs/weixin/queryBzIsPay`, data, {
219
- resolveMsg: null,
220
- rejectMsg: '订单查询失败!!!'
221
- })
222
-
223
- // 支付成功
224
- if (res.data.trade_state === 'SUCCESS') {
225
- clearTimeout(this.paymentInterval)
226
- clearTimeout(this.orderInterval)
227
- this.timeLeft = 10
228
- // 清除二维码
229
- this.clearQrCode()
230
- this.showQrCode = false
231
-
232
- this.saveCharge()
233
- }
234
- },
235
- // 打开二维码
236
- async openQrCode () {
237
- if (isEmpty(this.charge.f_payment_term)) {
238
- this.$showAlert('请选择收费项目!!!', 'warning', 3000)
239
- return
240
- }
241
- if (isEmpty(this.charge.f_charge_money)) {
242
- this.$showAlert('请输入收费金额!!!', 'warning', 3000)
243
- return
244
- }
245
-
246
- let http = new HttpResetClass()
247
- // 接口金额 单位为:分
248
- let data = {
249
- money: this.charge.f_charge_money * 100,
250
- attach: {},
251
- str: this.charge.f_payment_term,
252
- filiale: this.config[Vue.user.number]
253
- }
254
- // 下订单
255
- let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/wx/rs/weixin/bzgetcode`, data, {
256
- resolveMsg: null,
257
- rejectMsg: '订单生成失败!!!'
258
- })
259
-
260
- console.log('=================================')
261
- console.log(res.data)
262
- this.order = res.data
263
-
264
- this.showQrCode = true
265
-
266
- this.$nextTick(()=>{
267
- this.qrcode()
268
- })
269
-
270
- // 剩余支付时间
271
- this.paymentInterval = setInterval(() => {
272
- this.timeLeft = this.timeLeft - 1
273
- },1000)
274
-
275
- // 3秒查询一次订单支付信息
276
- this.orderInterval = setInterval(() => {
277
- this.getOrderInformation()
278
- },3000)
279
-
280
- },
281
- qrcode () {
282
- let qrcode = new QRCode('qrcode',{
283
- text: this.order.url, // 设置二维码内容或跳转地址
284
- width: 200, // 设置宽度,单位像素
285
- height: 200, // 设置高度,单位像素
286
- correctLevel: QRCode.CorrectLevel.L //容错率,L/M/Hs
287
- })
288
- },
289
- clearQrCode () {
290
- document.getElementById('qrcode').innerHTML = ''
291
- },
292
- moneyChange () {
293
- if (isEmpty(this.charge.f_charge_money) || Number(this.charge.f_charge_money) === 0) {
294
- this.$showAlert('单笔收费不能为0元!!!', 'warning', 3000)
295
- this.charge.f_charge_money = null
296
- return
297
- }
298
- if (this.selectdata.f_apply_type === '散户集体报建' && Number(this.charge.f_charge_money) > Number(this.charge.f_outstanding_amount)) {
299
- this.$showAlert('单笔收费不能超过未交金额!!!', 'warning', 3000)
300
- this.charge.f_charge_money = null
301
- return
302
- }
303
- if (Number(this.charge.f_charge_money) > Number(this.selectdata.f_surplus_money)) {
304
- this.$showAlert('单笔收费不能超过未交总金额!!!', 'warning', 3000)
305
- this.charge.f_charge_money = null
306
- return
307
- }
308
- },
309
- // 金额转大写
310
- handleInput(e) {
311
- // 通过正则过滤小数点后两位
312
- e.target.value = (e.target.value.match(/^\d*(\.?\d{0,2})/g)[0]) || null
313
- this.charge.f_amount_words = this.smalltoBIG(e.target.value)
314
- },
315
- // 金额转大写
316
- smalltoBIG(n) {
317
- let fraction = ['角', '分'];
318
- let digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
319
- let unit = [['元', '万', '亿'], ['', '拾', '佰', '仟']];
320
- let head = n < 0 ? '欠' : '';
321
- n = Math.abs(n);
322
-
323
- let s = '';
324
-
325
- for (var i = 0; i < fraction.length; i++) {
326
- s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
327
- }
328
- s = s || '整';
329
- n = Math.floor(n);
330
-
331
- for (var i = 0; i < unit[0].length && n > 0; i++) {
332
- let p = '';
333
- for (var j = 0; j < unit[1].length && n > 0; j++) {
334
- p = digit[n % 10] + unit[1][j] + p;
335
- n = Math.floor(n / 10);
336
- }
337
- s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
338
- }
339
- return head + s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整')
340
- },
341
- async getUserAddress() {
342
- let http = new HttpResetClass()
343
- let data = {}
344
- let url = null
345
- if (this.selectdata.f_apply_type === '改管报建' || this.selectdata.f_apply_type === '增容报建') {
346
- data = {
347
- condition: `ui.f_userinfo_id = ${this.selectdata.f_userinfo_id}`
348
- }
349
- url = `${this.$androidUtil.getProxyUrl()}/rs/sql/applyGetUserinfos`
350
- } else {
351
- data = {
352
- condition: this.selectdata.f_apply_type === '散户集体报建' ? `nvl(cr.f_cumulative_payment_money, 0) < ${this.selectdata.f_price}` : '1=1',
353
- f_process_id: this.selectdata.f_process_id
354
- }
355
- url = `${this.$androidUtil.getProxyUrl()}/rs/sql/getAddresAndCumulativePayment`
356
- }
357
- let res = await http.load('POST', url, {data:data}, {
358
- resolveMsg: null,
359
- rejectMsg: '用户获取失败!!!'
360
- })
361
-
362
- if (res.data.length <= 0) {
363
- this.$showAlert('暂无需要缴费用户!!!', 'warning', 3000)
364
- }
365
-
366
- this.useraddresList = res.data.map(item => {
367
- return {
368
- // 有用户姓名地址后拼接姓名
369
- label: `${item.f_address} ${isEmpty(item.f_user_name) ? '' : '--- ' + item.f_user_name}`,
370
- value: item
371
- }
372
- })
373
-
374
- },
375
- async showChargeModal() {
376
- this.getUserAddress()
377
-
378
- this.charge.f_payment_method = '掌上营业厅'
379
-
380
- this.showCharge = true
381
- },
382
- async search () {
383
- let http = new HttpResetClass()
384
- let data = {
385
- f_process_id: this.selectdata.f_process_id
386
- }
387
- let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/getApplyChargeRecord`, {data:data}, {
388
- resolveMsg: null,
389
- rejectMsg: '收费记录查询失败!!!'
390
- })
391
- this.model.rows = res.data
392
- },
393
- // 关闭对话框
394
- closeModal () {
395
- this.showCharge = false
396
- this.showInvalid = false
397
- this.showPrint = false
398
- this.charge = {}
399
- this.search()
400
- },
401
- async getConfig () {
402
- let http = new HttpResetClass()
403
- let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/logic/getWeiXinConfig`, null, {
404
- resolveMsg: null,
405
- rejectMsg: '获取配置失败!!!'
406
- })
407
-
408
- console.log('==============================')
409
- console.log(res.data)
410
-
411
- this.config = res.data
412
-
413
- this.timeLeft = this.config.timeLeft
414
- },
415
- },
416
- events: {
417
- },
418
- computed: {
419
- paymentMethod() {
420
- return this.$appdata.getParam("付款方式")
421
- },
422
- paymentTerm() {
423
- return this.$appdata.getParam("收费项目")
424
- // return [{label: '安装费', value: '安装费'}]
425
- }
426
- },
427
- watch: {
428
- timeLeft () {
429
- if (this.timeLeft <= 0) {
430
- clearTimeout(this.paymentInterval)
431
- clearTimeout(this.orderInterval)
432
-
433
- this.timeLeft = this.config.timeLeft
434
-
435
- // 清除二维码
436
- this.clearQrCode()
437
-
438
- this.showQrCode = false
439
-
440
- this.$showMessage('订单支付超时!!!')
441
- }
442
- }
443
- }
444
- }
445
- </script>
446
- <style scoped lang="less">
447
- .qrcode {
448
- display: inline-block !important;
449
- margin: 10px 0px;
450
- }
451
- .panel-self{
452
- border-radius: 10px;
453
- border:1px solid #499EDF;
454
- background-color: #F8F8F8;
455
- }
456
- .vertical-center {
457
- display: flex;
458
- align-items: center;
459
- text-align: center;
460
- }
461
- /*清除model中的浮动*/
462
- .clearfix:after,.clearfix:before{
463
- display: table;
464
- }
465
- .clearfix:after{
466
- clear: both;
467
- }
468
- </style>