apply-clients 3.3.32 → 3.3.33

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.
@@ -389,6 +389,11 @@
389
389
  {resolveMsg: null, rejectMsg: '删除失败!!!'}
390
390
  )
391
391
 
392
+ res = await this.$resetpost(
393
+ 'rs/entity/t_apply',
394
+ this.show_data
395
+ )
396
+
392
397
  this.$dispatch('breakControl', this.show_data)
393
398
  },
394
399
  async 'onetomanyupdate' (index, rowIndex) {
@@ -402,11 +407,21 @@
402
407
  data
403
408
  )
404
409
 
410
+ res = await this.$resetpost(
411
+ 'rs/entity/t_apply',
412
+ this.show_data
413
+ )
414
+
405
415
  this.$dispatch('breakControl', this.show_data)
406
416
  },
407
417
  async 'onetomanyadd' (index) {
408
418
  let data = {
409
- f_process_id : this.show_data.f_process_id
419
+ f_process_id : this.show_data.f_process_id,
420
+ f_operator_id: this.$login.f.id,
421
+ f_operator: this.$login.f.name,
422
+ f_operation_date: new Date().Format('yyyy-MM-dd HH:mm:ss'),
423
+ f_orgid: this.$login.f.orgid,
424
+ f_orgname: this.$login.f.orgs
410
425
  }
411
426
  this.show_data.onetomany[index].fields.forEach(item => {
412
427
  data[item.field] = item.value
@@ -415,6 +430,12 @@
415
430
  `rs/entity/${this.show_data.onetomany[index].tables[0]}`,
416
431
  data
417
432
  )
433
+
434
+ res = await this.$resetpost(
435
+ 'rs/entity/t_apply',
436
+ this.show_data
437
+ )
438
+
418
439
  this.$dispatch('breakControl', this.show_data)
419
440
  }
420
441
  },
