safecheck-client 4.0.2-19 → 4.0.2-20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/package.json +1 -1
  2. package/src/components/NewDefectList/DefectPaperNew.vue +1184 -1184
  3. package/src/components/android/PhoneUpUserinfo.vue +1249 -1249
  4. package/src/components/android/SafeRightTree.vue +218 -218
  5. package/src/components/android/SafecheckDevices.vue +1340 -1340
  6. package/src/components/android/week/CheckResultSimple.vue +222 -0
  7. package/src/components/android/week/FirstWeekCheck.vue +236 -0
  8. package/src/components/android/week/StepHeaderBar.vue +323 -0
  9. package/src/components/android/week/WeekCheck.vue +151 -0
  10. package/src/components/android/week/WeekCheckPaper.vue +151 -0
  11. package/src/components/pc/CheckBook.vue +303 -303
  12. package/src/components/pc/CheckBookArea.vue +146 -146
  13. package/src/components/pc/CheckBookCompany.vue +144 -144
  14. package/src/components/pc/CheckBookDetails.vue +161 -161
  15. package/src/components/pc/CheckBookEntry.vue +60 -60
  16. package/src/components/pc/CheckBookSearchArea.vue +560 -560
  17. package/src/components/pc/CheckBookSearchUnit.vue +229 -229
  18. package/src/components/pc/CheckBookSearchUser.vue +659 -659
  19. package/src/components/pc/CheckBookSearchUserList.vue +674 -674
  20. package/src/filiale/meihekou/android/CheckPlanList.vue +198 -198
  21. package/src/filiale/meihekou/android/CheckPlanListArea.vue +190 -190
  22. package/src/filiale/meihekou/android/PaperFeedback.vue +1542 -1542
  23. package/src/filiale/meihekou/android/SafecheckDevices.vue +1343 -1343
  24. package/src/filiale/meihekou/android/SafecheckOrderV.vue +2447 -2447
  25. package/src/filiale/meihekou/android.js +22 -22
  26. package/src/filiale/meihekou/pc/NewCheckpaperNew.vue +2050 -2050
  27. package/src/safecheck-android.js +326 -316
