safecheck-client 3.0.34-78 → 3.0.34-80

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,246 @@
1
+ <template>
2
+ <div>
3
+ <criteria-paged :model="model" v-ref:paged>
4
+ <criteria partial='criteria' class="search_area" @condition-changed='$parent.search' v-ref:cri>
5
+ <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
6
+ <div class="row">
7
+ <div v-if="$parent.$parent.isShow">
8
+ <label class="font_normal_body">&nbsp;安检员&nbsp;&nbsp;&nbsp;</label>
9
+ <v-select
10
+ style="width:60%"
11
+ :value.sync="model.f_checker_id"
12
+ :value-single="true"
13
+ :options='$parent.$parent.checkerman'
14
+ placeholder='请选择安检员'
15
+ close-on-select></v-select>
16
+ </div>
17
+
18
+ <div >
19
+ <label class="font_normal_body">安检起始</label>
20
+ <datepicker
21
+ :value.sync="$parent.$parent.f_start_time"
22
+ placeholder='安检起始' style="width:60%"
23
+ :show-rest-button="reset">
24
+ </datepicker>
25
+ </div>
26
+ <div :class="{'form-group col-sm-3':$parent.$parent.$parent.showItem,'form-group col-sm-2':!$parent.$parent.$parent.showItem}">
27
+ <label class="font_normal_body">安检截止</label>
28
+ <datepicker
29
+ :value.sync="$parent.$parent.f_end_time"
30
+ placeholder='安检截止' style="width:60%"
31
+ :show-rest-button="reset">
32
+ </datepicker>
33
+ </div>
34
+ <div style="width: auto;margin-top:8px;float: right" :class="{'form-group col-sm-3':$parent.$parent.$parent.showItem,'form-group col-sm-2':!$parent.$parent.$parent.showItem}">
35
+ <button type="button" class="button_search button_spacing" @click="search()">查询</button>
36
+ <div class="button_spacing"
37
+ :class="{'button_shrink_left':$parent.$parent.$parent.showItem,'button_shrink_right':!$parent.$parent.$parent.showItem}"
38
+ @click="$parent.$parent.hiddenr()"></div>
39
+ </div>
40
+ </div>
41
+ </div>
42
+ </criteria>
43
+ <data-grid :model="model" partial='list' v-ref:grid class="list_area table_sy">
44
+ <template partial='head'>
45
+ <tr>
46
+ <th>安检员</th>
47
+ <th style="text-align: center;white-space:nowrap">
48
+ 计划<br>
49
+ 总数
50
+ </th>
51
+ <th>入户</th>
52
+ <th style="text-align: center;white-space:nowrap">
53
+ 到访<br>
54
+ 不遇
55
+ </th>
56
+ <th>拒检</th>
57
+ <th>已检</th>
58
+ <th>未检</th>
59
+ <th>安检率</th>
60
+ <th>入户率</th>
61
+ </tr>
62
+ </template>
63
+ <template partial='body'>
64
+ <td style="text-align: center">{{row.f_checker}}</td>
65
+ <td style="text-align: center">{{row.plannum}}</td>
66
+ <td style="text-align: center">{{row.ruhu}}</td>
67
+ <td style="text-align: center">{{row.daofang}}</td>
68
+ <td style="text-align: center">{{row.jujian}}</td>
69
+ <td style="text-align: center">{{row.ruhu+row.daofang+row.jujian}}</td>
70
+ <td style="text-align: center">{{row.plannum-(row.ruhu+row.daofang+row.jujian)}}</td>
71
+ <td style="text-align: center">{{((row.ruhu+row.daofang+row.jujian)/row.plannum).toFixed(2)}}%</td>
72
+ <td style="text-align: center">{{(row.ruhu/row.plannum).toFixed(2)}}%</td>
73
+ </template>
74
+ </data-grid>
75
+ </criteria-paged>
76
+ </div>
77
+ </template>
78
+ <script>
79
+ import {PagedList} from 'vue-client'
80
+ import { HttpResetClass } from 'vue-client'
81
+ import Vue from 'vue'
82
+ export default {
83
+ title: '安检计划查询',
84
+ data() {
85
+ let options = []
86
+ let year = (new Date()).getFullYear()
87
+ for (let i = year - 8; i <= year + 1; i++)
88
+ options.push({label: i + '', value: i + ''})
89
+ let model = new PagedList(`${this.$androidUtil.getProxyUrl()}/rs/sql/planCount`, 20, {
90
+ f_filialeids: 'this.f_filialeids',
91
+ f_start_time: 'this.f_start_time',
92
+ condition1:'this.condition1',
93
+ condition2:'this.condition2',
94
+ condition3:'this.condition3',
95
+ f_end_time: 'this.f_end_time'
96
+ })
97
+ model.f_filialeids = '('+Vue.user.orgid+')'
98
+ return {
99
+ searchData:{
100
+ condition:"1=1",
101
+ condition1:"1=1",
102
+ condition2:"1=1",
103
+ condition3:"and 1=1",
104
+ f_plan_year:year[0],
105
+ f_checker:'',
106
+ f_filialeids:'('+Vue.user.orgid+')',
107
+ f_start_time:'',
108
+ f_end_time:''
109
+ },
110
+ checker: Vue.user,
111
+ checkers: [],
112
+ checkerman: [],
113
+ checkersname: [],
114
+ checkStates: this.$appdata.getParam('安检状态'),
115
+ f: Vue.user,
116
+ criteriaShow: false,
117
+ model: model,
118
+ c_year_list: options,
119
+ f_check_start:'',
120
+ f_check_end: '',
121
+ f_start_time:'',
122
+ f_end_time:'',
123
+ isShow:false
124
+ }
125
+ },
126
+ methods: {
127
+ //判断当前用户是否有管理员角色
128
+ getrole(){
129
+ if(Vue.user.rolesnames.indexOf('管理员') > -1){
130
+ this.isShow=true
131
+ }
132
+ },
133
+ getEmp() {
134
+ this.checkerman=[]
135
+ let per = {source: 'this.getRights().where(row.getType()==$user$).where(row.getAttributes().get($rolestr$).indexOf($安检员$) != -1))', userid: `${Vue.user.id}`}
136
+ let http = new HttpResetClass()
137
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/search`, {data: per}, {resolveMsg: null, rejectMsg: null}).then((res) => {
138
+ res.data.forEach((user)=>{
139
+ this.checkerman.push({label:user.name, value: user.id})
140
+ })
141
+ })
142
+ },
143
+ hidden() {
144
+ this.criteriaShow = !this.criteriaShow
145
+ },
146
+ hiddenr() {
147
+ this.$parent.showItem = !this.$parent.showItem
148
+ },
149
+ search(args) {
150
+ let tempStr = args.condition
151
+ let condition1 =tempStr
152
+ let condition2 =tempStr
153
+ let condition3 = ' and 1=1 '
154
+ if (this.f_check_start) {
155
+ condition1 += ` AND f_plan_year >= ${this.f_check_start.substr(0,4)} `
156
+ condition1 += ` AND f_plan_month >= ${this.f_check_start.substr(5,2)} `
157
+ }
158
+ if (this.f_check_end) {
159
+ condition1 += ` AND f_plan_year <= ${this.f_check_end.substr(0,4)} `
160
+ condition1 += ` AND f_plan_month <= ${this.f_check_end.substr(5,2)} `
161
+ }
162
+ if(this.f_start_time){
163
+ condition2 += ` AND f_offsite_time >= '${this.f_start_time} 00:00:00'`
164
+ }
165
+ if (this.f_end_time){
166
+ condition2 += ` AND f_offsite_time <= '${this.f_end_time} 23:59:59'`
167
+ }
168
+ if (this.$refs.paged.$refs.cri.model.f_checker_id){
169
+ condition3 += ` AND f_checker_id= '${this.$refs.paged.$refs.cri.model.f_checker_id}' `
170
+ condition2 += ` AND f_checker_id= '${this.$refs.paged.$refs.cri.model.f_checker_id}' `
171
+ }
172
+ if(this.$refs.paged.$refs.cri.model.f_checker_id==''||this.$refs.paged.$refs.cri.model.f_checker_id==null){
173
+ condition3 += ` AND f_checker_id = '${Vue.user.id}' `
174
+ condition2 += ` AND f_checker_id = '${Vue.user.id}' `
175
+ }
176
+ this.model.f_start_time=this.f_start_time
177
+ this.model.f_end_time=this.f_end_time
178
+ this.model.condition1=condition1
179
+ this.model.condition2=condition2
180
+ this.model.condition3=condition3
181
+
182
+ this.searchData.condition1=condition1
183
+ this.searchData.condition2=condition2
184
+ this.searchData.condition3=condition3
185
+ this.model.search(args.condition, args.model)
186
+ },
187
+ getRes(obj){
188
+ this.model.f_filialeids = this.$login.convertToIn(obj.resids);
189
+ }
190
+ },
191
+ ready() {
192
+ this.getEmp()
193
+ this.getrole()
194
+ this.model.id = Vue.user.id
195
+ this.model.f_subcompany = Vue.user.f_fengongsi
196
+ this.model.f_filialeid = Vue.user.orgid
197
+ },
198
+ watch: {
199
+ 'model.condition'(val) {
200
+ if(val){
201
+ this.searchData.condition = val
202
+ }
203
+ },
204
+ 'model.f_checker'(val) {
205
+ if(val){
206
+ this.searchData.f_checker = val
207
+ }
208
+ },
209
+ 'f_start_time'(val) {
210
+ if(val){
211
+ this.searchData.f_start_time = val
212
+ }
213
+ },
214
+ 'f_end_time'(val) {
215
+ if(val){
216
+ this.searchData.f_end_time = val
217
+ }
218
+ },
219
+ 'checker'() {
220
+ // //tag
221
+ //tag
222
+ this.model.chosenOrg = this.checker[0]
223
+ },
224
+ 'model.rows.length'() {
225
+ // 如果查询无结果,将合计置为0
226
+ if(this.model.rows.length < 1 &&this. model.sums){
227
+ this.model.sums.yrj = 0
228
+ this.model.sums.no_plan_num = 0
229
+ this.model.sums.wrj = 0
230
+ this.model.sums.ruhu = 0
231
+ this.model.sums.jujian = 0
232
+ this.model.sums.daofang = 0
233
+ this.model.sums.ruhu_total=0
234
+ this.model.sums.daofang_total=0
235
+ this.model.sums.jujian_total=0
236
+ this.model.sums.total_sum=0
237
+ }
238
+ }
239
+ },
240
+ computed: {
241
+ selected() {
242
+ return this.$refs.paged.$refs.grid.selected
243
+ }
244
+ }
245
+ }
246
+ </script>