|
@@ -8,17 +8,23 @@
|
|
|
<el-tab-pane label="已解决" name="4" ></el-tab-pane>
|
|
|
</el-tabs>
|
|
|
</el-row>
|
|
|
- <el-form ref="form" :model="queryParams" label-width="90px">
|
|
|
+ <el-form ref="form" :model="queryParams" label-width="100px">
|
|
|
<el-row>
|
|
|
<el-col :span="5">
|
|
|
<el-form-item label="项目/医院">
|
|
|
- <el-autocomplete
|
|
|
- v-model="queryParams.projectSource"
|
|
|
- :fetch-suggestions="querySearchAsync"
|
|
|
- placeholder="请输入内容"
|
|
|
- @select="handleSelect"
|
|
|
- clearable
|
|
|
- ></el-autocomplete>
|
|
|
+ <el-select v-model="queryParams.projectSource" filterable placeholder="请选择" clearable>
|
|
|
+ <el-option
|
|
|
+ v-for="item in restaurants"
|
|
|
+ :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="问题描述">
|
|
|
+ <el-input v-model="queryParams.problemDescription" clearable placeholder="请输入内容"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="5">
|
|
@@ -35,24 +41,14 @@
|
|
|
</el-col>
|
|
|
<el-col :span="5">
|
|
|
<el-form-item label="科室信息">
|
|
|
- <el-autocomplete
|
|
|
- v-model="queryParams.roomInformation"
|
|
|
- :fetch-suggestions="querySearchAsync2"
|
|
|
- placeholder="请输入内容"
|
|
|
- @select="handleSelect2"
|
|
|
- clearable
|
|
|
- ></el-autocomplete>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="5">
|
|
|
- <el-form-item label="提问人" v-if="activeName != '3'">
|
|
|
- <el-autocomplete
|
|
|
- v-model="queryParams.questioner"
|
|
|
- :fetch-suggestions="querySearchAsync3"
|
|
|
- placeholder="请输入内容"
|
|
|
- @select="handleSelect3"
|
|
|
- clearable
|
|
|
- ></el-autocomplete>
|
|
|
+ <el-select v-model="queryParams.roomInformation" filterable placeholder="请选择" clearable>
|
|
|
+ <el-option
|
|
|
+ v-for="item in roomInformationList"
|
|
|
+ :key="item.roomInformation"
|
|
|
+ :label="item.roomInformation"
|
|
|
+ :value="item.roomInformation">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="4">
|
|
@@ -61,6 +57,18 @@
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
<el-col :span="5">
|
|
|
+ <el-form-item label="提问人" v-if="activeName != '3'">
|
|
|
+ <el-select v-model="queryParams.questioner" filterable placeholder="请选择" clearable>
|
|
|
+ <el-option
|
|
|
+ v-for="item in questionerList"
|
|
|
+ :key="item.questioner"
|
|
|
+ :label="item.questioner"
|
|
|
+ :value="item.questioner">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="5">
|
|
|
<el-form-item label="问题状态" v-if="activeName != '2' && activeName != '3' ">
|
|
|
<el-select v-model="state" placeholder="请选择" clearable>
|
|
|
<el-option
|
|
@@ -74,7 +82,7 @@
|
|
|
</el-col>
|
|
|
<el-col :span="5">
|
|
|
<el-form-item label="处理负责人">
|
|
|
- <el-select v-model="queryParams.processor" placeholder="请选择" clearable>
|
|
|
+ <el-select v-model="queryParams.processor" filterable placeholder="请选择" clearable>
|
|
|
<el-option
|
|
|
v-for="item in processorOptions"
|
|
|
:key="item.userName"
|
|
@@ -84,11 +92,36 @@
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <el-col :span="4" :offset="10">
|
|
|
+ <el-col :span="5">
|
|
|
+ <el-form-item label="是否非问题">
|
|
|
+ <el-select v-model="queryParams.isProblem" placeholder="请选择" clearable>
|
|
|
+ <el-option
|
|
|
+ v-for="item in isProblemOptions"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="4">
|
|
|
<el-button icon="el-icon-refresh" @click="btnReset">重置</el-button>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="5">
|
|
|
+ <el-form-item label="问题创建时间">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="dateRange"
|
|
|
+ type="daterange"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期">
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
<el-row style="margin-bottom: 10px">
|
|
|
<!-- <el-col :span="1">-->
|
|
|
<!-- <el-button @click="handleDelete" :disabled="multiple">删除</el-button>-->
|
|
@@ -96,6 +129,9 @@
|
|
|
<el-col :span="24">
|
|
|
<el-row type="flex" justify="end">
|
|
|
<el-col :span="2">
|
|
|
+ <el-button @click="handleUpdateProblem">置为非问题</el-button>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="2">
|
|
|
<el-button @click="addFrom">新增问题</el-button>
|
|
|
</el-col>
|
|
|
<el-col :span="2" style="width: 120px">
|
|
@@ -136,7 +172,7 @@
|
|
|
<el-table-column
|
|
|
prop="problemCode"
|
|
|
label="编码"
|
|
|
- width="55"
|
|
|
+ width="110"
|
|
|
align="center">
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
@@ -146,6 +182,12 @@
|
|
|
align="center">
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
|
+ prop="wechatGroupNum"
|
|
|
+ label="微信群号"
|
|
|
+ width="120"
|
|
|
+ align="center">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
prop="problemDescription"
|
|
|
label="问题描述"
|
|
|
width="120"
|
|
@@ -192,6 +234,12 @@
|
|
|
align="center">
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
|
+ prop="wechatNum"
|
|
|
+ label="联系人微信号"
|
|
|
+ width="120"
|
|
|
+ align="center">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
prop="createTime"
|
|
|
label="创建时间"
|
|
|
width="120"
|
|
@@ -275,13 +323,14 @@
|
|
|
<el-row>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="项目来源/医院" prop="projectSource">
|
|
|
- <el-autocomplete
|
|
|
- v-model="form.projectSource"
|
|
|
- :fetch-suggestions="querySearchAsync1"
|
|
|
- placeholder="请输入内容"
|
|
|
- @select="handleSelect1"
|
|
|
- clearable
|
|
|
- ></el-autocomplete>
|
|
|
+ <el-select v-model="form.projectSource" filterable placeholder="请选择" clearable>
|
|
|
+ <el-option
|
|
|
+ v-for="item in restaurants"
|
|
|
+ :key="item.projectSource"
|
|
|
+ :label="item.projectSource"
|
|
|
+ :value="item.projectSource">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
@@ -427,12 +476,12 @@
|
|
|
<el-row>
|
|
|
<el-col :span="15">
|
|
|
<el-form-item >
|
|
|
- <el-select v-model="form.workOrderProcessor" placeholder="请选择工单处理人">
|
|
|
+ <el-select v-model="form.workOrderProcessor" filterable placeholder="请选择工单处理人" clearable>
|
|
|
<el-option
|
|
|
- v-for="item in processorOptions1"
|
|
|
- :key="item.userCode"
|
|
|
+ v-for="item in workOrderProcessorOptions"
|
|
|
+ :key="item.userName"
|
|
|
:label="item.nickName"
|
|
|
- :value="item.userCode">
|
|
|
+ :value="item.userName">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
@@ -465,7 +514,13 @@ import {
|
|
|
updateStage,
|
|
|
pushWorkOrder,
|
|
|
downloadExcel,
|
|
|
- getHospitalAndProcessor, getRoomInformation, getQuestionerList
|
|
|
+ getHospitalAndProcessor,
|
|
|
+ getRoomInformation,
|
|
|
+ getQuestionerList,
|
|
|
+ updateStageProblem,
|
|
|
+ getWorkOrderProcessorList,
|
|
|
+ getProcessorList,
|
|
|
+ addProblem
|
|
|
} from "@/api/business/as/problemInfo"
|
|
|
import {getToken} from "@/utils/auth";
|
|
|
import axios from 'axios'
|
|
@@ -487,76 +542,27 @@ export default {
|
|
|
this.questionerList=res.data
|
|
|
}
|
|
|
})
|
|
|
+ getProcessorList().then(res =>{
|
|
|
+ if(200 == res.code){
|
|
|
+ this.processorOptions=res.data
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
methods: {
|
|
|
-
|
|
|
- querySearchAsync1(queryString, cb) {
|
|
|
- this.restaurants.forEach((item) =>{
|
|
|
- item.value=item.projectSource
|
|
|
- })
|
|
|
- var restaurants = this.restaurants
|
|
|
- var results = queryString ? restaurants.filter(this.createStateFilter1(queryString)) : restaurants;
|
|
|
- cb(results)
|
|
|
- },
|
|
|
- createStateFilter1(queryString) {
|
|
|
- return (item) => {
|
|
|
- return item.projectSource.match(queryString);
|
|
|
- };
|
|
|
- },
|
|
|
- handleSelect1(item) {
|
|
|
- item.assignAuthorityUser.forEach((item) =>{
|
|
|
- if(item.isDefaultPerson == 0){
|
|
|
- this.processorOptions=[item]
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- querySearchAsync(queryString, cb) {
|
|
|
- this.restaurants.forEach((item) =>{
|
|
|
- item.value=item.projectSource
|
|
|
- })
|
|
|
- var restaurants = this.restaurants
|
|
|
- var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants;
|
|
|
- cb(results)
|
|
|
- },
|
|
|
- createStateFilter(queryString) {
|
|
|
- return (item) => {
|
|
|
- return item.projectSource.match(queryString);
|
|
|
- };
|
|
|
- },
|
|
|
- handleSelect(item) {
|
|
|
- this.processorOptions=item.assignAuthorityUser
|
|
|
- },
|
|
|
- querySearchAsync2(queryString, cb) {
|
|
|
- this.roomInformationList.forEach((item) =>{
|
|
|
- item.value=item.roomInformation
|
|
|
- })
|
|
|
- var restaurants = this.roomInformationList
|
|
|
- var results = queryString ? restaurants.filter(this.createStateFilter2(queryString)) : restaurants;
|
|
|
- cb(results)
|
|
|
- },
|
|
|
- createStateFilter2(queryString) {
|
|
|
- return (item) => {
|
|
|
- return item.roomInformation.match(queryString);
|
|
|
- };
|
|
|
- },
|
|
|
- handleSelect2(item) {
|
|
|
- // this.processorOptions=item.roomInformation
|
|
|
- },
|
|
|
- querySearchAsync3(queryString, cb) {
|
|
|
- this.questionerList.forEach((item) =>{
|
|
|
- item.value=item.questioner
|
|
|
+ handleUpdateProblem(){
|
|
|
+ this.$confirm("是否确认修改选中的数据项?", "警告", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning"
|
|
|
+ }).then(()=>{
|
|
|
+ updateStageProblem(this.problemInfos).then(res =>{
|
|
|
+ if(200 == res.code){
|
|
|
+ this.$message.success("修改成功");
|
|
|
+ this.queryParams.pageNum=1;
|
|
|
+ this.handleClick()
|
|
|
+ }
|
|
|
+ })
|
|
|
})
|
|
|
- var restaurants = this.questionerList
|
|
|
- var results = queryString ? restaurants.filter(this.createStateFilter3(queryString)) : restaurants;
|
|
|
- cb(results)
|
|
|
- },
|
|
|
- createStateFilter3(queryString) {
|
|
|
- return (item) => {
|
|
|
- return item.questioner.match(queryString);
|
|
|
- };
|
|
|
- },
|
|
|
- handleSelect3(item) {
|
|
|
- // this.processorOptions=item.roomInformation
|
|
|
},
|
|
|
getChangeType2(e) {
|
|
|
for (var i = 0; i < this.problemTypeOptions.length; i++) {
|
|
@@ -586,6 +592,11 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
handleWorkOrder(data){
|
|
|
+ getWorkOrderProcessorList().then(res =>{
|
|
|
+ if(200 == res.code){
|
|
|
+ this.workOrderProcessorOptions=res.data
|
|
|
+ }
|
|
|
+ })
|
|
|
this.dialogWorkOrder=true
|
|
|
this.form=data
|
|
|
},
|
|
@@ -646,6 +657,11 @@ export default {
|
|
|
this.queryParams.problemStateSolve=stateList[0]
|
|
|
this.queryParams.problemStateConvert=stateList[1]
|
|
|
}
|
|
|
+ if(this.dateRange.length >0){
|
|
|
+ console.log(this.dateRange.length)
|
|
|
+ this.queryParams.creatStart=this.dateRange[0]
|
|
|
+ this.queryParams.creatEnd=this.dateRange[1]
|
|
|
+ }
|
|
|
if(this.activeName){
|
|
|
if(this.activeName=='1'){
|
|
|
list(this.queryParams).then(res => {
|
|
@@ -690,12 +706,18 @@ export default {
|
|
|
if(res.code == 200){
|
|
|
this.dataList=res.rows
|
|
|
this.total=res.total
|
|
|
+ this.queryParams.creatStart=''
|
|
|
+ this.queryParams.creatEnd=''
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
btnReset(){
|
|
|
this.queryParams={
|
|
|
+ creatStart:'',
|
|
|
+ creatEnd:'',
|
|
|
+ problemDescription:'',
|
|
|
+ isProblem: '',
|
|
|
projectSource:'',
|
|
|
problemType:'',
|
|
|
roomInformation:'',
|
|
@@ -746,7 +768,9 @@ export default {
|
|
|
},
|
|
|
submitFormWorkOrder(){
|
|
|
pushWorkOrder(this.form).then(res =>{
|
|
|
-
|
|
|
+ if(200 == res.code){
|
|
|
+ this.$message.success('转工单成功')
|
|
|
+ }
|
|
|
})
|
|
|
this.dialogWorkOrder=false
|
|
|
},
|
|
@@ -756,7 +780,7 @@ export default {
|
|
|
if (this.form.id == undefined) {
|
|
|
//新增售后问题
|
|
|
let formData = new FormData();
|
|
|
- formData.append("problemInfo",new Blob([JSON.stringify(this.form)], {type: "application/json"}))
|
|
|
+ //formData.append("problemInfo",new Blob([JSON.stringify(this.form)], {type: "application/json"}))
|
|
|
if(this.pictureList.length < 1 ){
|
|
|
formData.append("files",null)
|
|
|
}else {
|
|
@@ -764,16 +788,8 @@ export default {
|
|
|
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){
|
|
|
+ return await addProblem(formData,this.form).then(res =>{
|
|
|
+ if(res.code == 200){
|
|
|
this.$modal.msgSuccess("新增成功");
|
|
|
this.dialogVisible = false
|
|
|
this.handleClick()
|
|
@@ -892,6 +908,22 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ dateRange:[],
|
|
|
+ isProblemOptions:[
|
|
|
+ {
|
|
|
+ value:'0',
|
|
|
+ label:'全部'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value:'1',
|
|
|
+ label:'问题'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value:'2',
|
|
|
+ label:'非问题'
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ workOrderProcessorOptions:[],
|
|
|
roomInformationList:[],
|
|
|
questionerList:[],
|
|
|
rules: {
|
|
@@ -975,6 +1007,10 @@ export default {
|
|
|
dialogVisible: false,
|
|
|
dialogVisiblePicture: false,
|
|
|
queryParams: {
|
|
|
+ creatStart:'',
|
|
|
+ creatEnd:'',
|
|
|
+ problemDescription:'',
|
|
|
+ isProblem:'',
|
|
|
projectSource:'',
|
|
|
problemType:'',
|
|
|
roomInformation:'',
|