@@ -0,0 +1,222 @@
1
+ <template>
2
+ <div class="select-overspread repair-bg auto" style="padding-bottom:5px;">
3
+ <div class="panel panel-default auto repair-info-content">
4
+ <div class="panel-body" style="padding: 0">
5
+ <!-- 周检项内容 -->
6
+ <div class="auto repair-info-content compatible" style="padding: 0">
7
+ <div class="row auto" style="padding: 0">
8
+ <div class="col-xs-12 col-sm-12 col-md-12 mg8" v-show="row.isshow" v-for="(idxs,row) in items" style="padding: 4px; border:1px solid #D4D4D4;border-bottom: 0" >
9
+ <label v-if="row.type != 'radio' && row.type != 'text' && row.type != 'picture' && row.type != 'checkbox'" v-show="row.isshow" class="fivelabel">{{row.f_item_name}}</label>
10
+ <label v-if="row.type == 'radio'" v-show="row.isshow" class="radiolabel">{{row.f_item_name}}</label>
11
+ <label v-if="row.type == 'text'" v-show="row.isshow" class="textlabel1">{{row.f_item_name}}</label>
12
+ <label v-if="row.type == 'picture' || row.type == 'checkbox'" v-show="row.isshow" class="textlabel">{{row.f_item_name}}</label>
13
+ <div style="clear: both" v-if="row.type == 'picture'" class="form-group col-sm-12" >
14
+ <div class="auto" >
15
+ <div class="panel">
16
+ <div class="panel-body panel-self" style="background-color: #F8F8F8;width: 160px;height: 160px;position: relative">
17
+ <div class="row" style="height: 160px;width:160px;overflow: scroll;top: 1px">
18
+ <div class="col-sm-4" v-show="row.f_path">
19
+ <img-self :src="row.f_path" :alt="row.f_item_name" width="140" height="140"></img-self>
20
+ </div>
21
+ <div class="col-sm-4" v-show="!row.f_path" @click="takePic(idxs, row.f_item_name)">
22
+ <img src="../../../assets/tackpic.png" :alt="点击拍摄照片" width="140" height="140"></img>
23
+ </div>
24
+ <img v-show="row.f_path" src="../../../assets/remove.png" :class="style__" @click="delfile(idxs, row.f_path)" v-if="role!='androidview'" style="width: 40px;height: 40px;position: absolute;left:110px;top:110px"></img>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ <div style="float: left;width:60%" class="form-group" v-if="row.type == 'string'" v-show="row.isshow">
31
+ <input type="text" class="form-control" maxlength="100" v-model="row.f_item_value" :readonly="role == 'androidview' || row.readonly">
32
+ </div>
33
+ <div style="float: left;width:60%" class="form-group col-sm-12" v-if="row.type == 'date'" v-show="row.isshow">
34
+ <datepicker id="f_making_date" :placeholder= row.f_item_name
35
+ :value.sync="row.f_item_value"
36
+ v-if="row.type == 'date'"
37
+ v-show="row.isshow"
38
+ :disabled-days-of-Week="[]"
39
+ :format="'yyyy-MM-dd HH:mm:ss'"
40
+ readonly
41
+ >
42
+ </datepicker>
43
+ </div>
44
+ <div style="float: left;width:60%" class="form-group" v-if="row.type == 'number'" v-show="row.isshow">
45
+ <input type="text" class="form-control" maxlength="100" v-model="row.f_item_value" onkeyup="value=value.replace(/[^\d\.-]/g,'')" :readonly="row.readonly">
46
+ </div>
47
+ <v-select style="float: left" :value.sync="row.selected"
48
+ v-model="row.selected"
49
+ v-if="row.type == 'selector'"
50
+ :search="false"
51
+ v-show="row.isshow"
52
+ placeholder='请选择'
53
+ :options="row.options"
54
+ :disabled="row.readonly"
55
+ @change="changse"
56
+ @click="transelation(idxs)"
57
+ :multiple="row.multiple"
58
+ :value-single="row.multiple"
59
+ :close-on-select="!row.multiple" clear-button></v-select>
60
+ <div style="float: left;width: 30%" class="form-group" v-if="row.type == 'radio'">
61
+ <div class="col-xs-6 col-sm-6 col-md-6" v-for="item in row.options">
62
+ <input type="radio" :name="row.f_item_name" :value="item.value" v-model="row.f_item_value" >
63
+ <span>{{item.label}}</span>
64
+ </div>
65
+ </div>
66
+ <div v-if="row.type == 'checkbox'" class="col-xs-12 col-sm-12 col-md-12" style="white-space: nowrap" >
67
+ <div style="float: left" v-for="item in row.options">
68
+ <input type="checkbox" :name="row.f_item_name" :value="item.value" v-model="row.f_item_value">
69
+ <span>{{item.label}}</span>
70
+ </div>
71
+ </div>
72
+
73
+ </div>
74
+ </div>
75
+ </div>
76
+ </div>
77
+ </div>
78
+ </div>
79
+ </template>
80
+ <script>
81
+ import Vue from 'vue'
82
+ import * as Util from '../../Util'
83
+
84
+ export default {
85
+ title: '周检列表信息',
86
+ data() {
87
+ return {
88
+ selectindex: null
89
+ }
90
+ },
91
+ props: ['items'],
92
+ ready() {
93
+ },
94
+ methods: {
95
+ changse(val){
96
+ if(val == undefined){
97
+ return
98
+ }
99
+ if(this.selectindex != null) {
100
+ if(this.items[this.selectindex].type == 'selector'){
101
+ this.items[this.selectindex].f_item_value = val
102
+ }
103
+ }
104
+ },
105
+ transelation(val){
106
+ this.selectindex = val
107
+ },
108
+ },
109
+ computed:{
110
+ },
111
+ watch: {
112
+ 'items'(){
113
+ for (let item in this.items) {
114
+ if (this.items[item].type === 'selector') {
115
+ let page = [
116
+ {
117
+ label: "请选择",
118
+ value: ''
119
+ }
120
+ ]
121
+
122
+ for (let i in this.items[item].options) {
123
+ if(typeof this.items[item].options[i]=='function'){
124
+ continue
125
+ }
126
+ if (Util.isEmpty(this.items[item].f_item_value) && this.items[item].options[i].isdefault){
127
+ this.$set(`items[${item}].f_item_value`, this.items[item].options[i].data)
128
+ this.items[item].f_item_value = this.items[item].options[i].data
129
+ }
130
+ page.push({
131
+ label: this.items[item].options[i].data,
132
+ value: this.items[item].options[i].data
133
+ })
134
+ }
135
+ this.$set(`items[${item}].selected`, this.items[item].f_item_value)
136
+ this.items[item].options = page
137
+ this.$set(`items[${item}].options`, page)
138
+ } else if (this.items[item].type === 'radio' || this.items[item].type === 'checkbox') {
139
+ let page = []
140
+ for (let i in this.items[item].options) {
141
+ if(typeof this.items[item].options[i]=='function'){
142
+ continue
143
+ }
144
+ page.push({
145
+ label: this.items[item].options[i].data,
146
+ value: this.items[item].options[i].data
147
+ })
148
+ if (Util.isEmpty(this.items[item].f_item_value) && this.items[item].options[i].isdefault){
149
+ this.$set(`items[${item}].f_item_value`, this.items[item].options[i].data)
150
+ this.items[item].f_item_value = this.items[item].options[i].data
151
+ }
152
+ }
153
+ this.items[item].options = page
154
+ this.$set(`items[${item}].options`, page)
155
+ }
156
+ }
157
+ }
158
+ },
159
+ }
160
+ </script>
161
+ <style lang="less" scoped>
162
+ .class-erro {
163
+ color: #a94442;
164
+ }
165
+ .fivelabel{
166
+ border: none;
167
+ float: left;
168
+ width: 35%;
169
+ margin-bottom: 3px;
170
+ text-align: left;
171
+ word-wrap: break-word;
172
+ white-space: normal;
173
+ }
174
+ .radiolabel{
175
+ border: none;
176
+ float: left;
177
+ width: 65%;
178
+ margin-bottom: 3px;
179
+ text-align: left;
180
+ word-wrap: break-word;
181
+ white-space: normal;
182
+ }
183
+
184
+ .textlabel {
185
+ border: none;
186
+ width: 100%;
187
+ margin-bottom: 3px;
188
+ text-align: left;
189
+ word-wrap: break-word;
190
+ white-space: normal;
191
+ }
192
+ .textlabel1 {
193
+ border: none;
194
+ width: 100%;
195
+ margin-bottom: 3px;
196
+ text-align: left;
197
+ word-wrap: break-word;
198
+ white-space: normal;
199
+ }
200
+ .spanrodio{
201
+ margin-right: 10px;
202
+ }
203
+ .div-photo{
204
+ width: auto;
205
+ height: auto;
206
+ position: absolute;
207
+ bottom: 10px;
208
+ right: 10px;
209
+ }
210
+ .panel-self{
211
+ border-radius: 5px;
212
+ border:1px solid #c5e1f7;
213
+ }
214
+ .btn-photo{
215
+ border: 0;
216
+ border-radius: 7px;
217
+ background-color: #7dc1f4;
218
+ font: 15px PingFang-SC-Bold;
219
+ height: 20%;
220
+ }
221
+ </style>
222
+
@@ -0,0 +1,236 @@
1
+ <template>
2
+ <div class="auto">
3
+ <criteria-paged :model="model" :pager="false" v-ref:paged>
4
+ <criteria partial='criteria' @condition-changed='search' v-ref:cri>
5
+ <div partial>
6
+ <form>
7
+ <div class="row app-row">
8
+ <div class="col-xs-4">
9
+ <img src="../../../assets/用户ID.png" style="width: 20px;margin-bottom: 5px" alt="">
10
+ <label class="font text-left">表 &nbsp;&nbsp; &nbsp;&nbsp; 号:</label>
11
+ </div>
12
+ <div class="col-xs-8" >
13
+ <input class="search_input input-font"
14
+ v-model=model.f_meternumber condition="f_meternumber = '{}'" style="width: 70%" placeholder="请输入表号" />
15
+ <button type="button" name="button" class="btn btn-primary" style="width: 25%" @click="$parent.$parent.scan">扫码</button>
16
+ </div>
17
+ </div>
18
+ <div class="row text-center" style="margin-top: 20px;">
19
+ <button type="button" class="btn btn-lg btn-font btn-color" style="width: 45%;" @click="search">查询</button>
20
+ <button type="button" class="btn btn-lg btn-font btn-color" style="width: 45%;" @click="$parent.$parent.showModal">执行首检</button>
21
+ </div>
22
+ </form>
23
+ </div>
24
+ </criteria>
25
+
26
+ <list :model="model" partial='list'>
27
+ <div partial>
28
+ <div @click="$parent.$parent.$parent.inspect(row)" class="auto app-text" style="margin-top: 5px;">
29
+ <div class="panel" style="padding: 10px 10px 5px 10px;">
30
+ <div class="panel-body panel-self">
31
+ <div class="row">
32
+ <p class="panel-title col-xs-4 text-left font">表号</p>
33
+ <p class="panel-title col-xs-8 text-left input-font">{{ row.f_meternumber }}</p>
34
+ </div>
35
+ <div class="row">
36
+ <p class="panel-title col-xs-4 text-left font">首检日期</p>
37
+ <p class="panel-title col-xs-8 text-left input-font">{{ row.f_first_inspection_date }}</p>
38
+ </div>
39
+ <div class="row">
40
+ <p class="panel-title col-xs-4 text-left font">首检机构</p>
41
+ <p class="panel-title col-xs-8 text-left input-font">{{ row.f_last_inspection_agency }}</p>
42
+ </div>
43
+ <div class="row">
44
+ <p class="panel-title col-xs-4 text-left font">送检人</p>
45
+ <p class="panel-title col-xs-8 text-left input-font">{{ row.f_user_name }}</p>
46
+ </div>
47
+ <div class="row">
48
+ <p class="panel-title col-xs-4 text-left font">气表品牌</p>
49
+ <p class="panel-title col-xs-8 text-left input-font">{{ row.f_meter_brand }}</p>
50
+ </div>
51
+ <div class="row">
52
+ <p class="panel-title col-xs-4 text-left font">气表型号</p>
53
+ <p class="panel-title col-xs-8 text-left input-font">{{ row.f_meter_style }}</p>
54
+ </div>
55
+ </div>
56
+ </div>
57
+
58
+ </div>
59
+ </div>
60
+ </list>
61
+ </criteria-paged>
62
+ <div v-if="showcheck">
63
+ <check-rsult-simple :items="weekCheck" ></check-rsult-simple>
64
+ <div class="row text-center" style="margin-top: 20px;">
65
+ <button type="button" class="btn btn-lg btn-font btn-color" style="width: 45%;" @click="colse">取消</button>
66
+ <button type="button" class="btn btn-lg btn-font btn-color" style="width: 45%;" @click="uploadCheckPaper">提交</button>
67
+ </div>
68
+ </div>
69
+ </div>
70
+ </template>
71
+
72
+ <script>
73
+ import {HttpResetClass, PagedList} from 'vue-client'
74
+ import Vue from 'vue'
75
+ import * as Util from '../../Util'
76
+
77
+ export default {
78
+ title: '首检',
79
+ data () {
80
+ let model = new PagedList(`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/sql/getFirstWeekTable`, 20,
81
+ {
82
+ f_orgids:'this.f_orgids'
83
+ })
84
+ model.f_orgids = Vue.user.orgid
85
+ return {
86
+ model: model,
87
+ weekCheck:[],
88
+ useritem:{},
89
+ weekConfig:{},
90
+ showcheck:false
91
+ }
92
+ },
93
+ ready () {
94
+ this.getweekconfig()
95
+ },
96
+ computed: {
97
+ },
98
+ methods:{
99
+ getweekconfig(){
100
+ const http = new HttpResetClass()
101
+ http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/logic/getWeekCheckTypeByType`, {f_safecheck_type: '首检' }).then(res=>{
102
+ if (res.data && res.data.length > 0 ){
103
+ this.weekConfig = res.data[0]
104
+ const json = JSON.parse(res.data[0].f_json)
105
+ this.weekCheck = []
106
+ if (json && json.length > 0){
107
+ for (let i = 0; i < json.length; i++){
108
+ if (json[i].itemname === '首检'){
109
+ json[i].items.forEach(row => {
110
+ this.weekCheck.push({
111
+ f_item_name: row.itemname,
112
+ f_item_value: row.f_item_value || '',
113
+ options:row.options,
114
+ type: row.type,
115
+ isshow:true,
116
+ f_path: '',
117
+ multiple: row.multiple?row.multiple:false,
118
+ readonly:false
119
+ })
120
+ })
121
+ }
122
+ }
123
+ }
124
+ }
125
+
126
+ })
127
+ },
128
+ scan(){
129
+ HostApp.__this__=this,
130
+ HostApp.scanCode({callback:"javascript:HostApp.__this__.getCode();"})
131
+ },
132
+ getCode(){
133
+ let datapa = HostApp.getCode().data;
134
+ this.$refs.paged.$refs.cri.model.f_meternumber=datapa
135
+ },
136
+ inspect (row) {
137
+ this.getweekconfig()
138
+ this.useritem = row
139
+ this.weekCheck.forEach(item=>{
140
+ if (item.f_item_name === '表号' && !Util.isEmpty(row.f_meternumber)){
141
+ item.f_item_value = row.f_meternumber
142
+ item.readonly = true
143
+ }
144
+ if (item.f_item_name === '气表品牌' && !Util.isEmpty(row.f_meter_brand)){
145
+ item.f_item_value = row.f_meter_brand
146
+ item.readonly = true
147
+ }
148
+ if (item.f_item_name === '气表型号' && !Util.isEmpty(row.f_meter_style)){
149
+ item.f_item_value = row.f_meter_style
150
+ item.readonly = true
151
+ }
152
+ })
153
+ this.showcheck = true
154
+ },
155
+ showModal(){
156
+ this.getweekconfig()
157
+ this.showcheck = true
158
+ },
159
+ colse(){
160
+ this.getweekconfig()
161
+ this.showcheck = false
162
+ },
163
+ uploadCheckPaper(){
164
+ const json = JSON.parse(this.weekConfig.f_json)
165
+ json.forEach(res=>{
166
+ if (res.itemname === '首检'){
167
+ res.items = this.weekCheck
168
+ }
169
+ })
170
+ const http = new HttpResetClass()
171
+ const weekCheckpaper = {
172
+ f_userinfo_id: this.useritem.f_userinfo_id,
173
+ f_user_name: this.useritem.f_user_name,
174
+ f_user_phone: this.useritem.f_user_phone,
175
+ f_meter_brand: this.useritem.f_meter_brand,
176
+ f_meter_style: this.useritem.f_meter_style,
177
+ f_meternumber: this.useritem.f_meternumber,
178
+ f_address: this.useritem.f_address,
179
+ f_checker_id: Vue.user.id,
180
+ f_checker_name: Vue.user.name,
181
+ f_complete: '已完成',
182
+ f_entry_status: '正常',
183
+ f_safe_type: '首检',
184
+ f_state: '已检',
185
+ f_safe_content: json,
186
+ f_safecheck_type_id: this.weekConfig.f_security_check_type_id,
187
+ f_safe_type_version: this.weekConfig.version,
188
+ f_upload_date: Util.toStandardTimeString(),
189
+ f_filiale_id: Vue.user.orgid,
190
+ f_filiale: Vue.user.orgs,
191
+ }
192
+ http.load('post',`${this.$androidUtil.getProxyUrl()}/api/af-safecheck/logic/saveWeekPaper`, weekCheckpaper, {resolveMsg: '首检成功!', rejectMsg: '首检失败,请联系管理员检查!'}).then(res=>{
193
+ if (res.data){
194
+ this.colse()
195
+ }
196
+ })
197
+ }
198
+ }
199
+ }
200
+ </script>
201
+ <style scoped>
202
+ .app-row {
203
+ background-color: white;
204
+ padding: 10px 10px 0 10px;
205
+ border-bottom: 1px solid rgba(235, 235, 235, 0.5);
206
+ }
207
+ .search_input {
208
+ border: 0;
209
+ outline: none;
210
+ }
211
+ .font{
212
+ font: 15px PingFang-SC-Medium;
213
+ color: #666666;
214
+ }
215
+ .input-font{
216
+ font: 15px PingFang-SC-Medium;
217
+ color: #333333;
218
+ }
219
+ .btn-font{
220
+ font:600 16px PingFang-SC-Bold;
221
+ color: #499EDF;
222
+ }
223
+ .btn-color{
224
+ background-color: #FFFFFF;
225
+ border-radius: 10px ;
226
+ border: 1px solid #499EDF;
227
+ }
228
+ .app-text {
229
+ font-size: 12px;
230
+ }
231
+ .panel-self{
232
+ border-radius: 10px;
233
+ border:1px solid #499EDF;
234
+ background-color: #F8F8F8;
235
+ }
236
+ </style>