提报流程代码完善提交

test
zhangdi 1 year ago
parent 6ac3b2e3ac
commit b3b524165a
  1. 8
      api/api.js
  2. 20
      api/maintenance.js
  3. 77
      common/betone_components/betone-list.vue
  4. 5
      common/betone_components/betone-new-input.vue
  5. 3
      main.js
  6. 2
      pages/home/index.vue
  7. 76
      pages/submission/components/subForm.vue
  8. 32
      pages/submission/recordsdetails.vue
  9. 44
      pages/submission/sendOrders.vue
  10. 2
      utils/request.js
  11. 4
      utils/tabbar.js

@ -208,8 +208,14 @@ const install = (Vue, vm) => {
isparams: false
})
//扫码获取设备id 通过id获取详情
let getDeviceDetail = (params) => http.get('/device/detail',params, {
authorizations: true,
isparams: false
})
// 将各个定义的接口名称,统一放进对象挂载到vm.$u.api(因为vm就是this,也即this.$u.api)下
vm.$u.api = { getTenantInfo, login, logout, registerUser, getworkbench, getLoginRecords, getEditRecords, subEditRecords, getChildList, getDeviceList, workOrderSave, getWorkOrderRecords, getBreakdownInfo, workOrderupdate, evaluateSign, getRepairPersons, getGoodsList, getDictionaryList, getUserList, workList, deviceList, upkeepStat, pieStat, getUserInfo, overview, sendOrders, cloneOrder, editData, repairReject, applySave,sendVerify,serviceman,servicemanReceive,servicemanSubmit,supervisorReject ,supervisorconfirm,customerConfirm,customerReject,servicemanRepairSubmit,evaluateRepairReject};
vm.$u.api = { getTenantInfo, login, logout, registerUser, getworkbench, getLoginRecords, getEditRecords, subEditRecords, getChildList, getDeviceList, workOrderSave, getWorkOrderRecords, getBreakdownInfo, workOrderupdate, evaluateSign, getRepairPersons, getGoodsList, getDictionaryList, getUserList, workList, deviceList, upkeepStat, pieStat, getUserInfo, overview, sendOrders, cloneOrder, editData, repairReject, applySave,sendVerify,serviceman,servicemanReceive,servicemanSubmit,supervisorReject ,supervisorconfirm,customerConfirm,customerReject,servicemanRepairSubmit,evaluateRepairReject,getDeviceDetail};
}
export default {

@ -0,0 +1,20 @@
const http = uni.$u.http
// 此处第二个参数vm,就是我们在页面使用的this,你可以通过vm获取vuex等操作,更多内容详见uView对拦截器的介绍部分:
// https://uviewui.com/js/http.html#%E4%BD%95%E8%B0%93%E8%AF%B7%E6%B1%82%E6%8B%A6%E6%88%AA%EF%BC%9F
const install = (Vue, vm) => {
// 获取巡检任务列表 lab-ops/maintenance/task-page
let getTaskPage = (params) => http.get('/device/detail',params, {
authorizations: true,
isparams: false
})
// 将各个定义的接口名称,统一放进对象挂载到vm.$u.api(因为vm就是this,也即this.$u.api)下
vm.$u.quest = { getTaskPage};
}
export default {
install
}

@ -59,7 +59,7 @@
<u-button v-if="item.status == 0" size="mini" :plain="true" style="margin-right: 32rpx"
@click.stop="sendOrders(item)" type="primary">接单</u-button>
<u-button v-if="item.status == 7" size="mini" :plain="true" style="margin-right: 32rpx"
@click.stop="sendOrders(item)" type="primary">确认付款</u-button>
@click.stop="openModel(item, 'paymentInfo')" type="primary">确认付款</u-button>
<u-button v-if="item.status == 0" size="mini" plain type="primary"
style="margin-right: 32rpx" @click="openModel(item, 'close')">关闭</u-button>
@ -88,7 +88,7 @@
<u-button v-if="item.status == 2" size="mini" :plain="true" style="margin-right: 32rpx"
type="primary" @click="orderConfirm(item)">提交</u-button>
<u-button v-if="item.status == 5" size="mini" :plain="true" style="margin-right: 32rpx"
type="primary" @click="openModel(item,'repair')">维修完成</u-button>
type="primary" @click="openModel(item, 'repair')">维修完成</u-button>
</block>
</view>
@ -98,7 +98,7 @@
</view>
<u-loadmore margin-top="10" margin-bottom="40" :status="loadingState" />
<!-- 关闭 弹框 -->
<betone-modal :title="'关闭原因'" :confirmText="'确认'" v-model="cloneVisible" @cancel="cloneVisible = false"
@ -122,6 +122,13 @@
</view>
</betone-modal>
<!-- 客服确认付款 -->
<betone-modal v-model="paymentShow" :title="'提示'" @confirm="paymentFn" @cancel="paymentShow = false">
<view class="modal-text">
请确认付款是否已经完成
</view>
</betone-modal>
<betone-loading ref="BetLoading" />
</view>
</template>
@ -142,7 +149,7 @@ export default {
return {
searchInfo: {
requirementCode: "",
type: '',//
statusSearch: '',//
reportUnit: '',//
},
tagColor: {
@ -175,7 +182,9 @@ export default {
turnShow: false,//
repaiRejectReason: '',//
repairShow:false,//
repairShow: false,//
paymentShow: false,//
};
},
computed: {
@ -257,7 +266,7 @@ export default {
// tab
changeTab(index) {
this.current = index;
this.searchInfo.status = this.tabList[index].key == '9999' ? '' : this.tabList[index].key
this.searchInfo.statusSearch = this.tabList[index].key == '9999' ? '' : this.tabList[index].key
this.isNomore = false
this.page.currentPage = 1;
this.getRecordsList()
@ -368,13 +377,13 @@ export default {
subOrder(row) {
let query_ = [row]
this.$u.api.workOrderSave(query_).then(res => {
this.BetLoading.hide();
this.BetLoading.hide();
if (res.code == 200) {
this.page.currentPage = 1;
this.getRecordsList()
}
}).catch(err => {
this.BetLoading.hide();
this.BetLoading.hide();
})
},
@ -418,9 +427,12 @@ export default {
if (type == 'turn') {
this.turnShow = true
}
if(type=='repair'){
if (type == 'repair') {
this.repairShow = true
}
if (type == 'paymentInfo') {
this.paymentShow = true
}
this.rowInfo = item
},
@ -433,30 +445,17 @@ export default {
id: this.rowInfo.id,
closeReason: this.closeReason,
}
this.BetLoading.show();
this.BetLoading.show();
this.$u.api.cloneOrder(query).then(res => {
this.cloneVisible = false
this.BetLoading.hide();
this.BetLoading.hide();
if (res.code == 200) {
uni.showToast({ title: "关闭成功", icon: "none" });
this.getRecordsList()
}
})
},
//
goPage(item, type) {
// if (type == 'evaluate') {
// let param = {
// id: item.id,
// }
// uni.navigateTo({
// url: `/pages/submission/evaluate${this.$u.queryParams(param)}`,
// });
// }
},
//
openWorkOrder(row) {
let param = {
@ -496,7 +495,7 @@ export default {
})
},
//
repairFn(){
repairFn() {
let query = {
id: this.rowInfo.id,
}
@ -509,14 +508,30 @@ export default {
})
},
//
openEvaluate(item){
openEvaluate(item) {
let param = {
id: item.id,
}
uni.navigateTo({
url: `/pages/submission/evaluate${this.$u.queryParams(param)}`,
});
id: item.id,
}
uni.navigateTo({
url: `/pages/submission/evaluate${this.$u.queryParams(param)}`,
});
},
//
paymentFn() {
let query = {
id: this.rowInfo.id,
}
this.BetLoading.show();
this.$u.api.cloneOrder(query).then(res => {
this.paymentShow = false
this.BetLoading.hide();
if (res.code == 200) {
uni.showToast({ title: "确认成功", icon: "none" });
this.getRecordsList()
}
})
}
},
};
</script>

@ -116,6 +116,10 @@ export default {
endIcon:{//icon
type: String,
default: "",
},
endScanIndex:{
type: Number,
default:null,
}
},
data() {
@ -193,6 +197,7 @@ export default {
console.log('扫码结果:' + res.result);
//
// this.handleScanResult(res.result);
this.$emit("scanSuccess", res.result,this.endScanIndex);
},
fail: (err) => {
console.error('扫码失败:' + err);

@ -23,4 +23,7 @@ Vue.use(request, app);
// http接口API集中管理引入部分
import httpApi from '@/api/api.js'
Vue.use(httpApi, app)
import maintenance from '@/api/api.js'
Vue.use(maintenance, app)
// require('@/utils/request.js')(app)

@ -3,7 +3,7 @@
<view class="">
<view class="banner-swiper" v-if="swiperList.length > 0">
<view class="logo-txt">科研医疗建筑运维平台</view>
<u-icon class="logo-scan" style="padding-right:12rpx" @click="scanCode" size="45" name="scan"></u-icon>
<!-- <u-icon class="logo-scan" style="padding-right:12rpx" @click="scanCode" size="45" name="scan"></u-icon> -->
<u-swiper height="444" :list="swiperList" mode="none"></u-swiper>
</view>
<view class="work-title">工作台</view>

@ -6,9 +6,8 @@
<u-form labelPosition="left" :rules="rules" :ref="`breakdownForm${index}`" :model="item">
<u-form-item label="" prop="businessName" :border-bottom="false">
<view @click="itemIndexFn(index)" style="width: 100%">
<betone-new-input :disabled="formDisabled" label="设备名称:" v-model="item.deviceName"
placeholder="请输入" endIcon="scan" />
placeholder="请输入" endIcon="scan" @scanSuccess="scanSuccess" :endScanIndex="index" />
</view>
</u-form-item>
<u-form-item label="" prop="businessName" :border-bottom="false">
@ -37,8 +36,7 @@
</u-form>
</view>
<u-button v-if="type == 'add'" plain style="margin-bottom: 64rpx"
@click="addBreakdownInfo">新增</u-button>
<u-button v-if="type == 'add'" plain style="margin-bottom: 64rpx" @click="addBreakdownInfo">新增</u-button>
</view>
<view class="sub-btn" v-if="type == 'add' || type == 'breakdownUpdate'">
<u-button type="primary" @click="submitBreakdown()">提交</u-button>
@ -89,13 +87,13 @@ export default {
},
onShow() {
this.$nextTick(() => {
this.BetLoading.show();
setTimeout(() => {
this.BetLoading.hide();
}, 1000);
// this.$nextTick(() => {
// this.BetLoading.show();
// setTimeout(() => {
// this.BetLoading.hide();
// }, 1000);
});
// });
},
mounted() {
if (this.type == 'breakdownView') {
@ -150,12 +148,12 @@ export default {
this.$refs[`breakdownForm${index}`][0].setRules(this.rules)
this.$refs[`breakdownForm${index}`][0].validate(valid => {
if (!valid) {
this.BetLoading.hide();
this.BetLoading.hide();
validator = false
return
} else {
//
this.submit()
this.submit()
}
})
@ -170,14 +168,14 @@ export default {
//
submit() {
this.$u.api.workOrderSave(this.breakdownInfo).then(res => {
this.BetLoading.hide();
this.BetLoading.hide();
if (res.code == 200) {
uni.navigateTo({
url: "/pages/submission/records",
});
}
}).catch(err => {
this.BetLoading.hide();
this.BetLoading.hide();
})
},
//
@ -187,14 +185,26 @@ export default {
id: this.pageId
}
this.$u.api.workOrderupdate(query_).then(res => {
this.BetLoading.hide();
this.BetLoading.hide();
if (res.code == 200) {
uni.redirectTo({
url: "/pages/submission/records",
});
}
}).catch(err => {
this.BetLoading.hide();
this.BetLoading.hide();
})
},
//
scanSuccess(e,index) {
// id
let id_ = e.toString()
this.$u.api.getDeviceDetail({ id: id_ }).then(res => {
console.log(6666666, res)
if (res.code == 200) {
this.breakdownInfo[index].deviceName = res.data.name
this.breakdownInfo[index].faultType = res.data.type
}
})
}
},
@ -208,23 +218,23 @@ export default {
// display: flex;
// flex-direction: column;
.container {
flex: 1;
border-radius: 16rpx;
background: #fff;
padding: 28rpx 32rpx 28rpx;
.container {
flex: 1;
border-radius: 16rpx;
background: #fff;
padding: 28rpx 32rpx 28rpx;
}
}
.sub-btn {
width: 100%;
margin-top: 32rpx;
margin-bottom: 32rpx;
}
.sub-btn {
width: 100%;
margin-top: 32rpx;
margin-bottom: 32rpx;
}
/deep/.u-form-item--left__content__label {
font-size: 30rpx;
color: #000000;
}
/deep/.u-form-item--left__content__label {
font-size: 30rpx;
color: #000000;
}
// }
</style>
// }</style>

@ -40,7 +40,7 @@
</view>
<!-- 维修详情 -->
<view class="repair_detail"
v-if="(dataTypes == 1 || dataTypes == 2) && (detailForm.status == 5||detailForm.status == 6 || detailForm.status == 7 || detailForm.status == 8 || detailForm.status == 9) || (dataTypes == 4 && !(detailForm.status == 0||detailForm.status == 1||detailForm.status == 2)) || (dataTypes == 3) && (detailForm.closeReason == '')">
v-if="(dataTypes == 1 || dataTypes == 2) && (detailForm.status == 5 || detailForm.status == 6 || detailForm.status == 7 || detailForm.status == 8 || detailForm.status == 9) || (dataTypes == 4 && !(detailForm.status == 0 || detailForm.status == 1 || detailForm.status == 2)) || (dataTypes == 3) && (detailForm.closeReason == '')">
<view class="repair_title">维修详情</view>
<view class="detail_item">
<text class="item_left_txt">维修人</text>
@ -84,6 +84,22 @@
</view>
</view>
</view>
<!-- 客服查看派单详情 -->
<view class="repair_detail" v-if="((detailForm.status != 0) && dataTypes == 2)||(dataTypes == 1&&!(detailForm.status == 0||detailForm.status == -1))||dataTypes == 4">
<view class="repair_title">处理情况</view>
<view class="detail_item">
<text class="item_left_txt">接单时间</text>
<text class="item_right_txt reason">{{ detailForm.dispatchTime }}</text>
</view>
<view class="detail_item" v-if="dataTypes != 1">
<text class="item_left_txt">计划完成时间</text>
<text class="item_right_txt reason">{{ detailForm.planCompleteTime }}</text>
</view>
<view class="detail_item">
<text class="item_left_txt">客服意见</text>
<text class="item_right_txt reason">{{ detailForm.customerOpinion }}</text>
</view>
</view>
<!-- 关闭详情 -->
<view class="repair_detail" v-if="detailForm.closeReason != ''">
<view class="repair_title">关闭详情</view>
@ -101,7 +117,7 @@
</view>
</view>
<!-- 主管审批 审批详情 -->
<view class="repair_detail" v-if="detailForm.approveResult >=0">
<view class="repair_detail" v-if="detailForm.approveResult >= 0">
<view class="repair_title">主管审批</view>
<view class="detail_item">
<text class="item_left_txt">审批结果</text>
@ -113,7 +129,7 @@
</view>
</view>
<!-- 客户审批 审批详情 -->
<view class="repair_detail" v-if="detailForm.approveResult >=0">
<view class="repair_detail" v-if="detailForm.approveResult >= 0">
<view class="repair_title">客户审批</view>
<view class="detail_item">
<text class="item_left_txt">审批结果</text>
@ -142,23 +158,23 @@
<text class="item_left_txt">提报时间</text>
<text class="item_right_txt">{{ detailForm.createTime }}</text>
</view>
<view class="detail_item" v-show="detailForm.status != 0">
<!-- <view class="detail_item" v-show="detailForm.status != 0">
<text class="item_left_txt">系统接单时间</text>
<text class="item_right_txt">{{ detailForm.dispatchTime }}</text>
</view>
<view class="detail_item" v-show="detailForm.status != 0">
<text class="item_left_txt">客服意见</text>
<text class="item_right_txt reason">{{ detailForm.customerOpinion }}</text>
</view>
</view> -->
</view>
<!-- -->
<view class="repair_detail" v-if="(detailForm.status != 1) && dataTypes == 4">
<!-- <view class="repair_detail" v-if="(detailForm.status != 1) && dataTypes == 4">
<view class="repair_title">处理情况</view>
<view class="detail_item">
<text class="item_left_txt">接单时间</text>
<text class="item_right_txt reason">2024/8/20 9:25:30</text>
<text class="item_right_txt reason">{{ detailForm.status }}</text>
</view>
</view>
</view> -->
</view>
</view>
</template>

@ -6,11 +6,10 @@
:label-width="200" class="repair_form">
<u-form-item label="需求单号:" prop="requirementCode" :border-bottom="false">
<betone-new-input label="" v-model="repairDetails.requirementCode" placeholder="请输入"
:disabled="disabled" />
:disabled="true" />
</u-form-item>
<u-form-item label="提报单位:" prop="reportUnit" :border-bottom="false">
<betone-new-input label="" v-model="repairDetails.reportUnit" placeholder="请输入"
:disabled="disabled" />
<betone-new-input label="" v-model="repairDetails.reportUnit" placeholder="请输入" :disabled="true" />
</u-form-item>
<u-form-item label="故障现象描述:" prop="faultDescribe" :border-bottom="false">
<betone-new-input label="" v-model="repairDetails.faultDescribe" placeholder="请输入"
@ -146,7 +145,7 @@
sendOrder.materialsData.length > 0 ? '修改' : '添加' }}</u-button>
</view>
</view>
<block v-if="dataTypes == 3 && detailForm.status == 3&&repairInfo.isMaterial == 1">
<block v-if="dataTypes == 3 && detailForm.status == 3 && repairInfo.isMaterial == 1">
<u-form-item label="总价:" prop="reportPeople" :border-bottom="false">
<view>{{ approveInfo.totalPrice }}</view>
</u-form-item>
@ -223,9 +222,9 @@
<!-- 选择维修人员 -->
<u-select v-model="sendOrdersShow" :list="sendOrdersList" @confirm="sendOrdersConfirm" :isShowsearch="true"
value-name="id" title="选择维修人员"></u-select>
<!-- 选择时间 -->
<u-calendar v-model="calendarShow" mode="date" @change="calendarChange" :disabled-dates="disabledDates"
:min-date="minDate" :max-date="maxDate"></u-calendar>
<!-- 选择 时间 -->
<u-calendar v-model="calendarShow" mode="date" @change="calendarChange" :min-date="minDate"
:max-date="maxDate"></u-calendar>
<!-- 维修人员物料选择 -->
<betone-dialog v-model="aterialShow" height="900rpx">
@ -290,9 +289,6 @@ export default {
data() {
return {
disabledDates: {
to: new Date() //
},
minDate: null,
maxDate: null,
userInfo: {},//
@ -509,7 +505,7 @@ export default {
}
this.$u.api.workOrderupdate(updayeQuery).then(res => {
this.BetLoading.hide();
this.BetLoading.hide();
if (res.code == 200) {
this.$u.api.serviceman(sendOrderQuery_).then(res => {
if (res.code == 200) {
@ -521,7 +517,7 @@ export default {
})
}
}).catch(err => {
this.BetLoading.hide();
this.BetLoading.hide();
})
@ -607,7 +603,7 @@ export default {
uni.showToast({ title: "申领数量不能为0", icon: "none" });
return false
}
this.BetLoading.show();
this.BetLoading.show();
if (this.sendOrder.isNeedMaterials == 1) {
let data = []
this.sendOrder.materialsData.map(item => {
@ -775,7 +771,7 @@ export default {
approveResult: this.approveInfo.approveResult,//1 0
approveTime: dateFormat("yyyy-MM-dd hh:mm:ss", new Date()),//
}
if (!this.approveInfo.discount&&this.repairInfo.isMaterial == 1) {
if (!this.approveInfo.discount && this.repairInfo.isMaterial == 1) {
uni.showToast({ title: "请填写折扣信息", icon: "none" });
return false
}
@ -865,39 +861,25 @@ export default {
})
}
},
//
//
initDate() {
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
if (month < 10) {
month = "0" + month;
}
if (day < 10) {
day = "0" + day;
}
let minyear = year - 1;
let minyear = year;
this.minDate = minyear + "-" + month + "-" + day;
//let maxyear = year + 1;
this.maxDate = year + 1 + "-" + month + "-" + day; //
//this.maxDate = year  + '-'+ month +'-' + day; //
},
}
}

@ -37,7 +37,7 @@ const install = (Vue, vm) => {
config.header['Authorization'] = `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`;
}
//
config.header['blade-requested-with'] ='BladeHttpRequest'
config.header['Blade-Requested-With'] ='BladeHttpRequest'
if(config.header.isparams){
config.params = config.data
}

@ -50,12 +50,12 @@ const manage = [{
const repair = [{
iconPath: "photo",
selectedIconPath: "photo-fill",
text: "接单记录",
text: "维修任务",
pagePath: "/pages/order/tasking",
}, {
iconPath: "setting",
selectedIconPath: "setting-fill",
text: "维保任务",
text: "巡检任务",
pagePath: "/pages/inspection/quest",
}, {
iconPath: "account",

Loading…
Cancel
Save