@@ -0,0 +1,213 @@
1
+ <template>
2
+ <div class="flex-row">
3
+ <div class="basic-main">
4
+ <criteria-paged :model="model" v-ref:cp>
5
+ <criteria partial='criteria' @condition-changed='$parent.searchCondition' v-ref:cri>
6
+ <div class="form-horizontal select-overspread container-fluid auto" partial>
7
+ <div class="row">
8
+ <div class="form-group col-sm-3">
9
+ <label class="font_normal_body">组织机构:</label>
10
+ <res-select
11
+ restype='organization'
12
+ :initresid='$parent.$parent.curorgid'
13
+ @res-select="$parent.$parent.getorg"
14
+ is-mul="false"
15
+ ></res-select>
16
+ </div>
17
+ <div class="form-group col-sm-3">
18
+ <label class="font_normal_body">工程编号:</label>
19
+ <input type="text" style="width: 60%" class="input_search" placeholder='工程编号' v-model="model.f_apply_num"
20
+ v-on:keyup.enter="$parent.$parent.search()"
21
+ condition="a.f_apply_num = '{}'">
22
+ </div>
23
+ <div class="form-group col-sm-3">
24
+ <label class="font_normal_body">操作人:</label>
25
+ <input type="text" style="width: 60%" class="input_search" placeholder='操作人' v-model="model.f_operator"
26
+ v-on:keyup.enter="$parent.$parent.search()"
27
+ condition="ma.f_operator like '%{}%'">
28
+ </div>
29
+ <div class="form-group col-sm-3 button-range">
30
+ <button class="button_search button_spacing" @click="$parent.$parent.search()" v-el:cx>查询</button>
31
+ <button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
32
+ <export-excel :data="$parent.$parent.getCondition"
33
+ :field="$parent.$parent.getfield"
34
+ sqlurl="rs/logic/applyExportfile"
35
+ sql-name="applyGetMaterial"
36
+ template-name='材料明细导出'
37
+ :choose-col="true"></export-excel>
38
+ <div
39
+ :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
40
+ @click="$parent.$parent.criteriaShow = !$parent.$parent.criteriaShow"
41
+ class="button_spacing"
42
+ style="float: right">
43
+ </div>
44
+ </div>
45
+ </div>
46
+ <div class="row" v-show="$parent.$parent.criteriaShow">
47
+ <div class="form-group col-sm-3">
48
+ <label class="font_normal_body">材料名称:</label>
49
+ <input type="text" style="width: 60%" class="input_search" placeholder='材料名称' v-model="model.f_material_name"
50
+ v-on:keyup.enter="$parent.$parent.search()"
51
+ condition="ma.f_material_name = '{}'">
52
+ </div>
53
+ <div class="form-group col-sm-3">
54
+ <label class="font_normal_body">材料型号:</label>
55
+ <input type="text" style="width: 60%" class="input_search" placeholder='材料型号' v-model="model.f_material_style"
56
+ v-on:keyup.enter="$parent.$parent.search()"
57
+ condition="ma.f_material_style = '{}'">
58
+ </div>
59
+ <div class="form-group col-sm-3">
60
+ <label class="font_normal_body">材料单位:</label>
61
+ <input type="text" style="width: 60%" class="input_search" placeholder='材料单位' v-model="model.f_material_unit"
62
+ v-on:keyup.enter="$parent.$parent.search()"
63
+ condition="ma.f_material_unit = '{}'">
64
+ </div>
65
+ <div class="form-group col-sm-3">
66
+ <label class="font_normal_body">材料数量:</label>
67
+ <input type="text" style="width: 60%" class="input_search" placeholder='材料数量' v-model="model.f_material_number"
68
+ v-on:keyup.enter="$parent.$parent.search()"
69
+ condition="ma.f_material_number = '{}'">
70
+ </div>
71
+ <div class="form-group col-sm-3">
72
+ <label for="startDate" class="font_normal_body">开始时间:</label>
73
+ <datepicker id="startDate" placeholder="开始日期"
74
+ style="width: 60%!important;"
75
+ v-model="model.startDate"
76
+ :value.sync="model.startDate"
77
+ :format="'yyyy-MM-dd 00:00:00'"
78
+ :show-reset-button="true"
79
+ condition="ma.f_operation_date >= '{}'">
80
+ </datepicker>
81
+ </div>
82
+ <div class="form-group col-sm-3">
83
+ <label for="endDate" class="font_normal_body">结束时间:</label>
84
+ <datepicker id="endDate" placeholder="结束日期"
85
+ style="width: 60%!important;"
86
+ v-model="model.endDate"
87
+ :value.sync="model.endDate"
88
+ :format="'yyyy-MM-dd 23:59:59'"
89
+ :show-reset-button="true"
90
+ condition="ma.f_operation_date <= '{}'">
91
+ </datepicker>
92
+ </div>
93
+ </div>
94
+ </div>
95
+ </criteria>
96
+ <data-grid :model="model" partial='list' v-ref:grid style="overflow: auto" class="list_area table_sy">
97
+ <template partial='head'>
98
+ <tr>
99
+ <th>序号</th>
100
+ <th>工程编号</th>
101
+ <th>材料名称</th>
102
+ <th>材料型号</th>
103
+ <th>材料单位</th>
104
+ <th>材料数量</th>
105
+ <th>操作人</th>
106
+ <th>操作时间</th>
107
+ </tr>
108
+ </template>
109
+ <template partial='body'>
110
+ <tr >
111
+ <td style="text-align: center;">
112
+ <nobr><font>{{$index+1}}</font></nobr>
113
+ </td>
114
+ <td style="text-align: center;">
115
+ <nobr><font>{{row.f_apply_num}}</font></nobr>
116
+ </td>
117
+ <td style="text-align: center;">
118
+ <nobr><font>{{row.f_material_name}}</font></nobr>
119
+ </td>
120
+ <td style="text-align: center;">
121
+ <nobr><font>{{row.f_material_style}}</font></nobr>
122
+ </td>
123
+ <td style="text-align: center;">
124
+ <nobr><font>{{row.f_material_unit}}</font></nobr>
125
+ </td>
126
+ <td style="text-align: center;">
127
+ <nobr><font>{{row.f_material_number}}</font></nobr>
128
+ </td>
129
+ <td style="text-align: center;">
130
+ <nobr><font>{{row.f_operator}}</font></nobr>
131
+ </td>
132
+ <td style="text-align: center;">
133
+ <nobr><font>{{row.f_operation_date}}</font></nobr>
134
+ </td>
135
+ </tr>
136
+ </template>
137
+ </data-grid>
138
+ </criteria-paged>
139
+ </div>
140
+ </div>
141
+ </template>
142
+
143
+ <script>
144
+ import {PagedList} from 'vue-client'
145
+ import {HttpResetClass} from 'vue-client'
146
+ export default {
147
+ title: '报建收费列表',
148
+ data () {
149
+ return {
150
+ model: new PagedList('rs/sql/applyGetMaterial', 30, null),
151
+ curorgid: [this.$login.f.orgid],
152
+ applytype: [{label: '全部', value: ''}, ...this.$appdata.getParam('报建类型')],
153
+ paymentMethod: [{label: '全部', value: ''}, ...this.$appdata.getParam('付款方式')],
154
+ chargeStatus: [
155
+ {label: '全部', value: ''},
156
+ {label: '有效', value: '有效'},
157
+ {label: '作废', value: '作废'},
158
+ {label: '退款', value: '退款'}
159
+ ],
160
+ criteriaShow: false,
161
+ chargeAll: {
162
+ count: 0,
163
+ sum: 0
164
+ },
165
+ getfield: {
166
+ 'f_apply_num': '工程编号',
167
+ 'f_material_name': '材料名称',
168
+ 'f_material_style': '材料型号',
169
+ 'f_material_unit': '材料单位',
170
+ 'f_material_number': '材料数量',
171
+ 'f_operator': '操作人',
172
+ 'f_operation_date': '操作时间'
173
+ }
174
+ }
175
+ },
176
+ ready () {
177
+ // 调用查询
178
+ this.search()
179
+ },
180
+ methods: {
181
+ clear () {
182
+ Object.keys(this.$refs.cp.$refs.cri.model).forEach((key) => {
183
+ this.$refs.cp.$refs.cri.model[key] = ''
184
+ })
185
+ },
186
+ searchCondition (args) {
187
+ args.condition = args.condition + ` and ma.f_orgid = '${this.curorgid[0]}'`
188
+ this.model.search(args.condition, args.model)
189
+ },
190
+ // 查询
191
+ search () {
192
+ this.$refs.cp.$refs.cri.search()
193
+ },
194
+ getorg (val) {
195
+ if (val.length <= 0) {
196
+ return
197
+ }
198
+ this.curorgid = val
199
+ this.search()
200
+ }
201
+ },
202
+ computed: {
203
+ getCondition () {
204
+ return {
205
+ condition: this.$refs.cp.$refs.cri.condition
206
+ }
207
+ }
208
+ }
209
+ }
210
+ </script>
211
+
212
+ <style scoped>
213
+ </style>
@@ -181,8 +181,8 @@
181
181
  </button>
