Commit b9eddc46 by qinjianhui

Merge branch 'master' into 'dev'

# Conflicts:
#   src/router/index.js
#   src/views/home/navMenu.vue
parents eda103d4 9e843d08

1007 Bytes | W: | H:

594 Bytes | W: | H:

src/assets/work/complete.png
src/assets/work/complete.png
src/assets/work/complete.png
src/assets/work/complete.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -21,7 +21,12 @@ export function workAssigned(data) { ...@@ -21,7 +21,12 @@ export function workAssigned(data) {
data, data,
) )
} }
export function reallocate(data) {
return axios.post(
'platform/platformWorkOrder/reallocate',
data,
)
}
export function startWorder(id, estimateCompleteTime) { export function startWorder(id, estimateCompleteTime) {
return axios.post('platform/platformWorkOrder/start', { return axios.post('platform/platformWorkOrder/start', {
id: id, id: id,
......
...@@ -34,6 +34,7 @@ import { ...@@ -34,6 +34,7 @@ import {
DropdownItem, DropdownItem,
DropdownMenu, DropdownMenu,
Tooltip, Tooltip,
ColorPicker,
} from 'element-ui' } from 'element-ui'
const components = [ const components = [
...@@ -67,6 +68,7 @@ const components = [ ...@@ -67,6 +68,7 @@ const components = [
DropdownItem, DropdownItem,
DropdownMenu, DropdownMenu,
Tooltip, Tooltip,
ColorPicker,
] ]
export default { export default {
......
<template>
<div class="announce-manage card">
<el-form
ref="form"
:model="searchForm"
size="mini"
v-enter-submit="search"
@submit.native.prevent
:inline="true"
>
<el-form-item label="创建时间">
<el-date-picker
style="width: 164px"
v-model="searchForm.time"
align="right"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd"
></el-date-picker>
<!-- <el-input v-model="searchForm.time"></el-input> -->
</el-form-item>
<el-form-item label="创建人">
<el-select
v-model="searchForm.creator"
placeholder="请选择"
clearable
filterable
>
<el-option
v-for="user in userList"
:key="user.id"
:label="user.realName"
:value="user.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label>
<el-button
type="primary"
native-type="submit"
@click="search()"
>
查询
</el-button>
</el-form-item>
<el-form-item label>
<el-button type="success" @click="editDialog()"
>新增</el-button
>
</el-form-item>
</el-form>
<div class="table_wrap" style="padding: 0">
<table-view
:sourceData="sourceData"
:serialNumber="false"
:tableColumns="tableColumns"
></table-view>
</div>
<pagination
:setValue="setpaginationOptions"
:options="paginationOptions"
/>
<el-dialog
:title="isEdit ? '编辑' : '新增'"
:close-on-click-modal="false"
:visible.sync="dialogVisible"
width="900px"
>
<el-form
:model="editForm"
:inline="true"
label-width="80px"
:rules="addrules"
size="mini"
ref="editForm"
>
<el-form-item
label="标题"
size="small"
prop="title"
>
<el-input
style="width: 530px"
v-model="editForm.title"
></el-input>
<el-checkbox
style="margin-left: 20px"
v-model="editForm.titleWeight"
label="粗体"
></el-checkbox>
</el-form-item>
<el-form-item label>
<el-color-picker
style="vertical-align: text-top"
v-model="editForm.titleColor"
></el-color-picker>
</el-form-item>
<br />
<el-form-item label="置顶">
<el-switch
v-model="editForm.priority"
></el-switch>
</el-form-item>
</el-form>
<v-editor
filename="files"
v-model="editForm.content"
ref="wangeditor"
height="300px"
/>
<div slot="footer">
<el-button
@click="dialogVisible = false"
size="mini"
>取 消</el-button
>
<el-button
type="primary"
@click="submit"
size="mini"
>确 定</el-button
>
</div>
</el-dialog>
</div>
</template>
<script>
import Editor from '@/components/wangeditor/index.vue'
import tableView from '@/common/components/base/tableView.vue'
import { get, post } from '@/common/api/axios'
import { getSystemUserList } from '@/common/api/system'
export default {
name: 'system_announce_manage',
components: { 'v-editor': Editor, tableView },
data() {
return {
userList: [],
pageSize: 50,
currentPage: 1,
total: 1,
paginationOptions: {
pageSize: 100,
currentPage: 1,
total: 0,
},
addrules: {
title: [
{
required: true,
message: '请输入标题',
trigger: 'blur',
},
],
},
sourceData: [],
searchForm: {},
isEdit: false,
dialogVisible: false,
editForm: {
title: '',
},
defaultEditFrom: {
title: '',
enableFlag: false,
content: '',
priority: false,
},
}
},
mounted() {
this.getList()
this.getSystemUserList()
},
computed: {
tableColumns() {
return [
{
label: '标题',
key: 'title',
align: 'left',
render: (item) => (
<span
style={{
color: item.titleColor,
fontWeight: item.titleWeight ? 'bold' : '',
}}
>
{item.title}
</span>
),
},
{ label: '创建人', key: 'creatorName' },
{ label: '创建时间', key: 'creationTime' },
{ label: '更新时间', key: 'updateTime' },
{
label: '是否发布',
key: 'enableFlag',
width: 100,
render: (item) => (
<span>
{item.enableFlag ? '已发布' : '未发布'}
</span>
),
},
{
label: '操作',
width: 100,
render: (item) => (
<div>
<span
class="icon-view icon-edit-view"
title="编辑"
onClick={() => this.editDialog(item)}
>
<i class="el-icon-edit"></i>
</span>
{!item.enableFlag && (
<span
class="icon-view icon-primary-view"
title="发布"
onClick={() => this.release(item)}
>
<i class="el-icon-s-promotion"></i>
</span>
)}
</div>
),
},
]
},
},
methods: {
search() {
this.getList()
},
async getSystemUserList() {
try {
const res = await getSystemUserList()
this.userList = res.data
} catch (e) {
console.error(e)
}
},
setpaginationOptions(opt) {
for (const key in opt) {
this.paginationOptions[key] = opt[key]
}
this.getList()
},
async getList() {
try {
const { pageSize, currentPage } =
this.paginationOptions
const res = await post('sys/announcement/list', {
pageSize,
currentPage,
...this.searchForm,
})
if (res.code !== 200) return
this.sourceData = res.data.records
this.paginationOptions.total = res.data.total
} catch (e) {
console.error(e)
}
},
currentChange(i) {
this.currentPage = i
this.getList()
},
async editDialog(item) {
if (item) {
try {
const res = await get(
'sys/announcement/get/' + item.id,
)
if (res.code !== 200) return
this.editForm = {
...this.editForm,
...res.data,
}
this.isEdit = true
} catch (e) {
console.error(e)
}
} else {
this.editForm = JSON.parse(
JSON.stringify(this.defaultEditFrom),
)
this.$nextTick(() => {
this.$refs.editForm.clearValidate()
})
this.isEdit = false
}
this.dialogVisible = true
},
async submit() {
try {
await this.$refs.editForm.validate()
} catch {
return
}
try {
const url = this.isEdit
? 'sys/announcement/edit'
: 'sys/announcement/add'
const res = await post(url, { ...this.editForm })
if (res.code !== 200) return
this.$message.success(res.message)
this.dialogVisible = false
this.getList()
} catch (e) {
console.error(e)
}
},
async enableChange(item, val) {
try {
const res = await post('sys/announcement/edit', {
id: item.id,
enableFlag: val,
})
if (res.code !== 200) return
this.$message.success(res.message)
this.getList()
} catch (e) {
console.error(e)
}
},
async release(item) {
try {
const res = await get(
'sys/announcement/publish/' + item.id,
)
if (res.code !== 200) return
this.$message.success(res.message)
this.getList()
} catch (e) {
console.error(e)
}
},
},
}
</script>
<style scoped>
.announce-manage {
height: 100%;
display: flex;
flex-direction: column;
padding: 10px 20px 0;
overflow: hidden;
}
</style>
...@@ -6,208 +6,225 @@ ...@@ -6,208 +6,225 @@
* @LastEditTime: 2020-11-18 09:25:23 * @LastEditTime: 2020-11-18 09:25:23
--> -->
<template> <template>
<div class='wraper'> <div class="wraper">
<div class='page_left'> <div class="page_left">
<el-tree <el-tree
:data='treeData' :data="treeData"
:props='defaultProps' :props="defaultProps"
ref='tree' ref="tree"
highlight-current highlight-current
:node-key="'statusCode'" :node-key="'statusCode'"
:expand-on-click-node='false' :expand-on-click-node="false"
default-expand-all default-expand-all
@node-click='handleNodeClick' @node-click="handleNodeClick"
> >
<span <span
class='custom-tree-node' class="custom-tree-node"
slot-scope='{ node, data }' slot-scope="{ node, data }"
> >
<span v-html='node.label'></span> <span v-html="node.label"></span>
<span>({{ data.quantity }})</span> <span>({{ data.quantity }})</span>
</span> </span>
</el-tree> </el-tree>
</div> </div>
<div class='page_right'> <div class="page_right">
<el-form <el-form
v-show='is_tab == 1' v-show="is_tab == 1"
:model='searchForm' :model="searchForm"
size='mini' size="mini"
v-enter-submit='getlist' v-enter-submit="getlist"
:inline='true' :inline="true"
ref='form' ref="form"
class='search_form' class="search_form"
> >
<el-form-item> <el-form-item>
<el-select <el-select
v-model='searchForm.prop' v-model="searchForm.prop"
placeholder='请选择' placeholder="请选择"
clearable clearable
style='width: 88px' style="width: 88px"
> >
<el-option <el-option
label='开始时间' label="开始时间"
value='startTime' value="startTime"
></el-option> ></el-option>
<el-option <el-option
label='创建时间' label="创建时间"
value='createTime' value="createTime"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<choose-time-period <choose-time-period
v-model='periodTime' v-model="periodTime"
></choose-time-period> ></choose-time-period>
</el-form-item> </el-form-item>
<el-form-item label='工单编号'> <el-form-item label="工单编号">
<el-input <el-input
style='width: 110px' style="width: 110px"
v-model='searchForm.orderNo' v-model="searchForm.orderNo"
placeholder='请输入' placeholder="请输入"
clearable clearable
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label='工单标题'> <el-form-item label="工单标题">
<el-input <el-input
style='width: 110px' style="width: 110px"
v-model='searchForm.title' v-model="searchForm.title"
placeholder='请输入' placeholder="请输入"
clearable clearable
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label='工单类型'> <el-form-item label="工单类型">
<el-select <el-select
v-model='searchForm.orderType' v-model="searchForm.orderType"
style='width: 110px' style="width: 110px"
value-key='' value-key=""
placeholder='请选择' placeholder="请选择"
clearable clearable
filterable filterable
> >
<el-option <el-option
v-for='(type, index) in orderTypes' v-for="(type, index) in orderTypes"
:key='index' :key="index"
:label='type.value' :label="type.value"
:value='type.key' :value="type.key"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label='负责人/参与人' v-if="!(statusCode=== 'PRE_HANDLING'||statusCode==='TO_BE_ASSIGN')"> <el-form-item
label="负责人/参与人"
v-if="
!(
statusCode === 'PRE_HANDLING' ||
statusCode === 'TO_BE_ASSIGN'
)
"
>
<el-select <el-select
style='width: 150px' style="width: 150px"
placeholder='请选择' placeholder="请选择"
clearable clearable
multiple multiple
collapse-tags collapse-tags
v-model='searchForm.leaderAndParticipator' v-model="searchForm.leaderAndParticipator"
> >
<el-option <el-option
v-for='user in userList' v-for="user in userList"
:key='user.id' :key="user.id"
:label='user.realName' :label="user.realName"
:value='user.id' :value="user.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label='验收人' v-if="!(statusCode=== 'PRE_HANDLING'||statusCode==='TO_BE_ASSIGN')"> <el-form-item
label="验收人"
v-if="
!(
statusCode === 'PRE_HANDLING' ||
statusCode === 'TO_BE_ASSIGN'
)
"
>
<el-select <el-select
style='width: 110px' style="width: 110px"
placeholder='请选择' placeholder="请选择"
clearable clearable
v-model='searchForm.acceptanceUserId' v-model="searchForm.acceptanceUserId"
> >
<el-option <el-option
v-for='user in userList' v-for="user in userList"
:key='user.id' :key="user.id"
:label='user.realName' :label="user.realName"
:value='user.id' :value="user.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label='优先级'> <el-form-item label="优先级">
<el-select <el-select
style='width: 110px' style="width: 110px"
filterable filterable
clearable clearable
v-model='searchForm.priorityStatus' v-model="searchForm.priorityStatus"
placeholder='请选择' placeholder="请选择"
> >
<el-option <el-option
v-for='(priorityStatus, v-for="(priorityStatus,
index) in priorityStatusList' index) in priorityStatusList"
:key='index' :key="index"
:value='priorityStatus.value' :value="priorityStatus.value"
:label='priorityStatus.name' :label="priorityStatus.name"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label='沟通状态'> <el-form-item label="沟通状态">
<el-select <el-select
v-model='searchForm.sign' v-model="searchForm.sign"
placeholder='请选择' placeholder="请选择"
style='width: 110px' style="width: 110px"
clearable clearable
> >
<el-option <el-option
label='待回复' label="待回复"
:value='1' :value="1"
></el-option> ></el-option>
<el-option <el-option
label='已回复' label="已回复"
:value='0' :value="0"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label> <el-form-item label>
<el-button <el-button
@click='getlist()' @click="getlist()"
type='primary' type="primary"
size='mini' size="mini"
> >
查询 查询
</el-button> </el-button>
</el-form-item> </el-form-item>
<el-form-item v-if="statusCode === 'PRE_HANDLING'"> <el-form-item v-if="statusCode === 'PRE_HANDLING'">
<el-button <el-button
type='success' type="success"
size='mini' size="mini"
@click='addData' @click="addData"
>新增 >新增
</el-button </el-button>
>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class='table-wrap' v-loading='loading'> <div class="table-wrap" v-loading="loading">
<table-view <table-view
:tableColumns='tableColumns' :tableColumns="tableColumns"
:sourceData='sourceData' :sourceData="sourceData"
:cellClassName='cellClassName' :cellClassName="cellClassName"
:cellStyle='cellStyle' :cellStyle="cellStyle"
@sortChange='sortChange' @sortChange="sortChange"
> >
</table-view> </table-view>
</div> </div>
<div class='pagination'> <div class="pagination">
<el-pagination <el-pagination
layout='sizes, total, prev, pager, next, jumper' layout="sizes, total, prev, pager, next, jumper"
background background
:total='centerPageOptions.total' :total="centerPageOptions.total"
:page-size='centerPageOptions.pageSize' :page-size="centerPageOptions.pageSize"
:current-page='centerPageOptions.currentPage' :current-page="centerPageOptions.currentPage"
@size-change='sizeChange' @size-change="sizeChange"
@current-change='onCurrentChange' @current-change="onCurrentChange"
> >
</el-pagination> </el-pagination>
</div> </div>
</div> </div>
<!-- 详情 --> <!-- 详情 -->
<el-dialog <el-dialog
:close-on-click-modal='false' :close-on-click-modal="false"
:visible.sync='detailVisible' :visible.sync="detailVisible"
class='dialogDetail' class="dialogDetail"
:class="[dialogFullScreen ? 'fullscreen' : 'no_fullscreen']" :class="[
:fullscreen='dialogFullScreen' dialogFullScreen ? 'fullscreen' : 'no_fullscreen',
@close='getlist()' ]"
:fullscreen="dialogFullScreen"
@close="getlist()"
> >
<!-- <div class="step-bar"> <!-- <div class="step-bar">
step-pass 已经完成,step-active当前步骤 step-pass 已经完成,step-active当前步骤
...@@ -259,46 +276,49 @@ ...@@ -259,46 +276,49 @@
<span>已归档</span> <span>已归档</span>
</div> </div>
</div> --> </div> -->
<template slot='title'> <template slot="title">
<div class='custom_dialog_header'> <div class="custom_dialog_header">
<span class='el_dialog_title'>详情</span> <span class="el_dialog_title">详情</span>
<div class='custom_dialog_menu' @click='dialogFullScreen = !dialogFullScreen' <div
style='text-align: right;margin-top: 11px'> class="custom_dialog_menu"
<i class='el-icon-full-screen'></i> @click="dialogFullScreen = !dialogFullScreen"
style="text-align: right;margin-top: 11px"
>
<i class="el-icon-full-screen"></i>
</div> </div>
</div> </div>
</template> </template>
<div class='content' v-loading='detailLoading'> <div class="content" v-loading="detailLoading">
<div class='detail_list'> <div class="detail_list">
<div class='item_wrap'> <div class="item_wrap">
<p class='item' style='width: 100%'> <p class="item" style="width: 100%">
<span class='label'>工单标题</span> <span class="label">工单标题</span>
<span class='value' style='width: 732px'>{{ <span class="value" style="width: 732px">{{
detail.title detail.title
}}</span> }}</span>
</p> </p>
<p class='item'> <p class="item">
<span class='label'>工单编码</span> <span class="label">工单编码</span>
<span class='value'>{{ <span class="value">{{
detail.orderNo detail.orderNo
}}</span> }}</span>
</p> </p>
<p class='item'> <p class="item">
<span class='label'>工单类型</span> <span class="label">工单类型</span>
<span class='value'> <span class="value">
{{ detail.orderTypeTxt }} {{ detail.orderTypeTxt }}
</span> </span>
</p> </p>
<p class='item'> <p class="item">
<span class='label'>工单状态</span> <span class="label">工单状态</span>
<span class='value'> <span class="value">
{{ detail.orderStatusTxt }} {{ detail.orderStatusTxt }}
</span> </span>
</p> </p>
<p class='item'> <p class="item">
<span class='label'>优先级</span> <span class="label">优先级</span>
<span class='value'> <span class="value">
{{ {{
handlePriorityStatus( handlePriorityStatus(
detail.priorityStatus, detail.priorityStatus,
...@@ -307,88 +327,94 @@ ...@@ -307,88 +327,94 @@
</span> </span>
</p> </p>
<p <p
class='item' class="item"
style='width: 100%; display: flex' style="width: 100%; display: flex"
> >
<span class='label'>工单内容</span> <span class="label">工单内容</span>
<span <span
style='flex: 1; display: inline-block;max-width: 84%;' style="flex: 1; display: inline-block;max-width: 84%;"
class='value' class="value"
@click.stop='hanldeImage($event)' @click.stop="hanldeImage($event)"
v-html='detail.content' v-html="detail.content"
></span> ></span>
<el-image-viewer <el-image-viewer
v-if='imgPreviewUrl' v-if="imgPreviewUrl"
:initial-index='subscript' :initial-index="subscript"
:src='imgPreviewUrl' :src="imgPreviewUrl"
:on-close='closeViewer' :on-close="closeViewer"
:url-list='imgList' :url-list="imgList"
style='z-index: 3000' style="z-index: 3000"
></el-image-viewer> ></el-image-viewer>
</p> </p>
</div> </div>
<div <div
style='padding: 5px; overflow: auto' style="padding: 5px; overflow: auto"
v-html='detail.taskContent' v-html="detail.taskContent"
@click='fullScreenDisplay' @click="fullScreenDisplay"
></div> ></div>
</div> </div>
<div class='record'> <div class="record">
<div class='title'>备注</div> <div class="title">备注</div>
<ul class='chat_content'> <ul class="chat_content">
<el-input <el-input
style='width: 95%' style="width: 94%"
type='textarea' type="textarea"
:rows='4' :rows="4"
v-model='detail.remark' v-model="detail.remark"
placeholder='备注' placeholder="备注"
></el-input> ></el-input>
<el-button type='success' size='mini' @click='saveRemark' v-if='detail.remark' style='margin-left: 8px'> <el-button
type="success"
size="mini"
@click="saveRemark"
v-if="detail.remark"
style="margin-left: 8px"
>
保存 保存
</el-button> </el-button>
</ul> </ul>
</div> </div>
<div class='record'> <div class="record">
<div class='title'>沟通记录</div> <div class="title">沟通记录</div>
<ul <ul
class='chat_content' class="chat_content"
v-if='chatRecord.length > 0' v-if="chatRecord.length > 0"
> >
<li <li
v-for='(item, index) in chatRecord' v-for="(item, index) in chatRecord"
:key='index' :key="index"
class='chat_item' class="chat_item"
:class='{ chat_right: item.type === 2 }' :class="{ chat_right: item.type === 2 }"
> >
<div class='chat_warp' v-if='item.type === 2'> <div class="chat_warp" v-if="item.type === 2">
<div class='chat_user'> <div class="chat_user">
<div class='chat_user_time'> <div class="chat_user_time">
{{ {{
item.createTime item.createTime
}}&nbsp;&nbsp;&nbsp;&nbsp;客服 }}&nbsp;&nbsp;&nbsp;&nbsp;客服
</div> </div>
<div class='chat_text'> <div class="chat_text">
{{ item.msg }} {{ item.msg }}
</div> </div>
</div> </div>
<div class='chat_icon'> <div class="chat_icon">
<img <img
width='100%' width="100%"
src='http://img.alicdn.com/tfs/TB14feR0AL0gK0jSZFAXXcA9pXa-64-64.png' src="http://img.alicdn.com/tfs/TB14feR0AL0gK0jSZFAXXcA9pXa-64-64.png"
alt='' alt=""
/> />
</div> </div>
</div> </div>
<div v-else class='chat_warp'> <div v-else class="chat_warp">
<div class='chat_icon'> <div class="chat_icon">
<img <img
width='100%' width="100%"
src='http://img.alicdn.com/tfs/TB14feR0AL0gK0jSZFAXXcA9pXa-64-64.png' src="http://img.alicdn.com/tfs/TB14feR0AL0gK0jSZFAXXcA9pXa-64-64.png"
alt='' alt=""
/> />
</div> </div>
<div class='chat_user'> <div class="chat_user">
<div class='chat_user_time'> <div class="chat_user_time">
{{ {{
item.sendUserName item.sendUserName
}}:&nbsp;&nbsp;&nbsp;&nbsp;{{ }}:&nbsp;&nbsp;&nbsp;&nbsp;{{
...@@ -396,210 +422,290 @@ ...@@ -396,210 +422,290 @@
}} }}
</div> </div>
<div class='chat_text'> <div class="chat_text">
{{ item.msg }} {{ item.msg }}
</div> </div>
</div> </div>
</div> </div>
</li> </li>
</ul> </ul>
<div class='empty-data' v-else>暂无数据</div> <div class="empty-data" v-else>暂无数据</div>
</div> </div>
</div> </div>
<div style='margin-top: 10px'> <div style="margin-top: 10px">
<div> <div>
<el-input <el-input
type='textarea' type="textarea"
:rows='4' :rows="4"
maxlength='1000' maxlength="1000"
placeholder='请输入内容' placeholder="请输入内容"
v-model='textarea' v-model="textarea"
> >
</el-input> </el-input>
</div> </div>
<div style='margin-top: 10px; text-align: right'> <div style="margin-top: 10px; text-align: right">
<el-button <el-button
size='mini' size="mini"
type='primary' type="primary"
@click='reply' @click="reply"
>回复 >回复
</el-button </el-button>
>
<el-button <el-button
size='mini' size="mini"
type='success' type="success"
v-if="statusCode === 'PRE_HANDLING'" v-if="statusCode === 'PRE_HANDLING'"
@click='confirm' @click="confirm"
>受理 >受理
</el-button </el-button>
>
<el-button <el-button
size='mini' size="mini"
type='danger' type="danger"
v-if="statusCode === 'PRE_HANDLING'" v-if="statusCode === 'PRE_HANDLING'"
@click='closeForPendingDialog' @click="closeForPendingDialog"
>不受理 >不受理
</el-button </el-button>
>
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
<edit <edit
:editDialog.sync='editDialog' :editDialog.sync="editDialog"
@onSubmit='onSubmit' @onSubmit="onSubmit"
@onChangeModule='onChangeModule' @onChangeModule="onChangeModule"
:editForm='editForm' :editForm="editForm"
:orderTypes='orderTypes' :orderTypes="orderTypes"
:isEdit='isEdit' :isEdit="isEdit"
:editFlag='editFlag' :editFlag="editFlag"
ref='edit' ref="edit"
></edit> ></edit>
<!-- 修改参与人 -->
<el-dialog
title="修改参与人"
:close-on-click-modal="false"
:visible.sync="updateVisible"
width="900px"
>
<el-form
:inline="true"
size="mini"
:model="updateForm"
ref="updateForm"
:rules="updateFormRules"
label-width="130px"
>
<el-form-item label="负责人" prop="leaders">
<el-select
style="width: 100%"
size="small"
v-model="updateForm.leaders"
>
<el-option
v-for="user in userList"
:key="user.id"
:label="user.realName"
:value="user.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="参与人" prop="participator">
<el-select
style="width: 100%"
size="small"
v-model="updateForm.participator"
multiple
>
<el-option
v-for="user in userList"
:key="user.id"
:label="user.realName"
:value="user.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label="验收人"
prop="acceptanceUserId"
>
<el-select
style="width: 100%"
size="small"
v-model="updateForm.acceptanceUserId"
>
<el-option
v-for="user in userList"
:key="user.id"
:label="user.realName"
:value="user.id"
></el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer">
<el-button
size="mini"
@click="updateVisible = false"
>取消</el-button
>
<el-button
size="mini"
type="primary"
@click="submitUpdate"
>确定</el-button
>
</span>
</el-dialog>
<!-- 指派 --> <!-- 指派 -->
<el-dialog <el-dialog
title='指派给' title="指派给"
:close-on-click-modal='false' :close-on-click-modal="false"
:visible.sync='assignVisible' :visible.sync="assignVisible"
width='900px' width="900px"
> >
<el-form <el-form
:inline='true' :inline="true"
size='mini' size="mini"
:model='assignForm' :model="assignForm"
ref='assignForm' ref="assignForm"
:rules='assignFormRules' :rules="assignFormRules"
label-width='130px' label-width="130px"
> >
<el-form-item label='负责人' prop='leaders'> <el-form-item label="负责人" prop="leaders">
<el-select <el-select
style='width: 100%' style="width: 100%"
size='small' size="small"
v-model='assignForm.leaders' v-model="assignForm.leaders"
> >
<el-option <el-option
v-for='user in userList' v-for="user in userList"
:key='user.id' :key="user.id"
:label='user.realName' :label="user.realName"
:value='user.id' :value="user.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label='参与人' prop='participator'> <el-form-item label="参与人" prop="participator">
<el-select <el-select
style='width: 100%' style="width: 100%"
size='small' size="small"
v-model='assignForm.participator' v-model="assignForm.participator"
multiple multiple
> >
<el-option <el-option
v-for='user in userList' v-for="user in userList"
:key='user.id' :key="user.id"
:label='user.realName' :label="user.realName"
:value='user.id' :value="user.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
label='验收人' label="验收人"
prop='acceptanceUserId' prop="acceptanceUserId"
> >
<el-select <el-select
style='width: 100%' style="width: 100%"
size='small' size="small"
v-model='assignForm.acceptanceUserId' v-model="assignForm.acceptanceUserId"
> >
<el-option <el-option
v-for='user in userList' v-for="user in userList"
:key='user.id' :key="user.id"
:label='user.realName' :label="user.realName"
:value='user.id' :value="user.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot='footer'> <span slot="footer">
<el-button <el-button
size='mini' size="mini"
@click='assignVisible = false' @click="assignVisible = false"
>取消</el-button >取消</el-button
> >
<el-button <el-button
size='mini' size="mini"
type='primary' type="primary"
@click='submitAssign' @click="submitAssign"
>确定</el-button >确定</el-button
> >
</span> </span>
</el-dialog> </el-dialog>
<el-dialog <el-dialog
title='预计完成时间' title="预计完成时间"
:visible.sync='completeVisible' :visible.sync="completeVisible"
width='500px' width="500px"
:close-on-click-modal='false' :close-on-click-modal="false"
> >
<el-form size='mini' :rules='addRules' :model='ruleForm' ref='ruleForm'> <el-form
<el-form-item label='预计完成时间' prop='estimateCompleteTime'> size="mini"
:rules="addRules"
:model="ruleForm"
ref="ruleForm"
>
<el-form-item
label="预计完成时间"
prop="estimateCompleteTime"
>
<el-date-picker <el-date-picker
style='width: 100%' style="width: 100%"
v-model='ruleForm.estimateCompleteTime' v-model="ruleForm.estimateCompleteTime"
value-format='yyyy-MM-dd HH:mm:ss' value-format="yyyy-MM-dd HH:mm:ss"
type='datetime' type="datetime"
default-time='23:59:59' default-time="23:59:59"
placeholder='选择日期' placeholder="选择日期"
:picker-options='pickerOptions' :picker-options="pickerOptions"
></el-date-picker> ></el-date-picker>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot='footer'> <span slot="footer">
<el-button <el-button
size='small' size="small"
@click='completeVisible = false' @click="completeVisible = false"
>取消</el-button >取消</el-button
> >
<el-button <el-button
size='small' size="small"
type='primary' type="primary"
@click='submitTime' @click="submitTime"
>确认</el-button >确认</el-button
> >
</span> </span>
</el-dialog> </el-dialog>
<!-- 指派 --> <!-- 指派 -->
<el-dialog <el-dialog
title='验收' title="验收"
:close-on-click-modal='false' :close-on-click-modal="false"
:visible.sync='acceptVisible' :visible.sync="acceptVisible"
width='800px' width="800px"
> >
<el-form <el-form
:inline='true' :inline="true"
size='mini' size="mini"
:model='acceptForm' :model="acceptForm"
ref='acceptForm' ref="acceptForm"
:rules='acceptFormRules' :rules="acceptFormRules"
label-width='110px' label-width="110px"
> >
<el-form-item <el-form-item
label='验收结果' label="验收结果"
prop='acceptanceResult' prop="acceptanceResult"
> >
<el-radio-group <el-radio-group
v-model='acceptForm.acceptanceResult' v-model="acceptForm.acceptanceResult"
size='small' size="small"
style='width: 100%' style="width: 100%"
> >
<el-radio <el-radio
:label='item.value' :label="item.value"
v-for='(item, index) in acceptanceResultList' v-for="(item, index) in acceptanceResultList"
:key='index' :key="index"
>{{ item.label }} >{{ item.label }}
</el-radio </el-radio>
>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
label='验收意见' label="验收意见"
prop='acceptanceContent' prop="acceptanceContent"
:rules="[ :rules="[
{ {
required: required:
...@@ -612,46 +718,46 @@ ...@@ -612,46 +718,46 @@
]" ]"
> >
<el-input <el-input
type='textarea' type="textarea"
:autosize='{ minRows: 4 }' :autosize="{ minRows: 4 }"
style='width:400px' style="width:400px"
placeholder='请输入内容' placeholder="请输入内容"
v-model='acceptForm.acceptanceContent' v-model="acceptForm.acceptanceContent"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot='footer'> <span slot="footer">
<el-button <el-button
size='mini' size="mini"
@click='acceptVisible = false' @click="acceptVisible = false"
>取消</el-button >取消</el-button
> >
<el-button <el-button
size='mini' size="mini"
type='primary' type="primary"
@click='submitAccept' @click="submitAccept"
>确定</el-button >确定</el-button
> >
</span> </span>
</el-dialog> </el-dialog>
<!-- 不受理 --> <!-- 不受理 -->
<el-dialog <el-dialog
title='不受理' title="不受理"
:close-on-click-modal='false' :close-on-click-modal="false"
:visible.sync='pendingVisible' :visible.sync="pendingVisible"
width='800px' width="800px"
> >
<el-form <el-form
:inline='true' :inline="true"
size='mini' size="mini"
:model='pendingForm' :model="pendingForm"
ref='pendingForm' ref="pendingForm"
label-width='110px' label-width="110px"
> >
<el-form-item <el-form-item
label='原因' label="原因"
prop='closeReason' prop="closeReason"
:rules="[ :rules="[
{ {
required: true, required: true,
...@@ -661,26 +767,26 @@ ...@@ -661,26 +767,26 @@
]" ]"
> >
<el-input <el-input
type='textarea' type="textarea"
:autosize='{ minRows: 4 }' :autosize="{ minRows: 4 }"
style='width:400px' style="width:400px"
placeholder='请输入' placeholder="请输入"
v-model='pendingForm.closeReason' v-model="pendingForm.closeReason"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot='footer'> <span slot="footer">
<el-button <el-button
size='mini' size="mini"
@click='pendingVisible = false' @click="pendingVisible = false"
>取消</el-button >取消</el-button
> >
<el-button <el-button
size='mini' size="mini"
type='primary' type="primary"
@click='submitPending' @click="submitPending"
>确定</el-button >确定</el-button
> >
</span> </span>
</el-dialog> </el-dialog>
...@@ -697,6 +803,7 @@ import { ...@@ -697,6 +803,7 @@ import {
getOrderTree, getOrderTree,
workConfirmed, workConfirmed,
workAssigned, workAssigned,
reallocate,
startWorder, startWorder,
archiveWorkOrder, archiveWorkOrder,
completeWorkOrder, completeWorkOrder,
...@@ -714,6 +821,7 @@ import { ...@@ -714,6 +821,7 @@ import {
import { getSystemUserList } from '@/common/api/system' import { getSystemUserList } from '@/common/api/system'
import { mapState } from 'vuex' import { mapState } from 'vuex'
// import confirmWork from '@/assets/work/confirm.png' // import confirmWork from '@/assets/work/confirm.png'
import updatePatorName from '@/assets/work/PatorName.png'
import assignWork from '@/assets/work/assign.png' import assignWork from '@/assets/work/assign.png'
import startWork from '@/assets/work/start.png' import startWork from '@/assets/work/start.png'
import archiveWork from '@/assets/work/archive.png' import archiveWork from '@/assets/work/archive.png'
...@@ -761,6 +869,31 @@ export default { ...@@ -761,6 +869,31 @@ export default {
return time.getTime() < Date.now() - 8.64e7 return time.getTime() < Date.now() - 8.64e7
}, },
}, },
updateForm: {},
updateVisible: false,
updateFormRules: {
leaders: [
{
required: true,
message: '请选择负责人',
trigger: 'blur',
},
],
fromUser: [
{
required: true,
message: '请选择参与人',
trigger: 'blur',
},
],
acceptanceUserId: [
{
required: true,
message: '请选择验收人',
trigger: 'blur',
},
],
},
assignFormRules: { assignFormRules: {
leaders: [ leaders: [
{ {
...@@ -892,13 +1025,13 @@ export default { ...@@ -892,13 +1025,13 @@ export default {
minWidth: 120, minWidth: 120,
align: 'left', align: 'left',
render: item => ( render: item => (
<span style='position: relative;'> <span style="position: relative;">
<span>{item.title}</span> <span>{item.title}</span>
{item.sign === 1 && {item.sign === 1 &&
item.orderStatus === 'PRE_HANDLING' && ( item.orderStatus === 'PRE_HANDLING' && (
<i <i
class='el-icon-info' class="el-icon-info"
title='待回复' title="待回复"
></i> ></i>
)} )}
</span> </span>
...@@ -925,27 +1058,27 @@ export default { ...@@ -925,27 +1058,27 @@ export default {
? String(item.priorityStatus) ? String(item.priorityStatus)
: '' : ''
return ( return (
<div class='priorityStatus-select'> <div class="priorityStatus-select">
<el-select <el-select
v-model={item.priorityStatus} v-model={item.priorityStatus}
placeholder='' placeholder=""
onChange={v => this.setStatus(item, v)} onChange={v => this.setStatus(item, v)}
> >
<el-option <el-option
label='' label=""
value='' value=""
></el-option> ></el-option>
<el-option <el-option
label='低' label="低"
value='1' value="1"
></el-option> ></el-option>
<el-option <el-option
label='中' label="中"
value='2' value="2"
></el-option> ></el-option>
<el-option <el-option
label='高' label="高"
value='3' value="3"
></el-option> ></el-option>
</el-select> </el-select>
</div> </div>
...@@ -974,13 +1107,19 @@ export default { ...@@ -974,13 +1107,19 @@ export default {
{ {
label: '负责人', label: '负责人',
key: 'leaderNames', key: 'leaderNames',
show: !(this.statusCode === 'PRE_HANDLING' || this.statusCode === 'TO_BE_ASSIGN'), show: !(
this.statusCode === 'PRE_HANDLING' ||
this.statusCode === 'TO_BE_ASSIGN'
),
width: 80, width: 80,
}, },
{ {
label: '参与人', label: '参与人',
key: 'participatorName', key: 'participatorName',
show: !(this.statusCode === 'PRE_HANDLING' || this.statusCode === 'TO_BE_ASSIGN'), show: !(
this.statusCode === 'PRE_HANDLING' ||
this.statusCode === 'TO_BE_ASSIGN'
),
width: 80, width: 80,
}, },
{ {
...@@ -990,12 +1129,6 @@ export default { ...@@ -990,12 +1129,6 @@ export default {
width: 80, width: 80,
}, },
{ {
label: '验收意见',
key: 'acceptanceContent',
show: this.statusCode === 'ACCEPTANCEING',
width: 80,
},
{
label: '创建时间', label: '创建时间',
key: 'createTime', key: 'createTime',
sortable: true, sortable: true,
...@@ -1004,7 +1137,10 @@ export default { ...@@ -1004,7 +1137,10 @@ export default {
{ {
label: '开始时间', label: '开始时间',
key: 'startTime', key: 'startTime',
show: !(this.statusCode === 'PRE_HANDLING' || this.statusCode === 'TO_BE_ASSIGN'), show: !(
this.statusCode === 'PRE_HANDLING' ||
this.statusCode === 'TO_BE_ASSIGN'
),
width: 130, width: 130,
}, },
{ {
...@@ -1015,25 +1151,37 @@ export default { ...@@ -1015,25 +1151,37 @@ export default {
{ {
label: '预计完成时间', label: '预计完成时间',
key: 'estimateCompleteTime', key: 'estimateCompleteTime',
show: !(this.statusCode === 'PRE_HANDLING' || this.statusCode === 'TO_BE_ASSIGN'), show: !(
this.statusCode === 'PRE_HANDLING' ||
this.statusCode === 'TO_BE_ASSIGN'
),
width: 130, width: 130,
}, },
{ {
label: '验收时间', label: '验收时间',
key: 'acceptanceTime', key: 'acceptanceTime',
show: !(this.statusCode === 'PRE_HANDLING' || this.statusCode === 'TO_BE_ASSIGN'), show: !(
this.statusCode === 'PRE_HANDLING' ||
this.statusCode === 'TO_BE_ASSIGN'
),
width: 130, width: 130,
}, },
{ {
label: '完成时间', label: '完成时间',
key: 'completeTime', key: 'completeTime',
show: !(this.statusCode === 'PRE_HANDLING' || this.statusCode === 'TO_BE_ASSIGN'), show: !(
this.statusCode === 'PRE_HANDLING' ||
this.statusCode === 'TO_BE_ASSIGN'
),
width: 130, width: 130,
}, },
{ {
label: '用户评价', label: '用户评价',
key: 'evaluations', key: 'evaluations',
show: !(this.statusCode === 'PRE_HANDLING' || this.statusCode === 'TO_BE_ASSIGN'), show: !(
this.statusCode === 'PRE_HANDLING' ||
this.statusCode === 'TO_BE_ASSIGN'
),
width: 140, width: 140,
}, },
{ {
...@@ -1044,12 +1192,19 @@ export default { ...@@ -1044,12 +1192,19 @@ export default {
{ {
label: '验收人', label: '验收人',
key: 'acceptanceUserName', key: 'acceptanceUserName',
show: !(this.statusCode === 'PRE_HANDLING' || this.statusCode === 'TO_BE_ASSIGN' || this.statusCode === 'ACCEPTANCEING'), show: !(
this.statusCode === 'PRE_HANDLING' ||
this.statusCode === 'TO_BE_ASSIGN' ||
this.statusCode === 'ACCEPTANCEING'
),
width: 80, width: 80,
}, },
{ {
label: '验收意见', label: '验收意见',
show: !(this.statusCode === 'PRE_HANDLING' || this.statusCode === 'TO_BE_ASSIGN' || this.statusCode === 'ACCEPTANCEING'), show: !(
this.statusCode === 'PRE_HANDLING' ||
this.statusCode === 'TO_BE_ASSIGN'
),
key: 'acceptanceContent', key: 'acceptanceContent',
width: 80, width: 80,
}, },
...@@ -1077,68 +1232,71 @@ export default { ...@@ -1077,68 +1232,71 @@ export default {
{ {
label: '操作', label: '操作',
fixed: 'right', fixed: 'right',
width: 120, width: this.columnWidth(),
align: 'center', align: 'center',
render: item => ( render: item => (
<span> <span>
{ {
<span <span
title='详情' title="详情"
class='icon-view icon-tools-view' class="icon-view icon-tools-view"
> >
<i <i
class='el-icon-tickets' class="el-icon-tickets"
onClick={() => this.showDetail(item)} onClick={() => this.showDetail(item)}
></i> ></i>
</span> </span>
} }
{(item.orderStatus === 'PRE_HANDLING') && ( {item.orderStatus === 'PRE_HANDLING' && (
<span title='修改' class='icon-view'> <span title="修改" class="icon-view">
<img <img
width='24' width="24"
height='24' height="24"
src={updateWork} src={updateWork}
onClick={() => this.update(item)} onClick={() => this.update(item)}
/> />
</span> </span>
)} )}
{item.orderStatus === 'TO_BE_ASSIGN' && ( {item.orderStatus === 'TO_BE_ASSIGN' && (
<span title='指派给' class='icon-view'> <span title="指派给" class="icon-view">
<img <img
width='24' width="24"
height='24' height="24"
src={assignWork} src={assignWork}
onClick={() => this.showAssign(item)} onClick={() => this.showAssign(item)}
/> />
</span> </span>
)} )}
{item.orderStatus === 'IN_PROGRESS' && ( {item.orderStatus === 'IN_PROGRESS' && (
<span title='暂停' class='icon-view'> <span title="修改参与人" class="icon-view">
<img <img
width='24' width="24"
height='24' height="24"
src={pauseWork} src={updatePatorName}
onClick={() => this.pause(item)} onClick={() => this.showUpdate(item)}
/> />
</span> </span>
)} )}
{item.orderStatus === 'PAUSEING' && ( {item.orderStatus === 'PAUSEING' && (
<span title='恢复' class='icon-view'> <span title="恢复" class="icon-view">
<img <img
width='24' width="24"
height='24' height="24"
src={resumetWork} src={resumetWork}
onClick={() => this.resume(item)} onClick={() => this.resume(item)}
/> />
</span> </span>
)} )}
{item.orderStatus === 'TO_BE_CONFIRMED' && {item.orderStatus === 'TO_BE_CONFIRMED' &&
Number(item.leaders) === item.leaders &&
this.userInfo.id && ( item.leaders
<span title='开始' class='icon-view'> .split(',')
.map(e => +e)
.includes(this.userInfo.id) && (
<span title="开始" class="icon-view">
<img <img
width='24' width="24"
height='24' height="24"
src={startWork} src={startWork}
onClick={() => onClick={() =>
this.startWorkOrder(item) this.startWorkOrder(item)
...@@ -1147,41 +1305,42 @@ export default { ...@@ -1147,41 +1305,42 @@ export default {
</span> </span>
)} )}
{item.orderStatus === 'CLOSED' && ( {item.orderStatus === 'CLOSED' && (
<span title='归档' class='icon-view'> <span title="归档" class="icon-view">
<img <img
width='24' width="24"
height='24' height="24"
src={archiveWork} src={archiveWork}
onClick={() => this.archive(item)} onClick={() => this.archive(item)}
/> />
</span> </span>
)} )}
{item.orderStatus === 'IN_PROGRESS' && ( {item.orderStatus === 'IN_PROGRESS' && (
<span title='处理完成' class='icon-view'> <span title="处理完成" class="icon-view">
<img <img
width='24' width="24"
height='24' height="24"
src={completeWork} src={completeWork}
onClick={() => this.complete(item)} onClick={() => this.complete(item)}
/> />
</span> </span>
)} )}
{item.orderStatus === 'ACCEPTANCEING' && Number(item.acceptanceUserId) === {item.orderStatus === 'ACCEPTANCEING' &&
this.userInfo.id && ( Number(item.acceptanceUserId) ===
<span title='已完成' class='icon-view'> this.userInfo.id && (
<img <span title="已完成" class="icon-view">
width='24' <img
height='24' width="24"
src={anceingWork} height="24"
onClick={() => this.anceing(item)} src={anceingWork}
/> onClick={() => this.anceing(item)}
</span> />
</span>
)} )}
{item.orderStatus === 'IN_COMPLETE' && ( {item.orderStatus === 'IN_COMPLETE' && (
<span title='关闭' class='icon-view'> <span title="关闭" class="icon-view">
<img <img
width='24' width="24"
height='24' height="24"
src={closetWork} src={closetWork}
onClick={() => this.close(item)} onClick={() => this.close(item)}
/> />
...@@ -1191,15 +1350,25 @@ export default { ...@@ -1191,15 +1350,25 @@ export default {
item.orderStatus === 'TO_BE_CONFIRMED' || item.orderStatus === 'TO_BE_CONFIRMED' ||
item.orderStatus === 'IN_PROGRESS' || item.orderStatus === 'IN_PROGRESS' ||
item.orderStatus === 'IN_COMPLETE') && ( item.orderStatus === 'IN_COMPLETE') && (
<span title='驳回' class='icon-view'> <span title="驳回" class="icon-view">
<img <img
width='24' width="24"
height='24' height="24"
src={rejectWork} src={rejectWork}
onClick={() => this.reject(item)} onClick={() => this.reject(item)}
/> />
</span> </span>
)} )}
{item.orderStatus === 'IN_PROGRESS' && (
<span title="暂停" class="icon-view">
<img
width="24"
height="24"
src={pauseWork}
onClick={() => this.pause(item)}
/>
</span>
)}
</span> </span>
), ),
}, },
...@@ -1207,6 +1376,22 @@ export default { ...@@ -1207,6 +1376,22 @@ export default {
}, },
}, },
methods: { methods: {
columnWidth() {
if (this.statusCode === 'IN_PROGRESS') {
return '160'
} else if (this.statusCode === 'ARCHIVE') {
return '70'
} else if (
this.statusCode === 'PRE_HANDLING' ||
this.statusCode === 'PAUSEING' ||
this.statusCode === 'ACCEPTANCEING' ||
this.statusCode === 'CLOSED'
) {
return '90'
} else {
return '120'
}
},
// 排序 // 排序
sortChange(column) { sortChange(column) {
if (column.order === 'asc') { if (column.order === 'asc') {
...@@ -1220,10 +1405,7 @@ export default { ...@@ -1220,10 +1405,7 @@ export default {
设置优先级 设置优先级
*/ */
setStatus(data, i) { setStatus(data, i) {
const { const { id, priorityStatus } = data
id,
priorityStatus,
} = data
axios axios
.post('platform/platformWorkOrder/updatePriority', { .post('platform/platformWorkOrder/updatePriority', {
id, id,
...@@ -1251,7 +1433,7 @@ export default { ...@@ -1251,7 +1433,7 @@ export default {
this.isEdit = false this.isEdit = false
this.editDialog = true this.editDialog = true
this.$refs.editForm && this.$refs.editForm &&
this.$refs.editForm.resetFields() this.$refs.editForm.resetFields()
}, },
update(v) { update(v) {
getInfo(v.id).then(res => { getInfo(v.id).then(res => {
...@@ -1266,7 +1448,7 @@ export default { ...@@ -1266,7 +1448,7 @@ export default {
this.isEdit = true this.isEdit = true
this.editDialog = true this.editDialog = true
this.$refs.editForm && this.$refs.editForm &&
this.$refs.editForm.resetFields() this.$refs.editForm.resetFields()
} }
}) })
}, },
...@@ -1278,11 +1460,7 @@ export default { ...@@ -1278,11 +1460,7 @@ export default {
this.getlist() this.getlist()
this.getOrderTree() this.getOrderTree()
}, },
cellClassName({ cellClassName({ row, columnIndex, column }) {
row,
columnIndex,
column,
}) {
if ( if (
(row.orderStatus === 'TO_BE_ASSIGN' || (row.orderStatus === 'TO_BE_ASSIGN' ||
row.orderStatus === 'TO_BE_CONFIRMED' || row.orderStatus === 'TO_BE_CONFIRMED' ||
...@@ -1309,10 +1487,7 @@ export default { ...@@ -1309,10 +1487,7 @@ export default {
return 'order-grey' return 'order-grey'
} }
}, },
cellStyle({ cellStyle({ row, column }) {
row,
column,
}) {
if ( if (
(row.orderStatus === 'PRE_HANDLING' || (row.orderStatus === 'PRE_HANDLING' ||
row.orderStatus === 'TO_BE_ASSIGN' || row.orderStatus === 'TO_BE_ASSIGN' ||
...@@ -1397,6 +1572,26 @@ export default { ...@@ -1397,6 +1572,26 @@ export default {
window.open(uri) window.open(uri)
} }
}, },
// 修改参与人
showUpdate(data) {
const {
id,
leaders,
participator,
acceptanceUserId,
} = data
this.updateForm = {
id,
leaders: Number(leaders),
participator: participator
? participator
.split(',')
.map(item => Number(item))
: '',
acceptanceUserId,
}
this.updateVisible = true
},
showAssign(item) { showAssign(item) {
this.currentRowId = item.id this.currentRowId = item.id
this.taskLeader = '' this.taskLeader = ''
...@@ -1437,8 +1632,7 @@ export default { ...@@ -1437,8 +1632,7 @@ export default {
this.getlist() this.getlist()
} }
}) })
} catch (error) { } catch (error) {}
}
} }
}) })
}, },
...@@ -1465,7 +1659,28 @@ export default { ...@@ -1465,7 +1659,28 @@ export default {
this.getlist() this.getlist()
} }
}) })
} catch (error) { } catch (error) {}
}
})
},
submitUpdate() {
this.$refs.updateForm.validate(v => {
if (v) {
try {
reallocate({
...this.updateForm,
participator: this.updateForm.participator.join(
',',
),
}).then(res => {
if (res.code === 200) {
this.updateVisible = false
this.getOrderTree()
this.getlist()
}
})
} catch (e) {
console.error(e)
} }
} }
}) })
...@@ -1525,7 +1740,12 @@ export default { ...@@ -1525,7 +1740,12 @@ export default {
startTime: this.periodTime && this.periodTime[0], startTime: this.periodTime && this.periodTime[0],
endTime: this.periodTime && this.periodTime[1], endTime: this.periodTime && this.periodTime[1],
...this.searchForm, ...this.searchForm,
leaderAndParticipator: this.searchForm.leaderAndParticipator ? this.searchForm.leaderAndParticipator.join(',') : '', leaderAndParticipator: this.searchForm
.leaderAndParticipator
? this.searchForm.leaderAndParticipator.join(
',',
)
: '',
}) })
.then(res => { .then(res => {
if (res.code !== 200) return if (res.code !== 200) return
...@@ -1601,8 +1821,7 @@ export default { ...@@ -1601,8 +1821,7 @@ export default {
}) })
} }
}) })
} catch { } catch {}
}
}, },
async resume(v) { async resume(v) {
try { try {
...@@ -1643,11 +1862,10 @@ export default { ...@@ -1643,11 +1862,10 @@ export default {
} }
}) })
}) })
} catch { } catch {}
}
}, },
async submitTime() { async submitTime() {
this.$refs.ruleForm.validate((valid) => { this.$refs.ruleForm.validate(valid => {
if (valid) { if (valid) {
startWorder( startWorder(
this.rowId, this.rowId,
...@@ -1696,36 +1914,50 @@ export default { ...@@ -1696,36 +1914,50 @@ export default {
document.documentElement.style.overflowY = 'auto' document.documentElement.style.overflowY = 'auto'
}, },
hanldeImage(event) { hanldeImage(event) {
if (event.target.nodeName === 'IMG' || event.target.nodeName === 'img') { if (
this.imgPreviewUrl = decodeURIComponent(event.target.currentSrc) event.target.nodeName === 'IMG' ||
const subscript = this.imgList.indexOf(this.imgPreviewUrl) event.target.nodeName === 'img'
) {
this.imgPreviewUrl = decodeURIComponent(
event.target.currentSrc,
)
const subscript = this.imgList.indexOf(
this.imgPreviewUrl,
)
this.subscript = subscript > -1 ? subscript : 0 this.subscript = subscript > -1 ? subscript : 0
document.documentElement.style.overflowY = 'hidden' document.documentElement.style.overflowY = 'hidden'
} }
}, },
saveRemark() { saveRemark() {
axios.post('platform/platformWorkOrder/updateRemark', { axios
id: this.currentRowId, .post('platform/platformWorkOrder/updateRemark', {
remark: this.detail.remark, id: this.currentRowId,
}).then(res => { remark: this.detail.remark,
if (res.code === 200) { })
this.$message.success('保存成功') .then(res => {
} if (res.code === 200) {
}) this.$message.success('保存成功')
}
})
}, },
async showDetail(item) { async showDetail(item) {
this.currentRowId = item.id this.currentRowId = item.id
await axios.get(`platform/platformWorkOrder/get?id=${item.id}`, await axios
).then(res => { .get(`platform/platformWorkOrder/get?id=${item.id}`)
if (res.code === 200) { .then(res => {
this.detail = res.data if (res.code === 200) {
this.imgList = Object.values(this.getimgsrc(this.detail.content)) this.detail = res.data
const subscript = this.imgList.indexOf(this.imgPreviewUrl) this.imgList = Object.values(
this.subscript = subscript > -1 ? subscript : 0 this.getimgsrc(this.detail.content),
} else { )
this.detailLoading = false const subscript = this.imgList.indexOf(
} this.imgPreviewUrl,
}) )
this.subscript = subscript > -1 ? subscript : 0
} else {
this.detailLoading = false
}
})
await axios await axios
.get( .get(
`platform/platformWorkOrderChat/getByWorkOrder?workOrderId=${item.id}`, `platform/platformWorkOrderChat/getByWorkOrder?workOrderId=${item.id}`,
...@@ -1740,8 +1972,7 @@ export default { ...@@ -1740,8 +1972,7 @@ export default {
this.detailVisible = true this.detailVisible = true
this.textarea = '' this.textarea = ''
}, },
} },
,
} }
</script> </script>
<style lang='scss' scoped> <style lang='scss' scoped>
...@@ -1842,7 +2073,7 @@ export default { ...@@ -1842,7 +2073,7 @@ export default {
margin-left: 10px; margin-left: 10px;
} }
.search_form > > > .el-form-item { .search_form > .el-form-item {
margin-bottom: 5px; margin-bottom: 5px;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment