维修工单增加开始维修和完成维修功能,添加维修材料申请功能
7 files modified
3 files added
| New file |
| | |
| | | import http from '@/http/api.js' |
| | | |
| | | export const getInvList = () => { |
| | | return http.request({ |
| | | url: '/inventory/inventory/inv-list', |
| | | method: 'get', |
| | | }) |
| | | } |
| New file |
| | |
| | | import http from '@/http/api.js' |
| | | |
| | | export const add = (data) => { |
| | | return http.request({ |
| | | url: '/invreqRecord/invreqRecord/submit', |
| | | method: 'post', |
| | | data:data |
| | | }) |
| | | } |
| | |
| | | // 图片的预览的键(默认 thumbnail) |
| | | imgCoverKey: { |
| | | type: String, |
| | | default: 'thumbnail' |
| | | default: 'http://dev.jxpskj.com:9000/zhnc/upload/20220923/66713609576bbaa24a2f87145a3134c6.jpeg' |
| | | }, |
| | | // 图片限制 |
| | | imgLimit: { |
| | |
| | | { |
| | | "name": "Rider", |
| | | "appid": "__UNI__F8566AB", |
| | | "description": "", |
| | | "versionName": "1.0.0", |
| | | "versionCode": "100", |
| | | "transformPx": false, |
| | | /* 5+App特有相关 */ |
| | | "app-plus": { |
| | | "safearea": { |
| | | "bottom": { |
| | | "offset": "none" |
| | | } |
| | | }, |
| | | "usingComponents": true, |
| | | "nvueCompiler": "uni-app", |
| | | "compilerVersion": 3, |
| | | "splashscreen": { |
| | | "alwaysShowBeforeRender": true, |
| | | "waiting": true, |
| | | "autoclose": true, |
| | | "delay": 0 |
| | | }, |
| | | /* 模块配置 */ |
| | | "modules": { |
| | | "Geolocation": {} |
| | | }, |
| | | /* 应用发布信息 */ |
| | | "distribute": { |
| | | /* android打包配置 */ |
| | | "android": { |
| | | "permissions": [ |
| | | "<uses-feature android:name=\"android.hardware.camera\"/>", |
| | | "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>", |
| | | "<uses-permission android:name=\"android.permission.CAMERA\"/>", |
| | | "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", |
| | | "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", |
| | | "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>", |
| | | "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", |
| | | "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", |
| | | "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>", |
| | | "<uses-permission android:name=\"android.permission.VIBRATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", |
| | | "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>", |
| | | "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" |
| | | ] |
| | | }, |
| | | /* ios打包配置 */ |
| | | "ios": {}, |
| | | /* SDK配置 */ |
| | | "sdkConfigs": { |
| | | "ad": {}, |
| | | "geolocation": { |
| | | "system": { |
| | | "__platform__": ["ios", "android"] |
| | | }, |
| | | "amap": { |
| | | "__platform__": ["ios", "android"], |
| | | "appkey_ios": "", |
| | | "appkey_android": "" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | /* 快应用特有相关 */ |
| | | "quickapp": {}, |
| | | /* 小程序特有相关 */ |
| | | "mp-weixin": { |
| | | "appid": "wxc256e348c4032ebd", |
| | | "setting": { |
| | | "urlCheck": false |
| | | }, |
| | | "usingComponents": true |
| | | }, |
| | | "mp-alipay": { |
| | | "usingComponents": true |
| | | }, |
| | | "mp-baidu": { |
| | | "usingComponents": true |
| | | }, |
| | | "mp-toutiao": { |
| | | "usingComponents": true |
| | | }, |
| | | "h5": { |
| | | "template": "template.h5.html", |
| | | "router": { |
| | | "mode": "hash", |
| | | "base": "/rider/" |
| | | }, |
| | | "sdkConfigs": { |
| | | "maps": { |
| | | "amap": { |
| | | "key": "7fa69abe1defd5888bb85bc736cda874", |
| | | "securityJsCode": "8ac9e5f522c62ed6e3a5800a87b0d140", |
| | | "serviceHost": "" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | "name" : "Rider", |
| | | "appid" : "__UNI__F8566AB", |
| | | "description" : "", |
| | | "versionName" : "1.0.0", |
| | | "versionCode" : "100", |
| | | "transformPx" : false, |
| | | /* 5+App特有相关 */ |
| | | "app-plus" : { |
| | | "safearea" : { |
| | | "bottom" : { |
| | | "offset" : "none" |
| | | } |
| | | }, |
| | | "usingComponents" : true, |
| | | "nvueCompiler" : "uni-app", |
| | | "compilerVersion" : 3, |
| | | "splashscreen" : { |
| | | "alwaysShowBeforeRender" : true, |
| | | "waiting" : true, |
| | | "autoclose" : true, |
| | | "delay" : 0 |
| | | }, |
| | | /* 模块配置 */ |
| | | "modules" : { |
| | | "Geolocation" : {} |
| | | }, |
| | | /* 应用发布信息 */ |
| | | "distribute" : { |
| | | /* android打包配置 */ |
| | | "android" : { |
| | | "permissions" : [ |
| | | "<uses-feature android:name=\"android.hardware.camera\"/>", |
| | | "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>", |
| | | "<uses-permission android:name=\"android.permission.CAMERA\"/>", |
| | | "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", |
| | | "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", |
| | | "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>", |
| | | "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", |
| | | "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", |
| | | "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>", |
| | | "<uses-permission android:name=\"android.permission.VIBRATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", |
| | | "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>", |
| | | "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" |
| | | ] |
| | | }, |
| | | /* ios打包配置 */ |
| | | "ios" : {}, |
| | | /* SDK配置 */ |
| | | "sdkConfigs" : { |
| | | "ad" : {}, |
| | | "geolocation" : { |
| | | "system" : { |
| | | "__platform__" : [ "ios", "android" ] |
| | | }, |
| | | "amap" : { |
| | | "__platform__" : [ "ios", "android" ], |
| | | "appkey_ios" : "", |
| | | "appkey_android" : "" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | /* 快应用特有相关 */ |
| | | "quickapp" : {}, |
| | | /* 小程序特有相关 */ |
| | | "mp-weixin" : { |
| | | "appid" : "wxc256e348c4032ebd", |
| | | "setting" : { |
| | | "urlCheck" : false |
| | | }, |
| | | "usingComponents" : true |
| | | }, |
| | | "mp-alipay" : { |
| | | "usingComponents" : true |
| | | }, |
| | | "mp-baidu" : { |
| | | "usingComponents" : true |
| | | }, |
| | | "mp-toutiao" : { |
| | | "usingComponents" : true |
| | | }, |
| | | "h5" : { |
| | | "template" : "template.h5.html", |
| | | "router" : { |
| | | "mode" : "hash", |
| | | "base" : "/rider/" |
| | | }, |
| | | "sdkConfigs" : { |
| | | "maps" : { |
| | | "amap" : { |
| | | "key" : "7fa69abe1defd5888bb85bc736cda874", |
| | | "securityJsCode" : "8ac9e5f522c62ed6e3a5800a87b0d140", |
| | | "serviceHost" : "" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | "navigationBarTitleText": "工单详情", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | },{ |
| | | "path": "pages/inventory/materialRequire", |
| | | "style": { |
| | | "navigationBarTitleText": "维修材料申请", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | } |
| | | ], |
| | | "globalStyle": { |
| | |
| | | </u-action-sheet> --> |
| | | |
| | | <u-form-item label-position="top" label-width="25%" label="图片上传:"> |
| | | <evan-upload ref="evanUpload" :imgLimit="4" :options="uploadOption" @on-upload="onUpload"></evan-upload> |
| | | <evan-upload ref="evanUpload" |
| | | :usePreview="true" |
| | | :imgLimit="4" |
| | | :options="uploadOption" |
| | | @on-upload="onUpload" |
| | | @on-pre-video="onPreVideo" |
| | | ></evan-upload> |
| | | </u-form-item> |
| | | |
| | | <u-form-item label-position="top" label="备注:"> |
| | |
| | | this.getHeader() |
| | | }, |
| | | methods:{ |
| | | //获取头部 |
| | | getHeader(){ |
| | | let accessToken = uni.getStorageSync('accessToken'); |
| | | var myHeader = {} |
| | |
| | | this.form.sourceText = this.sourceList[index].text |
| | | this.form.source = this.sourceList[index].value |
| | | }, |
| | | //表单提交 |
| | | submit(){ |
| | | this.$refs.uForm.validate(valid => { |
| | | if (valid) { |
| | |
| | | e.thumbnail = res.data.link |
| | | }) |
| | | } |
| | | |
| | | }, |
| | | onPreVideo(res){ |
| | | } |
| | | } |
| | | }; |
| New file |
| | |
| | | <template> |
| | | <view class="container"> |
| | | <u-form :model="form" ref="uForm" :rules="rules"> |
| | | <u-form-item label-width="20%" label="申请材料:" prop="inventoryId"> |
| | | <u-input v-model="form.inventoryText" type="select" @click="showInventory = true" placeholder="请选择申请材料"/> |
| | | </u-form-item> |
| | | <u-action-sheet |
| | | v-model="showInventory" |
| | | :list="inventoryList" |
| | | title="请选择事件类型" |
| | | @click="inventorySelect" |
| | | > |
| | | </u-action-sheet> |
| | | |
| | | <u-form-item label-width="20%" label="申请数量:" prop="reqNum"> |
| | | <u-input v-model="form.reqNum" placeholder="请输入申请数量"/> |
| | | </u-form-item> |
| | | |
| | | <u-form-item label-position="top" label="备注:"> |
| | | <u-input v-model="form.remark" type="textarea" /> |
| | | </u-form-item> |
| | | </u-form> |
| | | |
| | | <view class="submitBtn"> |
| | | <u-button @click="submit">申请</u-button> |
| | | </view> |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import {getInvList} from "@/api/inventory/inventory.js" |
| | | import {add} from "@/api/inventory/invreqRecord.js" |
| | | export default { |
| | | onReady() { |
| | | //设置表单验证规则 |
| | | this.$refs.uForm.setRules(this.rules); |
| | | }, |
| | | data(){ |
| | | return{ |
| | | form:{ |
| | | inventoryText:"", |
| | | inventoryId:"", |
| | | reqNum:"", |
| | | remark:"", |
| | | }, |
| | | rules:{ |
| | | inventoryId:[{ |
| | | required:true, |
| | | message:'请选择申请材料', |
| | | trigger:'blur' |
| | | }], |
| | | reqNum:[{ |
| | | pattern:/^[1-9]\d*$/, |
| | | transform(value) { |
| | | return String(value); |
| | | }, |
| | | required:true, |
| | | message:'请输入正确的申请数量', |
| | | trigger:'blur' |
| | | }], |
| | | }, |
| | | showInventory:false, |
| | | inventoryList:[], |
| | | } |
| | | }, |
| | | created() { |
| | | this.getInventoryList() |
| | | }, |
| | | methods:{ |
| | | getInventoryList(){ |
| | | getInvList().then(res=>{ |
| | | if(res.code ==200){ |
| | | res.data.forEach(e=>{ |
| | | this.inventoryList.push({ |
| | | text:e.name, |
| | | key:e.id |
| | | }) |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | inventorySelect(index){ |
| | | this.form.inventoryText = this.inventoryList[index].text |
| | | this.form.inventoryId = this.inventoryList[index].key |
| | | }, |
| | | submit(){ |
| | | this.$refs.uForm.validate(valid => { |
| | | if(valid){ |
| | | add(this.form).then(res=>{ |
| | | if(res.code == 200){ |
| | | uni.navigateBack({ |
| | | delta:1 |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .container{ |
| | | padding: 20px; |
| | | } |
| | | </style> |
| | |
| | | </span> |
| | | </view> |
| | | <view class="once-c"> |
| | | <u-button type="success">开始任务</u-button> |
| | | <u-button v-if="repairsorderData.state == 1" type="success" @click="startRepair(repairsorderData)">开始维修</u-button> |
| | | <u-button v-if="repairsorderData.state == 2" type="success" @click="finishRepair(repairsorderData)">完成维修</u-button> |
| | | <u-button v-if="repairsorderData.state!=3" type="error" @click="materialRequire">材料申请</u-button> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | |
| | | <script> |
| | | import { |
| | | getDetail |
| | | getDetail,update |
| | | } from "@/api/repairsorder/repairsorder" |
| | | export default { |
| | | data() { |
| | |
| | | getTaskinfoDetail() { |
| | | var _that = this |
| | | getDetail(_that.id).then(res => { |
| | | if(res.data.picUrls.length==0){ |
| | | res.data.picUrls == null |
| | | } |
| | | _that.repairsorderData = res.data; |
| | | if (_that.repairsorderData.latitude && _that.repairsorderData.longitude) { |
| | | _that.latitude = _that.repairsorderData.latitude |
| | |
| | | } |
| | | |
| | | }) |
| | | }, |
| | | //开始维修 |
| | | startRepair(item){ |
| | | uni.showModal({ |
| | | title:"提示", |
| | | content:"是否开始维修?", |
| | | success:(res)=> { |
| | | if(res.confirm){ |
| | | item.state = '2' |
| | | update(item).then(res=>{ |
| | | if(res.code == 200){ |
| | | this.getTaskinfoDetail() |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | //维修完成 |
| | | finishRepair(item){ |
| | | uni.showModal({ |
| | | title:"提示", |
| | | content:"是否完成维修?", |
| | | success:(res)=> { |
| | | if(res.confirm){ |
| | | item.state = '3' |
| | | update(item).then(res=>{ |
| | | if(res.code == 200){ |
| | | this.getTaskinfoDetail() |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | //维修材料申请 |
| | | materialRequire(){ |
| | | uni.navigateTo({ |
| | | url: '/pages/inventory/materialRequire' |
| | | }) |
| | | } |
| | | }, |
| | | onLoad: function(options) { |
| | |
| | | </view> |
| | | </view> |
| | | <view class="onve-right"> |
| | | <u-button class='greens' size="mini" v-if="current == 0">开始维修 |
| | | <u-button class='greens' size="mini" v-if="current == 0" @click="startRepair(item)">开始维修 |
| | | </u-button> |
| | | <u-button class='greens' size="mini" v-if="current == 1">完成维修 |
| | | <u-button class='greens' size="mini" v-if="current == 1" @click="finishRepair(item)">完成维修 |
| | | </u-button> |
| | | |
| | | <u-button class='o-r-down' plain type="error" size="mini" v-if="current != 2" @click="materialRequire">材料申请 |
| | | </u-button> |
| | | </view> |
| | | </view> |
| | | |
| | |
| | | |
| | | <script> |
| | | import { |
| | | getList |
| | | getList,update |
| | | } from "@/api/repairsorder/repairsorder"; |
| | | export default { |
| | | data() { |
| | |
| | | repairsorderList: null |
| | | } |
| | | }, |
| | | onShow() { |
| | | this.getList() |
| | | }, |
| | | created() { |
| | | this.getList() |
| | | }, |
| | |
| | | getList(this.page.currentPage, this.page.pageSize, this.query).then(res => { |
| | | const data = res.data; |
| | | this.page.total = data.total; |
| | | data.records.forEach(e=>{ |
| | | if(e.picUrls.length==0){ |
| | | e.picUrls = null |
| | | } |
| | | }) |
| | | this.repairsorderList = data.records; |
| | | }) |
| | | }, |
| | |
| | | uni.navigateTo({ |
| | | url: '/pages/repairsorder/detail?id=' + id |
| | | }) |
| | | }, |
| | | //开始维修 |
| | | startRepair(item){ |
| | | uni.showModal({ |
| | | title:"提示", |
| | | content:"是否开始维修?", |
| | | success:(res)=> { |
| | | if(res.confirm){ |
| | | item.state = '2' |
| | | update(item).then(res=>{ |
| | | if(res.code == 200){ |
| | | this.page.currentPage = 1 |
| | | this.getList() |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | //维修完成 |
| | | finishRepair(item){ |
| | | uni.showModal({ |
| | | title:"提示", |
| | | content:"是否结束任务?", |
| | | success:(res)=> { |
| | | if(res.confirm){ |
| | | item.state = '3' |
| | | update(item).then(res=>{ |
| | | if(res.code == 200){ |
| | | this.page.currentPage = 1 |
| | | this.getList() |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | //维修材料申请 |
| | | materialRequire(){ |
| | | uni.navigateTo({ |
| | | url: '/pages/inventory/materialRequire' |
| | | }) |
| | | } |
| | | |
| | | } |
| | | } |
| | | </script> |
| | |
| | | </view> |
| | | <view class="once-c"> |
| | | <u-button v-if="taskinfoData.state == 0" type="success" @click="startTask(taskinfoData)">开始任务</u-button> |
| | | <u-button v-if="taskinfoData.state == 1" type="success" @click="finishTask(taskinfoData)">完成任务 |
| | | </u-button> |
| | | <u-button v-if="taskinfoData.state == 1" type="success" @click="finishTask(taskinfoData)">完成任务</u-button> |
| | | <u-button v-if="taskinfoData.state == 1" type="error" @click="goToEventsReported">事件上报</u-button> |
| | | </view> |
| | | </view> |