182
182
  <ul slot="dropdown-menu" class="dropdown-menu dropdown-menu-right">
183
183
  <li>
184
- <a href="#" v-if="this.$login.f.rolesnames.indexOf('工程部派工') !== -1 || this.$login.f.rolesnames.indexOf('运营部派工') !== -1" @click="$parent.$parent.$parent.click(row)">{{row.f_sub_state}}</a>
185
- <a href="#" v-if="this.$login.f.rolesnames.indexOf('营业厅报装') !== -1" @click="$parent.$parent.$parent.stopApply(row)">异常终止</a>
184
+ <a href="#" v-if="this.$login.f.rolesnames.indexOf('工程部派工') !== -1 || this.$login.f.rolesnames.indexOf('运营部派工') !== -1 || (this.$login.f.rolesnames.indexOf('营业厅报装') !== -1 && row.f_sub_state === '待点火')" @click="$parent.$parent.$parent.click(row)">{{row.f_sub_state}}</a>
185
+ <a href="#" v-if="this.$login.f.rolesnames.indexOf('营业厅报装') !== -1 || this.$login.f.rolesnames.indexOf('运营部派工') !== -1" @click="$parent.$parent.$parent.stopApply(row)">异常终止</a>
186
186
  </li>
187
187
  </ul>
188
188
  </dropdown>
@@ -19,12 +19,12 @@
19
19
  v-on:keyup.enter="$parent.$parent.search()"
20
20
  condition="f_apply_num = '{}'">
21
21
  </div>
