fix:审批添加routepack的相关流程

This commit is contained in:
shijing 2024-07-04 09:48:11 +08:00
parent f2d4b447f3
commit baf2102944
4 changed files with 1187 additions and 903 deletions

View File

@ -52,7 +52,11 @@
stripe stripe
highlightCurrentRow highlightCurrentRow
> >
<el-table-column label="流水号" prop="sn" width="180"></el-table-column> <el-table-column
label="流水号"
prop="sn"
width="180"
></el-table-column>
<el-table-column <el-table-column
label="工单标题" label="工单标题"
prop="title" prop="title"
@ -94,12 +98,19 @@
</el-table-column> </el-table-column>
<el-table-column label="可处理人" :show-overflow-tooltip="true"> <el-table-column label="可处理人" :show-overflow-tooltip="true">
<template #default="scope"> <template #default="scope">
<span v-if="scope.row.participant_type==2 || scope.row.participant_type == 1"> <span
<span v-for="item in scope.row.participant_" :key="item.id">{{ item.name}}/</span> v-if="
</span> scope.row.participant_type == 2 ||
<span v-else> scope.row.participant_type == 1
"
>
<span
v-for="item in scope.row.participant_"
:key="item.id"
>{{ item.name }}/</span
>
</span> </span>
<span v-else> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@ -109,10 +120,21 @@
></el-table-column> ></el-table-column>
<el-table-column label="操作" fixed="right" align="center"> <el-table-column label="操作" fixed="right" align="center">
<template #default="scope"> <template #default="scope">
<el-button type="primary" link size="small" @click="handleShow(scope.row)" <el-button
type="primary"
link
size="small"
@click="handleShow(scope.row)"
>查看</el-button >查看</el-button
> >
<el-button type="danger" link size="small" @click="reStart(scope.row)" v-if="scope.row.script_run_last_result==false">重试</el-button> <el-button
type="danger"
link
size="small"
@click="reStart(scope.row)"
v-if="scope.row.script_run_last_result == false"
>重试</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</scTable> </scTable>
@ -144,8 +166,8 @@ export default {
2: "多人", 2: "多人",
}, },
rsOptions: [ rsOptions: [
{value:true, label:'成功'}, { value: true, label: "成功" },
{value:false, label:'失败'}, { value: false, label: "失败" },
], ],
wfOptions: [], wfOptions: [],
}; };
@ -160,8 +182,7 @@ export default {
}); });
}, },
reStart(row) { reStart(row) {
this.$API.wf.ticket.retryScript.req(row.id).then((res) => {
this.$API.wf.ticket.retryScript.req(row.id).then(res => {
this.$message.success("任务执行下发成功"); this.$message.success("任务执行下发成功");
this.$refs.table.refresh(); this.$refs.table.refresh();
}); });
@ -187,6 +208,8 @@ export default {
// operation = row.ticket_data.operation ? row.ticket_data.operation : null; // operation = row.ticket_data.operation ? row.ticket_data.operation : null;
projectId = row.ticket_data.opl; projectId = row.ticket_data.opl;
cateType = "opl"; cateType = "opl";
} else if (cateType == "routepack") {
projectId = row.ticket_data.t_id;
} }
this.$router.push({ this.$router.push({
path: "ticketdetail", path: "ticketdetail",
@ -203,5 +226,4 @@ export default {
}; };
</script> </script>
<style scoped> <style scoped></style>
</style>

View File

@ -9,7 +9,11 @@
stripe stripe
highlightCurrentRow highlightCurrentRow
> >
<el-table-column label="流水号" prop="sn" width="180"></el-table-column> <el-table-column
label="流水号"
prop="sn"
width="180"
></el-table-column>
<el-table-column <el-table-column
label="工单标题" label="工单标题"
prop="title" prop="title"
@ -51,12 +55,19 @@
</el-table-column> </el-table-column>
<el-table-column label="可处理人" :show-overflow-tooltip="true"> <el-table-column label="可处理人" :show-overflow-tooltip="true">
<template #default="scope"> <template #default="scope">
<span v-if="scope.row.participant_type==2 || scope.row.participant_type == 1"> <span
<span v-for="item in scope.row.participant_" :key="item.id">{{ item.name}}/</span> v-if="
</span> scope.row.participant_type == 2 ||
<span v-else> scope.row.participant_type == 1
"
>
<span
v-for="item in scope.row.participant_"
:key="item.id"
>{{ item.name }}/</span
>
</span> </span>
<span v-else> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@ -147,6 +158,8 @@ export default {
} else if (cateType.indexOf("opl_") != -1) { } else if (cateType.indexOf("opl_") != -1) {
projectId = row.ticket_data.opl; projectId = row.ticket_data.opl;
cateType = "opl"; cateType = "opl";
} else if (cateType == "routepack") {
projectId = row.ticket_data.t_id;
} }
this.$router.push({ this.$router.push({
path: "ticketdetail", path: "ticketdetail",
@ -182,5 +195,4 @@ export default {
}; };
</script> </script>
<style scoped> <style scoped></style>
</style>

View File

@ -2,7 +2,11 @@
<el-container> <el-container>
<el-main v-loading="mainLoading"> <el-main v-loading="mainLoading">
<el-card header="流程" style="position: relative"> <el-card header="流程" style="position: relative">
<work-step v-if="ticketDetail.state" ref="workStep" :ticket="ticketDetail"></work-step> <work-step
v-if="ticketDetail.state"
ref="workStep"
:ticket="ticketDetail"
></work-step>
<el-button <el-button
class="ticketRetry" class="ticketRetry"
v-if="!ticketDetail.script_run_last_result" v-if="!ticketDetail.script_run_last_result"
@ -18,7 +22,9 @@
{{ ticketDetail.sn }} {{ ticketDetail.sn }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="所属流程:"> <el-descriptions-item label="所属流程:">
<span v-if="ticketDetail.workflow">{{ticketDetail.workflow_.name }}</span> <span v-if="ticketDetail.workflow">{{
ticketDetail.workflow_.name
}}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="创建时间:"> <el-descriptions-item label="创建时间:">
{{ ticketDetail.create_time }} {{ ticketDetail.create_time }}
@ -28,7 +34,10 @@
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
<el-card style="margin-top: 4px;position:relative" v-if="cateType==='visit'"> <el-card
style="margin-top: 4px; position: relative"
v-if="cateType === 'visit'"
>
<el-descriptions title="来访信息" :column="3"> <el-descriptions title="来访信息" :column="3">
<el-descriptions-item label="来访概述:"> <el-descriptions-item label="来访概述:">
{{ itemDetail.name }} {{ itemDetail.name }}
@ -40,10 +49,16 @@
{{ purpose_[itemDetail.purpose] }} {{ purpose_[itemDetail.purpose] }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="来访人数:"> <el-descriptions-item label="来访人数:">
<el-tag size="small">{{ itemDetail.count_people }}</el-tag> <el-tag size="small"
>{{ itemDetail.count_people }}</el-tag
>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="来访人员:"> <el-descriptions-item label="来访人员:">
<el-tag v-for="item in itemDetail.visitors_" :key='item.id' size="small"> <el-tag
v-for="item in itemDetail.visitors_"
:key="item.id"
size="small"
>
{{ item.visitor_.name }} {{ item.visitor_.name }}
</el-tag> </el-tag>
</el-descriptions-item> </el-descriptions-item>
@ -56,16 +71,24 @@
<el-descriptions-item label="离访时间:"> <el-descriptions-item label="离访时间:">
{{ itemDetail.leave_time }} {{ itemDetail.leave_time }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="接待人:" v-if="itemDetail.receptionist_"> <el-descriptions-item
label="接待人:"
v-if="itemDetail.receptionist_"
>
{{ itemDetail.receptionist_.name }} {{ itemDetail.receptionist_.name }}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
<div style="text-align: center"> <div style="text-align: center">
<el-link type="primary" @click="showMoreVisit"> 更多信息</el-link> <el-link type="primary" @click="showMoreVisit">
更多信息</el-link
>
</div> </div>
<visit-dialog v-if="visitShow" ref="visitDialog"></visit-dialog> <visit-dialog v-if="visitShow" ref="visitDialog"></visit-dialog>
</el-card> </el-card>
<el-card style="margin-top: 4px;position:relative" v-if="cateType==='rpj'"> <el-card
style="margin-top: 4px; position: relative"
v-if="cateType === 'rpj'"
>
<el-descriptions title="入厂项目" :column="3"> <el-descriptions title="入厂项目" :column="3">
<el-descriptions-item label="相关方:"> <el-descriptions-item label="相关方:">
{{ itemDetail.rparty_name }} {{ itemDetail.rparty_name }}
@ -74,7 +97,9 @@
{{ itemDetail.name }} {{ itemDetail.name }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="项目类型:"> <el-descriptions-item label="项目类型:">
<el-tag size="small">{{rpjType_[itemDetail.type]}}</el-tag> <el-tag size="small">{{
rpjType_[itemDetail.type]
}}</el-tag>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="合同编号:"> <el-descriptions-item label="合同编号:">
{{ itemDetail.contract_number }} {{ itemDetail.contract_number }}
@ -93,26 +118,39 @@
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
<div style="text-align: center"> <div style="text-align: center">
<el-link type="primary" @click="showMore"> 更多信息</el-link> <el-link type="primary" @click="showMore">
更多信息</el-link
>
</div> </div>
<show-dialog v-if="rpjShow" ref="showDialog"></show-dialog> <show-dialog v-if="rpjShow" ref="showDialog"></show-dialog>
</el-card> </el-card>
<el-card style="margin-top: 4px;position:relative" v-if="cateType==='opl'"> <el-card
style="margin-top: 4px; position: relative"
v-if="cateType === 'opl'"
>
<el-descriptions title="作业许可证" :column="3"> <el-descriptions title="作业许可证" :column="3">
<el-descriptions-item label="所属作业:"> <el-descriptions-item label="所属作业:">
<span v-if="itemDetail.operation">{{itemDetail.operation_.name }}</span> <span v-if="itemDetail.operation">{{
itemDetail.operation_.name
}}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="许可证类型:"> <el-descriptions-item label="许可证类型:">
{{ itemDetail.cate_name }} {{ itemDetail.cate_name }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="作业区域:"> <el-descriptions-item label="作业区域:">
<span v-if="itemDetail.operation">{{itemDetail.operation_.area_.name}}</span> <span v-if="itemDetail.operation">{{
itemDetail.operation_.area_.name
}}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="作业状态:"> <el-descriptions-item label="作业状态:">
<span v-if="itemDetail.operation">{{state2_[itemDetail.operation_.state]}}</span> <span v-if="itemDetail.operation">{{
state2_[itemDetail.operation_.state]
}}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="生产状态:"> <el-descriptions-item label="生产状态:">
<span v-if="itemDetail.operation">{{itemDetail.operation_.state_work }}</span> <span v-if="itemDetail.operation">{{
itemDetail.operation_.state_work
}}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="开始时间:"> <el-descriptions-item label="开始时间:">
{{ itemDetail.start_time }} {{ itemDetail.start_time }}
@ -122,18 +160,67 @@
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
<div style="text-align: center"> <div style="text-align: center">
<el-link type="primary" @click="showMoreInfo"> 作业许可证详情</el-link> <el-link type="primary" @click="showMoreInfo">
作业许可证详情</el-link
>
</div> </div>
<show-dialog v-if="rpjShow" ref="showDialog"></show-dialog> <show-dialog v-if="rpjShow" ref="showDialog"></show-dialog>
</el-card> </el-card>
<el-card style="margin-top: 4px;position:relative" header="处理日志"> <el-card
<work-details ref="workDetails" :ticket="ticketId"></work-details> style="margin-top: 4px; position: relative"
header="工艺流程"
>
<el-table
:data="routepackes"
fit
stripe
style="width: 100%"
max-height="300"
highlight-current-row
>
<el-table-column label="排序" prop="sort" width="50">
</el-table-column>
<el-table-column label="工序" prop="process_name">
</el-table-column>
<el-table-column label="输入" prop="material_in_name">
</el-table-column>
<el-table-column label="输出" prop="material_out_name">
</el-table-column>
<el-table-column label="出材率" prop="out_rate">
</el-table-column>
<el-table-column label="工时" prop="hour_work">
</el-table-column>
</el-table>
</el-card>
<el-card
style="margin-top: 4px; position: relative"
header="处理日志"
>
<work-details
ref="workDetails"
:ticket="ticketId"
></work-details>
</el-card> </el-card>
<el-card class="handleWrap" v-if="isDuty || isOwn"> <el-card class="handleWrap" v-if="isDuty || isOwn">
<scTitle title="处理"></scTitle> <scTitle title="处理"></scTitle>
<el-form :model="form" ref="addForm" label-width="100px" label-position="left" v-if="isDuty"> <el-form
<el-form-item label="作业情况:" v-if="ticketDetail.state_&&ticketDetail.state_.key==='opl_close'"> :model="form"
<el-select v-model="form.close_note" placeholder="选择关闭原因"> ref="addForm"
label-width="100px"
label-position="left"
v-if="isDuty"
>
<el-form-item
label="作业情况:"
v-if="
ticketDetail.state_ &&
ticketDetail.state_.key === 'opl_close'
"
>
<el-select
v-model="form.close_note"
placeholder="选择关闭原因"
>
<el-option <el-option
v-for="item in noteOption" v-for="item in noteOption"
:key="item.id" :key="item.id"
@ -142,7 +229,13 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="关闭处理:" v-if="ticketDetail.state_&&ticketDetail.state_.key==='opl_close'"> <el-form-item
label="关闭处理:"
v-if="
ticketDetail.state_ &&
ticketDetail.state_.key === 'opl_close'
"
>
<el-checkbox-group v-model="form.close_dos"> <el-checkbox-group v-model="form.close_dos">
<el-checkbox <el-checkbox
v-for="(item, index) in dosOption" v-for="(item, index) in dosOption"
@ -153,28 +246,57 @@
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
<el-form-item label="处理意见"> <el-form-item label="处理意见">
<el-input v-model="form.suggestion" clearable></el-input> <el-input
v-model="form.suggestion"
clearable
></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div style="text-align: right"> <div style="text-align: right">
<el-button v-if="ticketDetail.in_add_node && isDuty" class="filter-item" type="primary" <el-button
@click="addNodeHandler('2')">加签处理 v-if="ticketDetail.in_add_node && isDuty"
class="filter-item"
type="primary"
@click="addNodeHandler('2')"
>加签处理
</el-button> </el-button>
</div> </div>
<div style="display: flex;justify-content: space-between;"> <div style="display: flex; justify-content: space-between">
<div> <div>
<el-button type="primary" @click="addNode" v-if="(!ticketDetail.in_add_node) && isDuty">加签</el-button> <el-button
<el-button v-if="isDuty && ticketDetail.state_&&ticketDetail.state_.enable_deliver" type="primary" plain type="primary"
@click="deliverNode">转交 @click="addNode"
v-if="!ticketDetail.in_add_node && isDuty"
>加签</el-button
>
<el-button
v-if="
isDuty &&
ticketDetail.state_ &&
ticketDetail.state_.enable_deliver
"
type="primary"
plain
@click="deliverNode"
>转交
</el-button> </el-button>
<el-button <el-button
v-if="itemDetail.ticket_&&itemDetail.ticket_.state_.type === 1 && isOwn" v-if="
itemDetail.ticket_ &&
itemDetail.ticket_.state_.type === 1 &&
isOwn
"
type="danger" type="danger"
@click="handleClose('2')" @click="handleClose('2')"
>关闭 >关闭
</el-button> </el-button>
<el-button <el-button
v-if="itemDetail.ticket_&&itemDetail.ticket_.state_.enable_retreat && isOwn &&itemDetail.ticket_.state_.type !== 1" v-if="
itemDetail.ticket_ &&
itemDetail.ticket_.state_.enable_retreat &&
isOwn &&
itemDetail.ticket_.state_.type !== 1
"
type="danger" type="danger"
@click="handleClose('1')" @click="handleClose('1')"
> >
@ -183,13 +305,28 @@
</div> </div>
<div v-if="isDuty && !ticketDetail.in_add_node"> <div v-if="isDuty && !ticketDetail.in_add_node">
<el-button <el-button
v-if="itemDetail.ticket_&& itemDetail.ticket_.state && itemDetail.ticket_.state_.type==1" v-if="
type="primary" plain itemDetail.ticket_ &&
@click="itemDetailEdtil">前往编辑 itemDetail.ticket_.state &&
itemDetail.ticket_.state_.type == 1
"
type="primary"
plain
@click="itemDetailEdtil"
>前往编辑
</el-button> </el-button>
<el-button :loading="submitLoading" :disabled="submitLoading" v-for="item in operationBtn" :key="item.id" class="filter-item" <el-button
:type="item.attribute_type===2?'danger':'primary'" @click="operationSubmit(item.id)"> :loading="submitLoading"
:disabled="submitLoading"
v-for="item in operationBtn"
:key="item.id"
class="filter-item"
:type="
item.attribute_type === 2 ? 'danger' : 'primary'
"
@click="operationSubmit(item.id)"
>
{{ item.name }} {{ item.name }}
</el-button> </el-button>
</div> </div>
@ -226,37 +363,94 @@
</el-main> </el-main>
</el-container> </el-container>
<el-dialog v-model="limitedAdd" title="加签"> <el-dialog v-model="limitedAdd" title="加签">
<el-form ref="Form" :model="addForm" label-width="100px" label-position="right"> <el-form
ref="Form"
:model="addForm"
label-width="100px"
label-position="right"
>
<el-form-item label="处理人"> <el-form-item label="处理人">
<el-input style="width: 50%;" v-model="userName" disabled placeholder="选择处理人"></el-input> <el-input
<scUserSelect v-model="addForm.toadd_user" :closable="true" :multiple="false" style="width: 50%"
@handlerSubmit="addNodeHandlerSubmit"></scUserSelect> v-model="userName"
disabled
placeholder="选择处理人"
></el-input>
<scUserSelect
v-model="addForm.toadd_user"
:closable="true"
:multiple="false"
@handlerSubmit="addNodeHandlerSubmit"
></scUserSelect>
</el-form-item> </el-form-item>
<el-form-item label="加签原因"> <el-form-item label="加签原因">
<el-input type="textarea" :rows="3" v-model="addForm.suggestion" placeholder="加签原因"/> <el-input
type="textarea"
:rows="3"
v-model="addForm.suggestion"
placeholder="加签原因"
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div style="text-align: center"> <div style="text-align: center">
<el-button class="filter-item" type="" @click="addCancel">取消</el-button> <el-button class="filter-item" type="" @click="addCancel"
<el-button class="filter-item" type="primary" @click="addNodeHandler('1')">确定</el-button> >取消</el-button
>
<el-button
class="filter-item"
type="primary"
@click="addNodeHandler('1')"
>确定</el-button
>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog v-model="limitedDeliver" title="转交工单"> <el-dialog v-model="limitedDeliver" title="转交工单">
<el-form ref="Form" :model="deliverForm" label-width="100px" label-position="right"> <el-form
ref="Form"
:model="deliverForm"
label-width="100px"
label-position="right"
>
<el-form-item label="转交人"> <el-form-item label="转交人">
<el-input style="width: 50%;" v-model="userName" disabled placeholder="选择转交人"></el-input> <el-input
<scUserSelect :closable="true" :multiple="false" @handlerSubmit="deliverHandlerSubmit"></scUserSelect> style="width: 50%"
v-model="userName"
disabled
placeholder="选择转交人"
></el-input>
<scUserSelect
:closable="true"
:multiple="false"
@handlerSubmit="deliverHandlerSubmit"
></scUserSelect>
</el-form-item> </el-form-item>
<el-form-item label="转交原因"> <el-form-item label="转交原因">
<el-input type="textarea" :rows="3" v-model="deliverForm.suggestion" placeholder="转交原因"/> <el-input
type="textarea"
:rows="3"
v-model="deliverForm.suggestion"
placeholder="转交原因"
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div style="text-align: center"> <div style="text-align: center">
<el-button class="filter-item" type="" @click="deliverCancel">取消</el-button> <el-button class="filter-item" type="" @click="deliverCancel"
<el-button class="filter-item" type="primary" @click="deliverNodeHandler('1')">确定</el-button> >取消</el-button
>
<el-button
class="filter-item"
type="primary"
@click="deliverNodeHandler('1')"
>确定</el-button
>
</div> </div>
</el-dialog> </el-dialog>
<el-drawer :size="'50%'" v-model="showLimited" title="作业许可证详情" :close-on-click-modal="false"> <el-drawer
:size="'50%'"
v-model="showLimited"
title="作业许可证详情"
:close-on-click-modal="false"
>
<sc-fire :id="projectId"></sc-fire> <sc-fire :id="projectId"></sc-fire>
</el-drawer> </el-drawer>
<el-dialog v-model="limitedRetreat" :title="handleTitle"> <el-dialog v-model="limitedRetreat" :title="handleTitle">
@ -296,7 +490,7 @@
workDetails, workDetails,
workStep, workStep,
showDialog, showDialog,
visitDialog visitDialog,
}, },
name: "ticketdetail", name: "ticketdetail",
data() { data() {
@ -315,18 +509,19 @@
ticketDetail: {}, ticketDetail: {},
employeeLists: [], employeeLists: [],
operationBtn: [], operationBtn: [],
routepackes: [],
form: { form: {
suggestion: '', suggestion: "",
close_note: '', close_note: "",
close_dos: [], close_dos: [],
}, },
addForm: { addForm: {
suggestion: '', suggestion: "",
toadd_user: '', toadd_user: "",
}, },
deliverForm: { deliverForm: {
suggestion: '', suggestion: "",
target_user: '', target_user: "",
}, },
rpjShow: false, rpjShow: false,
visitShow: false, visitShow: false,
@ -338,7 +533,7 @@
10: "参观", 10: "参观",
20: "拜访", 20: "拜访",
30: "面试", 30: "面试",
40: "开会" 40: "开会",
}, },
rpjType_: { rpjType_: {
10: "建筑施工", 10: "建筑施工",
@ -352,7 +547,7 @@
30: "待入厂", 30: "待入厂",
40: "进行中", 40: "进行中",
50: "已完成", 50: "已完成",
60: "已关闭" 60: "已关闭",
}, },
state2_: { state2_: {
10: "创建中", 10: "创建中",
@ -363,19 +558,19 @@
}, },
levelOptions: { levelOptions: {
10: "一般", 10: "一般",
20: "重要" 20: "重要",
}, },
noteOption: [ noteOption: [
{id: 10, name: '作业正常结束'}, { id: 10, name: "作业正常结束" },
{id: 20, name: '因计划改变停止作业'}, { id: 20, name: "因计划改变停止作业" },
{id: 30, name: '因发生异常终止作业'}, { id: 30, name: "因发生异常终止作业" },
{id: 40, name: '其他'}, { id: 40, name: "其他" },
], ],
dosOption: [], dosOption: [],
submitLoading: false, submitLoading: false,
userId: this.$TOOL.data.get("USER_INFO").id, userId: this.$TOOL.data.get("USER_INFO").id,
isOwn: false, isOwn: false,
isDuty: false isDuty: false,
}; };
}, },
created() { created() {
@ -386,10 +581,12 @@
}, },
mounted() { mounted() {
this.submitLoading = false; this.submitLoading = false;
if (this.cateType === 'visit') { if (this.cateType === "visit") {
this.getVisit(); this.getVisit();
} else if (this.cateType === 'rpj') { } else if (this.cateType === "rpj") {
this.getRpj(); this.getRpj();
} else if (this.cateType === "routepack") {
this.getRoutePack();
} else { } else {
this.getOpl(); this.getOpl();
} }
@ -399,19 +596,19 @@
methods: { methods: {
itemDetailEdtil() { itemDetailEdtil() {
let itemDetail = this.itemDetail; let itemDetail = this.itemDetail;
if(this.cateType === 'opl'){ if (this.cateType === "opl") {
this.$router.push({ this.$router.push({
name: itemDetail.cate_code, name: itemDetail.cate_code,
query: {oplId:itemDetail.id} query: { oplId: itemDetail.id },
}) });
}else if(this.cateType === 'rpj'){ } else if (this.cateType === "rpj") {
this.$router.push({ this.$router.push({
name: "rpjadd", name: "rpjadd",
query: { query: {
rpjid: itemDetail.id, //访id rpjid: itemDetail.id, //访id
}, },
}); });
}else if(this.cateType === 'visit'){ } else if (this.cateType === "visit") {
this.$router.push({ this.$router.push({
name: "vistoradd", name: "vistoradd",
query: { query: {
@ -419,7 +616,6 @@
}, },
}); });
} }
}, },
handleClose(index) { handleClose(index) {
if (index === "1") { if (index === "1") {
@ -445,19 +641,23 @@
}) })
.then(() => { .then(() => {
if (that.handleTitle === "撤回工单") { if (that.handleTitle === "撤回工单") {
that.$API.wf.ticket.ticketRetreat.req( that.$API.wf.ticket.ticketRetreat
that.ticketId, .req(that.ticketId, that.handleForm)
that.handleForm .then((res) => {
).then(res=>{that.limitedRetreat=false;window.location.reload()}) that.limitedRetreat = false;
window.location.reload();
});
} else { } else {
that.$API.wf.ticket.ticketClose.req( that.$API.wf.ticket.ticketClose
that.ticketId, .req(that.ticketId, that.handleForm)
that.handleForm .then((res) => {
).then(res=>{that.limitedRetreat=false;window.location.reload()}); that.limitedRetreat = false;
window.location.reload();
});
} }
}) })
.catch((err) => { .catch((err) => {
that.limitedRetreat=false that.limitedRetreat = false;
}); });
}, },
// //
@ -465,59 +665,79 @@
this.$API.system.dict.list this.$API.system.dict.list
.req({ page: 0, type__code: "close_options" }) .req({ page: 0, type__code: "close_options" })
.then((res) => { .then((res) => {
let dosOption = res.filter(item => { let dosOption = res.filter((item) => {
return item.is_used return item.is_used;
}); });
this.dosOption = dosOption.slice(0, 3) this.dosOption = dosOption.slice(0, 3);
}); });
}, },
showMore() { showMore() {
this.rpjShow = true; this.rpjShow = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.showDialog.open().setData({ id: this.projectId }); this.$refs.showDialog.open().setData({ id: this.projectId });
}) });
}, },
showMoreVisit() { showMoreVisit() {
this.visitShow = true; this.visitShow = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.visitDialog.open('show').setData({id: this.projectId}); this.$refs.visitDialog
}) .open("show")
.setData({ id: this.projectId });
});
}, },
// //
getticketItem() { getticketItem() {
this.mainLoading = true this.mainLoading = true;
this.$API.wf.ticket.ticketItem.req(this.ticketId).then((res) => { this.$API.wf.ticket.ticketItem
.req(this.ticketId)
.then((res) => {
this.mainLoading = false; this.mainLoading = false;
this.ticketDetail = res; this.ticketDetail = res;
if (this.ticketDetail.state_.key == "opl_close") {
if(this.ticketDetail.state_.key == 'opl_close'){
// , // ,
this.getCloseDos() this.getCloseDos();
} }
// //
if (this.ticketDetail.create_by == this.userId) { if (this.ticketDetail.create_by == this.userId) {
this.isOwn = true this.isOwn = true;
} }
let participant = this.ticketDetail.participant let participant = this.ticketDetail.participant;
if(participant==this.userId || participant.indexOf(this.userId)>-1){ if (
this.isDuty = true participant == this.userId ||
participant.indexOf(this.userId) > -1
) {
this.isDuty = true;
} }
}).catch(e=>{this.mainLoading = false}); })
.catch((e) => {
this.mainLoading = false;
});
}, },
// //
getBtns() { getBtns() {
this.$API.wf.ticket.ticketTransitions.req(this.ticketId).then(res => { this.$API.wf.ticket.ticketTransitions
.req(this.ticketId)
.then((res) => {
this.operationBtn = res; this.operationBtn = res;
}) });
}, },
//访 //访
getVisit() { getVisit() {
this.$API.vm.visit.read.req(this.projectId).then((res) => { this.$API.vm.visit.read.req(this.projectId).then((res) => {
this.itemDetail = res; this.itemDetail = res;
}); });
}, },
getRoutePack() {
let that = this;
this.$API.mtm.routepack.item.req(this.projectId).then((res) => {
console.log("routepackitem", res);
this.$API.mtm.route.list
.req({ page: 0, material: res.material })
.then((res) => {
that.routepackes = res;
});
});
},
// //
getRpj() { getRpj() {
this.$API.rpm.rpj.item.req(this.projectId).then((res) => { this.$API.rpm.rpj.item.req(this.projectId).then((res) => {
@ -529,7 +749,7 @@
getOpl() { getOpl() {
this.$API.opm.opl.read.req(this.projectId).then((res) => { this.$API.opm.opl.read.req(this.projectId).then((res) => {
debugger; debugger;
console.log(res) console.log(res);
this.itemDetail = res; this.itemDetail = res;
this.operationId = res.operation; this.operationId = res.operation;
}); });
@ -550,10 +770,16 @@
}, },
addNodeHandler(index) { addNodeHandler(index) {
let res = null; let res = null;
if (index === '1') { if (index === "1") {
res = this.$API.wf.ticket.addNode.req(this.ticketId, this.addForm); res = this.$API.wf.ticket.addNode.req(
this.ticketId,
this.addForm
);
} else { } else {
res = this.$API.wf.ticket.addNodeEnd.req(this.ticketId, this.form); res = this.$API.wf.ticket.addNodeEnd.req(
this.ticketId,
this.form
);
} }
if (res.err_msg) { if (res.err_msg) {
} else { } else {
@ -574,13 +800,15 @@
this.userName = data.name; this.userName = data.name;
}, },
deliverNodeHandler() { deliverNodeHandler() {
this.$API.wf.ticket.ticketDeliver.req(this.ticketId, this.deliverForm).then(res => { this.$API.wf.ticket.ticketDeliver
.req(this.ticketId, this.deliverForm)
.then((res) => {
if (res.err_msg) { if (res.err_msg) {
} else { } else {
this.limitedDeliver = false; this.limitedDeliver = false;
this.$router.push("dutywork"); this.$router.push("dutywork");
} }
}) });
}, },
//-end //-end
// //
@ -589,23 +817,28 @@
params.transition = id; params.transition = id;
params.ticket_data = {}; params.ticket_data = {};
params.suggestion = this.form.suggestion; params.suggestion = this.form.suggestion;
this.submitLoading = true this.submitLoading = true;
if (this.ticketDetail.state_.key === 'opl_close') { if (this.ticketDetail.state_.key === "opl_close") {
params.ticket_data.close_note = this.form.close_note; params.ticket_data.close_note = this.form.close_note;
params.ticket_data.close_dos = this.form.close_dos; params.ticket_data.close_dos = this.form.close_dos;
} }
this.$API.wf.ticket.ticketHandle.req(this.ticketId, params).then(res => { this.$API.wf.ticket.ticketHandle
.req(this.ticketId, params)
.then((res) => {
if (res.err_msg) { if (res.err_msg) {
} else { } else {
this.$router.push("dutywork"); this.$router.push("dutywork");
this.submitLoading = false; this.submitLoading = false;
} }
}).catch(e=>{this.submitLoading=false;}) })
.catch((e) => {
this.submitLoading = false;
});
}, },
reStart() { reStart() {
this.$API.wf.ticket.retryScript.req(this.ticketId).then(res => { this.$API.wf.ticket.retryScript.req(this.ticketId).then((res) => {
// this.$router.push("dutywork"); // this.$router.push("dutywork");
this.$router.back(-1) this.$router.back(-1);
this.$message.success("任务执行下发成功"); this.$message.success("任务执行下发成功");
}); });
}, },
@ -634,6 +867,6 @@
bottom: 0; bottom: 0;
left: 0px; left: 0px;
right: 0px; right: 0px;
z-index: 10 z-index: 10;
} }
</style> </style>

View File

@ -9,7 +9,11 @@
stripe stripe
highlightCurrentRow highlightCurrentRow
> >
<el-table-column label="流水号" prop="sn" width="180"></el-table-column> <el-table-column
label="流水号"
prop="sn"
width="180"
></el-table-column>
<el-table-column <el-table-column
label="工单标题" label="工单标题"
prop="title" prop="title"
@ -51,12 +55,19 @@
</el-table-column> </el-table-column>
<el-table-column label="可处理人" :show-overflow-tooltip="true"> <el-table-column label="可处理人" :show-overflow-tooltip="true">
<template #default="scope"> <template #default="scope">
<span v-if="scope.row.participant_type==2 || scope.row.participant_type == 1"> <span
<span v-for="item in scope.row.participant_" :key="item.id">{{ item.name}}/</span> v-if="
</span> scope.row.participant_type == 2 ||
<span v-else> scope.row.participant_type == 1
"
>
<span
v-for="item in scope.row.participant_"
:key="item.id"
>{{ item.name }}/</span
>
</span> </span>
<span v-else> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@ -64,7 +75,12 @@
prop="create_time" prop="create_time"
width="150" width="150"
></el-table-column> ></el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="100"> <el-table-column
label="操作"
fixed="right"
align="center"
width="100"
>
<template #default="scope"> <template #default="scope">
<el-button <el-button
text text
@ -114,6 +130,8 @@ export default {
} else if (cateType.indexOf("opl_") != -1) { } else if (cateType.indexOf("opl_") != -1) {
projectId = row.ticket_data.opl; projectId = row.ticket_data.opl;
cateType = "opl"; cateType = "opl";
} else if (cateType == "routepack") {
projectId = row.ticket_data.t_id;
} }
this.$router.push({ this.$router.push({
path: "ticketdetail", path: "ticketdetail",
@ -129,5 +147,4 @@ export default {
}; };
</script> </script>
<style scoped> <style scoped></style>
</style>