apply-clients 3.5.4-21 → 3.5.4-23
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/package.json +1 -1
- package/src/apply.js +2 -3
- package/src/applyAndroid.js +1 -0
- package/src/components/android/AppCheckTakePic.vue +168 -0
- package/src/components/android/Process/AppServiceControl.vue +0 -1
- package/src/components/product/PcZhihuanManagement.vue +160 -0
- package/src/filiale/fugou/android/AppServiceControl.vue +21 -4
- package/src/filiale/fugou/android/AppZhihuanManagement.vue +191 -0
- package/src/filiale/fugou/android.js +1 -0
- package/src/filiale/fugou/pc/ExplorationSelect.vue +502 -0
- package/src/filiale/fugou/pc.js +1 -0
- package/src/filiale/shexian/android/AppServiceControl.vue +4 -3
- package/src/filiale/shexian/android/AppTakePic.vue +6 -0
package/package.json
CHANGED
package/src/apply.js
CHANGED
|
@@ -17,6 +17,7 @@ export default function (filiale) {
|
|
|
17
17
|
Vue.component('service-control', (resolve) => { require(['./components/product/Process/Service/ServiceControl'], resolve) })
|
|
18
18
|
// 公共业务显示(view层)页
|
|
19
19
|
Vue.component('service-view', (resolve) => { require(['./components/product/ServiceView'], resolve) })
|
|
20
|
+
Vue.component('app-check-take-pic', (resolve) => { require(['./components/android/AppCheckTakePic'], resolve) })
|
|
20
21
|
Vue.component('onetomany', (resolve) => { require(['./components/product/Onetomany'], resolve) })
|
|
21
22
|
// 显示退回理由tab页
|
|
22
23
|
Vue.component('show-back-reason', (resolve) => { require(['./components/product/Process/ShowBackReason'], resolve) })
|
|
@@ -122,9 +123,7 @@ export default function (filiale) {
|
|
|
122
123
|
Vue.component('gongjian-apply-list', (resolve) => { require(['./components/product/GongJianPush/ApplyPushList'], resolve) })
|
|
123
124
|
// 报建数据详情
|
|
124
125
|
Vue.component('gongjian-apply-dispose', (resolve) => { require(['./components/product/GongJianPush/ApplyPushDispose'], resolve) })
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
126
|
+
Vue.component('apply-zhihuan-management', (resolve) => { require(['./components/product/PcZhihuanManagement'], resolve) })
|
|
128
127
|
Vue.component('apply-material-display', (resolve) => { require(['./components/product/MaterialsManage/MaterialsList'], resolve) })
|
|
129
128
|
Vue.component('apply-material-manage', (resolve) => { require(['./components/product/MaterialsManage/MaterialsManage'], resolve) })
|
|
130
129
|
Vue.component('apply-materials-base', (resolve) => { require(['./components/product/MaterialsManage/MaterialsBase'], resolve) })
|
package/src/applyAndroid.js
CHANGED
|
@@ -19,6 +19,7 @@ export default function (filiale) {
|
|
|
19
19
|
|
|
20
20
|
Vue.component('app-sign', (resolve) => { require(['./components/android/AppSign'], resolve) })
|
|
21
21
|
Vue.component('app-take-pic', (resolve) => { require(['./components/android/AppTakePic'], resolve) })
|
|
22
|
+
Vue.component('app-check-take-pic', (resolve) => { require(['./components/android/AppCheckTakePic'], resolve) })
|
|
22
23
|
Vue.component('app-service-view', (resolve) => { require(['./components/android/AppServiceView'], resolve) })
|
|
23
24
|
Vue.component('app-onetomany', (resolve) => { require(['./components/android/AppOnetomany'], resolve) })
|
|
24
25
|
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="panel">
|
|
3
|
+
<div class="panel-body panel-self" style="background-color: #F8F8F8;">
|
|
4
|
+
<div class="row form-group" style="height: 240px;overflow: scroll;">
|
|
5
|
+
<div class="col-xs-4 col-sm-3 col-md-2 col-xs-offset-1 col-sm-offset-1 col-md-offset-1" v-for="(index,file) in fileList">
|
|
6
|
+
<img-self :src="$androidUtil.getProxyUrl()+'/rs/image/file/'+file.f_filename" :width="120" :height="170"></img-self>
|
|
7
|
+
<img v-if="isdelete" src="../../../src/assets/删除.png" style="width: 15px;margin-top: -80px" @click.prevent="delfile(file, index)">
|
|
8
|
+
</div>
|
|
9
|
+
</div>
|
|
10
|
+
<button class="btn" style="background-color: #7dc1f4;border-radius: 5px;margin-right: 10px" @click.prevent="takePic(type)">拍照</button>
|
|
11
|
+
<button class="btn" style="background-color: #7dc1f4;border-radius: 5px;margin-right: 10px" @click.prevent="takePic1(type)">相册</button>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
</template>
|
|
15
|
+
|
|
16
|
+
<script>
|
|
17
|
+
import {HttpResetClass} from 'vue-client'
|
|
18
|
+
import {guid, toStandardTimeString} from '../Util'
|
|
19
|
+
import Vue from 'vue'
|
|
20
|
+
export default {
|
|
21
|
+
title: '附件',
|
|
22
|
+
props: ['blobid', 'type', 'defname', 'istype', 'typelabel', 'isdelete', 'istakepic','flag'],
|
|
23
|
+
data () {
|
|
24
|
+
return {
|
|
25
|
+
fileList: []
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
ready () {
|
|
29
|
+
this.getFiles()
|
|
30
|
+
},
|
|
31
|
+
methods: {
|
|
32
|
+
async getFiles () {
|
|
33
|
+
console.log('----------------开始查询图片----------------')
|
|
34
|
+
this.fileList = []
|
|
35
|
+
|
|
36
|
+
let http = new HttpResetClass()
|
|
37
|
+
|
|
38
|
+
let data = {
|
|
39
|
+
tablename: 't_files',
|
|
40
|
+
condition: `f_blobid = '${this.blobid}' and fremarks='${this.flag}' order by f_uploaddate desc `
|
|
41
|
+
}
|
|
42
|
+
let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/apply_singleTable`, {data: data}, {
|
|
43
|
+
// let res = await http.load('POST', `rs/sql/apply_singleTable`, {data: data}, {
|
|
44
|
+
warnMsg: null,
|
|
45
|
+
resolveMsg: null
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
for (var i = 0; i < res.data.length; i++) {
|
|
49
|
+
console.log('-----------地址----------------')
|
|
50
|
+
console.log(`${this.$androidUtil.getProxyUrl()}/${res.data[i].f_downloadpath.substring(res.data[i].f_downloadpath.lastIndexOf(":\\") + 2)}`)
|
|
51
|
+
res.data[i].f_downloadURL = `${this.$androidUtil.getProxyUrl()}/${res.data[i].f_downloadpath.substring(res.data[i].f_downloadpath.lastIndexOf(":\\") + 2)}`
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
this.fileList = res.data
|
|
55
|
+
},
|
|
56
|
+
delfile (file, index) {
|
|
57
|
+
this.$resetdelete(`${this.$androidUtil.getProxyUrl()}/rs/entity/t_files`, {id: file.id}, {resolveMsg: '删除成功', rejectMsg: '删除失败'}).then((res) => {
|
|
58
|
+
this.$dispatch("delResid", file.id)
|
|
59
|
+
this.getFiles()
|
|
60
|
+
})
|
|
61
|
+
},
|
|
62
|
+
cameraCallBack (fileName, fileUrl) {
|
|
63
|
+
console.log('-----------cameraCallBack-----------------')
|
|
64
|
+
let data = {
|
|
65
|
+
blodid: HostApp.__this__.blobid,
|
|
66
|
+
type: HostApp.__this__.type,
|
|
67
|
+
defname: HostApp.__this__.defname,
|
|
68
|
+
username: Vue.user.name,
|
|
69
|
+
fremarks: this.flag,
|
|
70
|
+
fileName: fileName,
|
|
71
|
+
fileUrl: fileUrl
|
|
72
|
+
}
|
|
73
|
+
console.log('-----------bzLogic-----------------')
|
|
74
|
+
let res=HostApp.bzLogic({
|
|
75
|
+
'logic': 'appFileUpload',
|
|
76
|
+
'data': data
|
|
77
|
+
})
|
|
78
|
+
console.log('----------------开始回调查询-------------------')
|
|
79
|
+
HostApp.__this__.getFiles()
|
|
80
|
+
console.log('----------------查询回调结束-------------------')
|
|
81
|
+
HostApp.__callback__ = null
|
|
82
|
+
HostApp.__this__ = null
|
|
83
|
+
},
|
|
84
|
+
takePic (title) {
|
|
85
|
+
// 拍照成功回调
|
|
86
|
+
HostApp.__callback__ = this.cameraCallBack
|
|
87
|
+
HostApp.__this__ = this
|
|
88
|
+
let fileName = guid() + '.jpg'
|
|
89
|
+
// 打开相机
|
|
90
|
+
HostApp._open_a_page({
|
|
91
|
+
type: 'boomerang',
|
|
92
|
+
page: 'com.aofeng.hybrid.android.peripheral.CameraActivity',
|
|
93
|
+
param: {
|
|
94
|
+
file: fileName,
|
|
95
|
+
requestCode: 200,
|
|
96
|
+
callback: 'javascript:HostApp.__callback__("' + fileName + '", "%s");',
|
|
97
|
+
watermark: title + '\t时间:' + toStandardTimeString() + '\t' + Vue.user.name // 水印
|
|
98
|
+
}
|
|
99
|
+
})
|
|
100
|
+
},
|
|
101
|
+
cameraCallBack1 (fileName, fileUrl) {
|
|
102
|
+
if(fileUrl instanceof Array){
|
|
103
|
+
fileUrl.forEach((row)=>{
|
|
104
|
+
console.log('照片名字',row.match(/[^\/]+$/)[0])
|
|
105
|
+
let data = {
|
|
106
|
+
blodid: HostApp.__this__.blobid,
|
|
107
|
+
type: HostApp.__this__.type,
|
|
108
|
+
defname: HostApp.__this__.defname,
|
|
109
|
+
username: Vue.user.name,
|
|
110
|
+
fremarks: this.flag,
|
|
111
|
+
fileName: row.match(/[^\/]+$/)[0],
|
|
112
|
+
fileUrl: row
|
|
113
|
+
}
|
|
114
|
+
console.log('-----------bzLogic-----------------')
|
|
115
|
+
let res=HostApp.bzLogic({
|
|
116
|
+
'logic': 'appFileUpload',
|
|
117
|
+
'data': data
|
|
118
|
+
})
|
|
119
|
+
})
|
|
120
|
+
HostApp.__this__.getFiles()
|
|
121
|
+
HostApp.__callback__ = null
|
|
122
|
+
HostApp.__this__ = null
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
takePic1(title) {
|
|
126
|
+
HostApp.__callback__ = this.cameraCallBack1
|
|
127
|
+
HostApp.__this__ = this
|
|
128
|
+
let idx = 'aofeng'
|
|
129
|
+
let fileName = guid() + '.jpg'
|
|
130
|
+
HostApp._open_a_page({
|
|
131
|
+
type: 'boomerang',
|
|
132
|
+
page: 'com.aofeng.hybrid.android.peripheral.ActionMultiplePickActivity',
|
|
133
|
+
param: {
|
|
134
|
+
file: fileName,
|
|
135
|
+
requestCode: 200,
|
|
136
|
+
callback: 'javascript:HostApp.__callback__("' + fileName + '", %s);',
|
|
137
|
+
watermark: title + '\t时间:' + toStandardTimeString() + '\t' + Vue.user.name // 水印
|
|
138
|
+
}
|
|
139
|
+
})
|
|
140
|
+
},
|
|
141
|
+
|
|
142
|
+
},
|
|
143
|
+
computed: {
|
|
144
|
+
typeList () {
|
|
145
|
+
if (this.typelabel) {
|
|
146
|
+
return this.$appdata.getParam(this.typelabel)
|
|
147
|
+
}
|
|
148
|
+
return this.$appdata.getParam('使用类型')
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
events: {
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
</script>
|
|
155
|
+
|
|
156
|
+
<style lang="less">
|
|
157
|
+
.fileType {
|
|
158
|
+
float: left;
|
|
159
|
+
.select-style {
|
|
160
|
+
background: #f8f8f8;
|
|
161
|
+
border: 0px;
|
|
162
|
+
}
|
|
163
|
+
input {
|
|
164
|
+
border-left: none;
|
|
165
|
+
width: 100%;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
</style>
|
|
@@ -0,0 +1,160 @@
|
|
|
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
|
+
</tr>
|
|
11
|
+
</template>
|
|
12
|
+
<template partial='body'>
|
|
13
|
+
<tr>
|
|
14
|
+
<td style="text-align: center;">
|
|
15
|
+
<nobr>{{$index+1}}</nobr>
|
|
16
|
+
</td>
|
|
17
|
+
<td style="text-align: center;" >
|
|
18
|
+
<nobr>{{row.f_check_list}}</nobr>
|
|
19
|
+
</td>
|
|
20
|
+
<td style="text-align: center;">
|
|
21
|
+
<nobr>{{row.f_check_value}}</nobr>
|
|
22
|
+
</td>
|
|
23
|
+
<td style="text-align: center;">
|
|
24
|
+
<nobr>
|
|
25
|
+
<button
|
|
26
|
+
type="button"
|
|
27
|
+
name="button"
|
|
28
|
+
class="btn btn-link"
|
|
29
|
+
@click="$parent.$parent.showModal(row)"
|
|
30
|
+
>查看照片</button>
|
|
31
|
+
</nobr>
|
|
32
|
+
</td>
|
|
33
|
+
</tr>
|
|
34
|
+
</template>
|
|
35
|
+
</data-grid>
|
|
36
|
+
<validator name="v">
|
|
37
|
+
<modal v-if="showCheckModel" :show.sync="showCheckModel" v-ref:modal :large="true" :backdrop="false" title="收费明细">
|
|
38
|
+
<header slot="modal-header" class="modal-header">
|
|
39
|
+
<button type="button" class="close" @click="closeModal"><span>×</span></button>
|
|
40
|
+
<h4 class="modal-title">检查明细照片</h4>
|
|
41
|
+
</header>
|
|
42
|
+
<article slot="modal-body" class="modal-body clearfix">
|
|
43
|
+
<div :class="bootstraped ? bootstraped + ' showData' : 'col-sm-6 showData'" v-for="row in fileInfoData">
|
|
44
|
+
<div class="col-sm-12 item">
|
|
45
|
+
<div class="left col-sm-5">
|
|
46
|
+
<a href="#" class="thumbnail" style="width: 100%;height: 100%">
|
|
47
|
+
<img :src="row" alt="..."/>
|
|
48
|
+
</a>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
</article>
|
|
53
|
+
<footer slot="modal-footer" class="modal-footer">
|
|
54
|
+
</footer>
|
|
55
|
+
</modal>
|
|
56
|
+
</validator>
|
|
57
|
+
</div>
|
|
58
|
+
</template>
|
|
59
|
+
<script>
|
|
60
|
+
import {HttpResetClass} from 'vue-client'
|
|
61
|
+
import Vue from 'vue'
|
|
62
|
+
import {isEmpty} from "../Util";
|
|
63
|
+
|
|
64
|
+
export default {
|
|
65
|
+
title: '检查项管理',
|
|
66
|
+
props: {
|
|
67
|
+
selectdata: {
|
|
68
|
+
type: Object
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
data () {
|
|
72
|
+
return {
|
|
73
|
+
model: {
|
|
74
|
+
data: null
|
|
75
|
+
},
|
|
76
|
+
flag:0,
|
|
77
|
+
showCheckModel: false,
|
|
78
|
+
checkList:{},
|
|
79
|
+
item: [{label: '是', value: '是'},{label: '否', value: '否'}],
|
|
80
|
+
hasList:false,
|
|
81
|
+
savelist:[],
|
|
82
|
+
fileInfoData:[]
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
ready () {
|
|
86
|
+
this.search()
|
|
87
|
+
},
|
|
88
|
+
methods: {
|
|
89
|
+
showModal(row){
|
|
90
|
+
this.load(row)
|
|
91
|
+
this.showCheckModel=true
|
|
92
|
+
},
|
|
93
|
+
closeModal() {
|
|
94
|
+
this.showCheckModel=false
|
|
95
|
+
},
|
|
96
|
+
//查询
|
|
97
|
+
async search() {
|
|
98
|
+
let http = new HttpResetClass()
|
|
99
|
+
let data = {
|
|
100
|
+
tablename: 't_apply_check',
|
|
101
|
+
condition: `f_process_id= '${this.selectdata.f_process_id}'`
|
|
102
|
+
}
|
|
103
|
+
let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/apply_singleTable`, {data:data}, {
|
|
104
|
+
resolveMsg: null,
|
|
105
|
+
rejectMsg: '开发商档案查询失败!!!'
|
|
106
|
+
})
|
|
107
|
+
if(res.data.length>0){
|
|
108
|
+
this.model.data=res.data
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
async load(row) {
|
|
112
|
+
this.fileInfoData=[]
|
|
113
|
+
let condition = ''
|
|
114
|
+
condition = `f_blobid= '${this.selectdata.f_process_id}' and fremarks='${this.selectdata.f_apply_num+row.id}' `
|
|
115
|
+
let http = new HttpResetClass()
|
|
116
|
+
let data = {
|
|
117
|
+
tablename: 't_files',
|
|
118
|
+
condition: condition + ` order by f_uploaddate desc `
|
|
119
|
+
}
|
|
120
|
+
let getFile = await http.load('POST', 'rs/sql/apply_singleTable', {data: data}, {
|
|
121
|
+
warnMsg: null,
|
|
122
|
+
resolveMsg: null
|
|
123
|
+
})
|
|
124
|
+
for (var i = 0; i < getFile.data.length; i++) {
|
|
125
|
+
// 如果使用类型包含导入字样,则是execl文件导入的,不做显示
|
|
126
|
+
if(getFile.data[i].fusetype&&(getFile.data[i].fusetype.includes('execl导入'))){
|
|
127
|
+
getFile.data.splice(i,1)
|
|
128
|
+
i--
|
|
129
|
+
continue
|
|
130
|
+
}
|
|
131
|
+
let temp = getFile.data[i].f_filename
|
|
132
|
+
let src = "http://" + location.host + "/rs/image/file/" + temp
|
|
133
|
+
this.fileInfoData.push(src)
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
events: {
|
|
138
|
+
},
|
|
139
|
+
computed: {
|
|
140
|
+
CheckItems() {
|
|
141
|
+
return this.$appdata.getParam("报建检查项目")
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
watch: {
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
</script>
|
|
148
|
+
<style scoped>
|
|
149
|
+
.textNoLineBreak {
|
|
150
|
+
white-space: nowrap;
|
|
151
|
+
}
|
|
152
|
+
.head-but{
|
|
153
|
+
margin-left: 5px;
|
|
154
|
+
height: 34px;
|
|
155
|
+
/*background-color: #6aa6e2;*/
|
|
156
|
+
border-radius: 4px;
|
|
157
|
+
font-family: PingFang;
|
|
158
|
+
color: #ffffff;
|
|
159
|
+
}
|
|
160
|
+
</style>
|
|
@@ -52,6 +52,10 @@ export default {
|
|
|
52
52
|
this.refurbish()
|
|
53
53
|
},
|
|
54
54
|
methods: {
|
|
55
|
+
/*获取服务人*/
|
|
56
|
+
getServicPeo(){
|
|
57
|
+
this.setLabelValue("服务人",Vue.user.name)
|
|
58
|
+
},
|
|
55
59
|
async buttonCommit() {
|
|
56
60
|
if(this.show_data.button.button_name){
|
|
57
61
|
this.$refs.serviceview.disablebtu()
|
|
@@ -639,6 +643,7 @@ export default {
|
|
|
639
643
|
this.$nextTick(() => {
|
|
640
644
|
this.showview = true
|
|
641
645
|
})
|
|
646
|
+
this.getServicPeo()
|
|
642
647
|
},
|
|
643
648
|
signClean () {
|
|
644
649
|
this.selectdata.f_construction_sign = null
|
|
@@ -1596,7 +1601,7 @@ export default {
|
|
|
1596
1601
|
let f_address_type = this.show_data.fields[index].value
|
|
1597
1602
|
for (const item of this.show_data.fields) {
|
|
1598
1603
|
if (f_address_type === '民用市区') {
|
|
1599
|
-
if (
|
|
1604
|
+
if ( item.label === '街道/乡镇' || item.label === '集收单位' || item.label === '门牌号' || item.label === '小区') {
|
|
1600
1605
|
item.hidden = false
|
|
1601
1606
|
item.required = true
|
|
1602
1607
|
item.value = null
|
|
@@ -1612,7 +1617,7 @@ export default {
|
|
|
1612
1617
|
}
|
|
1613
1618
|
}
|
|
1614
1619
|
if (f_address_type === '民用乡镇') {
|
|
1615
|
-
if (item.label === '
|
|
1620
|
+
if ( item.label === '街道/乡镇' || item.label === '集收单位' || item.label === '门牌号'|| item.label === '小区') {
|
|
1616
1621
|
item.hidden = false
|
|
1617
1622
|
item.required = true
|
|
1618
1623
|
item.value = null
|
|
@@ -1633,7 +1638,7 @@ export default {
|
|
|
1633
1638
|
}
|
|
1634
1639
|
}
|
|
1635
1640
|
if (f_address_type === '特殊地址') {
|
|
1636
|
-
if (
|
|
1641
|
+
if ( item.label === '街道/乡镇') {
|
|
1637
1642
|
item.hidden = false
|
|
1638
1643
|
item.required = true
|
|
1639
1644
|
item.value = null
|
|
@@ -1717,7 +1722,19 @@ export default {
|
|
|
1717
1722
|
this.electiveLabels('片区', '地址类型',)
|
|
1718
1723
|
}
|
|
1719
1724
|
},
|
|
1720
|
-
'onblur' (index) {
|
|
1725
|
+
'onblur' (index) {
|
|
1726
|
+
if(this.show_data.fields[index].label==="优惠金额"){
|
|
1727
|
+
let contract=this.getLableValue('合同金额')
|
|
1728
|
+
let add=this.getLableValue('追加款')
|
|
1729
|
+
let money = this.getLableValue('优惠金额')
|
|
1730
|
+
//转为数字,然后contract减去money,保留两位小数
|
|
1731
|
+
let money_num = parseFloat(money)
|
|
1732
|
+
let add_num = parseFloat(add)
|
|
1733
|
+
let contract_num = parseFloat(contract)
|
|
1734
|
+
let new_contract = contract_num+add_num - money_num
|
|
1735
|
+
this.setLabelValue('应交金额', new_contract.toFixed(2))
|
|
1736
|
+
}
|
|
1737
|
+
},
|
|
1721
1738
|
'oninput' (index) {},
|
|
1722
1739
|
'initializtionView' () {},
|
|
1723
1740
|
async 'onchangeModal' (index, fieldIndex) {
|
|
@@ -0,0 +1,191 @@
|
|
|
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
|
+
</tr>
|
|
11
|
+
</template>
|
|
12
|
+
<template partial='body'>
|
|
13
|
+
<tr>
|
|
14
|
+
<td style="text-align: center;">
|
|
15
|
+
<nobr>{{$index+1}}</nobr>
|
|
16
|
+
</td>
|
|
17
|
+
<td style="text-align: center;" >
|
|
18
|
+
<nobr>{{row.f_check_list}}</nobr>
|
|
19
|
+
</td>
|
|
20
|
+
<td style="text-align: center;">
|
|
21
|
+
<nobr>{{row.f_check_value}}</nobr>
|
|
22
|
+
</td>
|
|
23
|
+
<td style="text-align: center;">
|
|
24
|
+
<nobr>
|
|
25
|
+
<button
|
|
26
|
+
type="button"
|
|
27
|
+
name="button"
|
|
28
|
+
class="btn btn-link"
|
|
29
|
+
@click="$parent.$parent.showModal(row)"
|
|
30
|
+
>修改</button>
|
|
31
|
+
</nobr>
|
|
32
|
+
</td>
|
|
33
|
+
</tr>
|
|
34
|
+
</template>
|
|
35
|
+
</data-grid>
|
|
36
|
+
<validator name="v">
|
|
37
|
+
<modal v-if="showCheckModel" :show.sync="showCheckModel" v-ref:modal :large="true" :backdrop="false" title="收费明细">
|
|
38
|
+
<header slot="modal-header" class="modal-header">
|
|
39
|
+
<button type="button" class="close" @click="closeModal"><span>×</span></button>
|
|
40
|
+
<h4 class="modal-title">检查明细</h4>
|
|
41
|
+
</header>
|
|
42
|
+
<article slot="modal-body" class="modal-body clearfix">
|
|
43
|
+
<div class="form-group col-sm-12">
|
|
44
|
+
<label class="col-sm-2 control-label">检查项目:</label>
|
|
45
|
+
<div class="col-sm-10">
|
|
46
|
+
<textarea width="100%" rows="3" v-model="checkList.f_check_list"></textarea>
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
</div>
|
|
50
|
+
<div class="form-group col-sm-12" >
|
|
51
|
+
<label class="col-sm-2 control-label">检查结果:</label>
|
|
52
|
+
<div class="col-sm-10">
|
|
53
|
+
<input-select
|
|
54
|
+
placeholder='请选择' width="100%"
|
|
55
|
+
v-model="checkList.f_check_value"
|
|
56
|
+
:value.sync="checkList.f_check_value"
|
|
57
|
+
:options='item'
|
|
58
|
+
class="select select_list"
|
|
59
|
+
:value-single="true"
|
|
60
|
+
close-on-select ></input-select>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
<app-check-take-pic
|
|
64
|
+
:blobid="selectdata.f_process_id"
|
|
65
|
+
:flag="flag"
|
|
66
|
+
:defname="selectdata.defname"
|
|
67
|
+
:isdelete="true"
|
|
68
|
+
:istakepic="true"
|
|
69
|
+
:istype="true">
|
|
70
|
+
</app-check-take-pic>
|
|
71
|
+
</article>
|
|
72
|
+
<footer slot="modal-footer" class="modal-footer">
|
|
73
|
+
<button type="button" class="btn btn-primary" :disabled='!$v.valid' @click="save()">保存</button>
|
|
74
|
+
</footer>
|
|
75
|
+
</modal>
|
|
76
|
+
</validator>
|
|
77
|
+
</div>
|
|
78
|
+
</template>
|
|
79
|
+
<script>
|
|
80
|
+
import {HttpResetClass} from 'vue-client'
|
|
81
|
+
import Vue from 'vue'
|
|
82
|
+
|
|
83
|
+
export default {
|
|
84
|
+
title: '检查项管理',
|
|
85
|
+
props: {
|
|
86
|
+
selectdata: {
|
|
87
|
+
type: Object
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
data () {
|
|
91
|
+
return {
|
|
92
|
+
model: {
|
|
93
|
+
data: null
|
|
94
|
+
},
|
|
95
|
+
flag:0,
|
|
96
|
+
showCheckModel: false,
|
|
97
|
+
checkList:{},
|
|
98
|
+
item: [{label: '是', value: '是'},{label: '否', value: '否'}],
|
|
99
|
+
hasList:false,
|
|
100
|
+
savelist:[]
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
ready () {
|
|
104
|
+
this.search()
|
|
105
|
+
},
|
|
106
|
+
methods: {
|
|
107
|
+
async save(){
|
|
108
|
+
let res = await this.$resetpost(
|
|
109
|
+
`${this.$androidUtil.getProxyUrl()}/apply/rs/entity/t_apply_check`,
|
|
110
|
+
this.checkList,
|
|
111
|
+
{resolveMsg: null, rejectMsg: '数据保存失败!!!'}
|
|
112
|
+
)
|
|
113
|
+
if(res){
|
|
114
|
+
this.showCheckModel=false
|
|
115
|
+
this.search()
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
showModal(row){
|
|
119
|
+
this.checkList=row
|
|
120
|
+
this.flag=this.selectdata.f_apply_num+row.id
|
|
121
|
+
this.showCheckModel=true
|
|
122
|
+
},
|
|
123
|
+
closeModal() {
|
|
124
|
+
this.showCheckModel=false
|
|
125
|
+
},
|
|
126
|
+
//如果是第一次,则新保存检查想到数据库
|
|
127
|
+
async saveCheck() {
|
|
128
|
+
if (this.hasList === false) {
|
|
129
|
+
this.savelist = []
|
|
130
|
+
let checkList = this.$appdata.getParam("报建检查项目")
|
|
131
|
+
//遍历数组,获取数组中的每一个对象,并获取对象的value
|
|
132
|
+
for (let i = 0; i < checkList.length; i++) {
|
|
133
|
+
let obj = checkList[i]
|
|
134
|
+
let value = obj.value
|
|
135
|
+
this.savelist.push(value)
|
|
136
|
+
}
|
|
137
|
+
//保存到数据库
|
|
138
|
+
let http = new HttpResetClass()
|
|
139
|
+
let data = {
|
|
140
|
+
apply: this.selectdata,
|
|
141
|
+
user: Vue.user,
|
|
142
|
+
check:this.savelist
|
|
143
|
+
}
|
|
144
|
+
let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/logic/addApplyCheck`, {data: data}, {
|
|
145
|
+
resolveMsg: null,
|
|
146
|
+
rejectMsg: '添加失败!!!'
|
|
147
|
+
})
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
//查询
|
|
151
|
+
async search() {
|
|
152
|
+
let http = new HttpResetClass()
|
|
153
|
+
let data = {
|
|
154
|
+
tablename: 't_apply_check',
|
|
155
|
+
condition: `f_process_id= '${this.selectdata.f_process_id}'`
|
|
156
|
+
}
|
|
157
|
+
let res = await http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/sql/apply_singleTable`, {data:data}, {
|
|
158
|
+
resolveMsg: null,
|
|
159
|
+
rejectMsg: '开发商档案查询失败!!!'
|
|
160
|
+
})
|
|
161
|
+
if(res.data.length>0){
|
|
162
|
+
this.model.data=res.data
|
|
163
|
+
}else{
|
|
164
|
+
this.saveCheck()
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
events: {
|
|
169
|
+
},
|
|
170
|
+
computed: {
|
|
171
|
+
CheckItems() {
|
|
172
|
+
return this.$appdata.getParam("报建检查项目")
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
watch: {
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
</script>
|
|
179
|
+
<style scoped>
|
|
180
|
+
.textNoLineBreak {
|
|
181
|
+
white-space: nowrap;
|
|
182
|
+
}
|
|
183
|
+
.head-but{
|
|
184
|
+
margin-left: 5px;
|
|
185
|
+
height: 34px;
|
|
186
|
+
/*background-color: #6aa6e2;*/
|
|
187
|
+
border-radius: 4px;
|
|
188
|
+
font-family: PingFang;
|
|
189
|
+
color: #ffffff;
|
|
190
|
+
}
|
|
191
|
+
</style>
|
|
@@ -4,6 +4,7 @@ let specialComp = {
|
|
|
4
4
|
'app-service-view': (resolve) => { require(['./android/AppServiceView'], resolve) },
|
|
5
5
|
'app-exploration-user': (resolve) => { require(['./android/AppExplorationUser'], resolve) },
|
|
6
6
|
'app-service-control': (resolve) => { require(['./android/AppServiceControl'], resolve) },
|
|
7
|
+
'app-zhihuan-management': (resolve) => { require(['./android/AppZhihuanManagement'], resolve) },
|
|
7
8
|
'app-charge-management': (resolve) => { require(['./android/AppChargeManagement'], resolve) }
|
|
8
9
|
}
|
|
9
10
|
exports.specialComp = specialComp
|
|
@@ -0,0 +1,502 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<criteria-paged :model="model" v-ref:cp>
|
|
4
|
+
<criteria partial='criteria' @condition-changed='search' v-ref:cri>
|
|
5
|
+
<div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
|
|
6
|
+
<div class="row">
|
|
7
|
+
<div class="form-group col-sm-3">
|
|
8
|
+
<label class="font_normal_body">客户名称:</label>
|
|
9
|
+
<input type="text" style="width:60%" class="input_search" v-model="model.f_user_name"
|
|
10
|
+
v-on:keyup.enter="$parent.$parent.search()" condition="f_user_name like '%{}%'" placeholder='客户名称'>
|
|
11
|
+
</div>
|
|
12
|
+
<div class="form-group col-sm-3">
|
|
13
|
+
<label class="font_normal_body">组织机构:</label>
|
|
14
|
+
<res-select
|
|
15
|
+
restype='organization'
|
|
16
|
+
:initresid='$parent.$parent.curorgid'
|
|
17
|
+
@res-select="$parent.$parent.getorg"
|
|
18
|
+
is-mul="false"
|
|
19
|
+
></res-select>
|
|
20
|
+
</div>
|
|
21
|
+
<!-- <div class="form-group col-sm-3">-->
|
|
22
|
+
<!-- <label class="font_normal_body">工程编号:</label>-->
|
|
23
|
+
<!-- <input type="text" style="width:60%" class="input_search" placeholder='工程编号' v-model="model.f_apply_num"-->
|
|
24
|
+
<!-- v-on:keyup.enter="$parent.$parent.search()"-->
|
|
25
|
+
<!-- condition="u.f_apply_num = '{}'">-->
|
|
26
|
+
<!-- </div>-->
|
|
27
|
+
<div class="form-group col-sm-3 button-range">
|
|
28
|
+
<a type="button" class="button_new button_spacing" v-if="$parent.$parent.projectStart"
|
|
29
|
+
href="/apply/download/excel/散户报装模板.xlsx" download>模板下载</a>
|
|
30
|
+
<button class="button_new button_spacing" style="width: max-content"
|
|
31
|
+
v-if="$parent.$parent.projectStart"
|
|
32
|
+
@click="$parent.$parent.showFile = !$parent.$parent.showFile">批量散户导入</button>
|
|
33
|
+
<button class="button_new button_spacing" style="width: max-content"
|
|
34
|
+
v-if="$parent.$parent.projectStart"
|
|
35
|
+
@click="$parent.$parent.showModal = !$parent.$parent.showModal">工程发起</button>
|
|
36
|
+
<button class="button_search button_spacing" @click="$parent.$parent.search()" v-el:cx>查询</button>
|
|
37
|
+
<button class="button_search button_spacing" @click="$parent.$parent.loadPage()">返回</button>
|
|
38
|
+
<button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
|
|
39
|
+
<div
|
|
40
|
+
:class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
|
|
41
|
+
@click="$parent.$parent.criteriaShow = !$parent.$parent.criteriaShow"
|
|
42
|
+
class="button_spacing"
|
|
43
|
+
style="float: right">
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
<div class="row" v-show="$parent.$parent.criteriaShow">
|
|
48
|
+
<!-- <div class="form-group col-sm-3">-->
|
|
49
|
+
<!-- <label class="font_normal_body">客户名称:</label>-->
|
|
50
|
+
<!-- <input type="text" style="width:60%" class="input_search" v-model="model.f_user_name"-->
|
|
51
|
+
<!-- v-on:keyup.enter="$parent.$parent.search()" condition="f_user_name like '%{}%'" placeholder='客户名称'>-->
|
|
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_userinfo_code"
|
|
56
|
+
v-on:keyup.enter="$parent.$parent.search()"
|
|
57
|
+
condition="ui.f_userinfo_code like '%{}%'">
|
|
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_apply_num"
|
|
62
|
+
v-on:keyup.enter="$parent.$parent.search()"
|
|
63
|
+
condition="u.f_apply_num like '%{}%'">
|
|
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_contract_money"
|
|
68
|
+
v-on:keyup.enter="$parent.$parent.search()"
|
|
69
|
+
condition="u.f_contract_money like '%{}%'">
|
|
70
|
+
</div>
|
|
71
|
+
<div class="form-group col-sm-3">
|
|
72
|
+
<label class="font_normal_body">联系电话:</label>
|
|
73
|
+
<input type="text" style="width:60%" class="input_search" placeholder='联系电话' v-model="model.f_phone"
|
|
74
|
+
v-on:keyup.enter="$parent.$parent.search()"
|
|
75
|
+
condition="f_phone like '%{}%'">
|
|
76
|
+
</div>
|
|
77
|
+
<div class="form-group col-sm-3">
|
|
78
|
+
<label class="font_normal_body">合同编号:</label>
|
|
79
|
+
<input type="text" style="width:60%" class="input_search" placeholder='合同编号' v-model="model.f_contract_number"
|
|
80
|
+
v-on:keyup.enter="$parent.$parent.search()"
|
|
81
|
+
condition="f_contract_number = '{}'">
|
|
82
|
+
</div>
|
|
83
|
+
<div class="form-group col-sm-3">
|
|
84
|
+
<label class="font_normal_body">报建类型:</label>
|
|
85
|
+
<v-select
|
|
86
|
+
v-model="model.f_apply_type"
|
|
87
|
+
placeholder='报建类型'
|
|
88
|
+
condition="f_apply_type = '{}'"
|
|
89
|
+
:value.sync="model.f_apply_type"
|
|
90
|
+
:options='$parent.$parent.applytype'
|
|
91
|
+
class="select select_list"
|
|
92
|
+
:value-single="true"
|
|
93
|
+
@change="$parent.$parent.applyTypeChange()"
|
|
94
|
+
close-on-select ></v-select>
|
|
95
|
+
</div>
|
|
96
|
+
<div class="form-group col-sm-3">
|
|
97
|
+
<label class="font_normal_body">办理环节:</label>
|
|
98
|
+
<v-select
|
|
99
|
+
v-model="model.defname"
|
|
100
|
+
placeholder='办理环节'
|
|
101
|
+
condition="act.defname = '{}'"
|
|
102
|
+
:value.sync="model.defname"
|
|
103
|
+
:options='$parent.$parent.defnames'
|
|
104
|
+
class="select select_list"
|
|
105
|
+
:value-single="true"
|
|
106
|
+
close-on-select ></v-select>
|
|
107
|
+
</div>
|
|
108
|
+
<div class="form-group col-sm-3">
|
|
109
|
+
<label class="font_normal_body">报建性质:</label>
|
|
110
|
+
<v-select
|
|
111
|
+
v-model="model.f_apply_nature"
|
|
112
|
+
placeholder='报建性质'
|
|
113
|
+
condition="f_apply_nature = '{}'"
|
|
114
|
+
:value.sync="model.f_apply_nature"
|
|
115
|
+
:options='$parent.$parent.applyNatures'
|
|
116
|
+
class="select select_list"
|
|
117
|
+
:value-single="true"
|
|
118
|
+
close-on-select ></v-select>
|
|
119
|
+
</div>
|
|
120
|
+
<div class="form-group col-sm-3">
|
|
121
|
+
<label class="font_normal_body">用户地址:</label>
|
|
122
|
+
<input type="text" style="width:60%" class="input_search" placeholder='用户地址' v-model="model.f_address"
|
|
123
|
+
v-on:keyup.enter="$parent.$parent.search()"
|
|
124
|
+
condition="f_address like '%{}%'">
|
|
125
|
+
</div>
|
|
126
|
+
<div class="form-group col-sm-3">
|
|
127
|
+
<label for="startDate" class="font_normal_body">开始时间:</label>
|
|
128
|
+
<datepicker id="startDate" placeholder="开始日期"
|
|
129
|
+
style="width: 60%!important;"
|
|
130
|
+
v-model="model.startDate"
|
|
131
|
+
:value.sync="model.startDate"
|
|
132
|
+
:format="'yyyy-MM-dd 00:00:00'"
|
|
133
|
+
:show-reset-button="true"
|
|
134
|
+
condition="f_apply_date >= '{}'">
|
|
135
|
+
</datepicker>
|
|
136
|
+
</div>
|
|
137
|
+
<div class="form-group col-sm-3">
|
|
138
|
+
<label for="endDate" class="font_normal_body">结束时间:</label>
|
|
139
|
+
<datepicker id="endDate" placeholder="结束日期"
|
|
140
|
+
style="width: 60%!important;"
|
|
141
|
+
v-model="model.endDate"
|
|
142
|
+
:value.sync="model.endDate"
|
|
143
|
+
:format="'yyyy-MM-dd 23:59:59'"
|
|
144
|
+
:show-reset-button="true"
|
|
145
|
+
condition="f_apply_date <= '{}'">
|
|
146
|
+
</datepicker>
|
|
147
|
+
</div>
|
|
148
|
+
<div class="form-group col-sm-3">
|
|
149
|
+
<label class="font_normal_body">稍后处理:</label>
|
|
150
|
+
<v-select
|
|
151
|
+
v-model="model.f_no_valid"
|
|
152
|
+
placeholder='稍后处理'
|
|
153
|
+
condition="lp.f_no_valid = '{}'"
|
|
154
|
+
:value.sync="model.f_no_valid"
|
|
155
|
+
:options='$parent.$parent.laterList'
|
|
156
|
+
class="select select_list"
|
|
157
|
+
:value-single="true"
|
|
158
|
+
close-on-select ></v-select>
|
|
159
|
+
</div>
|
|
160
|
+
<div class="form-group col-sm-3">
|
|
161
|
+
<label class="font_normal_body">节点发起人:</label>
|
|
162
|
+
<input type="text" style="width:60%" class="input_search" v-model="model.act_sender"
|
|
163
|
+
v-on:keyup.enter="$parent.$parent.search()" condition="act.sender like '%{}%'" placeholder='节点发起人'>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
</div>
|
|
167
|
+
</criteria>
|
|
168
|
+
<data-grid v-if="$parent.showData" :model="model" partial='list' v-ref:grid class="list_area table_sy" style="height: 100%">
|
|
169
|
+
<template partial='head'>
|
|
170
|
+
<tr>
|
|
171
|
+
<th style="white-space: nowrap;">序号</th>
|
|
172
|
+
<th style="white-space: nowrap;">工程编号</th>
|
|
173
|
+
<th style="white-space: nowrap;">客户名称</th>
|
|
174
|
+
<th style="white-space: nowrap;">合同编号</th>
|
|
175
|
+
<th style="white-space: nowrap;">电话</th>
|
|
176
|
+
<th style="white-space: nowrap;">地址</th>
|
|
177
|
+
<th style="white-space: nowrap;">来源</th>
|
|
178
|
+
<th style="white-space: nowrap;">报建类型</th>
|
|
179
|
+
<th style="white-space: nowrap;">办理环节</th>
|
|
180
|
+
<th style="white-space: nowrap;">流程状态</th>
|
|
181
|
+
<th style="white-space: nowrap;">报建日期</th>
|
|
182
|
+
<th style="white-space: nowrap;">室内</th>
|
|
183
|
+
<th style="white-space: nowrap;">地埋</th>
|
|
184
|
+
<th style="white-space: nowrap;">操作</th>
|
|
185
|
+
</tr>
|
|
186
|
+
</template>
|
|
187
|
+
<template partial='body'>
|
|
188
|
+
<tr class="back-style">
|
|
189
|
+
<td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'', row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
|
|
190
|
+
<nobr><font>{{$index+1}}</font></nobr>
|
|
191
|
+
</td>
|
|
192
|
+
<td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
|
|
193
|
+
<nobr><font>{{row.f_apply_num}}</font></nobr>
|
|
194
|
+
</td>
|
|
195
|
+
<td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
|
|
196
|
+
<nobr><font>{{row.f_user_name}}</font></nobr>
|
|
197
|
+
</td>
|
|
198
|
+
<td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
|
|
199
|
+
<nobr><font>{{row.f_contract_number}}</font></nobr>
|
|
200
|
+
</td>
|
|
201
|
+
<td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
|
|
202
|
+
<nobr><font>{{row.f_phone}}</font></nobr>
|
|
203
|
+
</td>
|
|
204
|
+
<td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
|
|
205
|
+
<nobr><font>{{row.f_address}}</font></nobr>
|
|
206
|
+
</td>
|
|
207
|
+
<td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
|
|
208
|
+
<nobr><font>{{row.f_apply_source}}</font></nobr>
|
|
209
|
+
</td>
|
|
210
|
+
<td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
|
|
211
|
+
<nobr><font>{{row.f_apply_type}}</font></nobr>
|
|
212
|
+
</td>
|
|
213
|
+
<td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
|
|
214
|
+
<nobr><font>{{row.defname}}</font></nobr>
|
|
215
|
+
</td>
|
|
216
|
+
<td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
|
|
217
|
+
<nobr><font>{{row.f_sub_state}}</font></nobr>
|
|
218
|
+
</td>
|
|
219
|
+
<td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
|
|
220
|
+
<nobr><font>{{row.f_apply_date}}</font></nobr>
|
|
221
|
+
</td>
|
|
222
|
+
<td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
|
|
223
|
+
<nobr><font>{{row.f_no_indoors}}</font></nobr>
|
|
224
|
+
</td>
|
|
225
|
+
<td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
|
|
226
|
+
<nobr><font>{{row.f_no_buried}}</font></nobr>
|
|
227
|
+
</td>
|
|
228
|
+
<td :class="[ row.isover ==='过期' ? 'p1' : row.isbeforeover === '预期提醒'? 'p':'' , row.f_back_reason ? 'back-style':'' ]" style="text-align: center;">
|
|
229
|
+
<dropdown>
|
|
230
|
+
<button type="button" data-toggle="dropdown" style="border: 0px;background: none;">
|
|
231
|
+
<span class="glyphicon glyphicon-th-list" style="position: inherit;"></span>
|
|
232
|
+
</button>
|
|
233
|
+
<ul slot="dropdown-menu" class="dropdown-menu dropdown-menu-right">
|
|
234
|
+
<li>
|
|
235
|
+
<a href="#" @click="$parent.$parent.$parent.click(row)">{{row.defname}}</a>
|
|
236
|
+
<a href="#" @click="$parent.$parent.$parent.openLater(row)" v-if="row.f_no_valid !== '有效'">稍后处理</a>
|
|
237
|
+
</li>
|
|
238
|
+
</ul>
|
|
239
|
+
</dropdown>
|
|
240
|
+
</td>
|
|
241
|
+
</tr>
|
|
242
|
+
</template>
|
|
243
|
+
</data-grid>
|
|
244
|
+
</criteria-paged>
|
|
245
|
+
|
|
246
|
+
<modal
|
|
247
|
+
v-if="showModal"
|
|
248
|
+
:show.sync="showModal"
|
|
249
|
+
backdrop="false"
|
|
250
|
+
title="工程类型"
|
|
251
|
+
cancel-text="取消"
|
|
252
|
+
ok-text="确认"
|
|
253
|
+
:callback="apply"
|
|
254
|
+
>
|
|
255
|
+
<div class="form-horizontal" slot="modal-body">
|
|
256
|
+
<div class="form-group" style="margin: 10px auto">
|
|
257
|
+
<label class="col-sm-3 control-label">报建类型:</label>
|
|
258
|
+
<div class="col-sm-9">
|
|
259
|
+
<v-select
|
|
260
|
+
v-model="applyType"
|
|
261
|
+
placeholder='请选择需要发起的工程类型'
|
|
262
|
+
:value.sync="applyType"
|
|
263
|
+
:options='$appdata.getParam("报建类型")'
|
|
264
|
+
:value-single="true"
|
|
265
|
+
class="select select_list"
|
|
266
|
+
:search="false"
|
|
267
|
+
close-on-select ></v-select>
|
|
268
|
+
</div>
|
|
269
|
+
</div>
|
|
270
|
+
</div>
|
|
271
|
+
</modal>
|
|
272
|
+
|
|
273
|
+
<modal v-if="showFile" :show.sync="showFile" v-ref:modal :backdrop="false" title="选择文件">
|
|
274
|
+
<header slot="modal-header" class="modal-header">
|
|
275
|
+
<button type="button" class="close" @click="closeFile"><span>×</span></button>
|
|
276
|
+
<h4 class="modal-title">选择文件</h4>
|
|
277
|
+
</header>
|
|
278
|
+
<article slot="modal-body" class="modal-body">
|
|
279
|
+
<div class="form-group">
|
|
280
|
+
<file-upload class="my-file-uploader" action="rs/file/uploadFile" tagname="确定" v-ref:file></file-upload>
|
|
281
|
+
</div>
|
|
282
|
+
</article>
|
|
283
|
+
<footer slot="modal-footer" class="modal-footer"></footer>
|
|
284
|
+
</modal>
|
|
285
|
+
</div>
|
|
286
|
+
</template>
|
|
287
|
+
<script>
|
|
288
|
+
import {HttpResetClass, PagedList} from 'vue-client'
|
|
289
|
+
import {isEmpty} from '../../../components/Util'
|
|
290
|
+
|
|
291
|
+
export default {
|
|
292
|
+
title: '工程列表',
|
|
293
|
+
props: ['showData'],
|
|
294
|
+
data () {
|
|
295
|
+
return {
|
|
296
|
+
model: new PagedList('rs/sql/checkuser', 20, {
|
|
297
|
+
data: {
|
|
298
|
+
id: this.$login.f.id,
|
|
299
|
+
orgid: this.$login.f.orgid
|
|
300
|
+
}
|
|
301
|
+
}),
|
|
302
|
+
showModal: false, // 控制发起类型选择
|
|
303
|
+
applyType: '', // 报建类型
|
|
304
|
+
curorgid: [this.$login.f.orgid],
|
|
305
|
+
applytype: [{label: '全部', value: ''}, ...this.$appdata.getParam('报建类型')],
|
|
306
|
+
defnames: [{label: '全部', value: ''}], // 流程节点
|
|
307
|
+
applyNatures: [{label: '全部', value: ''}], // 报建性质
|
|
308
|
+
criteriaShow: false,
|
|
309
|
+
showFile: false,
|
|
310
|
+
laterList: [
|
|
311
|
+
{label: '全部', value: ''},
|
|
312
|
+
{label: '有效', value: '有效'}
|
|
313
|
+
]
|
|
314
|
+
}
|
|
315
|
+
},
|
|
316
|
+
ready () {
|
|
317
|
+
// 调用查询
|
|
318
|
+
this.search()
|
|
319
|
+
},
|
|
320
|
+
methods: {
|
|
321
|
+
openLater (row) {
|
|
322
|
+
this.$dispatch('openLater', row)
|
|
323
|
+
},
|
|
324
|
+
closeFile () {
|
|
325
|
+
this.showFile = false
|
|
326
|
+
// 将选的文件清空
|
|
327
|
+
this.$refs.file.$el.querySelector('input').value = ''
|
|
328
|
+
this.search()
|
|
329
|
+
},
|
|
330
|
+
// 点击操作
|
|
331
|
+
click (val) {
|
|
332
|
+
this.$dispatch('apply', val)
|
|
333
|
+
},
|
|
334
|
+
// 获取流程id
|
|
335
|
+
async getProcessId(processname) {
|
|
336
|
+
let data = {
|
|
337
|
+
workname: processname
|
|
338
|
+
}
|
|
339
|
+
let http = new HttpResetClass()
|
|
340
|
+
let res = await http.load(
|
|
341
|
+
'POST',
|
|
342
|
+
'rs/logic/getProcessId',
|
|
343
|
+
{data: data},
|
|
344
|
+
{resolveMsg: null, rejectMsg: '流程标识获取失败!!!'}
|
|
345
|
+
)
|
|
346
|
+
|
|
347
|
+
return res.data
|
|
348
|
+
},
|
|
349
|
+
// 报装申请
|
|
350
|
+
async apply () {
|
|
351
|
+
if (this.applyType === '' || this.applyType === null) {
|
|
352
|
+
this.$showAlert('请选择需要发起的类型', 'warning', 3000)
|
|
353
|
+
return
|
|
354
|
+
}
|
|
355
|
+
let data = {
|
|
356
|
+
f_apply_type: this.applyType
|
|
357
|
+
}
|
|
358
|
+
if (this.applyType === '散户报建') {
|
|
359
|
+
data.processname = '散户报建流程'
|
|
360
|
+
data.defname = '报装申请'
|
|
361
|
+
} else if (this.applyType === '工商户报建') {
|
|
362
|
+
data.processname = '工商户报建流程'
|
|
363
|
+
data.defname = '报装申请'
|
|
364
|
+
} else if (this.applyType === '改管报建') {
|
|
365
|
+
data.processname = '改管报建流程'
|
|
366
|
+
data.defname = '报装申请'
|
|
367
|
+
} else if (this.applyType === '增容报建') {
|
|
368
|
+
data.processname = '增容报建流程'
|
|
369
|
+
data.defname = '报装申请'
|
|
370
|
+
} else if (this.applyType === '团购报建') {
|
|
371
|
+
data.processname = '团购报建流程'
|
|
372
|
+
data.defname = '报装申请'
|
|
373
|
+
} else if (this.applyType === '退款报建') {
|
|
374
|
+
data.processname = '退款报建流程'
|
|
375
|
+
data.defname = '终止报建'
|
|
376
|
+
} else if (this.applyType === '团购转散户') {
|
|
377
|
+
data.processname = '团购转散户报建流程'
|
|
378
|
+
data.defname = '信息确认'
|
|
379
|
+
}else if (this.applyType === '报警器报建') {
|
|
380
|
+
data.processname = '报警器报建流程'
|
|
381
|
+
data.defname = '报装申请'
|
|
382
|
+
}else if (this.applyType === '工商业报警器报建') {
|
|
383
|
+
data.processname = '工商业报警器报建流程'
|
|
384
|
+
data.defname = '报装申请'
|
|
385
|
+
}else if (this.applyType === '集体报建') {
|
|
386
|
+
data.processname = '集体报建流程'
|
|
387
|
+
data.defname = '报装申请'
|
|
388
|
+
} else if (this.applyType === '工商业报建') {
|
|
389
|
+
data.processname = '工商业报建流程'
|
|
390
|
+
data.defname = '报装申请'
|
|
391
|
+
} else {
|
|
392
|
+
this.$showMessage('暂无此类报装')
|
|
393
|
+
return
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
data.f_sub_state = "新增"
|
|
397
|
+
data.f_apply_source = "线下发起"
|
|
398
|
+
data.f_process_id = await this.getProcessId(data.processname)
|
|
399
|
+
|
|
400
|
+
// 调用ExplorationUser事件
|
|
401
|
+
this.$dispatch('apply', data)
|
|
402
|
+
|
|
403
|
+
this.applyType = null
|
|
404
|
+
this.showModal = false
|
|
405
|
+
},
|
|
406
|
+
loadPage () {
|
|
407
|
+
this.$dispatch('loadPage')
|
|
408
|
+
},
|
|
409
|
+
search () {
|
|
410
|
+
this.$dispatch('search')
|
|
411
|
+
},
|
|
412
|
+
async applyTypeChange () {
|
|
413
|
+
if (!isEmpty(this.$refs.cp.$refs.cri.model.f_apply_type)) {
|
|
414
|
+
let res = await this.$resetpost('rs/logic/getDefnameByType',
|
|
415
|
+
{ f_apply_type: this.$refs.cp.$refs.cri.model.f_apply_type },
|
|
416
|
+
{resolveMsg: null, rejectMsg: '节点信息获取失败!!!'}
|
|
417
|
+
)
|
|
418
|
+
|
|
419
|
+
this.defnames = [{label: '全部', value: ''}, ...res.data]
|
|
420
|
+
|
|
421
|
+
this.applyNatures = isEmpty(this.$appdata.getParam(`${this.$refs.cp.$refs.cri.model.f_apply_type}性质`)) ? [{label: '全部', value: ''}] : [{label: '全部', value: ''}, ...this.$appdata.getParam(`${this.$refs.cp.$refs.cri.model.f_apply_type}性质`)]
|
|
422
|
+
} else {
|
|
423
|
+
this.defnames = [{label: '全部', value: ''}]
|
|
424
|
+
|
|
425
|
+
this.applyNatures = [{label: '全部', value: ''}]
|
|
426
|
+
}
|
|
427
|
+
},
|
|
428
|
+
clear () {
|
|
429
|
+
Object.keys(this.$refs.cp.$refs.cri.model).forEach((key) => {
|
|
430
|
+
this.$refs.cp.$refs.cri.model[key] = null
|
|
431
|
+
})
|
|
432
|
+
},
|
|
433
|
+
getorg (val) {
|
|
434
|
+
if (val.length <= 0) {
|
|
435
|
+
return
|
|
436
|
+
}
|
|
437
|
+
this.model.params.data.orgid = val[0]
|
|
438
|
+
}
|
|
439
|
+
},
|
|
440
|
+
computed: {
|
|
441
|
+
projectStart () {
|
|
442
|
+
return this.$login.r.includes('报建发起')
|
|
443
|
+
}
|
|
444
|
+
},
|
|
445
|
+
watch: {
|
|
446
|
+
'model.rows': {
|
|
447
|
+
handler: function () {
|
|
448
|
+
let isover = [] // 过期(超时)数据
|
|
449
|
+
let isbeforeover = [] // 未过期 提前提醒
|
|
450
|
+
for (let i = 0; i < this.model.rows.length; i++) {
|
|
451
|
+
let item = this.model.rows[i]
|
|
452
|
+
if (item.isover === '过期') {
|
|
453
|
+
isover.push(i + 1)
|
|
454
|
+
}
|
|
455
|
+
if (item.isbeforeover === '预期提醒') {
|
|
456
|
+
isbeforeover.push(i + 1)
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
let msg = null
|
|
460
|
+
if (isover.length > 0) {
|
|
461
|
+
msg = `第${isover.toString()}条数据已过期`
|
|
462
|
+
this.$showAlert(msg, 'warning', 3000)
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
if (isbeforeover.length > 0) {
|
|
466
|
+
msg = `第${isbeforeover.toString()}条数据即将过期`
|
|
467
|
+
if (isover.length > 0) {
|
|
468
|
+
setTimeout(() => {
|
|
469
|
+
this.$showAlert(msg, 'warning', 3000)
|
|
470
|
+
}, 4000)
|
|
471
|
+
} else {
|
|
472
|
+
this.$showAlert(msg, 'warning', 3000)
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
},
|
|
478
|
+
events: {
|
|
479
|
+
async 'onFileUpload'(file, result) {
|
|
480
|
+
let data = {
|
|
481
|
+
filepath: result.f_downloadpath,
|
|
482
|
+
user: this.$login.f
|
|
483
|
+
}
|
|
484
|
+
let res = await this.$resetpost(`rs/logic/importApply`, {data:data}, {resolveMsg: null, rejectMsg: '导入失败!!!', silent: true}, 0)
|
|
485
|
+
|
|
486
|
+
this.closeFile()
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
</script>
|
|
491
|
+
<style scoped>
|
|
492
|
+
.back-style{
|
|
493
|
+
background-color: #ffa726;
|
|
494
|
+
}
|
|
495
|
+
.p1 {
|
|
496
|
+
color: #dc0b12;
|
|
497
|
+
font-weight:bold
|
|
498
|
+
}
|
|
499
|
+
.p {
|
|
500
|
+
color: #ffaf4f;
|
|
501
|
+
}
|
|
502
|
+
</style>
|
package/src/filiale/fugou/pc.js
CHANGED
|
@@ -2,6 +2,7 @@ import Vue from 'vue'
|
|
|
2
2
|
|
|
3
3
|
let specialComp = {
|
|
4
4
|
'service-control': (resolve) => { require(['./pc/ServiceControl'], resolve) },
|
|
5
|
+
'exploration-select': (resolve) => { require(['./pc/ExplorationSelect'], resolve) },
|
|
5
6
|
'installation-details': (resolve) => { require(['./pc/InstallationDetails'], resolve) }
|
|
6
7
|
}
|
|
7
8
|
exports.specialComp = specialComp
|
|
@@ -243,10 +243,11 @@ export default {
|
|
|
243
243
|
}
|
|
244
244
|
if(this.show_data.button.button_name != '返回'){
|
|
245
245
|
this.excessive=true
|
|
246
|
-
let
|
|
247
|
-
'logic': '
|
|
246
|
+
let param = {
|
|
247
|
+
'logic': 'appFileUploads',
|
|
248
248
|
'data': this.selectdata
|
|
249
|
-
}
|
|
249
|
+
}
|
|
250
|
+
let res1 = HostApp.bzLogic(param)
|
|
250
251
|
let res = await this.$resetpost(
|
|
251
252
|
// `rs/logic/ApplyProductService`,
|
|
252
253
|
`${this.$androidUtil.getProxyUrl()}/rs/logic/ApplyProductService`,
|
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
},
|
|
38
38
|
ready () {
|
|
39
39
|
this.selectdata.files = []
|
|
40
|
+
this.selectdata.username = Vue.user.name
|
|
40
41
|
},
|
|
41
42
|
methods: {
|
|
42
43
|
delfile (file, index) {
|
|
@@ -75,6 +76,11 @@ export default {
|
|
|
75
76
|
}
|
|
76
77
|
},
|
|
77
78
|
events: {
|
|
79
|
+
},
|
|
80
|
+
watch: {
|
|
81
|
+
'type' () {
|
|
82
|
+
this.selectdata.type = this.type
|
|
83
|
+
}
|
|
78
84
|
}
|
|
79
85
|
}
|
|
80
86
|
</script>
|