22
- <div class="form-group col-sm-3">
23
- <label class="font_normal_body">客户名称:</label>
24
- <input type="text" style="width:60%" class="input_search" v-model="model.f_user_name"
25
- v-on:keyup.enter="$parent.$parent.search()" condition="f_user_name like '%{}%'" placeholder='客户名称'>
26
- </div>
27
22
  <div class="form-group col-sm-3 button-range">
23
+ <a type="button" class="button_new button_spacing" v-if="$parent.$parent.projectStart"
24
+ href="/apply/download/excel/散户报装模板.xlsx" download>模板下载</a>
25
+ <button class="button_new button_spacing" style="width: max-content"
26
+ v-if="$parent.$parent.projectStart"
27
+ @click="$parent.$parent.showFile = !$parent.$parent.showFile">批量散户导入</button>
28
28
  <button class="button_new button_spacing" style="width: max-content"
29
29
  v-if="$parent.$parent.projectStart"
30
30
  @click="$parent.$parent.showModal = !$parent.$parent.showModal">工程发起</button>
@@ -39,6 +39,11 @@
39
39
  </div>
40
40
  </div>
41
41
  <div class="row" v-show="$parent.$parent.criteriaShow">
42
+ <div class="form-group col-sm-3">
43
+ <label class="font_normal_body">客户名称:</label>
44
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_user_name"
45
+ v-on:keyup.enter="$parent.$parent.search()" condition="f_user_name like '%{}%'" placeholder='客户名称'>
46
+ </div>
42
47
  <div class="form-group col-sm-3">
43
48
  <label class="font_normal_body">联系电话:</label>
44
49
  <input type="text" style="width:60%" class="input_search" placeholder='联系电话' v-model="model.f_phone"
@@ -214,6 +219,19 @@
214
219
  </div>
215
220
  </div>
216
221
  </modal>
222
+
223
+ <modal v-if="showFile" :show.sync="showFile" v-ref:modal :backdrop="false" title="选择文件">
224
+ <header slot="modal-header" class="modal-header">
225
+ <button type="button" class="close" @click="closeFile"><span>&times;</span></button>
226
+ <h4 class="modal-title">选择文件</h4>
227
+ </header>
228
+ <article slot="modal-body" class="modal-body">
229
+ <div class="form-group">
230
+ <file-upload class="my-file-uploader" action="rs/file/uploadFile" tagname="确定" v-ref:file></file-upload>
231
+ </div>
232
+ </article>
233
+ <footer slot="modal-footer" class="modal-footer"></footer>
234
+ </modal>
217
235
  </div>
218
236
  </template>
219
237
  <script>
@@ -237,7 +255,8 @@ import {HttpResetClass, PagedList} from 'vue-client'
237
255
  applytype: [{label: '全部', value: ''}, ...this.$appdata.getParam('报建类型')],
238
256
  defnames: [{label: '全部', value: ''}], // 流程节点
239
257
  applyNatures: [{label: '全部', value: ''}], // 报建性质
240
- criteriaShow: false
258
+ criteriaShow: false,
259
+ showFile: false
241
260
  }
242
261
  },
243
262
  ready () {
@@ -245,6 +264,12 @@ import {HttpResetClass, PagedList} from 'vue-client'
245
264
  this.search()
246
265
  },
247
266
  methods: {
267
+ closeFile () {
268
+ this.showFile = false
269
+ // 将选的文件清空
270
+ this.$refs.file.$el.querySelector('input').value = ''
271
+ this.search()
272
+ },
248
273
  // 点击操作
249
274
  click (val) {
250
275
  this.$dispatch('apply', val)
@@ -377,6 +402,17 @@ import {HttpResetClass, PagedList} from 'vue-client'
377
402
  }
378
403
  }
379
404
  }
405
+ },
406
+ events: {
407
+ async 'onFileUpload'(file, result) {
408
+ let data = {
409
+ filepath: result.f_downloadpath,
410
+ user: this.$login.f
411
+ }
412
+ let res = await this.$resetpost(`rs/logic/importApply`, {data:data}, {resolveMsg: null, rejectMsg: '导入失败!!!', silent: true}, 0)
413
+
414
+ this.closeFile()
415
+ }
380
416
  }
