需求代码提交

test
zhangdi 12 months ago
parent e4a032231e
commit 2f7f206f16
  1. 22
      api/api.js
  2. 40
      config/status.js
  3. 11
      pages.json
  4. 6
      pages/inspection/quest.vue
  5. 260
      pages/inspection/questOrder.vue
  6. 1
      pages/my/records.vue
  7. 68
      pages/submission/log.vue
  8. 134
      pages/submission/records.vue
  9. 174
      pages/submission/sendOrders.vue

@ -379,8 +379,8 @@ const install = (Vue, vm) => {
authorizations: true,
isparams: false
})
// 更改消息状态
let getMesseageTotal = (params) => http.get('/messeage/total', params, {
// 更改消息状态
let getMesseageTotal = (params) => http.get('/messeage/total', params, {
authorizations: true,
isparams: false
})
@ -390,8 +390,24 @@ const install = (Vue, vm) => {
isparams: false
})
// 维修查看流程进度
let workOrderLog = (params) => http.get('/lab-ops/work-order-log/find-list-by-code', params, {
authorizations: true,
isparams: false
})
// 客户确认 驳回
let urgentRepairReject = (params) => http.post('/lab-ops/work-order/customer-emergency-repair-reject', params, {
authorizations: true,
isparams: false
})
// 客户确认 是
let urgentRepairConfirm = (params) => http.post('/lab-ops/work-order/customer-emergency-repair-confirm', 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, getDeviceDetail, getTaskPage, getTaskDetail, taskSupervisorconfirm, taskServicemanreceive, updateCoordinate, taskServicemanUpdateTime, getPlanDetail, getRepairPage, updateDetaile, taskServicemanSubmit, taskCustomerConfirm, taskCustomerRefuse, taskSolutionSave, taskSolutionSubmit, repairSolutionSupervisor, repairSolutionRefuse, repairSolutionCustomer, repairCustomerRefuse, repairServicemanSubmit,repairConfirmFinish,repairRefuseFinish ,confirmPayment,getPosition,getRepairDetail,updatePosition,resetPwd,getNoticeList,updateSign,getMesseageList,getMesseageAll,updateMesseageStatus,getMesseageTotal,closeService};
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, getTaskPage, getTaskDetail, taskSupervisorconfirm, taskServicemanreceive, updateCoordinate, taskServicemanUpdateTime, getPlanDetail, getRepairPage, updateDetaile, taskServicemanSubmit, taskCustomerConfirm, taskCustomerRefuse, taskSolutionSave, taskSolutionSubmit, repairSolutionSupervisor, repairSolutionRefuse, repairSolutionCustomer, repairCustomerRefuse, repairServicemanSubmit, repairConfirmFinish, repairRefuseFinish, confirmPayment, getPosition, getRepairDetail, updatePosition, resetPwd, getNoticeList, updateSign, getMesseageList, getMesseageAll, updateMesseageStatus, getMesseageTotal, closeService, workOrderLog,urgentRepairConfirm,urgentRepairReject };
}
export default {

@ -13,6 +13,10 @@ export const tabList = {
name: "待接单",
key: "101",
},
{
name: "待确认",
key: "405",
},
{
name: "待维修",
key: "201,401,402",
@ -28,16 +32,24 @@ export const tabList = {
},
{
name: "维修中",
key: "103",
key: "103,404",
},
{
name: "待提交",
key: "105",
},
{
name: "待评价",
key: "403,202",
key: "403,202,406",
},
{
name: "待付款",
key: "104",
},
{
name: "待确认",
key: "104",
},
{
name: "已完成",
key: "202,203,204",
@ -62,11 +74,11 @@ export const tabList = {
},
{
name: "维修中",
key: "103",
key: "103,404",
},
{
name: "维修完成",
key: "403,202",
key: "403,202,405,105,406",
},
{
name: "待付款",
@ -88,7 +100,7 @@ export const tabList = {
},
{
name: "维修中",
key: "103",
key: "103,404",
},
{
name: "已通过",
@ -100,7 +112,7 @@ export const tabList = {
},
{
name: "维修完成",
key: "403,202",
key: "403,202,405,105,406",
},
{
name: "待付款",
@ -119,27 +131,27 @@ export const tabList = {
},
{
name: "待确认",
key: "201",
key: "201,405",
},
{
name: "待提交",
key: "401",
key: "401,105",
},
{
name: "待审批",
key: "402,301",
},
{
name: "已驳回",
key: "102,300,400",
name: "维修中",
key: "103,404",
},
{
name: "维修中",
key: "103",
name: "已驳回",
key: "102,300,400",
},
{
name: "维修完成",
key: "403,104,202,203,204",
name: "完成",
key: "403,104,202,203,204,406",
},
]
}

@ -153,6 +153,15 @@
{
"root": "pages/submission",
"pages": [
{
"path": "log",
"style": {
"navigationBarTitleText": "流程日志",
"enablePullDownRefresh": false,
"navigationBarTextStyle": "black",
"navigationBarBackgroundColor": "#F8F8F8"
}
},
{
"path": "index",
"style": {
@ -174,7 +183,7 @@
{
"path": "records",
"style": {
"navigationStyle": "custom",
"navigationStyle": "custom",
"navigationBarTextStyle": "white"
}
},

@ -43,14 +43,14 @@
<!-- 巡检任务 客户 确认-->
<block v-if="subsectionCurrent == '0' && dataTypes == 1 && item.taskStatus == 3">
<u-button size="mini" plain style="margin-right:16rpx"
@click.stop="openWorkOrder(item, 'task')">确认</u-button>
@click.stop="openWorkOrder(item, 'task')" type="primary">确认</u-button>
</block>
<!--巡检任务 维修人员 接单 提交-->
<block v-if="subsectionCurrent == '0' && dataTypes == 4">
<u-button v-if="item.taskStatus == 1" size="mini" plain style="margin-right:16rpx"
@click="openWorkOrder(item, 'task')">接单</u-button>
@click="openWorkOrder(item, 'task')" type="primary">接单</u-button>
<u-button v-if="item.taskStatus == 2" size="mini" plain style="margin-right:16rpx"
@click="openWorkOrder(item, 'task')">巡检</u-button>
@click="openWorkOrder(item, 'task')" type="primary">巡检</u-button>
</block>
<!--巡检任务 维修主管 指派 -->
<block v-if="subsectionCurrent == '0' && dataTypes == 3">

@ -134,13 +134,35 @@
</view>
<view class="info_item"
v-if="(dataTypes == 4 && (detailForm.repairStatus == 1 || detailForm.repairStatus == 101)) || (dataTypes == 3 && (detailForm.repairStatus == 2 || detailForm.repairStatus == 102))">
<text class="item_left_txt">申领物料</text>
<text class="item_right_txt">
<u-radio-group v-model="s.isNeed" @change="materielChange" :disabled="!(detailForm.repairStatus == 1 && detailsType == 'repair')">
<u-radio name="1"></u-radio>
<u-radio name="0"></u-radio>
</u-radio-group>
</text>
</view>
<view class="info_item" v-if="s.isNeed == '1'">
<text class="item_left_txt">物料列表</text>
<text class="item_right_txt">
<u-button v-if="detailForm.repairStatus == 1 && detailsType == 'repair'" size="medium" :plain="true" style="margin-right: 32rpx;width:100%"
type="primary" @click="goodsSelect(index, vindex, sindex)">{{
s.detailGoodsList.length > 0 ? '修改' : '添加' }}</u-button>
<u-button v-else size="medium" :plain="true" style="margin-right: 32rpx;width:100%"
type="primary" @click="goodsSelect(index, vindex, sindex)">查看</u-button>
</text>
</view>
<!-- <view class="info_item"
v-if="(dataTypes == 4 && (detailForm.repairStatus == 1 || detailForm.repairStatus == 101)) || (dataTypes == 3 && (detailForm.repairStatus == 2 || detailForm.repairStatus == 102))">
<text class="item_left_txt">价格</text>
<text class="item_right_txt">
<u-input v-model="s.price" type="number" :border="true" :disabled="priceDisabled"
:class="priceDisabled ? 'sp-new-input-diabled' : ''" />
</text>
</view>
</view> -->
<view class="info_item" v-if="dataTypes == 1 && detailForm.repairStatus == 3">
<text class="item_left_txt">是否维修</text>
<text class="item_right_txt">
@ -156,7 +178,7 @@
</u-collapse>
<u-empty text="设备为空" mode="list" v-else></u-empty>
</view>
<view class="info">
<view class="info" v-if="!reservationDisabled">
<u-form labelPosition="left" ref="sendOrderForm" :model="detailForm" :label-width="120" class="repair_form">
<u-form-item label="签字:" prop="signUrl" :border-bottom="false" :required="true">
<u-input :border="true" v-model="signUrl" :placeholder="'请输入'"
@ -276,6 +298,44 @@
</betone-modal>
<betone-loading ref="BetLoading" />
<!-- 维修人员物料选择 -->
<betone-dialog v-model="aterialShow" height="900rpx">
<view class="search-box">
<betone-new-input v-model="goodsearchInfo.goodsName" placeholder="搜索物品名称" icon="search"
style="margin-bottom: 32rpx" @changevalue="searchGoodsData()" />
</view>
<scroll-view class="scroll-Y" @scrolltolower="goodsLower" scroll-y="true"
style="max-height: 900rpx; width: auto; background-color: gainsboro;">
<view class="material-box">
<view class="material-item" v-for="(item, index) in goodsTableData" :key="index">
<view class="title-wrapper">
<u-checkbox v-model="item.checked" shape="circle"
:disabled="!(detailForm.repairStatus == 1 && detailsType == 'repair')"></u-checkbox>
</view>
<view class="item-right">
<view class="material-title">
<text class="material-title-name">{{ item.name }}</text>
<text class="material-title-code">{{ item.inventoryId }}</text>
<text>库存数{{ item.num }}</text>
</view>
<view class="material-text">品牌{{ item.brand }}</view>
<view class="material-text">型号{{ item.xh }}</view>
<view class="material-num">
<text>参数{{ item.rule }}</text><u-number-box v-model="item.goodsNum"
:step="1"></u-number-box>
</view>
</view>
</view>
</view>
</scroll-view>
<view class="material-btn" >
<u-button size="medium" @click="aterialShow = false">取消</u-button>
<u-button v-if="detailForm.repairStatus == 1 && detailsType == 'repair'" size="medium" type="primary" @click="goodsSubmit()">确认</u-button>
</view>
</betone-dialog>
</view>
</template>
<script>
@ -355,6 +415,18 @@ export default {
deviceNameSearch: '',//
deviceList: [],//
taskCompleteShow: false,
aterialShow: false,//
goodsearchInfo: {
goodsName: '',
},
goodsTableData: [],
goodspage: {
current: 1,
size: 10,
},
isGoodsNomore: false,
goodsIndex: [],//
}
},
onLoad(options) {
@ -365,6 +437,9 @@ export default {
this.initDate()
this.userInfo = uni.getStorageSync("userinfo");
},
onShow() {
this.getGoodsList()
},
methods: {
getDetails() {
let query = {
@ -404,6 +479,10 @@ export default {
data[i].price = data[i].price < 0 ? null : data[i].price
if (data[i].details.length > 0) {
this.updateData(data[i].details)
} else {
data[0].isNeed = data[0].detailGoodsList.length > 0 ? '1' : '0'
console.log(5555, data)
}
}
}
@ -584,21 +663,22 @@ export default {
}
},
//
//
solutionSubmit() {
let newArr = this.handleData(this.detailForm.details)
let price = newArr.every((item) => {
return item.price > 0
})
if (!price) {
uni.showToast({ title: "请填写正确的维修价格", icon: "none" });
return false
}
// if (!price) {
// uni.showToast({ title: "", icon: "none" });
// return false
// }
// let queryData = []
let query_ = {
task: { id: this.detailForm.id },
detailList: newArr,
}
//
this.$u.api.taskSolutionSave(query_).then(res => {
if (res.code == 200) {
let query = {
@ -820,7 +900,98 @@ export default {
...data,
details: recursiveFilter(data)
};
}
},
//
materielChange() {
this.itemCollapseChange()
},
//
searchGoodsData() {
// selectGoodsList
},
//
goodsLower() {
if (this.isGoodsNomore) {
return;
}
this.goodspage.current++;
this.getGoodsList();
},
//
getGoodsList() {
let query_ = {
...this.goodspage
}
this.$u.api.getGoodsList(query_).then(res => {
if (res.code == 200) {
var totalPage = res.data.total;
var newOrders = res.data.records;
newOrders.forEach(element => {
// element.rule = element.rule == '' ? 0 : Number(element.rule)
this.$set(element, 'goodsNum', 0)
this.$set(element, 'checked', false)
});
this.goodsTableData = [...this.goodsTableData, ...(res.data.records || [])];
if (newOrders.length == 0) {
// this.loadingState = "nomore";
this.isGoodsNomore = true;
}
if (totalPage == this.goodsTableData.length) {
// this.loadingState = "nomore";
this.isGoodsNomore = true;
}
}
})
},
//
goodsSubmit() {
let selected = this.goodsTableData.filter(i => {
return i.checked
})
if (selected.find(item => item.goodsNum == 0)) {
uni.showToast({ title: "申领数量不能为0", icon: "none" });
return false
}
let data = []
selected.forEach(item => {
item.materialPrice = item.goodsNum * item.purchasePrice
data.push({
warehouseId: item.inventoryId,//id
goodsName: item.name, //
unit: item.unit,//
xh: item.xh,//
rule: item.rule,//
price: item.materialPrice,
number: item.goodsNum,//
productId: item.id,//id
})
})
this.detailForm.details[this.goodsIndex[0]].details[this.goodsIndex[1]].details[this.goodsIndex[2]].detailGoodsList = JSON.parse(JSON.stringify(data))
this.aterialShow = false
},
goodsSelect(index, vindex, sindex) {
this.goodsIndex = [index, vindex, sindex]
this.aterialShow = true
//
//
// this.goodsTableData
this.goodsTableData.forEach(i => {
i.checked = false
})
if (this.detailForm.details[index].details[vindex].details[sindex].detailGoodsList.length > 0) {
this.goodsTableData.forEach(i => {
this.detailForm.details[index].details[vindex].details[sindex].detailGoodsList.forEach(v => {
if (i.id == v.productId) {
i.checked = true
}
})
})
}
},
},
}
@ -831,6 +1002,7 @@ export default {
padding: 0;
padding-top: 26rpx;
padding-bottom: 160rpx;
.info {
margin: 0 24rpx 20rpx;
border-radius: 20rpx;
@ -896,6 +1068,7 @@ export default {
position: fixed;
bottom: 0;
background: #fff;
/deep/.u-btn {
width: 48%;
margin-top: 32rpx;
@ -1002,5 +1175,76 @@ export default {
/deep/.arrow {
top: 12rpx;
}
.material-box {
flex: 1;
background: #fff;
margin: 0;
overflow: auto;
// padding-bottom: 32rpx;
.material-item {
height: 300rpx;
border-radius: 20rpx;
background-color: rgba(249, 249, 249, 1);
margin: 32rpx 0 0;
padding: 32rpx;
display: flex;
flex-direction: row;
.title-wrapper {}
.item-right {
flex: 1;
.material-title {
display: flex;
flex-direction: row;
color: rgba(108, 108, 108, 1);
font-size: 28rpx;
line-height: 60rpx;
.material-title-name {
color: rgba(51, 51, 51, 1);
font-size: 36rpx;
font-weight: 550;
padding-right: 16rpx;
}
.material-title-code {
flex: 1;
}
}
.material-text {
line-height: 60rpx;
color: rgba(108, 108, 108, 1);
font-size: 28rpx;
}
.material-num {
display: flex;
flex-direction: row;
justify-content: space-between;
}
}
}
}
.material-btn {
width: 100%;
display: flex;
justify-content: space-between;
/* 水平均匀分布 */
margin-top: 32rpx;
padding: 0 32rpx;
/deep/.u-btn {
width: 48%;
}
}
}
</style>

@ -6,7 +6,6 @@
</view>
<view class="noData" v-if="recordData.length <= 0">
<!-- <betone-no-data :nullText="'暂无数据'" /> -->
<u-empty :text="'暂无数据'" mode="list"></u-empty>
</view>
<view class="records-box" v-else>

@ -0,0 +1,68 @@
<template>
<view class="page-css">
<view class="noData" v-if="logData.length <= 0">
<u-empty :text="'暂无数据'" mode="list"></u-empty>
</view>
<view class="log-box" v-else>
<u-time-line>
<u-time-line-item v-for="(itemline, inx) in logData" :key="inx">
<template v-slot:content>
<view class="u-order-desc">
<i>{{ itemline.updateTime }}</i>
<!-- <i>{{ itemline.content }}</i> -->
</view>
<view class="u-order-desc">
<!-- <i>{{ itemline.updateTime }}</i> -->
<i>{{ itemline.content }}</i>
</view>
</template>
</u-time-line-item>
</u-time-line>
</view>
</view>
</template>
<script>
export default {
data() {
return {
logData: [],
codeId: ''
}
},
onLoad(option) {
this.codeId = option.requirementCode
},
onShow() {
this.workOrderLog()
},
methods: {
workOrderLog() {
let query = {
code: this.codeId
}
this.$u.api.workOrderLog(query).then(res => {
if (res.code == 200) {
this.logData = res.data
}
})
}
}
}
</script>
<style lang="scss" scoped>
.page-css {
display: flex;
flex-direction: column;
height: 100%;
.log-box {
flex: 1;
background: #fff;
border-radius: 8rpx;
padding: 16rpx 32rpx 0;
overflow: auto;
}
}
</style>

@ -37,29 +37,32 @@
<image src="@/static/images/pic-default.png" alt="" />
</view>
<view class="con-right">
<text class="con-title">提报类型{{ item.faultType }}</text>
<text class="con-title">维修类型{{ item.repairTypeName }}</text>
<view class="con-content">
<text>{{ item.faultDescribe }}</text>
<text>故障描述{{ item.faultDescribe }}</text>
</view>
<view class="con-btn">
<!-- 客户 -->
<u-button size="mini" plain style="margin-right:16rpx" @click.stop="openWorkOrder(item)">查看</u-button>
<u-button size="mini" plain style="margin-right:16rpx" @click="openModel(item, 'details')">下载</u-button>
<!-- <u-button size="mini" plain style="margin-right:16rpx" @click="openModel(item, 'details')">下载</u-button> -->
<u-button size="mini" plain style="margin-right:16rpx" @click="openLog(item)">日志</u-button>
<block v-if="dataTypes == 1">
<!-- 工单详情 查看维修详情 -->
<u-button v-if="item.status == 100" size="mini" :plain="true" style="margin-right:16rpx"
:hair-line="true" type="primary" @click="subOrder(item)">提报</u-button>
<u-button size="mini" v-if="item.status == 100" :plain="true" style="margin-right:16rpx"
:hair-line="true" type="primary" @click="orderUpdate(item)">修改</u-button>
<u-button v-if="item.status == 301" size="mini" :plain="true" style="margin-right:16rpx"
:hair-line="true" type="primary" @click="orderConfirm(item)">确认方案</u-button>
<!-- 确认维修效果 12.24 -->
<u-button v-if="item.status == 405" size="mini" :plain="true" style="margin-right:16rpx"
:hair-line="true" type="primary" @click="openModel(item, 'repairConfirm')">确认</u-button>
<u-button v-if="item.status == 103" size="mini" :plain="true" style="margin-right:16rpx"
:hair-line="true" type="primary" @click="goPageLocation(item)">查看位置</u-button>
<u-button v-if="item.status == 403||item.status == 202" size="mini" :plain="true" style="margin-right:16rpx"
:hair-line="true" type="primary" @click="openEvaluate(item)">评价</u-button>
<u-button v-if="item.status == 403 || item.status == 202|| item.status == 406" size="mini" :plain="true"
style="margin-right:16rpx" :hair-line="true" type="primary"
@click="openEvaluate(item)">评价</u-button>
</block>
<!-- 客服 -->
<block v-if="dataTypes == 2">
@ -86,13 +89,14 @@
<!-- 维修人员 -->
<block v-if="dataTypes == 4">
<!-- 查看维修详情 -->
<u-button v-if="item.status == 201" size="mini" :plain="true" style="margin-right:16rpx" type="primary"
@click="orderConfirm(item)">确认</u-button>
<u-button v-if="item.status == 201" size="mini" :plain="true" style="margin-right:16rpx" type="primary"
@click="openModel(item, 'turn')">驳回</u-button>
<u-button v-if="item.status == 401 || item.status == 300" size="mini" :plain="true"
style="margin-right:16rpx" type="primary" @click="orderConfirm(item)">提交</u-button>
<u-button v-if="item.status == 103||item.status == 401" size="mini" :plain="true" style="margin-right:16rpx" type="primary"
<u-button v-if="item.status == 201" size="mini" :plain="true" style="margin-right:16rpx"
type="primary" @click="orderConfirm(item)">确认</u-button>
<u-button v-if="item.status == 201" size="mini" :plain="true" style="margin-right:16rpx"
type="primary" @click="openModel(item, 'turn')">驳回</u-button>
<u-button v-if="item.status == 401 || item.status == 300 || item.status == 105" size="mini"
:plain="true" style="margin-right:16rpx" type="primary" @click="orderConfirm(item)">提交</u-button>
<u-button v-if="item.status == 103 || item.status == 401 || item.status == 404" size="mini"
:plain="true" style="margin-right:16rpx" type="primary"
@click="openModel(item, 'repair')">维修完成</u-button>
</block>
@ -121,7 +125,7 @@
<!-- 维修人员 确认 维修完成 -->
<betone-modal v-model="repairShow" :title="'提示'" @confirm="repairFn" @cancel="repairShow = false">
<view class="modal-text" v-if="rowInfo.status == 103">
<view class="modal-text" v-if="rowInfo.status == 103 || rowInfo.status == 404">
请确认维修是否已经完成
</view>
<view class="modal-text" v-if="rowInfo.status == 401">
@ -149,6 +153,11 @@
@cancel="detailsShow = false">
<recordsDetails :data="rowInfo" :detailId="rowInfo.id" id="capture"></recordsDetails>
</betone-modal>
<!-- 客户确认 -->
<betone-modal v-model="repairConfirmShow" :title="'确认维修效果'" @confirm="repairConfirmFn" @cancel="repairCancelFn">
请确认当前工单是否维修完成
</betone-modal>
<sp-html2pdf-render domId="capture" ref="renderRef" @renderOver="renderOver" pdfFileName="这是一个pdf文件"
@beforeSavePDF="beforeSavePDF" @successSavePDF="successSavePDF"></sp-html2pdf-render>
</view>
@ -195,8 +204,8 @@ export default {
repairShow: false,//
repairInfo:{
closeReason:''
repairInfo: {
closeReason: ''
},
paymentShow: false,//
@ -207,7 +216,9 @@ export default {
tabList: [],//tab
messageCount: 0,//
requirementCode:'',//
requirementCode: '',//
repairTypeList: [],//
repairConfirmShow: false,//
};
},
computed: {
@ -238,21 +249,23 @@ export default {
onLoad(options) {
this.type = options.type ? options.type : ''
this.requirementCode = options.requirementCode ? options.requirementCode : ''
},
onShow() {
this.$nextTick(() => {
this.getMesseageTotal()
if (this.type == '') {
this.$refs.tabbarRef.getPermission();
}
if(this.requirementCode != ''){
if (this.requirementCode != '') {
this.current = 0
this.searchInfo.requirementCode = this.requirementCode
}else{
} else {
this.current = 1
this.changeTab(1)
}
this.getType()
this.getRecordsList()
});
},
@ -275,8 +288,16 @@ export default {
if (this.page.currentPage == 1) {
this.orderData = [];
}
newOrders.forEach(item => {
if (item.repairType < 0) {
item.repairType = '-'
} else {
let type_ = this.repairTypeList.filter(v => v.dictKey == item.repairType + '')
item.repairTypeName = type_.length <= 0 ? '' : type_[0].dictValue
}
})
this.orderData = [...this.orderData, ...(res.data.records || [])];
this.orderData = [...this.orderData, ...(newOrders || [])];
if (newOrders.length == 0) {
this.loadingState = "nomore";
this.isNomore = true;
@ -404,6 +425,9 @@ export default {
if (type == 'details') {
this.detailsShow = true
}
if (type == 'repairConfirm') {
this.repairConfirmShow = true
}
this.rowInfo = item
},
@ -470,9 +494,10 @@ export default {
repairFn() {
let query = {
id: this.rowInfo.id,
repairType: this.rowInfo.repairType,
}
if(this.rowInfo.status==401){
if(this.repairInfo.closeReason==''){
if (this.rowInfo.status == 401) {
if (this.repairInfo.closeReason == '') {
uni.showToast({ title: "请输入关闭原因", icon: "none" });
return false
}
@ -491,8 +516,8 @@ export default {
openEvaluate(item) {
let param = {
id: item.id,
status:item.status,
isRepair:1
status: item.status,
isRepair: 1
}
uni.navigateTo({
url: `/pages/submission/evaluate${this.$u.queryParams(param)}`,
@ -563,13 +588,64 @@ export default {
})
},
goPage(item) {
uni.navigateTo({
url: item,
});
},
//
openLog(item) {
let param = {
id: item.id,
status: item.status,
isRepair: 1,
requirementCode: item.requirementCode
}
uni.navigateTo({
url: `/pages/submission/log${this.$u.queryParams(param)}`,
});
},
//
getType() {
let _params = {
current: 1,
size: 100,
parentId: "1869925082102702082",
};
this.$u.api
.getChildList(_params)
.then((res) => {
this.repairTypeList = res.data
})
.catch((err) => { });
},
//
repairCancelFn() {
let query={
id: this.rowInfo.id,
repairType:this.rowInfo.repairType
}
this.$u.api.urgentRepairReject(query).then(res => {
if(res.code==200){
uni.showToast({ title: "操作成功", icon: "none" });
this.repairConfirmShow = false
this.getRecordsList()
}
})
},
//
repairConfirmFn() {
let query={
id: this.rowInfo.id,
repairType:this.rowInfo.repairType
}
this.$u.api.urgentRepairConfirm(query).then(res => {
if(res.code==200){
uni.showToast({ title: "操作成功", icon: "none" });
this.repairConfirmShow = false
this.getRecordsList()
}
})
}
},
};
</script>

@ -2,7 +2,7 @@
<view class="page-css">
<view class="repair_detail">
<view class="repair_title">提报信息</view>
<!-- <iframe src="http://111.34.85.148:9008/jeewms/loginController.do?login" frameborder="0" ref="refed" width="100%" height="500px"></iframe> -->
<!-- <iframe src="http://111.34.85.148:9008/jeewms/loginController.do?login" frameborder="0" ref="refed" width="100%" height="500px"></iframe> -->
<u-form labelPosition="left" :rules="rules" ref="repairDetailsForm" :model="repairDetails"
:label-width="200" class="repair_form">
@ -40,6 +40,13 @@
<view class="repair_title">派单信息</view>
<u-form labelPosition="left" :rules="sendRules" ref="sendOrderForm" :model="sendOrder" :label-width="200"
class="repair_form">
<!-- 维修类型 -->
<u-form-item label="维修类型:" prop="name" :border-bottom="false" :required="true">
<u-input v-if="dataTypes == 2" v-model="repairTypeData.name" type="select" :border="true"
@click="repairTypeShow = true" :disabled="disabled" />
<u-input v-if="dataTypes == 4" v-model="repairTypeData.name" :border="true" placeholder=""
:disabled="disabled" :class="disabled ? 'sp-new-input-diabled' : ''" />
</u-form-item>
<u-form-item label="维修人员:" prop="name" :border-bottom="false" :required="true">
<u-input v-if="dataTypes == 2" v-model="sendOrder.name" type="select" :border="true"
@click="sendOrdersShow = true" :disabled="disabled" />
@ -83,25 +90,27 @@
</u-form-item>
</u-form>
</view>
<view class="repair_detail" v-if="detailForm.status == 400 || detailForm.status == 300 || detailForm.status == 102">
<view class="repair_detail"
v-if="detailForm.status == 400 || detailForm.status == 300 || detailForm.status == 102">
<view class="repair_title" v-if="detailForm.status == 400">维修人员驳回</view>
<view class="repair_title" v-if="detailForm.status == 300">主管驳回</view>
<view class="repair_title" v-if="detailForm.status == 102">客户驳回</view>
<u-form labelPosition="left" ref="sendOrderForm" :model="detailForm" :label-width="200" class="repair_form">
<u-form-item v-if="detailForm.status == 400" label="驳回原因:" prop="customerOpinion" :border-bottom="false">
<view>{{ detailForm.repaiRejectReason }}</view>
<u-form-item v-if="detailForm.status == 400" label="驳回原因:" prop="customerOpinion"
:border-bottom="false">
<view>{{ detailForm.repaiRejectReason }}</view>
</u-form-item>
<u-form-item v-else label="驳回原因:" prop="customerOpinion" :border-bottom="false">
<view>{{ detailForm.approveRemark }}</view>
<view>{{ detailForm.approveRemark }}</view>
</u-form-item>
<!-- repaiRejectReason -->
</u-form>
</view>
<!-- 维修详情 待提交维修方案 展示 -->
<view class="repair_detail"
v-if="(dataTypes == 4 && (detailForm.status == 401||detailForm.status == 300)) || (dataTypes == 3 && (detailForm.status == 402||detailForm.status == 102)) || (dataTypes == 1 && detailForm.status == 301)">
v-if="(dataTypes == 4 && (detailForm.status == 401 || detailForm.status == 300 || detailForm.status == 105)) || (dataTypes == 3 && (detailForm.status == 402 || detailForm.status == 102)) || (dataTypes == 1 && detailForm.status == 301)">
<view class="repair_title">维修详情</view>
<u-form labelPosition="left" :rules="repairInfoRules" ref="repairInfoForm" :model="repairInfo"
:label-width="140" class="repair_form">
@ -111,7 +120,9 @@
class="sp-new-input-diabled" />
</u-form-item>
<u-form-item label="设备名称:" prop="deviceName" :border-bottom="false" :required="true">
<u-input v-model="deviceData.name" :border="true" placeholder="" :disabled="optionDisabled" :class="optionDisabled ? 'sp-new-input-diabled' : ''" type="select" @click="deviceShow = true" />
<u-input v-model="deviceData.name" :border="true" placeholder="" :disabled="optionDisabled"
:class="optionDisabled ? 'sp-new-input-diabled' : ''" type="select"
@click="deviceShow = true" />
</u-form-item>
<u-form-item label="故障原因:" prop="faultReason" :border-bottom="false" :required="true">
<u-input v-model="repairInfo.faultReason" :border="true" placeholder="请输入" type="textarea"
@ -139,7 +150,7 @@
<view class="material-text">型号{{ item.xh }}</view>
<view class="material-text">数量{{ item.goodsNum }}</view>
<view class="material-text">单位{{ item.unit }}</view>
<view class="material-text">价格{{ item.materialPrice}}</view>
<view class="material-text">价格{{ item.materialPrice }}</view>
</view>
</view>
<u-button v-if="!optionDisabled" size="medium" :plain="true"
@ -148,15 +159,16 @@
</view>
</view>
<block
v-if="(dataTypes == 3 && (detailForm.status == 402||detailForm.status == 102)) || (dataTypes == 1 && detailForm.status == 301) && repairInfo.isMaterial == 1">
v-if="(dataTypes == 3 && (detailForm.status == 402 || detailForm.status == 102)) || (dataTypes == 1 && detailForm.status == 301) && repairInfo.isMaterial == 1">
<u-form-item label="总价:" prop="reportPeople" :border-bottom="false">
<view>{{ approveInfo.totalPrice }}</view>
</u-form-item>
<u-form-item label="折扣:" prop="reportPeople" :border-bottom="false">
<!-- <betone-new-input label="" v-model="approveInfo.discount" placeholder="" type="number"
@changevalue="changDiscount" /> -->
<u-input v-model="approveInfo.discount" :border="true" placeholder="" :disabled="optionPiceDisabled"
:class="optionPiceDisabled ? 'sp-new-input-diabled' : ''" @input="changDiscount" type="number"/>
<u-input v-model="approveInfo.discount" :border="true" placeholder=""
:disabled="optionPiceDisabled" :class="optionPiceDisabled ? 'sp-new-input-diabled' : ''"
@input="changDiscount" type="number" />
</u-form-item>
<u-form-item label="折扣后的金额:" prop="reportPeople" :border-bottom="false" :label-width="240">
<view>{{ approveInfo.discountPrice }}</view>
@ -166,7 +178,7 @@
</view>
<!-- 维修负责人 审批 -->
<view class="repair_detail" v-if="dataTypes == 3 && (detailForm.status == 402||detailForm.status == 102)">
<view class="repair_detail" v-if="dataTypes == 3 && (detailForm.status == 402 || detailForm.status == 102)">
<view class="repair_title">主管审批</view>
<u-form labelPosition="left" ref="repairInfoForm" :model="approveInfo" :label-width="140"
class="repair_form">
@ -213,17 +225,20 @@
<u-button size="medium" type="primary" @click="sendOrderSubmit()">确定派单</u-button>
</view>
<!-- 维修人员 提交维修方案 -->
<view class="repair-btn" style="margin-right: 32rpx;width:100%" v-if="dataTypes == 4 && (detailForm.status == 401||detailForm.status == 300)">
<view class="repair-btn" style="margin-right: 32rpx;width:100%"
v-if="dataTypes == 4 && (detailForm.status == 401 || detailForm.status == 300 || detailForm.status == 105)">
<u-button size="medium" @click="endOrderCancel()">取消</u-button>
<u-button size="medium" type="primary" @click="servicemanSubmit()">提交</u-button>
</view>
<!-- 维修负责人 审批 -->
<view class="repair-btn" style="margin-right: 32rpx;width:100%" v-if="dataTypes == 3 && (detailForm.status == 102||detailForm.status == 402)">
<view class="repair-btn" style="margin-right: 32rpx;width:100%"
v-if="dataTypes == 3 && (detailForm.status == 102 || detailForm.status == 402)">
<u-button size="medium" @click="endOrderCancel()">取消</u-button>
<u-button size="medium" type="primary" @click="approveSubmit()">提交</u-button>
</view>
<!-- 客户确认维修方案 -->
<view class="repair-btn" style="margin-right: 32rpx;width:100%" v-if="dataTypes == 1 && detailForm.status == 301">
<view class="repair-btn" style="margin-right: 32rpx;width:100%"
v-if="dataTypes == 1 && detailForm.status == 301">
<u-button size="medium" @click="endOrderCancel()">取消</u-button>
<u-button size="medium" type="primary" @click="customerSubmit()">提交</u-button>
</view>
@ -284,9 +299,12 @@
</view>
</betone-modal>
<!-- 选择设备 -->
<u-select v-model="deviceShow" :list="deviceList" @confirm="deviceConfirm" :isShowsearch="true"
value-name="id" title="选择设备"></u-select>
<u-select v-model="deviceShow" :list="deviceList" @confirm="deviceConfirm" :isShowsearch="true" value-name="id"
title="选择设备"></u-select>
<betone-loading ref="BetLoading" />
<!-- 选择维修类型 -->
<u-select v-model="repairTypeShow" :list="repairTypeList" @confirm="repairTypeConfirm" :isShowsearch="true"
value-name="dictKey" title="选择维修类型"></u-select>
</view>
</template>
<script>
@ -301,10 +319,10 @@ export default {
return this.$store.state.dataType == 2 ? false : true
},
optionDisabled() {
return (this.$store.state.dataType == 3 && (this.detailForm.status == 402||this.detailForm.status == 102)) || (this.$store.state.dataType == 1 && this.detailForm.status == 301) ? true : false
return (this.$store.state.dataType == 3 && (this.detailForm.status == 402 || this.detailForm.status == 102)) || (this.$store.state.dataType == 1 && this.detailForm.status == 301) ? true : false
},
optionPiceDisabled(){
return (this.$store.state.dataType == 3 && (this.detailForm.status == 402||this.detailForm.status == 102)) ? false : true
optionPiceDisabled() {
return (this.$store.state.dataType == 3 && (this.detailForm.status == 402 || this.detailForm.status == 102)) ? false : true
}
},
@ -426,29 +444,37 @@ export default {
submitOrderShow: false,//
deviceShow:false,//
deviceData:{
deviceShow: false,//
deviceData: {
repairPerson: '',// id
name: '',//
},
deviceList:[],//
deviceList: [],//
repairTypeShow: false,//
repairTypeList: [],//
repairTypeData: {
name: '',
key: '',
}
}
},
onReady() {
},
onShow() {
this.getType()//
this.getRepairPersons()//
this.orderId = this.$route.query.id
this.getDtails()
this.userInfo = uni.getStorageSync("userinfo");
//
if (this.dataTypes == 4) {
this.getGoodsList()
}
this.initDate()
},
methods: {
getDtails() {
@ -475,31 +501,36 @@ export default {
let data = 0
if (this.detailForm.materials.length > 0) {
this.detailForm.materials.forEach(item => {
item.materialPrice=item.materialPrice
item.materialPrice = item.materialPrice
data = data + item.materialPrice
item.goodsNum = item.materialCount
item.name = item.materialName
})
}
this.approveInfo.discount =
}
this.approveInfo.discount =
//
this.approveInfo.totalPrice = data
this.approveInfo.discount = this.detailForm.discount<0?null:this.detailForm.discount
this.approveInfo.discountPrice = this.detailForm.discountPrice<0?null:this.detailForm.discountPrice
//
this.approveInfo.totalPrice = data
this.approveInfo.discount = this.detailForm.discount < 0 ? null : this.detailForm.discount
this.approveInfo.discountPrice = this.detailForm.discountPrice < 0 ? null : this.detailForm.discountPrice
//
if(this.detailForm.status != 201){
if (this.detailForm.status != 201) {
this.deviceData.repairPerson = this.detailForm.deviceId
this.deviceData.name = this.detailForm.deviceName
}
if(this.detailForm.status == 401){
if (this.detailForm.status == 401 || this.detailForm.status == 105) {
this.deviceData.repairPerson = ''
this.deviceData.name = ''
}
//
let type_ = this.repairTypeList.filter(v => v.dictKey == this.detailForm.repairType)
this.repairTypeData.name = type_.length <= 0 ? '' : type_[0].dictValue
this.repairTypeData.key = type_.length <= 0 ? '' : type_[0].dictKey
this.getDeviceList()
}
})
@ -543,13 +574,16 @@ export default {
deviceName: this.repairDetails.deviceName,
dispatchTime: dateFormat("yyyy-MM-dd hh:mm:ss", new Date()),
remark: this.repairDetails.remark,
repairType: Number(this.repairTypeData.key)
}
let sendOrderQuery_ = {
id: this.orderId,
repairPerson: this.sendOrder.repairPerson,
planCompleteTime: this.sendOrder.planCompleteTime ? this.sendOrder.planCompleteTime + ' 00:00:00' : '',
remark: this.repairDetails.remark,
customerOpinion: this.sendOrder.customerOpinion
customerOpinion: this.sendOrder.customerOpinion,
repairType: Number(this.repairTypeData.key)
}
this.$u.api.workOrderupdate(updayeQuery).then(res => {
@ -622,8 +656,8 @@ export default {
uni.showToast({ title: "申领数量不能为0", icon: "none" });
return false
}
selected.forEach(item=>{
item.materialPrice = item.goodsNum*item.purchasePrice
selected.forEach(item => {
item.materialPrice = item.goodsNum * item.purchasePrice
})
this.sendOrder.materialsData = JSON.parse(JSON.stringify(selected))
this.aterialShow = false
@ -693,7 +727,7 @@ export default {
uni.showToast({ title: "申领数量不能为0", icon: "none" });
return false
}
if(this.deviceData.name==''){
if (this.deviceData.name == '') {
uni.showToast({ title: "请选择设备", icon: "none" });
return false
}
@ -709,6 +743,7 @@ export default {
materialPrice: item.materialPrice,
materialCount: item.goodsNum,//
orderId: this.detailForm.id,
})
})
}
@ -718,16 +753,27 @@ export default {
processMethod: this.repairInfo.dealMethods,
isNeedMaterial: this.repairInfo.isMaterial,
materials: data,
deviceId: this.deviceData.repairPerson,
deviceName: this.deviceData.name,
repairType: this.detailForm.repairType,
}
//
if (this.detailForm.repairType == 1) {
query.discountPrice = data.reduce((sum, item) => sum + item.materialPrice, 0).toFixed(2)
query.totalPrice = data.reduce((sum, item) => sum + item.materialPrice, 0).toFixed(2)
query.discount = 0
}
this.$u.api.workOrderupdate(query).then(res => {
if (res.code == 200) {
let query1 = {
id: this.detailForm.id,
deviceId:this.deviceData.repairPerson,
deviceName:this.deviceData.name
deviceId: this.deviceData.repairPerson,
deviceName: this.deviceData.name
}
this.$u.api.servicemanSubmit(query1).then(res => {
if (res.code == 200) {
uni.showToast({ title: "提交成功", icon: "none" });
@ -881,7 +927,8 @@ export default {
//
submitOrderShowFn() {
let query_ = {
id: this.detailForm.id
id: this.detailForm.id,
repairType: this.detailForm.repairType,
}
this.$u.api.servicemanReceive(query_).then(res => {
if (res.code == 200) {
@ -898,12 +945,12 @@ export default {
repairOrderSubmit() {
this.submitOrderShow = true
},
//
getDeviceList() {
let query={
current:1,
size:9999,
limsId:this.detailForm.reportUnit,
//
getDeviceList() {
let query = {
current: 1,
size: 9999,
limsId: this.detailForm.reportUnit,
}
this.$u.api.getDeviceList(query).then(res => {
if (res.code == 200) {
@ -915,10 +962,31 @@ export default {
})
},
//
deviceConfirm(e){
deviceConfirm(e) {
this.deviceData.name = e[0].label
this.deviceData.repairPerson = e[0].value
}
},
getType() {
let _params = {
current: 1,
size: 100,
parentId: "1869925082102702082",
};
this.$u.api
.getChildList(_params)
.then((res) => {
// this.repairTypeList = res.data
let data_ = res.data
data_.forEach(i => {
this.repairTypeList.push({ ...i, label: i.dictValue })
})
})
.catch((err) => { });
},
repairTypeConfirm(e) {
this.repairTypeData.name = e[0].label
this.repairTypeData.key = e[0].value
},
}
}

Loading…
Cancel
Save