|
@@ -0,0 +1,916 @@
|
|
|
|
+<template>
|
|
|
|
+ <div class="problemInfo">
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-tabs v-model="activeName" @tab-click="handleClick">
|
|
|
|
+ <el-tab-pane label="全部问题" name="1" ></el-tab-pane>
|
|
|
|
+ <el-tab-pane label="待解决" name="2" ></el-tab-pane>
|
|
|
|
+ <el-tab-pane label="转工单" name="3" ></el-tab-pane>
|
|
|
|
+ <el-tab-pane label="已解决" name="4" ></el-tab-pane>
|
|
|
|
+ </el-tabs>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-form ref="form" :model="queryParams" label-width="90px">
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <el-form-item label="项目/医院">
|
|
|
|
+ <el-input v-model="queryParams.projectSource"></el-input>
|
|
|
|
+<!-- <el-select v-model="queryParams.projectSource" placeholder="请选择">-->
|
|
|
|
+<!-- <el-option-->
|
|
|
|
+<!-- v-for="item in dataList1"-->
|
|
|
|
+<!-- :key="item.projectSource"-->
|
|
|
|
+<!-- :label="item.projectSource"-->
|
|
|
|
+<!-- :value="item.projectSource">-->
|
|
|
|
+<!-- </el-option>-->
|
|
|
|
+<!-- </el-select>-->
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <el-form-item label="问题类别" v-if="activeName != '2' && activeName != '3' && activeName != '4'">
|
|
|
|
+ <el-input v-model="queryParams.problemType"></el-input>
|
|
|
|
+<!-- <el-select v-model="queryParams.problemType" placeholder="请选择">-->
|
|
|
|
+<!-- <el-option-->
|
|
|
|
+<!-- v-for="item in problemTypeOptions"-->
|
|
|
|
+<!-- :key="item.problemType"-->
|
|
|
|
+<!-- :label="item.problemType"-->
|
|
|
|
+<!-- :value="item.problemType">-->
|
|
|
|
+<!-- </el-option>-->
|
|
|
|
+<!-- </el-select>-->
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <el-form-item label="科室信息">
|
|
|
|
+ <el-input v-model="queryParams.roomInformation"></el-input>
|
|
|
|
+<!-- <el-select v-model="queryParams.roomInformation" placeholder="请选择">-->
|
|
|
|
+<!-- <el-option-->
|
|
|
|
+<!-- v-for="item in dataList1"-->
|
|
|
|
+<!-- :key="item.roomInformation"-->
|
|
|
|
+<!-- :label="item.roomInformation"-->
|
|
|
|
+<!-- :value="item.roomInformation">-->
|
|
|
|
+<!-- </el-option>-->
|
|
|
|
+<!-- </el-select>-->
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <el-form-item label="提问人" v-if="activeName != '3'">
|
|
|
|
+ <el-input v-model="queryParams.roomInformation"></el-input>
|
|
|
|
+<!-- <el-select v-model="queryParams.questioner" placeholder="请选择">-->
|
|
|
|
+<!-- <el-option-->
|
|
|
|
+<!-- v-for="item in dataList1"-->
|
|
|
|
+<!-- :key="item.questioner"-->
|
|
|
|
+<!-- :label="item.questioner"-->
|
|
|
|
+<!-- :value="item.questioner">-->
|
|
|
|
+<!-- </el-option>-->
|
|
|
|
+<!-- </el-select>-->
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="4">
|
|
|
|
+ <el-button type="primary" @click="handleClick" icon="el-icon-search">搜索</el-button>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <el-form-item label="问题状态" v-if="activeName != '2' && activeName != '3' ">
|
|
|
|
+ <el-select v-model="state" placeholder="请选择" clearable>
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in stateOptions"
|
|
|
|
+ :key="item.value"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.value">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <el-form-item label="处理负责人">
|
|
|
|
+ <el-input v-model="queryParams.processor"></el-input>
|
|
|
|
+<!-- <el-select v-model="queryParams.processor" placeholder="请选择">-->
|
|
|
|
+<!-- <el-option-->
|
|
|
|
+<!-- v-for="item in dataList1"-->
|
|
|
|
+<!-- :key="item.processor"-->
|
|
|
|
+<!-- :label="item.questioner"-->
|
|
|
|
+<!-- :value="item.processor">-->
|
|
|
|
+<!-- </el-option>-->
|
|
|
|
+<!-- </el-select>-->
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="4" :offset="10">
|
|
|
|
+ <el-button icon="el-icon-refresh" @click="btnReset">重置</el-button>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+<!-- <el-divider></el-divider>-->
|
|
|
|
+ <el-row style="margin-bottom: 10px">
|
|
|
|
+ <el-col :span="1">
|
|
|
|
+ <el-button @click="handleDelete" :disabled="multiple">删除</el-button>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="16" >
|
|
|
|
+ <el-button @click="addFrom">新增问题</el-button>
|
|
|
|
+ <el-button @click="handleUpdate">置为已解决</el-button>
|
|
|
|
+ <el-upload
|
|
|
|
+ class="upload-demo"
|
|
|
|
+ :on-change="handleChange"
|
|
|
|
+ :headers="upload.headers"
|
|
|
|
+ :action="upload.url"
|
|
|
|
+ :show-file-list="false"
|
|
|
|
+ style="width: 70px"
|
|
|
|
+ >
|
|
|
|
+ <el-button>导入</el-button>
|
|
|
|
+ </el-upload>
|
|
|
|
+ <el-button @click="btnDownload">导出</el-button>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ </el-form>
|
|
|
|
+ <el-table
|
|
|
|
+ :data="dataList"
|
|
|
|
+ border
|
|
|
|
+ :header-cell-style="{'text-align':'center'}"
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ @selection-change="handleSelectionChange"
|
|
|
|
+ @row-dblclick="handleRouter"
|
|
|
|
+ >
|
|
|
|
+ <el-table-column
|
|
|
|
+ type="selection"
|
|
|
|
+ width="55"
|
|
|
|
+ align="center">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="problemCode"
|
|
|
|
+ label="编码"
|
|
|
|
+ width="55"
|
|
|
|
+ align="center">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="projectSource"
|
|
|
|
+ label="来源项目/医院"
|
|
|
|
+ width="120"
|
|
|
|
+ align="center">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="problemDescription"
|
|
|
|
+ label="问题描述"
|
|
|
|
+ width="120"
|
|
|
|
+ align="center">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="problemPicture"
|
|
|
|
+ label="问题图片"
|
|
|
|
+ width="300"
|
|
|
|
+ align="center">
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <div v-for="v in scope.row.problemPicture" :key="v.id">
|
|
|
|
+ <el-image :src="v.filepath" style="width: 100px"></el-image>
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ sortable
|
|
|
|
+ prop="problemType"
|
|
|
|
+ label="问题类别"
|
|
|
|
+ width="120"
|
|
|
|
+ align="center">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ {{getChangeType2(scope.row.problemType)}}<!--调用getChangeType方法-->
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ sortable
|
|
|
|
+ prop="questioner"
|
|
|
|
+ label="提问人"
|
|
|
|
+ width="120"
|
|
|
|
+ align="center">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="roomInformation"
|
|
|
|
+ label="科室信息"
|
|
|
|
+ width="120"
|
|
|
|
+ align="center">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="questionerWay"
|
|
|
|
+ label="提问人联系方式"
|
|
|
|
+ width="120"
|
|
|
|
+ align="center">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="createTime"
|
|
|
|
+ label="创建时间"
|
|
|
|
+ width="120"
|
|
|
|
+ align="center">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="processor"
|
|
|
|
+ label="负责处理人"
|
|
|
|
+ width="120"
|
|
|
|
+ align="center">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="processorWay"
|
|
|
|
+ label="负责处理人联系方式"
|
|
|
|
+ width="120"
|
|
|
|
+ align="center">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="processingTime"
|
|
|
|
+ label="处理时长"
|
|
|
|
+ width="120"
|
|
|
|
+ align="center">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ prop="processingFeedback"
|
|
|
|
+ label="处理反馈"
|
|
|
|
+ width="120"
|
|
|
|
+ align="center">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ fixed="right"
|
|
|
|
+ prop="problemStateSolve"
|
|
|
|
+ label="问题状态"
|
|
|
|
+ width="200"
|
|
|
|
+ align="center">
|
|
|
|
+ <template scope="scope">
|
|
|
|
+ <span v-if="scope.row.problemStateSolve == 1 && scope.row.problemStateConvert == 1 "
|
|
|
|
+ >待解决</span>
|
|
|
|
+ <span v-if="scope.row.problemStateSolve == 1 && scope.row.problemStateConvert == 0 "
|
|
|
|
+ >转工单-待解决</span>
|
|
|
|
+ <span v-if="scope.row.problemStateSolve == 0 && scope.row.problemStateConvert == 1"
|
|
|
|
+ >已解决</span>
|
|
|
|
+ <span v-if="scope.row.problemStateSolve == 0 && scope.row.problemStateConvert == 0"
|
|
|
|
+ >转工单-已解决</span>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ fixed="right"
|
|
|
|
+ label="操作"
|
|
|
|
+ width="200"
|
|
|
|
+ align="center">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-button type="text" size="small" @click="handleEdit(scope.row)">编辑</el-button>
|
|
|
|
+
|
|
|
|
+ <el-button v-if="scope.row.problemStateSolve==1 " type="text" size="small" @click="handleSolve(scope.row)">解决</el-button>
|
|
|
|
+ <el-button v-if="scope.row.problemStateSolve==1 && scope.row.problemStateConvert == 1" type="text" size="small" @click="handleWorkOrder(scope.row)">转工单</el-button>
|
|
|
|
+
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ <el-pagination
|
|
|
|
+ @size-change="handleSizeChange"
|
|
|
|
+ @current-change="handleCurrentChange"
|
|
|
|
+ :current-page=this.queryParams.pageNum
|
|
|
|
+ :page-sizes="[10, 20, 50, 100]"
|
|
|
|
+ :page-size=this.queryParams.pageSize
|
|
|
|
+ layout="total, sizes, prev, pager, next, jumper"
|
|
|
|
+ :total=this.total>
|
|
|
|
+ </el-pagination>
|
|
|
|
+
|
|
|
|
+ <el-dialog
|
|
|
|
+ :title="dialogTitle"
|
|
|
|
+ :visible.sync="dialogVisible"
|
|
|
|
+ width="90%"
|
|
|
|
+
|
|
|
|
+ :before-close="handleClose">
|
|
|
|
+ <el-button @click="cancel">取 消</el-button>
|
|
|
|
+ <el-button type="primary" @click="submitForm">确 定</el-button>
|
|
|
|
+
|
|
|
|
+ <el-form ref="form" :model="form" label-width="160px">
|
|
|
|
+ <el-row>
|
|
|
|
+<!-- <el-col :span="5">-->
|
|
|
|
+<!-- <el-form-item label="问题编码">-->
|
|
|
|
+<!-- <el-input v-model="form.problemCode"></el-input>-->
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
+<!-- </el-col>-->
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <el-form-item label="项目来源/医院">
|
|
|
|
+ <el-input v-model="form.projectSource"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <el-form-item label="提问人">
|
|
|
|
+ <el-input v-model="form.questioner"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <el-form-item label="提问人联系人方式">
|
|
|
|
+ <el-input v-model="form.questionerWay"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <el-form-item label="问题类别">
|
|
|
|
+ <el-select v-model="form.problemType" placeholder="请选择">
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in problemTypeOptions"
|
|
|
|
+ :key="item.value"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :value="item.value">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <el-form-item label="科室信息">
|
|
|
|
+ <el-input v-model="form.roomInformation"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <el-form-item label="处理负责人">
|
|
|
|
+ <el-input v-model="form.processor"></el-input>
|
|
|
|
+<!-- <el-select v-model="form.processor" placeholder="请选择">-->
|
|
|
|
+<!-- <el-option-->
|
|
|
|
+<!-- v-for="item in processorOptions"-->
|
|
|
|
+<!-- :key="item.userCode"-->
|
|
|
|
+<!-- :label="item.nickName"-->
|
|
|
|
+<!-- :value="item.userCode">-->
|
|
|
|
+<!-- </el-option>-->
|
|
|
|
+<!-- </el-select>-->
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <el-form-item label="处理负责人联系人方式">
|
|
|
|
+ <el-input v-model="form.processorWay"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="15">
|
|
|
|
+ <el-form-item label="问题描述">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="form.problemDescription"
|
|
|
|
+ type="textarea"
|
|
|
|
+ :rows="4"
|
|
|
|
+ placeholder="请输入内容"
|
|
|
|
+ ></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="15">
|
|
|
|
+ <el-form-item label="问题图片">
|
|
|
|
+ <el-upload
|
|
|
|
+ class="upload-demo"
|
|
|
|
+ ref="upload"
|
|
|
|
+ multiple
|
|
|
|
+ list-type="picture-card"
|
|
|
|
+ :file-list="form.problemPicture"
|
|
|
|
+ action="#"
|
|
|
|
+ :on-change="handleChange"
|
|
|
|
+ :on-remove="handleRemove"
|
|
|
|
+ :on-preview="handlePictureCardPreview"
|
|
|
|
+ :auto-upload="false"
|
|
|
|
+ :limit="3"
|
|
|
|
+ drag
|
|
|
|
+ >
|
|
|
|
+ <i class="el-icon-upload">
|
|
|
|
+ <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
|
|
|
+ <div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
|
|
|
|
+ </i>
|
|
|
|
+ </el-upload>
|
|
|
|
+ <el-dialog :visible.sync="dialogVisiblePicture" append-to-body>
|
|
|
|
+ <img style="width: 100%;height: 100%" :src="dialogImageUrl" />
|
|
|
|
+ </el-dialog>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ </el-form>
|
|
|
|
+ </el-dialog>
|
|
|
|
+
|
|
|
|
+ <el-dialog
|
|
|
|
+ title="确认该问题已解决?"
|
|
|
|
+ :visible.sync="dialogSolve"
|
|
|
|
+ width="30%"
|
|
|
|
+ :before-close="handleClose">
|
|
|
|
+ <el-form ref="form" :model="form" label-width="100px">
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="15">
|
|
|
|
+ <el-form-item label="描述">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="form.processingFeedback"
|
|
|
|
+ type="textarea"
|
|
|
|
+ :rows="4"
|
|
|
|
+ placeholder="请输入处理反馈"
|
|
|
|
+ ></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <el-form-item label="图片">
|
|
|
|
+ <el-upload
|
|
|
|
+ class="upload-demo"
|
|
|
|
+ ref="upload"
|
|
|
|
+ list-type="picture-card"
|
|
|
|
+ :file-list="form.processorPicture"
|
|
|
|
+ :on-change="handleChange"
|
|
|
|
+ :on-remove="handleRemove"
|
|
|
|
+ :auto-upload="false"
|
|
|
|
+ :limit="1"
|
|
|
|
+ >
|
|
|
|
+ <i slot="default" class="el-icon-plus"></i>
|
|
|
|
+ </el-upload>
|
|
|
|
+ <el-dialog :visible.sync="dialogVisiblePicture" append-to-body>
|
|
|
|
+ <img style="width: 100%;height: 100%" :src="dialogImageUrl" />
|
|
|
|
+ </el-dialog>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ </el-form>
|
|
|
|
+ <el-button @click="cancel">取 消</el-button>
|
|
|
|
+ <el-button type="primary" @click="submitFormSolve">确 定</el-button>
|
|
|
|
+ </el-dialog>
|
|
|
|
+
|
|
|
|
+ <el-dialog
|
|
|
|
+ title="确认该问题转工单处理?"
|
|
|
|
+ :visible.sync="dialogWorkOrder"
|
|
|
|
+ width="30%"
|
|
|
|
+ :before-close="handleClose">
|
|
|
|
+ <el-form ref="form" :model="form" >
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="15">
|
|
|
|
+ <el-form-item >
|
|
|
|
+ <el-select v-model="form.workOrderProcessor" placeholder="请选择工单处理人">
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in processorOptions"
|
|
|
|
+ :key="item.userCode"
|
|
|
|
+ :label="item.nickName"
|
|
|
|
+ :value="item.userCode">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="15">
|
|
|
|
+ <el-form-item>
|
|
|
|
+ <el-date-picker
|
|
|
|
+ v-model="form.processorEndTime"
|
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
|
+ type="date"
|
|
|
|
+ placeholder="选择处理截至时间">
|
|
|
|
+ </el-date-picker>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ </el-form>
|
|
|
|
+ <el-button @click="cancel">取 消</el-button>
|
|
|
|
+ <el-button type="primary" @click="submitFormWorkOrder">确 定</el-button>
|
|
|
|
+ </el-dialog>
|
|
|
|
+ </div>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+
|
|
|
|
+import {list, remove, updateStage, pushWorkOrder, downloadExcel} from "@/api/business/as/problemInfo"
|
|
|
|
+import {getToken} from "@/utils/auth";
|
|
|
|
+import {Axios} from "axios";
|
|
|
|
+import axios from 'axios'
|
|
|
|
+export default {
|
|
|
|
+ created() {
|
|
|
|
+ this.handleClick()
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ getChangeType2(e) {
|
|
|
|
+ for (var i = 0; i < this.problemTypeOptions.length; i++) {
|
|
|
|
+ if (this.problemTypeOptions[i].value === e) { //dictValue,dictLabel保持和上面定义一致
|
|
|
|
+ return this.problemTypeOptions[i].label;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ handleRouter(row,event,colum) {
|
|
|
|
+ // let resolve = this.$router.push({path:'/business/as/problemInfo/detail',query:{id:row.id}});
|
|
|
|
+ },
|
|
|
|
+ btnDownload(){
|
|
|
|
+ downloadExcel().then((res) => {
|
|
|
|
+ let blob = new Blob([res], {
|
|
|
|
+ type: "application/vnd.ms-excel" ,
|
|
|
|
+ })
|
|
|
|
+ let fileName = Date.parse(new Date()) + ".xlsx";
|
|
|
|
+ if (window.navigator.msSaveOrOpenBlob) {
|
|
|
|
+ navigator.msSaveBlob(blob, fileName);
|
|
|
|
+ } else {
|
|
|
|
+ var link = document.createElement("a");
|
|
|
|
+ link.href = window.URL.createObjectURL(blob);
|
|
|
|
+ link.download = fileName;
|
|
|
|
+ link.click();
|
|
|
|
+ window.URL.revokeObjectURL(link.href);
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ handleWorkOrder(data){
|
|
|
|
+ this.dialogWorkOrder=true
|
|
|
|
+ this.form=data
|
|
|
|
+ },
|
|
|
|
+ handleSolve(data){
|
|
|
|
+ this.dialogSolve=true
|
|
|
|
+ this.form=data
|
|
|
|
+ },
|
|
|
|
+ handleEdit(data){
|
|
|
|
+ this.dialogTitle='编辑'
|
|
|
|
+ this.dialogVisible = true
|
|
|
|
+ this.form=data
|
|
|
|
+ },
|
|
|
|
+ // 删除
|
|
|
|
+ handleDelete() {
|
|
|
|
+ this.$confirm("是否确认删除选中的数据项?", "警告", {
|
|
|
|
+ confirmButtonText: "确定",
|
|
|
|
+ cancelButtonText: "取消",
|
|
|
|
+ type: "warning"
|
|
|
|
+ }).then(()=> {
|
|
|
|
+ remove(this.problemInfos).then(res =>{
|
|
|
|
+ // console.log(res)
|
|
|
|
+ this.queryParams.pageNum=1;
|
|
|
|
+ this.handleClick()
|
|
|
|
+ this.msgSuccess("删除成功");
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+ // console.log("this.ids",this.problemInfos)
|
|
|
|
+ },
|
|
|
|
+ handleUpdate() {
|
|
|
|
+ this.$confirm("是否确认修改选中的数据项?", "警告", {
|
|
|
|
+ confirmButtonText: "确定",
|
|
|
|
+ cancelButtonText: "取消",
|
|
|
|
+ type: "warning"
|
|
|
|
+ }).then(()=>{
|
|
|
|
+ updateStage(this.problemInfos).then(res =>{
|
|
|
|
+ // console.log(res)
|
|
|
|
+ })
|
|
|
|
+ }).then(()=>{
|
|
|
|
+ this.queryParams.pageNum=1;
|
|
|
|
+ this.handleClick()
|
|
|
|
+ this.msgSuccess("修改成功");
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ // 多选框选中数据
|
|
|
|
+ handleSelectionChange(selection) {
|
|
|
|
+ this.problemInfos = selection// 需要根据数据情况调整id名称
|
|
|
|
+ this.single = selection.length != 1;
|
|
|
|
+ this.multiple = !selection.length;
|
|
|
|
+ },
|
|
|
|
+ handleSizeChange(val) {
|
|
|
|
+ this.queryParams.pageSize = val
|
|
|
|
+ this.handleClick()
|
|
|
|
+ },
|
|
|
|
+ handleCurrentChange(val) {
|
|
|
|
+ this.queryParams.pageNum = val
|
|
|
|
+ this.handleClick()
|
|
|
|
+ },
|
|
|
|
+ handleClick(tab, event){
|
|
|
|
+ if(this.state){
|
|
|
|
+ const stateList= this.state.split(',')
|
|
|
|
+ this.queryParams.problemStateSolve=stateList[0]
|
|
|
|
+ this.queryParams.problemStateConvert=stateList[1]
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ console.log('this.activeName',this.activeName)
|
|
|
|
+
|
|
|
|
+ if(this.activeName){
|
|
|
|
+ if(this.activeName=='1'){
|
|
|
|
+ list(this.queryParams).then(res => {
|
|
|
|
+ if(res.code == 200){
|
|
|
|
+ this.dataList=res.rows
|
|
|
|
+ this.total=res.total
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ if(this.activeName=='2'){
|
|
|
|
+ this.queryParams.problemStateSolve=1
|
|
|
|
+ list(this.queryParams).then(res => {
|
|
|
|
+ if(res.code == 200){
|
|
|
|
+ this.dataList=res.rows
|
|
|
|
+ this.total=res.total
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ if(this.activeName=='3'){
|
|
|
|
+ this.queryParams.problemStateConvert=0
|
|
|
|
+ list(this.queryParams).then(res => {
|
|
|
|
+ if(res.code == 200){
|
|
|
|
+ this.dataList=res.rows
|
|
|
|
+ this.total=res.total
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ if(this.activeName=='4'){
|
|
|
|
+ this.queryParams.problemStateSolve=0
|
|
|
|
+ list(this.queryParams).then(res => {
|
|
|
|
+ if(res.code == 200){
|
|
|
|
+ this.dataList=res.rows
|
|
|
|
+ this.total=res.total
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ this.btnReset()
|
|
|
|
+ }else {
|
|
|
|
+ list(this.queryParams).then(res => {
|
|
|
|
+ if(res.code == 200){
|
|
|
|
+ this.dataList=res.rows
|
|
|
|
+ this.total=res.total
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ btnReset(){
|
|
|
|
+ this.queryParams={
|
|
|
|
+ projectSource:'',
|
|
|
|
+ problemType:'',
|
|
|
|
+ roomInformation:'',
|
|
|
|
+ questioner:'',
|
|
|
|
+ processor:'',
|
|
|
|
+ pageNum:1,
|
|
|
|
+ pageSize:10,
|
|
|
|
+ problemStateSolve:null,
|
|
|
|
+ problemStateConvert:null
|
|
|
|
+ }
|
|
|
|
+ this.state=''
|
|
|
|
+ },
|
|
|
|
+ addFrom(){
|
|
|
|
+ this.dialogTitle='新增问题'
|
|
|
|
+ this.dialogVisible = true
|
|
|
|
+ },
|
|
|
|
+ cancel(){
|
|
|
|
+ this.form = {
|
|
|
|
+ id:undefined,
|
|
|
|
+ problemCode:'',
|
|
|
|
+ projectSource:'',
|
|
|
|
+ questioner:'',
|
|
|
|
+ problemType:'',
|
|
|
|
+ roomInformation:'',
|
|
|
|
+ processor:'',
|
|
|
|
+ processorWay:'',
|
|
|
|
+ problemDescription:'',
|
|
|
|
+ problemPicture:[],
|
|
|
|
+ questionerWay:'',
|
|
|
|
+ processingFeedback:'',
|
|
|
|
+ problemStateSolve:'',
|
|
|
|
+ problemStateConvert:'',
|
|
|
|
+ processorPicture:[],
|
|
|
|
+ workOrderProcessor:'',
|
|
|
|
+ processorEndTime:'',
|
|
|
|
+ }
|
|
|
|
+ this.dialogVisible = false
|
|
|
|
+ this.dialogSolve = false
|
|
|
|
+ this.dialogWorkOrder = false
|
|
|
|
+ },
|
|
|
|
+ submitFormWorkOrder(){
|
|
|
|
+ pushWorkOrder(this.form).then(res =>{
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+ this.dialogWorkOrder=false
|
|
|
|
+ },
|
|
|
|
+ submitForm(){
|
|
|
|
+ this.$refs["form"].validate(async valid => {
|
|
|
|
+ if (valid) {
|
|
|
|
+ if (this.form.id == undefined) {
|
|
|
|
+ //新增售后问题
|
|
|
|
+ let formData = new FormData();
|
|
|
|
+ formData.append("problemInfo",new Blob([JSON.stringify(this.form)], {type: "application/json"}))
|
|
|
|
+ if(this.pictureList.length < 1 ){
|
|
|
|
+ formData.append("files",null)
|
|
|
|
+ }else {
|
|
|
|
+ this.pictureList.forEach(file =>{
|
|
|
|
+ formData.append("files",file.raw)
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ return await axios({
|
|
|
|
+ method: "POST",
|
|
|
|
+ url: process.env.VUE_APP_BASE_API + '/mk/as/problem/add',
|
|
|
|
+ headers: {
|
|
|
|
+ 'Content-Type': 'multipart/form-data',
|
|
|
|
+ 'Authorization': 'Bearer ' + getToken()
|
|
|
|
+ },
|
|
|
|
+ data: formData,
|
|
|
|
+ }).then(res =>{
|
|
|
|
+ if(res.data.code == 200){
|
|
|
|
+ this.$modal.msgSuccess("新增成功");
|
|
|
|
+ console.log("图片返回结果",res)
|
|
|
|
+ this.dialogVisible = false
|
|
|
|
+ this.handleClick()
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ } else {
|
|
|
|
+ //修改售后问题
|
|
|
|
+ let formData = new FormData();
|
|
|
|
+ formData.append("problemInfo",new Blob([JSON.stringify(this.form)], {type: "application/json"}))
|
|
|
|
+ if(this.pictureList.length < 1 ){
|
|
|
|
+ formData.append("files",null)
|
|
|
|
+ }else {
|
|
|
|
+ this.pictureList.forEach(file =>{
|
|
|
|
+ formData.append("files",file.raw)
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ return await axios({
|
|
|
|
+ method: "POST",
|
|
|
|
+ url: process.env.VUE_APP_BASE_API + '/mk/as/problem/edit',
|
|
|
|
+ headers: {
|
|
|
|
+ 'Content-Type': 'multipart/form-data',
|
|
|
|
+ 'Authorization': 'Bearer ' + getToken()
|
|
|
|
+ },
|
|
|
|
+ data: formData,
|
|
|
|
+ }).then(res =>{
|
|
|
|
+ if(res.data.code == 200){
|
|
|
|
+ this.$modal.msgSuccess("修改成功");
|
|
|
|
+ console.log("图片返回结果",res)
|
|
|
|
+ this.dialogVisible = false
|
|
|
|
+ this.cancel()
|
|
|
|
+ this.handleClick()
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ async submitFormSolve(){
|
|
|
|
+ if(this.form.id != undefined){
|
|
|
|
+ let formData = new FormData();
|
|
|
|
+ formData.append("problemInfo",new Blob([JSON.stringify(this.form)], {type: "application/json"}))
|
|
|
|
+ if(this.pictureList.length < 1 ){
|
|
|
|
+ formData.append("files",null)
|
|
|
|
+ }else {
|
|
|
|
+ this.pictureList.forEach(file =>{
|
|
|
|
+ formData.append("files",file.raw)
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ return await axios({
|
|
|
|
+ method: "POST",
|
|
|
|
+ url: process.env.VUE_APP_BASE_API + '/mk/as/problem/editSolve',
|
|
|
|
+ headers: {
|
|
|
|
+ 'Content-Type': 'multipart/form-data',
|
|
|
|
+ 'Authorization': 'Bearer ' + getToken()
|
|
|
|
+ },
|
|
|
|
+ data: formData,
|
|
|
|
+ }).then(res =>{
|
|
|
|
+ if(res.data.code == 200){
|
|
|
|
+ this.$modal.msgSuccess("修改成功");
|
|
|
|
+ console.log("图片返回结果",res)
|
|
|
|
+ this.dialogVisible = false
|
|
|
|
+ this.cancel()
|
|
|
|
+ this.handleClick()
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ //预览图片功能
|
|
|
|
+ handlePictureCardPreview(file) {
|
|
|
|
+ // console.log(file.url);
|
|
|
|
+ this.dialogVisiblePicture = true
|
|
|
|
+ this.dialogImageUrl = file.url
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ //移除图片功能
|
|
|
|
+ async handleRemove(file, fileList) {
|
|
|
|
+ await axios({
|
|
|
|
+ method: "get",
|
|
|
|
+ url: `https://dev-sy.derom.com/document-center/fastdfs/delete?id=${file.id}`,
|
|
|
|
+ }).then(res =>{
|
|
|
|
+ console.log("删除结果",res)
|
|
|
|
+ if(res.data.code == 200) {
|
|
|
|
+ this.$message.success("移除图片成功")
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ this.form.problemPicture=fileList
|
|
|
|
+ },
|
|
|
|
+ // 文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用,function(file, fileList)
|
|
|
|
+ handleChange(file, fileList) {
|
|
|
|
+ this.pictureList = fileList
|
|
|
|
+ },
|
|
|
|
+ handleClose(done) {
|
|
|
|
+ this.form = {
|
|
|
|
+ id:undefined,
|
|
|
|
+ problemCode:'',
|
|
|
|
+ projectSource:'',
|
|
|
|
+ questioner:'',
|
|
|
|
+ problemType:'',
|
|
|
|
+ roomInformation:'',
|
|
|
|
+ processor:'',
|
|
|
|
+ processorWay:'',
|
|
|
|
+ problemDescription:'',
|
|
|
|
+ problemPicture:[],
|
|
|
|
+ questionerWay:'',
|
|
|
|
+ processingFeedback:'',
|
|
|
|
+ problemStateSolve:'',
|
|
|
|
+ problemStateConvert:'',
|
|
|
|
+ processorPicture:[],
|
|
|
|
+ workOrderProcessor:'',
|
|
|
|
+ processorEndTime:'',
|
|
|
|
+ }
|
|
|
|
+ this.$confirm('确认关闭?')
|
|
|
|
+ .then(_ => {
|
|
|
|
+ done();
|
|
|
|
+ })
|
|
|
|
+ .catch(_ => {});
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ data() {
|
|
|
|
+ return {
|
|
|
|
+ dialogTitle:'',
|
|
|
|
+ pictureList:[],
|
|
|
|
+ //标签
|
|
|
|
+ activeName:'1',
|
|
|
|
+ // 选中数组
|
|
|
|
+ problemInfos: [],
|
|
|
|
+ // 非单个禁用
|
|
|
|
+ single: true,
|
|
|
|
+ // 非多个禁用
|
|
|
|
+ multiple: true,
|
|
|
|
+ state:'',
|
|
|
|
+ stateOptions:[
|
|
|
|
+ {
|
|
|
|
+ value:'1,1',
|
|
|
|
+ label:'待解决'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value:'0,1',
|
|
|
|
+ label:'已解决'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value:'1,0',
|
|
|
|
+ label:'转工单-待解决'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value:'0,0',
|
|
|
|
+ label:'转工单-已解决'
|
|
|
|
+ }
|
|
|
|
+ ],
|
|
|
|
+ processorOptions:[
|
|
|
|
+ {
|
|
|
|
+ userCode: '10001',
|
|
|
|
+ nickName: '王五'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ userCode: '10002',
|
|
|
|
+ nickName: '张三'
|
|
|
|
+ }
|
|
|
|
+ ],
|
|
|
|
+ problemTypeOptions:[
|
|
|
|
+ {
|
|
|
|
+ value: '1',
|
|
|
|
+ label: '软件问题'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value: '2',
|
|
|
|
+ label: '硬件问题'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value: '3',
|
|
|
|
+ label: '服务问题'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value: '4',
|
|
|
|
+ label: '其他问题'
|
|
|
|
+ },
|
|
|
|
+ ],
|
|
|
|
+ dialogWorkOrder:false,
|
|
|
|
+ dialogSolve:false,
|
|
|
|
+ dialogImageUrl:'',
|
|
|
|
+ dialogVisible: false,
|
|
|
|
+ dialogVisiblePicture: false,
|
|
|
|
+ queryParams: {
|
|
|
|
+ projectSource:'',
|
|
|
|
+ problemType:'',
|
|
|
|
+ roomInformation:'',
|
|
|
|
+ questioner:'',
|
|
|
|
+ processor:'',
|
|
|
|
+ pageNum:1,
|
|
|
|
+ pageSize:10,
|
|
|
|
+ problemStateSolve:null,
|
|
|
|
+ problemStateConvert:null
|
|
|
|
+ },
|
|
|
|
+ form: {
|
|
|
|
+ id:undefined,
|
|
|
|
+ problemCode:'',
|
|
|
|
+ projectSource:'',
|
|
|
|
+ questioner:'',
|
|
|
|
+ problemType:'',
|
|
|
|
+ roomInformation:'',
|
|
|
|
+ processor:'',
|
|
|
|
+ processorWay:'',
|
|
|
|
+ problemDescription:'',
|
|
|
|
+ problemPicture:[],
|
|
|
|
+ questionerWay:'',
|
|
|
|
+ processingFeedback:'',
|
|
|
|
+ problemStateSolve:'',
|
|
|
|
+ problemStateConvert:'',
|
|
|
|
+ processorPicture:[],
|
|
|
|
+ workOrderProcessor:'',
|
|
|
|
+ processorEndTime:'',
|
|
|
|
+ },
|
|
|
|
+ upload: {
|
|
|
|
+ // 设置上传的请求头部
|
|
|
|
+ headers: { Authorization: "Bearer " + getToken() },
|
|
|
|
+ // 上传的地址
|
|
|
|
+ url: process.env.VUE_APP_BASE_API + "/mk/as/problem/upload",
|
|
|
|
+ },
|
|
|
|
+ dataList:[],
|
|
|
|
+ total:null,
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+</script>
|
|
|
|
+
|
|
|
|
+<style lang="scss" scoped>
|
|
|
|
+.problemInfo {
|
|
|
|
+ margin-right: 10px;
|
|
|
|
+ margin-left: 10px;
|
|
|
|
+}
|
|
|
|
+.el-col {
|
|
|
|
+ text-align: end;
|
|
|
|
+}
|
|
|
|
+</style>
|