381
417
  }
382
418
  </script>
@@ -35,60 +35,87 @@
35
35
  /*opacity: 0.5;*/
36
36
  z-index: -1;
37
37
  }
38
+ .sign {
39
+ vertical-align: top;
40
+ padding: 10px;
41
+ }
42
+ .material {
43
+ text-align: left;
44
+ vertical-align: top;
45
+ padding: 10px;
46
+ }
38
47
  </style>
39
48
 
40
49
  <div style="margin-bottom: 20px" class="form-group select-overspread">
41
50
  <label class="control-label-justify control-label col-sm-2">打印施工通知单</label>
42
51
  <div class="col-sm-10" >
43
- <button class="button_search button_spacing" type="button" style="width: max-content;position: absolute">打印</button>
52
+ <button class="button_search button_spacing" type="button" style="width: max-content;position: absolute" @click="openModal()">打印</button>
44
53
  </div>
45
54
  </div>
46
55
 
47
- <div id="print" v-show="true">
48
- <h4>
49
- <span class="orgs">
50
- 施工安装通知单
51
- </span>
52
- </h4>
53
- <table border="1">
54
- <tr>
55
- <td>用户姓名</td>
56
- <td>{{ selectdata.f_user_name }}</td>
57
- <td>报装编号</td>
58
- <td>{{ selectdata.f_apply_num }}</td>
59
- <td>电&emsp;&emsp;&emsp;&emsp;话</td>
60
- <td>{{ selectdata.f_phone }}</td>
61
- </tr>
62
- <tr>
63
- <td>用户地址</td>
64
- <td colspan="3">{{ selectdata.f_address }}</td>
65
- <td>施工安装时间</td>
66
- <td>{{ selectdata.f_construction_date }}</td>
67
- </tr>
68
- <tr>
69
- <td>安装项目</td>
70
- <td>{{ selectdata.f_install_project }}</td>
71
- <td>通知时间</td>
72
- <td>{{ selectdata.f_construction_unit }}</td>
73
- <td>施工安装单位</td>
74
- <td>{{ selectdata.f_construction_unit }}</td>
75
- </tr>
76
- <tr style="height: 500px;">
77
- <td colspan="6">
56
+ <modal v-if="showModal" :show.sync="showModal" width="80%" title="打印预览" v-ref:modal large backdrop="false">
57
+ <header slot="modal-header" class="modal-header">
58
+ <button type="button" class="close" @click="colseModal()"><span>&times;</span></button>
59
+ <h4 class="modal-title">打印预览</h4>
60
+ </header>
61
+ <article slot="modal-body" class="modal-body">
62
+ <div id="print">
63
+ <h3><span style="letter-spacing: 15px">施工安装通知单</span></h3>
64
+ <table border="1">
65
+ <tr>
66
+ <td>用户姓名</td>
67
+ <td>{{ selectdata.f_user_name }}</td>
68
+ <td>报装编号</td>
69
+ <td>{{ selectdata.f_apply_num }}</td>
70
+ <td>电&emsp;&emsp;&emsp;&emsp;话</td>
71
+ <td>{{ selectdata.f_phone }}</td>
72
+ </tr>
73
+ <tr>
74
+ <td>用户地址</td>
75
+ <td colspan="3">{{ selectdata.f_address }}</td>
76
+ <td>施工安装时间</td>
77
+ <td>{{ selectdata.f_construction_date }}</td>
78
+ </tr>
79
+ <tr>
80
+ <td>安装项目</td>
81
+ <td>{{ selectdata.f_install_project }}</td>
82
+ <td>通知时间</td>
83
+ <td>{{ selectdata.sendtime }}</td>
84
+ <td>施工安装单位</td>
85
+ <td>{{ selectdata.f_construction_unit }}</td>
86
+ </tr>
87
+ <tr>
88
+ <td>表号</td>
89
+ <td colspan="2">{{ userfile.f_meternumber }}</td>
90
+ <td>表封号</td>
91
+ <td colspan="2">{{ userfile.f_metertitles }}</td>
92
+ </tr>
93
+ <tr>
94
+ <td colspan="6" class="material">
95
+ <p>施工安装情况</p>
96
+ <p v-for="item in selectdata.onetomany[0].rows" style="width: auto;display: inline-block">
97
+ {{$index + 1}}、{{item.f_material_name}}{{item.f_material_style}}&ensp;{{item.f_material_number}}{{item.f_material_unit}}&emsp;&emsp;
98
+ </p>
99
+ </td>
100
+ </tr>
101
+ <tr style="height: 100px">
102
+ <td colspan="2" class="sign">施工安装单位(签字)</td>
103
+ <td colspan="2" class="sign">工程验收(签字)</td>
104
+ <td colspan="2" class="sign">用户(签字)</td>
105
+ </tr>
106
+ <tr>
107
+ <td>备&emsp;&emsp;注</td>
108
+ <td colspan="5">{{ selectdata.f_construction_remarks }}</td>
109
+ </tr>
110
+ </table>
111
+ </div>
112
+ </article>
113
+ <footer slot="modal-footer" class="modal-footer">
114
+ <button type="button" class="btn btn-primary" @click="print()">打印</button>
115
+ </footer>
116
+ </modal>
117
+
78
118
 
