开始施工、施工过程记录

This commit is contained in:
xiaofajia 2024-10-18 18:07:43 +08:00
parent c9b026d327
commit 058e72627c
5 changed files with 225 additions and 48 deletions

View File

@ -97,3 +97,12 @@ export function updateRepair(data){
data
})
}
// 更新工单状态
export function updateStatus(data){
return request({
url: preUrl + "/updateStatus",
method: "post",
data
})
}

View File

@ -1 +1,20 @@
import request from '@/utils/request'
const preUrl = '/repair/titem'
// 维修工单子表 分页
export function getTItemPage(params){
return request({
url: preUrl + "/page",
method: 'get',
params
})
}
// 获取当前操作人操作的工单中的项目
export function getProjectList(ticketId){
return request({
url: preUrl + "/listProject?ticketId=" + ticketId,
method: 'get'
})
}

View File

@ -50,6 +50,15 @@
<el-button v-if="userRole === 'service_advisor' && scope.row.ticketsWorkStatus === '01'" size="mini" type="text" icon="el-icon-check" @click="handleNotify(scope.row)">
通知施工
</el-button>
<el-button size="mini" type="text" icon="el-icon-monitor" @click="handleRecord(scope.row, 'sgz')">
过程记录
</el-button>
<el-button size="mini" type="text" icon="el-icon-monitor" @click="handleRecord(scope.row, 'kssg')">
开始施工
</el-button>
<el-button size="mini" type="text" icon="el-icon-monitor" @click="handleRecord(scope.row, 'sgwczj')">
施工完成
</el-button>
<el-dropdown @command="(command) => handleCommand(command, scope.$index, scope.row)">
<el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
<el-dropdown-menu slot="dropdown">
@ -77,6 +86,7 @@
<TicketsShow ref="ticketsShow"/>
<UpdateRepair ref="updateRepair" @success="listTickets"/>
<TWOperate ref="twOperate" @success="listTickets"/>
<UpdateRecord ref="updateRecord" @success="listTickets" />
<el-dialog title="退料申请" :visible.sync="backVisible" width="60%" v-dialogDrag append-to-body>
<el-table v-loading="backLoading" :data="partList" :stripe="true" :show-overflow-tooltip="true"
@ -123,10 +133,11 @@ import {listTwItem} from "@/api/repair/tickets/TWItem";
import {createUniqueCodeByHead} from "@/utils/createUniqueCode";
import {updateTicketWares} from "@/api/repair/tickets/TicketWares";
import {getIfLeader} from "@/api/repair/repairworker";
import UpdateRecord from "@/views/repair/tickets/form/UpdateRecord.vue";
export default {
name: "TicketManagerItem",
components: {TWOperate, UpdateRepair, TicketsShow},
components: {UpdateRecord, TWOperate, UpdateRepair, TicketsShow},
props: {
isFinish: {
type: Boolean,
@ -340,6 +351,13 @@ export default {
this.backVisible = false
this.$modal.msgSuccess("申请成功");
await this.listTickets()
},
handleRecord(row, type){
row = {
...row,
clickType: type
}
this.$refs.updateRecord.open(row)
}
}
}

View File

@ -1,7 +1,8 @@
<template>
<div>
<el-row :gutter="24">
<el-col :span="17" style="padding-right: 0">
<!-- <el-col :span="17" style="padding-right: 0">-->
<el-col :span="24" style="padding-right: 0">
<el-card class="top-left">
<el-descriptions class="margin-top" :column="3" :size="'mini'" border>
<template slot="extra">
@ -111,52 +112,52 @@
</el-descriptions>
</el-card>
</el-col>
<el-col :span="7" style="padding-left: 0">
<el-card style="margin-left: 0">
<div slot="header" class="clearfix">
<span style="font-weight: bold; font-size: 16px;"> 会员卡券</span>
</div>
<el-table
:data="couponList"
border
size="mini"
height="270"
style="width: 100%">
<el-table-column prop="couponName" label="卡券名称"/>
<el-table-column label="卡券类型" width="80" align="center" prop="couponType">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.MEMBER_COUPON_TYPE" :value="scope.row.couponType"/>
</template>
</el-table-column>
<el-table-column label="剩余金额/次数" width="120" align="right" prop="balance">
<template v-slot="scope">
{{ scope.row.balance }}{{ scope.row.outRule == 'mehx' ? '元' : '次' }}
</template>
</el-table-column>
<el-table-column label="适用车型" width="80" align="center" prop="carModel">
<template v-slot="scope">
<span v-if="scope.row.carModel == null">不限</span>
<dict-tag :type="DICT_TYPE.MEMBER_CAR" :value="scope.row.carModel"/>
</template>
</el-table-column>
<el-table-column label="核销规则" width="100" align="center" prop="outRule">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.MEMBER_COUPON_OUT_RULE" :value="scope.row.outRule"/>
</template>
</el-table-column>
<el-table-column label="开始有效期" align="center" prop="beginTime" width="150">
<template v-slot="scope">
<span>{{ parseTime(scope.row.beginTime) }}</span>
</template>
</el-table-column>
<el-table-column label="结束有效期" align="center" prop="endTime" width="150">
<template v-slot="scope">
<span>{{ parseTime(scope.row.endTime) }}</span>
</template>
</el-table-column>
</el-table>
</el-card>
</el-col>
<!-- <el-col :span="7" style="padding-left: 0">-->
<!-- <el-card style="margin-left: 0">-->
<!-- <div slot="header" class="clearfix">-->
<!-- <span style="font-weight: bold; font-size: 16px;"> 会员卡券</span>-->
<!-- </div>-->
<!-- <el-table-->
<!-- :data="couponList"-->
<!-- border-->
<!-- size="mini"-->
<!-- height="270"-->
<!-- style="width: 100%">-->
<!-- <el-table-column prop="couponName" label="卡券名称"/>-->
<!-- <el-table-column label="卡券类型" width="80" align="center" prop="couponType">-->
<!-- <template v-slot="scope">-->
<!-- <dict-tag :type="DICT_TYPE.MEMBER_COUPON_TYPE" :value="scope.row.couponType"/>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="剩余金额/次数" width="120" align="right" prop="balance">-->
<!-- <template v-slot="scope">-->
<!-- {{ scope.row.balance }}{{ scope.row.outRule == 'mehx' ? '元' : '次' }}-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="适用车型" width="80" align="center" prop="carModel">-->
<!-- <template v-slot="scope">-->
<!-- <span v-if="scope.row.carModel == null">不限</span>-->
<!-- <dict-tag :type="DICT_TYPE.MEMBER_CAR" :value="scope.row.carModel"/>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="核销规则" width="100" align="center" prop="outRule">-->
<!-- <template v-slot="scope">-->
<!-- <dict-tag :type="DICT_TYPE.MEMBER_COUPON_OUT_RULE" :value="scope.row.outRule"/>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="开始有效期" align="center" prop="beginTime" width="150">-->
<!-- <template v-slot="scope">-->
<!-- <span>{{ parseTime(scope.row.beginTime) }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="结束有效期" align="center" prop="endTime" width="150">-->
<!-- <template v-slot="scope">-->
<!-- <span>{{ parseTime(scope.row.endTime) }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- </el-table>-->
<!-- </el-card>-->
<!-- </el-col>-->
</el-row>
<el-row :gutter="5" style="margin-bottom: 1rem">
<el-col v-if="createTicketType" :span="4.8">

View File

@ -0,0 +1,130 @@
<template>
<div class="app-container">
<el-dialog title="流程记录" :visible.sync="dialogVisible" width="60%" v-dialogDrag append-to-body>
<el-form :model="formData" ref="formRef" :rules="formRules" :loading="formLoading" :inline="true" label-width="15rem">
<el-row :gutter="1">
<el-col :span="24">
<el-form-item label="维修项目" prop="item.id">
<el-select style="width: 20rem" v-model="formData.item.id" >
<el-option v-for="item in projectList" :key="item.id" :label="item.itemName" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="1">
<el-col :span="24">
<el-form-item label="描述" prop="remark">
<el-input style="width: 30rem" type="textarea" v-model="formData.remark" :autosize="{ minRows: 4, maxRows: 8}"/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="1">
<el-col :span="24">
<el-form-item label="附件" prop="image">
<FileUpload v-model="formData.image" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="doUpdate"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {getProjectList} from "@/api/repair/tickets/TicketsItem";
import {updateStatus} from "@/api/repair/tickets/Tickets";
export default {
name: "UpdateRecord",
data(){
return {
dialogVisible: false,
formData:{
//
id: null,
ticketsWorkStatus: null,
remark: null,
//
item:{
id: null,
itemStatus: null,
},
//
image: null,
recordType: null,
},
formRules:{
'item.id':[{required: true, message: "维修项目不能为空", trigger: 'blur'}]
},
formLoading: false,
projectList: [],
}
},
methods:{
init(){
this.formData = {
//
id: null,
ticketsWorkStatus: null,
remark: null,
//
item:{
id: null,
itemStatus: null,
},
//
image: null,
recordType: null,
}
this.projectList = []
},
async open(row){
this.init()
this.formData.id = row.id
this.formData.recordType = row.clickType
await this.listProject(row.id)
this.dialogVisible = true
},
async listProject(ticketId){
try {
this.formLoading = true
const res = await getProjectList(ticketId)
this.projectList = res.data
console.log(this.formData.recordType)
if (this.formData.recordType === 'kssg') {
this.formData.ticketsWorkStatus = "02"
this.formData.item.itemStatus = "02"
this.projectList = this.projectList.filter(item => item.itemStatus === '01')
}else if (this.formData.recordType === 'sgz'){
this.formData.ticketsWorkStatus = "02"
this.formData.item.itemStatus = "02"
this.projectList = this.projectList.filter(item => item.itemStatus === '02')
}
}finally {
this.formLoading = false
}
},
async doUpdate(){
try {
await this.$refs.formRef.validate()
this.formData.image = this.formData.image.map(item => item.url).join(",")
this.formLoading = true
await updateStatus(this.formData)
this.$modal.msgSuccess("操作成功")
this.dialogVisible = false
this.$emit("success")
}catch {
}
}
}
}
</script>
<style scoped lang="scss">
</style>