apply-clients 3.5.1 → 3.5.2
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/build/dev-server.js +142 -133
- package/package.json +118 -118
- package/src/App.vue +26 -21
- package/src/applyAndroid.js +58 -58
- package/src/components/android/AppSign.vue +152 -152
- package/src/components/android/AppTakePic.vue +181 -181
- package/src/components/android/Process/AppChargeList.vue +224 -224
- package/src/components/android/Process/AppExplorationUser.vue +508 -508
- package/src/components/product/Install/ContractCharge.vue +210 -210
- package/src/filiale/fugou/android/AppChargeManagement.vue +625 -625
- package/src/filiale/hongda/pc/FunctionServiceControl.vue +526 -525
- package/src/filiale/qianneng/android/AppExplorationUser.vue +441 -441
- package/src/filiale/qianneng/android/AppServiceControl.vue +1608 -1608
- package/src/filiale/qianneng/pc/Applybatchdispatch.vue +685 -685
- package/src/filiale/qianneng/pc/ExplorationSelect.vue +492 -492
- package/src/filiale/qianneng/pc/FunctionServiceControl.vue +521 -521
- package/src/filiale/qianneng/pc/InstallInfoSelect.vue +392 -392
- package/src/filiale/qianneng/pc/InstallationDetails.vue +561 -561
- package/src/filiale/qianneng/pc/ServiceControl.vue +1351 -1340
- package/src/filiale/qianneng/pc/SupervisoryList.vue +344 -344
- package/src/filiale/qianneng/pc/SupervisoryServiceControl.vue +871 -871
- package/src/filiale/qianneng/pc/chargeManagement.vue +656 -656
- package/src/filiale/qianneng/pc/printactivatecard.vue +295 -295
- package/src/filiale/qianneng/pc/supplementalAgreement.vue +344 -344
- package/src/filiale/yangchunboneng/android/AppAddMaterialScience.vue +390 -390
- package/src/filiale/yangchunboneng/android/AppChargeManagement.vue +120 -120
- package/src/filiale/yangchunboneng/android/AppDevicesManagement.vue +552 -552
- package/src/filiale/yangchunboneng/android/AppExplorationUser.vue +507 -507
- package/src/filiale/yangchunboneng/android/AppInstallationDetails.vue +492 -492
- package/src/filiale/yangchunboneng/android/AppOtherChargeManagement.vue +116 -116
- package/src/filiale/yangchunboneng/android/AppServiceControl.vue +1552 -1552
- package/src/filiale/yangchunboneng/android/AppTakePic.vue +181 -181
- package/src/filiale/yangchunboneng/android/chargesList.vue +170 -170
- package/src/filiale/yangchunboneng/android.js +16 -16
- package/src/filiale/yangchunboneng/pc/ExplorationSelect.vue +496 -496
- package/src/filiale/yangchunboneng/pc/InstallationDetails.vue +609 -609
- package/src/filiale/yangchunboneng/pc/ServiceControl.vue +1782 -1782
- package/src/filiale/yangchunboneng/pc/ServiceView.vue +1005 -1005
- package/src/filiale/yangchunboneng/pc/addMaterialScience.vue +374 -374
- package/src/filiale/yangchunboneng/pc/chargeManagement.vue +960 -960
- package/src/filiale/yangchunboneng/pc/devicesManagement.vue +511 -511
- package/src/filiale/yangchunboneng/pc/otherchargeManagement.vue +214 -214
- package/src/filiale/yangchunboneng/pc.js +17 -17
- package/src/main.js +23 -23
|
@@ -1,344 +1,344 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="col-sm-12" style="margin: 20px 0px;">
|
|
3
|
-
<data-grid :model="model" v-ref:grid class="list_area table_sy" style="padding: 0px">
|
|
4
|
-
<template partial='head'>
|
|
5
|
-
<tr>
|
|
6
|
-
<th class="textNoLineBreak">序号</th>
|
|
7
|
-
<th class="textNoLineBreak">合同类型</th>
|
|
8
|
-
<th class="textNoLineBreak">合同金额</th>
|
|
9
|
-
<th class="textNoLineBreak">签订日期</th>
|
|
10
|
-
<th class="textNoLineBreak">提交人</th>
|
|
11
|
-
<th class="textNoLineBreak">备注</th>
|
|
12
|
-
<th class="textNoLineBreak">状态</th>
|
|
13
|
-
<th class="textNoLineBreak">作废人员</th>
|
|
14
|
-
<th class="textNoLineBreak">作废时间</th>
|
|
15
|
-
<th class="textNoLineBreak">作废原因</th>
|
|
16
|
-
<th class="textNoLineBreak">
|
|
17
|
-
<button
|
|
18
|
-
type="button"
|
|
19
|
-
class="btn btn-info head-but"
|
|
20
|
-
:disabled="$parent.$parent.mark === 1"
|
|
21
|
-
@click="$parent.$parent.showSupplement = !$parent.$parent.showSupplement"
|
|
22
|
-
>补充协议</button>
|
|
23
|
-
</th>
|
|
24
|
-
</tr>
|
|
25
|
-
</template>
|
|
26
|
-
<template partial='body'>
|
|
27
|
-
<tr>
|
|
28
|
-
<td style="text-align: center;">
|
|
29
|
-
<nobr>{{$index+1}}</nobr>
|
|
30
|
-
</td>
|
|
31
|
-
<td style="text-align: center;">
|
|
32
|
-
<nobr>{{row.f_contract_type}}</nobr>
|
|
33
|
-
</td>
|
|
34
|
-
<td style="text-align: center;">
|
|
35
|
-
<nobr>{{ $parent.$parent.formatCurrency(row.f_contract_money,2)}}</nobr>
|
|
36
|
-
</td>
|
|
37
|
-
<td style="text-align: center;">
|
|
38
|
-
<nobr>{{row.f_contract_time}}</nobr>
|
|
39
|
-
</td>
|
|
40
|
-
<td style="text-align: center;">
|
|
41
|
-
<nobr>{{row.f_operator}}</nobr>
|
|
42
|
-
</td>
|
|
43
|
-
<td style="text-align: center;">
|
|
44
|
-
<nobr>{{row.f_remarks}}</nobr>
|
|
45
|
-
</td>
|
|
46
|
-
<td style="text-align: center;">
|
|
47
|
-
<nobr>{{row.f_contract_status}}</nobr>
|
|
48
|
-
</td>
|
|
49
|
-
<td style="text-align: center;">
|
|
50
|
-
<nobr>{{row.f_void_staff}}</nobr>
|
|
51
|
-
</td>
|
|
52
|
-
<td style="text-align: center;">
|
|
53
|
-
<nobr>{{row.f_void_date}}</nobr>
|
|
54
|
-
</td>
|
|
55
|
-
<td style="text-align: center;">
|
|
56
|
-
<nobr>{{row.f_void_remarks}}</nobr>
|
|
57
|
-
</td>
|
|
58
|
-
<td style="text-align: center;">
|
|
59
|
-
<nobr>
|
|
60
|
-
<button
|
|
61
|
-
type="button"
|
|
62
|
-
name="button"
|
|
63
|
-
class="btn btn-link"
|
|
64
|
-
:disabled="$parent.$parent.mark === 1 || row.f_contract_status === '作废'"
|
|
65
|
-
@click="$parent.$parent.showInvalidModal(row)"
|
|
66
|
-
>作废</button>
|
|
67
|
-
</nobr>
|
|
68
|
-
</td>
|
|
69
|
-
</tr>
|
|
70
|
-
</template>
|
|
71
|
-
</data-grid>
|
|
72
|
-
|
|
73
|
-
<validator name="v">
|
|
74
|
-
<modal v-if="showSupplement" :show.sync="showSupplement" v-ref:modal :large="true" :backdrop="false">
|
|
75
|
-
<header slot="modal-header" class="modal-header">
|
|
76
|
-
<button type="button" class="close" @click="closeModal"><span>×</span></button>
|
|
77
|
-
<h4 class="modal-title">协议明细</h4>
|
|
78
|
-
</header>
|
|
79
|
-
<article slot="modal-body" class="modal-body clearfix">
|
|
80
|
-
<div class="form-group col-sm-12">
|
|
81
|
-
<label class="col-sm-2 control-label">合同编号:</label>
|
|
82
|
-
<div class="col-sm-10">
|
|
83
|
-
<input type="text"
|
|
84
|
-
class="form-control input_view"
|
|
85
|
-
style="width: 100%"
|
|
86
|
-
readonly
|
|
87
|
-
:value="selectdata.f_contract_number"
|
|
88
|
-
v-model="contract.f_contract_number" />
|
|
89
|
-
</div>
|
|
90
|
-
</div>
|
|
91
|
-
<div class="form-group col-sm-12" :class="[$v.f_contract_type.required ? 'has-error' : '']">
|
|
92
|
-
<label class="col-sm-2 control-label">合同类型:</label>
|
|
93
|
-
<div class="col-sm-10">
|
|
94
|
-
<input type="text" v-show="false"
|
|
95
|
-
class="form-control input_view"
|
|
96
|
-
v-validate:f_contract_type = "['required']"
|
|
97
|
-
v-model="contract.f_contract_type" />
|
|
98
|
-
<input-select
|
|
99
|
-
class="select select_list"
|
|
100
|
-
:value.sync="contract.f_contract_type"
|
|
101
|
-
v-model="contract.f_contract_type"
|
|
102
|
-
:options="contractType"
|
|
103
|
-
:valueSingle="true"></input-select>
|
|
104
|
-
</div>
|
|
105
|
-
</div>
|
|
106
|
-
<div class="form-group col-sm-12" :class="[$v.f_contract_money.required ? 'has-error' : '']">
|
|
107
|
-
<label class="col-sm-2 control-label">合同金额:</label>
|
|
108
|
-
<div class="col-sm-10">
|
|
109
|
-
<input type="number" style="width: 100%"
|
|
110
|
-
class="form-control input_view"
|
|
111
|
-
v-validate:f_contract_money = "['required']"
|
|
112
|
-
v-model="contract.f_contract_money" />
|
|
113
|
-
</div>
|
|
114
|
-
</div>
|
|
115
|
-
<div class="form-group col-sm-12">
|
|
116
|
-
<label class="col-sm-2 control-label">备注:</label>
|
|
117
|
-
<div class="col-sm-10">
|
|
118
|
-
<input type="text"
|
|
119
|
-
class="form-control input_view"
|
|
120
|
-
style="width: 100%"
|
|
121
|
-
v-model="contract.f_remarks" />
|
|
122
|
-
</div>
|
|
123
|
-
</div>
|
|
124
|
-
</article>
|
|
125
|
-
<footer slot="modal-footer" class="modal-footer">
|
|
126
|
-
<button type="button" class="btn btn-primary" :disabled='!$v.valid' @click="saveContract()">新增协议</button>
|
|
127
|
-
</footer>
|
|
128
|
-
</modal>
|
|
129
|
-
|
|
130
|
-
<modal v-if="showInvalid" :show.sync="showInvalid" v-ref:modal :large="true" :backdrop="false" title="作废协议">
|
|
131
|
-
<header slot="modal-header" class="modal-header">
|
|
132
|
-
<button type="button" class="close" @click="closeModal"><span>×</span></button>
|
|
133
|
-
<h4 class="modal-title">作废协议</h4>
|
|
134
|
-
</header>
|
|
135
|
-
<article slot="modal-body" class="modal-body clearfix">
|
|
136
|
-
<div class="form-group col-sm-12">
|
|
137
|
-
<label class="col-sm-2 control-label">合同编号:</label>
|
|
138
|
-
<div class="col-sm-10">
|
|
139
|
-
<input type="text"
|
|
140
|
-
class="form-control input_view"
|
|
141
|
-
style="width: 100%"
|
|
142
|
-
readonly
|
|
143
|
-
v-model="contract.f_contract_number" />
|
|
144
|
-
</div>
|
|
145
|
-
</div>
|
|
146
|
-
<div class="form-group col-sm-12">
|
|
147
|
-
<label class="col-sm-2 control-label">合同类型:</label>
|
|
148
|
-
<div class="col-sm-10">
|
|
149
|
-
<input type="text"
|
|
150
|
-
class="form-control input_view"
|
|
151
|
-
style="width: 100%"
|
|
152
|
-
readonly
|
|
153
|
-
v-model="contract.f_contract_type" />
|
|
154
|
-
</div>
|
|
155
|
-
</div>
|
|
156
|
-
<div class="form-group col-sm-12">
|
|
157
|
-
<label class="col-sm-2 control-label">合同金额:</label>
|
|
158
|
-
<div class="col-sm-10">
|
|
159
|
-
<input type="text"
|
|
160
|
-
class="form-control input_view"
|
|
161
|
-
style="width: 100%"
|
|
162
|
-
readonly
|
|
163
|
-
v-model="contract.f_contract_money" />
|
|
164
|
-
</div>
|
|
165
|
-
</div>
|
|
166
|
-
<div class="form-group col-sm-12">
|
|
167
|
-
<label class="col-sm-2 control-label">提交人员:</label>
|
|
168
|
-
<div class="col-sm-10">
|
|
169
|
-
<input type="text"
|
|
170
|
-
class="form-control input_view"
|
|
171
|
-
style="width: 100%"
|
|
172
|
-
readonly
|
|
173
|
-
v-model="contract.f_operator" />
|
|
174
|
-
</div>
|
|
175
|
-
</div>
|
|
176
|
-
<div class="form-group col-sm-12" :class="[$v.f_void_remarks.required ? 'has-error' : '']">
|
|
177
|
-
<label class="col-sm-2 control-label">作废原因:</label>
|
|
178
|
-
<div class="col-sm-10">
|
|
179
|
-
<input type="text" style="width: 100%"
|
|
180
|
-
class="form-control input_view"
|
|
181
|
-
v-validate:f_void_remarks = "['required']"
|
|
182
|
-
v-model="contract.f_void_remarks" />
|
|
183
|
-
</div>
|
|
184
|
-
</div>
|
|
185
|
-
</article>
|
|
186
|
-
<footer slot="modal-footer" class="modal-footer">
|
|
187
|
-
<button type="button" class="btn btn-primary" :disabled='!$v.valid' @click="invalidContract()">确认作废</button>
|
|
188
|
-
</footer>
|
|
189
|
-
</modal>
|
|
190
|
-
</validator>
|
|
191
|
-
</div>
|
|
192
|
-
</template>
|
|
193
|
-
<script>
|
|
194
|
-
import {getNowDate,isEmpty} from "../../../components/Util";
|
|
195
|
-
import {PagedList} from 'vue-client'
|
|
196
|
-
import {HttpResetClass} from 'vue-client'
|
|
197
|
-
export default {
|
|
198
|
-
title: '补充协议',
|
|
199
|
-
props: {
|
|
200
|
-
selectdata: {
|
|
201
|
-
type: Object
|
|
202
|
-
},
|
|
203
|
-
mark: {
|
|
204
|
-
type: Number,
|
|
205
|
-
default: 0
|
|
206
|
-
}
|
|
207
|
-
},
|
|
208
|
-
data () {
|
|
209
|
-
return {
|
|
210
|
-
showSupplement: false,
|
|
211
|
-
showInvalid: false,
|
|
212
|
-
model: {
|
|
213
|
-
data: null
|
|
214
|
-
},
|
|
215
|
-
contract: {}
|
|
216
|
-
}
|
|
217
|
-
},
|
|
218
|
-
ready () {
|
|
219
|
-
this.search()
|
|
220
|
-
},
|
|
221
|
-
methods: {
|
|
222
|
-
//将金额转换为千分位
|
|
223
|
-
formatCurrency(number, decimalPlaces) {
|
|
224
|
-
var num = parseFloat(number);
|
|
225
|
-
if (!isNaN(num)) {
|
|
226
|
-
num = num.toFixed(decimalPlaces || 0); // 将金额保留指定位数,四舍五入
|
|
227
|
-
num = num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); // 按照千分位进行分隔
|
|
228
|
-
return num;
|
|
229
|
-
} else {
|
|
230
|
-
return ''; // 如果输入框中的值不是数字,则返回空字符串
|
|
231
|
-
}
|
|
232
|
-
},
|
|
233
|
-
//将千分位金额转换为数字
|
|
234
|
-
parseCurrency(str) {
|
|
235
|
-
// 用正则表达式移除千分位分隔符,并转换为数字
|
|
236
|
-
return parseFloat(str.replace(/,/g, ''));
|
|
237
|
-
},
|
|
238
|
-
async invalidContract() {
|
|
239
|
-
let http = new HttpResetClass()
|
|
240
|
-
let data = {
|
|
241
|
-
selectdata: this.selectdata,
|
|
242
|
-
user: this.$login.f,
|
|
243
|
-
contract: this.contract
|
|
244
|
-
}
|
|
245
|
-
let res = await http.load('POST', 'rs/logic/deleteApplyContract', {data: data}, {
|
|
246
|
-
resolveMsg: null,
|
|
247
|
-
rejectMsg: '作废失败'
|
|
248
|
-
})
|
|
249
|
-
this.$dispatch('breakControl', this.selectdata)
|
|
250
|
-
},
|
|
251
|
-
showInvalidModal(row) {
|
|
252
|
-
this.contract = row
|
|
253
|
-
this.showInvalid = true
|
|
254
|
-
},
|
|
255
|
-
async saveContract() {
|
|
256
|
-
if (isEmpty(this.selectdata.f_contract_money)) {
|
|
257
|
-
this.$showAlert('请先录入主合同金额!!!', 'warning', 3000)
|
|
258
|
-
return
|
|
259
|
-
}
|
|
260
|
-
let http = new HttpResetClass()
|
|
261
|
-
// 合同金额
|
|
262
|
-
if(this.selectdata.f_contract_money.toString().includes(",")){
|
|
263
|
-
let contract=this.parseCurrency(this.selectdata.f_contract_money)
|
|
264
|
-
this.selectdata.f_contract_money=contract
|
|
265
|
-
}else{
|
|
266
|
-
//转为数字
|
|
267
|
-
let contract= Number(this.selectdata.f_contract_money)
|
|
268
|
-
this.selectdata.f_contract_money=contract
|
|
269
|
-
}
|
|
270
|
-
//追加金额
|
|
271
|
-
if(this.selectdata.f_add_contract_money.toString().includes(",")){
|
|
272
|
-
let addMoney=this.parseCurrency(this.selectdata.f_add_contract_money)
|
|
273
|
-
this.selectdata.f_add_contract_money=addMoney
|
|
274
|
-
}else{
|
|
275
|
-
//转为数字
|
|
276
|
-
let addMoney= Number(this.selectdata.f_add_contract_money)
|
|
277
|
-
this.selectdata.f_add_contract_money=addMoney
|
|
278
|
-
}
|
|
279
|
-
//应交金额
|
|
280
|
-
if(this.selectdata.f_add_contract_money=== 'string'){
|
|
281
|
-
//追加金额
|
|
282
|
-
if(this.selectdata.f_due_money.toString().includes(",")){
|
|
283
|
-
let duemoney=this.parseCurrency(this.selectdata.f_due_money)
|
|
284
|
-
this.selectdata.f_due_money=duemoney
|
|
285
|
-
}else{
|
|
286
|
-
//转为数字
|
|
287
|
-
let duemoney= Number(this.selectdata.f_add_contract_money)
|
|
288
|
-
this.selectdata.f_due_money=duemoney
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
let data = {
|
|
292
|
-
contract: this.contract,
|
|
293
|
-
user: this.$login.f,
|
|
294
|
-
selectdata: this.selectdata
|
|
295
|
-
}
|
|
296
|
-
let res = await http.load('POST', 'rs/logic/addApplyContract', {data: data}, {
|
|
297
|
-
resolveMsg: null,
|
|
298
|
-
rejectMsg: '添加失败'
|
|
299
|
-
})
|
|
300
|
-
this.$dispatch('breakControl', this.selectdata)
|
|
301
|
-
},
|
|
302
|
-
async search () {
|
|
303
|
-
let http = new HttpResetClass()
|
|
304
|
-
let data = {
|
|
305
|
-
tablename: 't_contract',
|
|
306
|
-
condition: `f_process_id = '${this.selectdata.f_process_id}'`
|
|
307
|
-
}
|
|
308
|
-
let res = await http.load('POST', 'rs/sql/apply_singleTable', {data: data}, {
|
|
309
|
-
resolveMsg: null,
|
|
310
|
-
rejectMsg: '补充协议查询失败'
|
|
311
|
-
})
|
|
312
|
-
this.model.data = res.data
|
|
313
|
-
},
|
|
314
|
-
closeModal() {
|
|
315
|
-
this.showSupplement = false
|
|
316
|
-
this.showInvalid = false
|
|
317
|
-
this.contract = {}
|
|
318
|
-
this.search()
|
|
319
|
-
}
|
|
320
|
-
},
|
|
321
|
-
events: {
|
|
322
|
-
},
|
|
323
|
-
computed: {
|
|
324
|
-
contractType () {
|
|
325
|
-
return this.$appdata.getParam('合同类型')
|
|
326
|
-
}
|
|
327
|
-
},
|
|
328
|
-
watch: {
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
</script>
|
|
332
|
-
<style scoped>
|
|
333
|
-
.textNoLineBreak {
|
|
334
|
-
white-space: nowrap;
|
|
335
|
-
}
|
|
336
|
-
.head-but{
|
|
337
|
-
margin-left: 5px;
|
|
338
|
-
height: 34px;
|
|
339
|
-
/*background-color: #6aa6e2;*/
|
|
340
|
-
border-radius: 4px;
|
|
341
|
-
font-family: PingFang;
|
|
342
|
-
color: #ffffff;
|
|
343
|
-
}
|
|
344
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<div class="col-sm-12" style="margin: 20px 0px;">
|
|
3
|
+
<data-grid :model="model" v-ref:grid class="list_area table_sy" style="padding: 0px">
|
|
4
|
+
<template partial='head'>
|
|
5
|
+
<tr>
|
|
6
|
+
<th class="textNoLineBreak">序号</th>
|
|
7
|
+
<th class="textNoLineBreak">合同类型</th>
|
|
8
|
+
<th class="textNoLineBreak">合同金额</th>
|
|
9
|
+
<th class="textNoLineBreak">签订日期</th>
|
|
10
|
+
<th class="textNoLineBreak">提交人</th>
|
|
11
|
+
<th class="textNoLineBreak">备注</th>
|
|
12
|
+
<th class="textNoLineBreak">状态</th>
|
|
13
|
+
<th class="textNoLineBreak">作废人员</th>
|
|
14
|
+
<th class="textNoLineBreak">作废时间</th>
|
|
15
|
+
<th class="textNoLineBreak">作废原因</th>
|
|
16
|
+
<th class="textNoLineBreak">
|
|
17
|
+
<button
|
|
18
|
+
type="button"
|
|
19
|
+
class="btn btn-info head-but"
|
|
20
|
+
:disabled="$parent.$parent.mark === 1"
|
|
21
|
+
@click="$parent.$parent.showSupplement = !$parent.$parent.showSupplement"
|
|
22
|
+
>补充协议</button>
|
|
23
|
+
</th>
|
|
24
|
+
</tr>
|
|
25
|
+
</template>
|
|
26
|
+
<template partial='body'>
|
|
27
|
+
<tr>
|
|
28
|
+
<td style="text-align: center;">
|
|
29
|
+
<nobr>{{$index+1}}</nobr>
|
|
30
|
+
</td>
|
|
31
|
+
<td style="text-align: center;">
|
|
32
|
+
<nobr>{{row.f_contract_type}}</nobr>
|
|
33
|
+
</td>
|
|
34
|
+
<td style="text-align: center;">
|
|
35
|
+
<nobr>{{ $parent.$parent.formatCurrency(row.f_contract_money,2)}}</nobr>
|
|
36
|
+
</td>
|
|
37
|
+
<td style="text-align: center;">
|
|
38
|
+
<nobr>{{row.f_contract_time}}</nobr>
|
|
39
|
+
</td>
|
|
40
|
+
<td style="text-align: center;">
|
|
41
|
+
<nobr>{{row.f_operator}}</nobr>
|
|
42
|
+
</td>
|
|
43
|
+
<td style="text-align: center;">
|
|
44
|
+
<nobr>{{row.f_remarks}}</nobr>
|
|
45
|
+
</td>
|
|
46
|
+
<td style="text-align: center;">
|
|
47
|
+
<nobr>{{row.f_contract_status}}</nobr>
|
|
48
|
+
</td>
|
|
49
|
+
<td style="text-align: center;">
|
|
50
|
+
<nobr>{{row.f_void_staff}}</nobr>
|
|
51
|
+
</td>
|
|
52
|
+
<td style="text-align: center;">
|
|
53
|
+
<nobr>{{row.f_void_date}}</nobr>
|
|
54
|
+
</td>
|
|
55
|
+
<td style="text-align: center;">
|
|
56
|
+
<nobr>{{row.f_void_remarks}}</nobr>
|
|
57
|
+
</td>
|
|
58
|
+
<td style="text-align: center;">
|
|
59
|
+
<nobr>
|
|
60
|
+
<button
|
|
61
|
+
type="button"
|
|
62
|
+
name="button"
|
|
63
|
+
class="btn btn-link"
|
|
64
|
+
:disabled="$parent.$parent.mark === 1 || row.f_contract_status === '作废'"
|
|
65
|
+
@click="$parent.$parent.showInvalidModal(row)"
|
|
66
|
+
>作废</button>
|
|
67
|
+
</nobr>
|
|
68
|
+
</td>
|
|
69
|
+
</tr>
|
|
70
|
+
</template>
|
|
71
|
+
</data-grid>
|
|
72
|
+
|
|
73
|
+
<validator name="v">
|
|
74
|
+
<modal v-if="showSupplement" :show.sync="showSupplement" v-ref:modal :large="true" :backdrop="false">
|
|
75
|
+
<header slot="modal-header" class="modal-header">
|
|
76
|
+
<button type="button" class="close" @click="closeModal"><span>×</span></button>
|
|
77
|
+
<h4 class="modal-title">协议明细</h4>
|
|
78
|
+
</header>
|
|
79
|
+
<article slot="modal-body" class="modal-body clearfix">
|
|
80
|
+
<div class="form-group col-sm-12">
|
|
81
|
+
<label class="col-sm-2 control-label">合同编号:</label>
|
|
82
|
+
<div class="col-sm-10">
|
|
83
|
+
<input type="text"
|
|
84
|
+
class="form-control input_view"
|
|
85
|
+
style="width: 100%"
|
|
86
|
+
readonly
|
|
87
|
+
:value="selectdata.f_contract_number"
|
|
88
|
+
v-model="contract.f_contract_number" />
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
<div class="form-group col-sm-12" :class="[$v.f_contract_type.required ? 'has-error' : '']">
|
|
92
|
+
<label class="col-sm-2 control-label">合同类型:</label>
|
|
93
|
+
<div class="col-sm-10">
|
|
94
|
+
<input type="text" v-show="false"
|
|
95
|
+
class="form-control input_view"
|
|
96
|
+
v-validate:f_contract_type = "['required']"
|
|
97
|
+
v-model="contract.f_contract_type" />
|
|
98
|
+
<input-select
|
|
99
|
+
class="select select_list"
|
|
100
|
+
:value.sync="contract.f_contract_type"
|
|
101
|
+
v-model="contract.f_contract_type"
|
|
102
|
+
:options="contractType"
|
|
103
|
+
:valueSingle="true"></input-select>
|
|
104
|
+
</div>
|
|
105
|
+
</div>
|
|
106
|
+
<div class="form-group col-sm-12" :class="[$v.f_contract_money.required ? 'has-error' : '']">
|
|
107
|
+
<label class="col-sm-2 control-label">合同金额:</label>
|
|
108
|
+
<div class="col-sm-10">
|
|
109
|
+
<input type="number" style="width: 100%"
|
|
110
|
+
class="form-control input_view"
|
|
111
|
+
v-validate:f_contract_money = "['required']"
|
|
112
|
+
v-model="contract.f_contract_money" />
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
<div class="form-group col-sm-12">
|
|
116
|
+
<label class="col-sm-2 control-label">备注:</label>
|
|
117
|
+
<div class="col-sm-10">
|
|
118
|
+
<input type="text"
|
|
119
|
+
class="form-control input_view"
|
|
120
|
+
style="width: 100%"
|
|
121
|
+
v-model="contract.f_remarks" />
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
</article>
|
|
125
|
+
<footer slot="modal-footer" class="modal-footer">
|
|
126
|
+
<button type="button" class="btn btn-primary" :disabled='!$v.valid' @click="saveContract()">新增协议</button>
|
|
127
|
+
</footer>
|
|
128
|
+
</modal>
|
|
129
|
+
|
|
130
|
+
<modal v-if="showInvalid" :show.sync="showInvalid" v-ref:modal :large="true" :backdrop="false" title="作废协议">
|
|
131
|
+
<header slot="modal-header" class="modal-header">
|
|
132
|
+
<button type="button" class="close" @click="closeModal"><span>×</span></button>
|
|
133
|
+
<h4 class="modal-title">作废协议</h4>
|
|
134
|
+
</header>
|
|
135
|
+
<article slot="modal-body" class="modal-body clearfix">
|
|
136
|
+
<div class="form-group col-sm-12">
|
|
137
|
+
<label class="col-sm-2 control-label">合同编号:</label>
|
|
138
|
+
<div class="col-sm-10">
|
|
139
|
+
<input type="text"
|
|
140
|
+
class="form-control input_view"
|
|
141
|
+
style="width: 100%"
|
|
142
|
+
readonly
|
|
143
|
+
v-model="contract.f_contract_number" />
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
<div class="form-group col-sm-12">
|
|
147
|
+
<label class="col-sm-2 control-label">合同类型:</label>
|
|
148
|
+
<div class="col-sm-10">
|
|
149
|
+
<input type="text"
|
|
150
|
+
class="form-control input_view"
|
|
151
|
+
style="width: 100%"
|
|
152
|
+
readonly
|
|
153
|
+
v-model="contract.f_contract_type" />
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
<div class="form-group col-sm-12">
|
|
157
|
+
<label class="col-sm-2 control-label">合同金额:</label>
|
|
158
|
+
<div class="col-sm-10">
|
|
159
|
+
<input type="text"
|
|
160
|
+
class="form-control input_view"
|
|
161
|
+
style="width: 100%"
|
|
162
|
+
readonly
|
|
163
|
+
v-model="contract.f_contract_money" />
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
<div class="form-group col-sm-12">
|
|
167
|
+
<label class="col-sm-2 control-label">提交人员:</label>
|
|
168
|
+
<div class="col-sm-10">
|
|
169
|
+
<input type="text"
|
|
170
|
+
class="form-control input_view"
|
|
171
|
+
style="width: 100%"
|
|
172
|
+
readonly
|
|
173
|
+
v-model="contract.f_operator" />
|
|
174
|
+
</div>
|
|
175
|
+
</div>
|
|
176
|
+
<div class="form-group col-sm-12" :class="[$v.f_void_remarks.required ? 'has-error' : '']">
|
|
177
|
+
<label class="col-sm-2 control-label">作废原因:</label>
|
|
178
|
+
<div class="col-sm-10">
|
|
179
|
+
<input type="text" style="width: 100%"
|
|
180
|
+
class="form-control input_view"
|
|
181
|
+
v-validate:f_void_remarks = "['required']"
|
|
182
|
+
v-model="contract.f_void_remarks" />
|
|
183
|
+
</div>
|
|
184
|
+
</div>
|
|
185
|
+
</article>
|
|
186
|
+
<footer slot="modal-footer" class="modal-footer">
|
|
187
|
+
<button type="button" class="btn btn-primary" :disabled='!$v.valid' @click="invalidContract()">确认作废</button>
|
|
188
|
+
</footer>
|
|
189
|
+
</modal>
|
|
190
|
+
</validator>
|
|
191
|
+
</div>
|
|
192
|
+
</template>
|
|
193
|
+
<script>
|
|
194
|
+
import {getNowDate,isEmpty} from "../../../components/Util";
|
|
195
|
+
import {PagedList} from 'vue-client'
|
|
196
|
+
import {HttpResetClass} from 'vue-client'
|
|
197
|
+
export default {
|
|
198
|
+
title: '补充协议',
|
|
199
|
+
props: {
|
|
200
|
+
selectdata: {
|
|
201
|
+
type: Object
|
|
202
|
+
},
|
|
203
|
+
mark: {
|
|
204
|
+
type: Number,
|
|
205
|
+
default: 0
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
data () {
|
|
209
|
+
return {
|
|
210
|
+
showSupplement: false,
|
|
211
|
+
showInvalid: false,
|
|
212
|
+
model: {
|
|
213
|
+
data: null
|
|
214
|
+
},
|
|
215
|
+
contract: {}
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
ready () {
|
|
219
|
+
this.search()
|
|
220
|
+
},
|
|
221
|
+
methods: {
|
|
222
|
+
//将金额转换为千分位
|
|
223
|
+
formatCurrency(number, decimalPlaces) {
|
|
224
|
+
var num = parseFloat(number);
|
|
225
|
+
if (!isNaN(num)) {
|
|
226
|
+
num = num.toFixed(decimalPlaces || 0); // 将金额保留指定位数,四舍五入
|
|
227
|
+
num = num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); // 按照千分位进行分隔
|
|
228
|
+
return num;
|
|
229
|
+
} else {
|
|
230
|
+
return ''; // 如果输入框中的值不是数字,则返回空字符串
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
//将千分位金额转换为数字
|
|
234
|
+
parseCurrency(str) {
|
|
235
|
+
// 用正则表达式移除千分位分隔符,并转换为数字
|
|
236
|
+
return parseFloat(str.replace(/,/g, ''));
|
|
237
|
+
},
|
|
238
|
+
async invalidContract() {
|
|
239
|
+
let http = new HttpResetClass()
|
|
240
|
+
let data = {
|
|
241
|
+
selectdata: this.selectdata,
|
|
242
|
+
user: this.$login.f,
|
|
243
|
+
contract: this.contract
|
|
244
|
+
}
|
|
245
|
+
let res = await http.load('POST', 'rs/logic/deleteApplyContract', {data: data}, {
|
|
246
|
+
resolveMsg: null,
|
|
247
|
+
rejectMsg: '作废失败'
|
|
248
|
+
})
|
|
249
|
+
this.$dispatch('breakControl', this.selectdata)
|
|
250
|
+
},
|
|
251
|
+
showInvalidModal(row) {
|
|
252
|
+
this.contract = row
|
|
253
|
+
this.showInvalid = true
|
|
254
|
+
},
|
|
255
|
+
async saveContract() {
|
|
256
|
+
if (isEmpty(this.selectdata.f_contract_money)) {
|
|
257
|
+
this.$showAlert('请先录入主合同金额!!!', 'warning', 3000)
|
|
258
|
+
return
|
|
259
|
+
}
|
|
260
|
+
let http = new HttpResetClass()
|
|
261
|
+
// 合同金额
|
|
262
|
+
if(this.selectdata.f_contract_money.toString().includes(",")){
|
|
263
|
+
let contract=this.parseCurrency(this.selectdata.f_contract_money)
|
|
264
|
+
this.selectdata.f_contract_money=contract
|
|
265
|
+
}else{
|
|
266
|
+
//转为数字
|
|
267
|
+
let contract= Number(this.selectdata.f_contract_money)
|
|
268
|
+
this.selectdata.f_contract_money=contract
|
|
269
|
+
}
|
|
270
|
+
//追加金额
|
|
271
|
+
if(this.selectdata.f_add_contract_money.toString().includes(",")){
|
|
272
|
+
let addMoney=this.parseCurrency(this.selectdata.f_add_contract_money)
|
|
273
|
+
this.selectdata.f_add_contract_money=addMoney
|
|
274
|
+
}else{
|
|
275
|
+
//转为数字
|
|
276
|
+
let addMoney= Number(this.selectdata.f_add_contract_money)
|
|
277
|
+
this.selectdata.f_add_contract_money=addMoney
|
|
278
|
+
}
|
|
279
|
+
//应交金额
|
|
280
|
+
if(this.selectdata.f_add_contract_money=== 'string'){
|
|
281
|
+
//追加金额
|
|
282
|
+
if(this.selectdata.f_due_money.toString().includes(",")){
|
|
283
|
+
let duemoney=this.parseCurrency(this.selectdata.f_due_money)
|
|
284
|
+
this.selectdata.f_due_money=duemoney
|
|
285
|
+
}else{
|
|
286
|
+
//转为数字
|
|
287
|
+
let duemoney= Number(this.selectdata.f_add_contract_money)
|
|
288
|
+
this.selectdata.f_due_money=duemoney
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
let data = {
|
|
292
|
+
contract: this.contract,
|
|
293
|
+
user: this.$login.f,
|
|
294
|
+
selectdata: this.selectdata
|
|
295
|
+
}
|
|
296
|
+
let res = await http.load('POST', 'rs/logic/addApplyContract', {data: data}, {
|
|
297
|
+
resolveMsg: null,
|
|
298
|
+
rejectMsg: '添加失败'
|
|
299
|
+
})
|
|
300
|
+
this.$dispatch('breakControl', this.selectdata)
|
|
301
|
+
},
|
|
302
|
+
async search () {
|
|
303
|
+
let http = new HttpResetClass()
|
|
304
|
+
let data = {
|
|
305
|
+
tablename: 't_contract',
|
|
306
|
+
condition: `f_process_id = '${this.selectdata.f_process_id}'`
|
|
307
|
+
}
|
|
308
|
+
let res = await http.load('POST', 'rs/sql/apply_singleTable', {data: data}, {
|
|
309
|
+
resolveMsg: null,
|
|
310
|
+
rejectMsg: '补充协议查询失败'
|
|
311
|
+
})
|
|
312
|
+
this.model.data = res.data
|
|
313
|
+
},
|
|
314
|
+
closeModal() {
|
|
315
|
+
this.showSupplement = false
|
|
316
|
+
this.showInvalid = false
|
|
317
|
+
this.contract = {}
|
|
318
|
+
this.search()
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
events: {
|
|
322
|
+
},
|
|
323
|
+
computed: {
|
|
324
|
+
contractType () {
|
|
325
|
+
return this.$appdata.getParam('合同类型')
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
watch: {
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
</script>
|
|
332
|
+
<style scoped>
|
|
333
|
+
.textNoLineBreak {
|
|
334
|
+
white-space: nowrap;
|
|
335
|
+
}
|
|
336
|
+
.head-but{
|
|
337
|
+
margin-left: 5px;
|
|
338
|
+
height: 34px;
|
|
339
|
+
/*background-color: #6aa6e2;*/
|
|
340
|
+
border-radius: 4px;
|
|
341
|
+
font-family: PingFang;
|
|
342
|
+
color: #ffffff;
|
|
343
|
+
}
|
|
344
|
+
</style>
|