From 830ce15ad9894bdfd442ecd3e8051bd0cd79836b Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Sat, 08 Oct 2022 14:34:57 +0800
Subject: [PATCH] 维修工单增加开始维修和完成维修功能,添加维修材料申请功能
---
api/inventory/inventory.js | 8 +
pages/taskinfo/detail.vue | 3
pages/repairsorder/list.vue | 60 ++++++
pages/eventgm/eventsReported.vue | 13 +
manifest.json | 214 +++++++++++++-------------
pages.json | 6
api/inventory/invreqRecord.js | 9 +
pages/inventory/materialRequire.vue | 108 +++++++++++++
components/evan-upload/evan-upload.vue | 2
pages/repairsorder/detail.vue | 49 +++++
10 files changed, 353 insertions(+), 119 deletions(-)
diff --git a/api/inventory/inventory.js b/api/inventory/inventory.js
new file mode 100644
index 0000000..c39c14e
--- /dev/null
+++ b/api/inventory/inventory.js
@@ -0,0 +1,8 @@
+import http from '@/http/api.js'
+
+export const getInvList = () => {
+ return http.request({
+ url: '/inventory/inventory/inv-list',
+ method: 'get',
+ })
+}
\ No newline at end of file
diff --git a/api/inventory/invreqRecord.js b/api/inventory/invreqRecord.js
new file mode 100644
index 0000000..fa11467
--- /dev/null
+++ b/api/inventory/invreqRecord.js
@@ -0,0 +1,9 @@
+import http from '@/http/api.js'
+
+export const add = (data) => {
+ return http.request({
+ url: '/invreqRecord/invreqRecord/submit',
+ method: 'post',
+ data:data
+ })
+}
\ No newline at end of file
diff --git a/components/evan-upload/evan-upload.vue b/components/evan-upload/evan-upload.vue
index 0c5f377..71a37db 100644
--- a/components/evan-upload/evan-upload.vue
+++ b/components/evan-upload/evan-upload.vue
@@ -243,7 +243,7 @@
// 图片的预览的键(默认 thumbnail)
imgCoverKey: {
type: String,
- default: 'thumbnail'
+ default: 'http://dev.jxpskj.com:9000/zhnc/upload/20220923/66713609576bbaa24a2f87145a3134c6.jpeg'
},
// 图片限制
imgLimit: {
diff --git a/manifest.json b/manifest.json
index 5e3c998..8e8afc0 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,109 +1,109 @@
{
- "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" : ""
+ }
+ }
+ }
+ }
}
diff --git a/pages.json b/pages.json
index af95354..28eb95b 100644
--- a/pages.json
+++ b/pages.json
@@ -60,6 +60,12 @@
"navigationBarTitleText": "工单详情",
"enablePullDownRefresh": false
}
+ },{
+ "path": "pages/inventory/materialRequire",
+ "style": {
+ "navigationBarTitleText": "维修材料申请",
+ "enablePullDownRefresh": false
+ }
}
],
"globalStyle": {
diff --git a/pages/eventgm/eventsReported.vue b/pages/eventgm/eventsReported.vue
index 94a78b8..ccbe98c 100644
--- a/pages/eventgm/eventsReported.vue
+++ b/pages/eventgm/eventsReported.vue
@@ -40,7 +40,13 @@
</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="备注:">
@@ -123,6 +129,7 @@
this.getHeader()
},
methods:{
+ //获取头部
getHeader(){
let accessToken = uni.getStorageSync('accessToken');
var myHeader = {}
@@ -187,6 +194,7 @@
this.form.sourceText = this.sourceList[index].text
this.form.source = this.sourceList[index].value
},
+ //表单提交
submit(){
this.$refs.uForm.validate(valid => {
if (valid) {
@@ -226,7 +234,8 @@
e.thumbnail = res.data.link
})
}
-
+ },
+ onPreVideo(res){
}
}
};
diff --git a/pages/inventory/materialRequire.vue b/pages/inventory/materialRequire.vue
new file mode 100644
index 0000000..dd87252
--- /dev/null
+++ b/pages/inventory/materialRequire.vue
@@ -0,0 +1,108 @@
+<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>
\ No newline at end of file
diff --git a/pages/repairsorder/detail.vue b/pages/repairsorder/detail.vue
index 4b8e44e..a4df124 100644
--- a/pages/repairsorder/detail.vue
+++ b/pages/repairsorder/detail.vue
@@ -44,7 +44,9 @@
</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>
@@ -52,7 +54,7 @@
<script>
import {
- getDetail
+ getDetail,update
} from "@/api/repairsorder/repairsorder"
export default {
data() {
@@ -86,6 +88,9 @@
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
@@ -99,6 +104,46 @@
}
})
+ },
+ //开始维修
+ 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) {
diff --git a/pages/repairsorder/list.vue b/pages/repairsorder/list.vue
index de7ddf1..02fca27 100644
--- a/pages/repairsorder/list.vue
+++ b/pages/repairsorder/list.vue
@@ -29,11 +29,12 @@
</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>
@@ -47,7 +48,7 @@
<script>
import {
- getList
+ getList,update
} from "@/api/repairsorder/repairsorder";
export default {
data() {
@@ -76,6 +77,9 @@
repairsorderList: null
}
},
+ onShow() {
+ this.getList()
+ },
created() {
this.getList()
},
@@ -92,6 +96,11 @@
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;
})
},
@@ -110,8 +119,49 @@
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>
diff --git a/pages/taskinfo/detail.vue b/pages/taskinfo/detail.vue
index e50213f..1d04ba1 100644
--- a/pages/taskinfo/detail.vue
+++ b/pages/taskinfo/detail.vue
@@ -53,8 +53,7 @@
</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>
--
Gitblit v1.9.3