Commit 3415c1bc by yangzhi

工单优化

parent e9d3d67e
...@@ -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,
......
...@@ -6,209 +6,225 @@ ...@@ -6,209 +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="( v-for="(priorityStatus,
priorityStatus, index index) in priorityStatusList"
) 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当前步骤
...@@ -260,46 +276,49 @@ ...@@ -260,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,
...@@ -308,88 +327,94 @@ ...@@ -308,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: 95%"
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;{{
...@@ -397,210 +422,290 @@ ...@@ -397,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-item
label="预计完成时间"
prop="estimateCompleteTime"
> >
<el-form 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:
...@@ -613,46 +718,46 @@ ...@@ -613,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,
...@@ -662,25 +767,25 @@ ...@@ -662,25 +767,25 @@
]" ]"
> >
<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>
...@@ -698,6 +803,7 @@ import { ...@@ -698,6 +803,7 @@ import {
getOrderTree, getOrderTree,
workConfirmed, workConfirmed,
workAssigned, workAssigned,
reallocate,
startWorder, startWorder,
archiveWorkOrder, archiveWorkOrder,
completeWorkOrder, completeWorkOrder,
...@@ -715,6 +821,7 @@ import { ...@@ -715,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'
...@@ -762,6 +869,31 @@ export default { ...@@ -762,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: [
{ {
...@@ -890,14 +1022,14 @@ export default { ...@@ -890,14 +1022,14 @@ export default {
key: 'title', key: 'title',
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>
...@@ -924,27 +1056,27 @@ export default { ...@@ -924,27 +1056,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>
...@@ -973,13 +1105,19 @@ export default { ...@@ -973,13 +1105,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,
}, },
{ {
...@@ -989,12 +1127,6 @@ export default { ...@@ -989,12 +1127,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,
...@@ -1003,7 +1135,10 @@ export default { ...@@ -1003,7 +1135,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,
}, },
{ {
...@@ -1014,25 +1149,37 @@ export default { ...@@ -1014,25 +1149,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,
}, },
{ {
...@@ -1043,12 +1190,19 @@ export default { ...@@ -1043,12 +1190,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,
}, },
...@@ -1072,54 +1226,54 @@ export default { ...@@ -1072,54 +1226,54 @@ export default {
fixed: 'right', fixed: 'right',
width: 120, width: 120,
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)}
/> />
...@@ -1129,12 +1283,12 @@ export default { ...@@ -1129,12 +1283,12 @@ export default {
item.leaders && item.leaders &&
item.leaders item.leaders
.split(',') .split(',')
.map((e) => +e) .map(e => +e)
.includes(this.userInfo.id) && ( .includes(this.userInfo.id) && (
<span title="开始" class="icon-view"> <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)
...@@ -1143,41 +1297,42 @@ export default { ...@@ -1143,41 +1297,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 icon-tools-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' &&
Number(item.acceptanceUserId) ===
this.userInfo.id && ( this.userInfo.id && (
<span title='已完成' class='icon-view'> <span title="已完成" class="icon-view">
<img <img
width='24' width="24"
height='24' height="24"
src={anceingWork} src={anceingWork}
onClick={() => this.anceing(item)} 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)}
/> />
...@@ -1187,15 +1342,25 @@ export default { ...@@ -1187,15 +1342,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>
), ),
}, },
...@@ -1216,10 +1381,7 @@ export default { ...@@ -1216,10 +1381,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,
...@@ -1250,7 +1412,7 @@ export default { ...@@ -1250,7 +1412,7 @@ export default {
this.$refs.editForm.resetFields() this.$refs.editForm.resetFields()
}, },
update(v) { update(v) {
getInfo(v.id).then((res) => { getInfo(v.id).then(res => {
if (res.code === 200) { if (res.code === 200) {
this.editForm = JSON.parse( this.editForm = JSON.parse(
JSON.stringify(res.data), JSON.stringify(res.data),
...@@ -1274,11 +1436,7 @@ export default { ...@@ -1274,11 +1436,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' ||
...@@ -1305,10 +1463,7 @@ export default { ...@@ -1305,10 +1463,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' ||
...@@ -1393,6 +1548,26 @@ export default { ...@@ -1393,6 +1548,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 = ''
...@@ -1433,8 +1608,7 @@ export default { ...@@ -1433,8 +1608,7 @@ export default {
this.getlist() this.getlist()
} }
}) })
} catch (error) { } catch (error) {}
}
} }
}) })
}, },
...@@ -1461,7 +1635,28 @@ export default { ...@@ -1461,7 +1635,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)
} }
} }
}) })
...@@ -1509,8 +1704,10 @@ export default { ...@@ -1509,8 +1704,10 @@ export default {
}, },
async getlist() { async getlist() {
this.loading = true this.loading = true
const { pageSize, currentPage } = const {
this.centerPageOptions pageSize,
currentPage,
} = this.centerPageOptions
axios axios
.post('platform/platformWorkOrder/list_page', { .post('platform/platformWorkOrder/list_page', {
pageSize, pageSize,
...@@ -1519,9 +1716,14 @@ export default { ...@@ -1519,9 +1716,14 @@ 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
this.sourceData = res.data.records this.sourceData = res.data.records
this.centerPageOptions.total = res.data.total this.centerPageOptions.total = res.data.total
...@@ -1595,8 +1797,7 @@ export default { ...@@ -1595,8 +1797,7 @@ export default {
}) })
} }
}) })
} catch { } catch {}
}
}, },
async resume(v) { async resume(v) {
try { try {
...@@ -1629,7 +1830,7 @@ export default { ...@@ -1629,7 +1830,7 @@ export default {
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning', type: 'warning',
}).then(() => { }).then(() => {
reject(v.id).then((res) => { reject(v.id).then(res => {
if (res.code === 200) { if (res.code === 200) {
this.$message.success('已驳回') this.$message.success('已驳回')
this.getlist() this.getlist()
...@@ -1637,11 +1838,10 @@ export default { ...@@ -1637,11 +1838,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,
...@@ -1690,18 +1890,27 @@ export default { ...@@ -1690,18 +1890,27 @@ 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
.post('platform/platformWorkOrder/updateRemark', {
id: this.currentRowId, id: this.currentRowId,
remark: this.detail.remark, remark: this.detail.remark,
}).then(res => { })
.then(res => {
if (res.code === 200) { if (res.code === 200) {
this.$message.success('保存成功') this.$message.success('保存成功')
} }
...@@ -1709,12 +1918,17 @@ export default { ...@@ -1709,12 +1918,17 @@ export default {
}, },
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}`)
.then(res => {
if (res.code === 200) { if (res.code === 200) {
this.detail = res.data this.detail = res.data
this.imgList = Object.values(this.getimgsrc(this.detail.content)) this.imgList = Object.values(
const subscript = this.imgList.indexOf(this.imgPreviewUrl) this.getimgsrc(this.detail.content),
)
const subscript = this.imgList.indexOf(
this.imgPreviewUrl,
)
this.subscript = subscript > -1 ? subscript : 0 this.subscript = subscript > -1 ? subscript : 0
} else { } else {
this.detailLoading = false this.detailLoading = false
...@@ -1724,7 +1938,7 @@ export default { ...@@ -1724,7 +1938,7 @@ export default {
.get( .get(
`platform/platformWorkOrderChat/getByWorkOrder?workOrderId=${item.id}`, `platform/platformWorkOrderChat/getByWorkOrder?workOrderId=${item.id}`,
) )
.then((res) => { .then(res => {
if (res.code === 200) { if (res.code === 200) {
this.chatRecord = res.data this.chatRecord = res.data
} else { } else {
...@@ -1734,8 +1948,7 @@ export default { ...@@ -1734,8 +1948,7 @@ export default {
this.detailVisible = true this.detailVisible = true
this.textarea = '' this.textarea = ''
}, },
} },
,
} }
</script> </script>
<style lang='scss' scoped> <style lang='scss' scoped>
...@@ -1836,7 +2049,7 @@ export default { ...@@ -1836,7 +2049,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