79
- </td>
80
- </tr>
81
- <tr style="height: 100px">
82
- <td colspan="2">施工安装单位(签字)</td>
83
- <td colspan="2">工程验收(签字)</td>
84
- <td colspan="2">用户(签字)</td>
85
- </tr>
86
- <tr>
87
- <td>备&emsp;&emsp;注</td>
88
- <td colspan="5">{{ selectdata.f_construction_remarks }}</td>
89
- </tr>
90
- </table>
91
- </div>
92
119
  <print-element v-show="false" v-ref:print id='print' styleid='style'
93
120
  top='40' left='60' width='100%' height='100%'>
94
121
  </print-element>
@@ -97,6 +124,7 @@
97
124
 
98
125
  <script>
99
126
  import { isEmpty } from '../../../../Util'
127
+ import {HttpResetClass} from "vue-client";
100
128
  Date.prototype.Format = function (fmt) {
101
129
  var o = {
102
130
  "M+": this.getMonth() + 1, //月份
@@ -124,11 +152,41 @@ export default {
124
152
  }
125
153
  },
126
154
  data () {
127
- return {}
155
+ return {
156
+ showModal: false,
157
+ userfile: null
158
+ }
128
159
  },
129
160
  ready () {
130
161
  },
131
162
  methods: {
163
+ colseModal () {
164
+ this.showModal = false
165
+ this.userfile = null
166
+ },
167
+ print () {
168
+ this.$refs.print.PrintTable()
169
+ },
170
+ openModal () {
171
+ this.getUserFiles()
172
+
173
+ this.showModal = true
174
+ },
175
+ async getUserFiles () {
176
+ let data = {
177
+ tablename: 't_userfiles',
178
+ condition: `f_userinfo_id = '${this.selectdata.f_userinfo_id}'`
179
+ }
180
+ let http = new HttpResetClass()
181
+ let res = await http.load(
182
+ 'POST',
183
+ `rs/sql/singleTable`,
184
+ {data: data},
185
+ {resolveMsg: null, rejectMsg: '表具信息查询失败!!!'}
186
+ )
187
+
188
+ this.userfile = res.data[0]
189
+ },
132
190
  },
133
191
  computed: {
134
192
  orgs () {
@@ -645,7 +645,7 @@ export default {
645
645
  let http = new HttpResetClass()
646
646
  let res = await http.load(
647
647
  'POST',
648
- `rs/sql/getApplyMaterial`,
648
+ `rs/sql/getStockMaterial`,
649
649
  {data: data},
650
650
  {resolveMsg: null, rejectMsg: '材料查询失败!!!'}
651
651
  )
@@ -1193,7 +1193,7 @@ export default {
1193
1193
  f_process_id : this.show_data.f_process_id,
1194
1194
  f_operator_id: this.$login.f.id,
1195
1195
  f_operator: this.$login.f.name,
1196
- f_operation_date: new Date(),
1196
+ f_operation_date: new Date().Format('yyyy-MM-dd HH:mm:ss'),
1197
1197
  f_orgid: this.$login.f.orgid,
1198
1198
  f_orgname: this.$login.f.orgs
1199
1199
  }