Browse Source

德荣售后问题处理分析平台

youchen 1 year ago
parent
commit
3b032e71c5

+ 11 - 0
src/api/business/as/afterAalesProblemAnalysis.js

@@ -0,0 +1,11 @@
+import request from "@/utils/request";
+
+
+//查询售后问题分析结果
+export function getAnalysisResult(param) {
+  return request({
+    url: `/mk/as/problem/getAnalysisResult`,
+    method: 'get',
+    params: param
+  })
+}

+ 37 - 0
src/api/business/as/assignAuthority.js

@@ -0,0 +1,37 @@
+import request from "@/utils/request";
+
+
+//获取分配权限人员
+export function userList(param) {
+  return request({
+    url: `/mk/as/assignAuthority/userList`,
+    method: 'get',
+    params: param
+  })
+}
+//新增分配权限人员
+export function addUser(data) {
+  return request({
+    url: `/mk/as/assignAuthority/addUser`,
+    method: 'post',
+    data: data
+  })
+}
+
+//获取已分配权限人员
+export function list(param) {
+  return request({
+    url: `/mk/as/assignAuthority/list`,
+    method: 'get',
+    params: param
+  })
+}
+
+//修改已分配权限人员
+export function edit(data) {
+  return request({
+    url: `/mk/as/assignAuthority/edit`,
+    method: 'post',
+    data: data
+  })
+}

+ 43 - 0
src/api/business/as/hospital.js

@@ -0,0 +1,43 @@
+import request from "@/utils/request";
+
+
+//新增项目/医院
+export function add(data) {
+  return request({
+    url: '/mk/as/hospital/add',
+    method: 'post',
+    data: data
+  })
+}
+//修改项目/医院
+export function edit(data) {
+  return request({
+    url: '/mk/as/hospital/edit',
+    method: 'post',
+    data: data
+  })
+}
+//分页查询数据列表
+export function list(param) {
+  return request({
+    url: '/mk/as/hospital/list',
+    method: 'get',
+    params: param
+  })
+}
+
+//根据id移除数据
+export function remove(id) {
+  return request({
+    url: `/mk/as/hospital/delete/${id}`,
+    method: 'get',
+  })
+}
+
+// //查询医院和处理人列表
+// export function getHospitalAndProcessor() {
+//   return request({
+//     url: '/mk/as/hospital/getHospitalAndProcessor',
+//     method: 'get',
+//   })
+// }

+ 10 - 0
src/api/business/as/problemInfo.js

@@ -45,4 +45,14 @@ export function downloadExcel() {
   })
 }
 
+//查询售后问题详情
+export function getHospitalAndProcessor(param) {
+  return request({
+    url: `/mk/as/hospital/getHospitalAndProcessor`,
+    method: 'get',
+    params: param
+  })
+}
+
+
 

+ 20 - 5
src/router/index.js

@@ -96,11 +96,6 @@ export const constantRoutes = [
     component: () => import('@/views/business/bid/detail/detail'),
     hidden: true
   },
-  // {
-  //   path: '/business/bid/customerZhaoUnitRelational',
-  //   component: () => import('@/views/business/bid/customerZhaoUnitRelational/index'),
-  //   hidden: true
-  // },
   {
     path: '/business/as/problemInfo',
     component: () => import('@/views/business/as/problemInfo/index'),
@@ -112,6 +107,26 @@ export const constantRoutes = [
     hidden: true
   },
   {
+    path: '/business/as/hospital',
+    component: () => import('@/views/business/as/hospital/index'),
+    hidden: true
+  },
+  {
+    path: '/business/as/hospital/assignAuthority',
+    component: () => import('@/views/business/as/hospital/assignAuthority/index'),
+    hidden: true
+  },
+  {
+    path: '/business/as/afterAalesProblemAnalysis/',
+    component: () => import('@/views/business/as/afterAalesProblemAnalysis/index'),
+    hidden: true
+  },
+  {
+    path: '/business/newsLink',
+    component: () => import('@/views/business/newsLink/index'),
+    hidden: true
+  },
+  {
     path: '/business/SupAtttachment',
     component: () => import('@/views/purchase/SupAtttachment/index'),
     hidden: true

+ 211 - 0
src/views/business/as/afterAalesProblemAnalysis/index.vue

@@ -0,0 +1,211 @@
+<template>
+  <div class="afterAalesProblemAnalysis">
+    <el-row :gutter="10">
+      <el-col :span="6">
+        <el-form ref="form" :model="queryParams" label-width="80px">
+          <el-form-item label="项目/医院">
+            <el-autocomplete
+              v-model="queryParams.projectSource"
+              :fetch-suggestions="querySearchAsync"
+              placeholder="请输入内容"
+              @select="handleSelect"
+              clearable
+            ></el-autocomplete>
+          </el-form-item>
+        </el-form>
+      </el-col>
+      <el-col :span="6">
+        <el-button type="primary" plain @click="dayBtn">近7天</el-button>
+        <el-button type="primary" plain @click="weekBtn">近7周</el-button>
+        <el-button type="primary" plain @click="monthBtn">近7月</el-button>
+      </el-col>
+      <el-col :span="6">
+        <el-date-picker
+          v-model="dateRange"
+          type="daterange"
+          value-format="yyyy-MM-dd"
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期">
+        </el-date-picker>
+      </el-col>
+      <el-col :span="6">
+        <el-button type="primary" @click="queryBtn">搜索</el-button>
+      </el-col>
+    </el-row>
+    <el-row>
+      <el-table
+        :data="dataList"
+        style="width: 100%;margin-top: 20px"
+        :header-cell-style="{'text-align':'center'}"
+        :cell-style="{'text-align':'center'}"
+        border
+      >
+        <el-table-column
+          prop="date"
+          label="序号"
+          width="100">
+          <template #default="scope">
+            {{scope.$index+1}}
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="projectSource"
+          label="项目/医院"
+          width="230">
+        </el-table-column>
+        <el-table-column
+          prop="address"
+          label="总问题(已解决/未解决)"
+          width="240">
+          <template #default="scope">
+            <a>{{scope.row.solvedProblem+'/'+scope.row.unsolvedProblem}}</a>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="address"
+          label="软件问题(已解决/未解决)"
+          width="240">
+          <template #default="scope">
+            <a>{{scope.row.typeOneSolvedProblem+'/'+scope.row.typeOneUnsolvedProblem}}</a>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="address"
+          label="服务问题(已解决/未解决)"
+          width="240">
+          <template #default="scope">
+            <a>{{scope.row.typeThreeSolvedProblem+'/'+scope.row.typeThreeUnsolvedProblem}}</a>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="address"
+          label="硬件问题(已解决/未解决)"
+          width="240">
+          <template #default="scope">
+            <a>{{scope.row.typeTwoSolvedProblem+'/'+scope.row.typeTwoUnsolvedProblem}}</a>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="address"
+          label="其他问题(已解决/未解决)"
+          width="240">
+          <template #default="scope">
+            <a>{{scope.row.typeFourSolvedProblem+'/'+scope.row.typeFourUnsolvedProblem}}</a>
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-row>
+    <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>
+  </div>
+</template>
+
+<script>
+import {getAnalysisResult} from "@/api/business/as/afterAalesProblemAnalysis";
+import {getHospitalAndProcessor} from "@/api/business/as/problemInfo";
+
+export default {
+  created() {
+    this.queryBtn()
+    getHospitalAndProcessor().then(res =>{
+      if(res.code == 200){
+        this.restaurants = res.data
+        console.log()
+      }
+    })
+  },
+  methods:{
+    querySearchAsync(queryString, cb) {
+      console.log("queryString",queryString)
+      this.restaurants.forEach((item) =>{
+        item.value=item.projectSource
+      })
+      var restaurants = this.restaurants
+      console.log("restaurants",restaurants)
+      var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants;
+      cb(results)
+    },
+    createStateFilter(queryString) {
+      console.log("11111111",queryString)
+      return (item) => {
+        return item.projectSource.match(queryString);
+      };
+    },
+    handleSelect(item) {
+      console.log("item",item);
+      this.queryParams.projectSource=item.projectSource
+      console.log("this.processorOptions",this.queryParams.projectSource)
+    },
+    handleSizeChange(val) {
+      this.queryParams.pageSize = val
+      this.queryBtn()
+    },
+    handleCurrentChange(val) {
+      this.queryParams.pageNum = val
+      this.queryBtn()
+    },
+    dayBtn(){
+      this.queryParams.dayRange=7
+      this.queryBtn()
+      this.queryParams.dayRange=''
+    },
+    weekBtn(){
+      this.queryParams.weekRange=7
+      this.queryBtn()
+      this.queryParams.weekRange=''
+    },
+    monthBtn(){
+      this.queryParams.monthRange=7
+      this.queryBtn()
+      this.queryParams.monthRange=''
+    },
+    queryBtn(){
+      if(this.dateRange && this.dateRange.length>0){
+        this.queryParams.startTime = this.dateRange[0]
+        this.queryParams.endTime = this.dateRange[1]
+      }else {
+        this.queryParams.startTime = ''
+        this.queryParams.endTime = ''
+      }
+      console.log('1',this.queryParams)
+      getAnalysisResult(this.queryParams).then(res =>{
+        console.log('send',this.queryParams)
+        if(res.code ==200){
+          console.log("res",res)
+          this.dataList=res.rows
+          this.total=res.total
+        }
+      })
+    }
+  },
+  data(){
+    return {
+      total:'',
+      dataList:[],
+      dateRange:[],
+      queryParams:{
+        pageNum:1,
+        pageSize:10,
+        projectSource:'',
+        startTime:'',
+        endTime:'',
+        dayRange:'',
+        weekRange:'',
+        monthRange:''
+      }
+    }
+  }
+}
+</script>
+
+<style>
+
+</style>

+ 275 - 0
src/views/business/as/hospital/assignAuthority/index.vue

@@ -0,0 +1,275 @@
+<template>
+  <div class="assignAuthority">
+    <el-row :gutter="10" type="flex" class="row-bg" justify="space-between">
+     <el-col :span="6">
+       <h3>权限分配</h3>
+     </el-col>
+      <el-col :span="10">
+       <el-form ref="queryParams" :model="queryParams">
+         <el-form-item>
+           <el-input v-model="queryParams.nickName" placeholder="请输入姓名、部门"></el-input>
+         </el-form-item>
+       </el-form>
+      </el-col>
+      <el-col :span="6" >
+        <el-button type="primary" @click="queryBtn">搜索</el-button>
+      </el-col>
+     <el-col :span="6" >
+       <el-button type="primary" @click="addBtn">新增</el-button>
+     </el-col>
+    </el-row>
+    <el-divider></el-divider>
+    <el-table
+      v-loading="loading"
+      :data="dataList"
+      :height="tableHeight"
+      :header-cell-style="{'text-align':'center'}"
+      :cell-style="{'text-align':'center'}"
+      border
+      style="width: 100%;margin-top: 20px">
+      <el-table-column
+        label="序号"
+        width="100">
+        <template slot-scope="scope">
+          {{scope.$index+1}}
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="nickName"
+        label="用户姓名"
+        width="240">
+      </el-table-column>
+      <el-table-column
+        prop="deptName"
+        label="用户部门"
+        width="240">
+      </el-table-column>
+      <el-table-column
+        prop="isDefaultPerson"
+        fixed="right"
+        label="是否为问题默认处理人">
+        <template #default="scope">
+          <el-select v-model="scope.row.isDefaultPerson" placeholder="请选择" @change="changeBtn(scope.row)">
+            <el-option
+              v-for="item in isOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </template>
+
+      </el-table-column>
+    </el-table>
+
+    <el-pagination
+      @size-change="handleSizeChange1"
+      @current-change="handleCurrentChange1"
+      :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="title"
+      :visible.sync="dialogVisible"
+      width="80%"
+      :before-close="handleClose">
+      <el-row :gutter="10">
+        <el-col :span="10">
+          <el-form ref="queryParams" :model="queryParams" label-width="90px">
+            <el-form-item label="名称/编号">
+              <el-input v-model="queryParams.userName" placeholder="请输入名称/编号"></el-input>
+            </el-form-item>
+          </el-form>
+        </el-col>
+        <el-col :span="2">
+          <el-button type="primary" @click="queryUserBtn">搜索</el-button>
+        </el-col>
+        <el-col :span="2">
+          <el-button @click="">重置</el-button>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-table
+          :data="userDataList"
+          style="width: 100%"
+          @selection-change="handleSelectionChange">
+          <el-table-column
+            type="selection"
+            width="55">
+          </el-table-column>
+          <el-table-column
+            prop="userName"
+            label="编码"
+            width="180">
+          </el-table-column>
+          <el-table-column
+            prop="nickName"
+            label="名称"
+            width="180">
+          </el-table-column>
+          <el-table-column
+            prop="deptName"
+            label="部门">
+          </el-table-column>
+        </el-table>
+        <el-pagination
+          @size-change="handleSizeChange2"
+          @current-change="handleCurrentChange2"
+          :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.userTotal>
+        </el-pagination>
+      </el-row>
+      <span slot="footer" class="dialog-footer">
+    <el-button @click="dialogVisible = false">取 消</el-button>
+    <el-button type="primary" @click="addUserBtn">确 定</el-button>
+  </span>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import {addUser, list, userList,edit} from "@/api/business/as/assignAuthority";
+
+export default {
+  created() {
+    if(this.$route.query.id){
+      this.queryParams.hId=this.$route.query.id
+      this.queryBtn()
+    }
+  },
+  mounted() {
+    //挂载window.onresize事件(动态设置table高度)
+    let _this = this;
+    window.onresize = () => {
+      if (_this.resizeFlag) {
+        clearTimeout(_this.resizeFlag);
+      }
+      _this.resizeFlag = setTimeout(() => {
+        _this.getTableHeight();
+        _this.resizeFlag = null;
+      }, 100);
+    };
+  },
+  methods:{
+    changeBtn(row){
+      console.log('row',row)
+      edit(row).then(res =>{
+        if(res.code == 200){
+          this.$message.success("修改成功")
+          this.queryBtn()
+        }else {
+          this.$message.error("已存在默认人,请勿重复设置")
+          this.queryBtn()
+        }
+      })
+    },
+    queryBtn(){
+      this.queryParams.deptName=this.queryParams.nickName
+      list(this.queryParams).then(res =>{
+        if(res.code == 200){
+          this.dataList=res.rows
+          this.total=res.total
+        }
+      })
+    },
+    handleSelectionChange(val) {
+      this.userFormList = val;
+      console.log("this.userFormList",this.userFormList)
+      this.userFormList.forEach((item) =>{
+        item.hid=this.queryParams.hId
+      })
+    },
+    addUserBtn(){
+      addUser(this.userFormList).then(res =>{
+        if(res.code == 200){
+          this.$message.success("新增成功")
+          this.dialogVisible = false
+        }
+      })
+      this.queryBtn()
+    },
+    queryUserBtn(){
+      this.queryParams.nickName=this.queryParams.userName
+      userList(this.queryParams).then(res =>{
+        if(res.code == 200){
+          console.log("res.rows",res.rows)
+          this.userDataList = res.rows
+          this.userTotal=res.total
+        }
+      })
+    },
+    addBtn(){
+      this.dialogVisible=true
+      this.title="需求人员"
+      this.queryUserBtn()
+    },
+    //计算table高度(动态设置table高度)
+    getTableHeight() {
+      let tableH = 150; //距离页面下方的高度
+      let tableHeightDetil = window.innerHeight - tableH;
+      if (tableHeightDetil <= 300) {
+        this.tableHeight = 300;
+      } else {
+        this.tableHeight = window.innerHeight - tableH;
+      }
+    },
+    handleSizeChange1(val) {
+      this.queryParams.pageSize = val
+      this.queryBtn()
+    },
+    handleSizeChange2(val) {
+      this.queryParams.pageSize = val
+      this.queryUserBtn()
+    },
+    handleCurrentChange1(val) {
+      this.queryParams.pageNum = val
+      this.queryBtn()
+    },
+    handleCurrentChange2(val) {
+      this.queryParams.pageNum = val
+      this.queryUserBtn()
+    },
+  },
+  data(){
+    return {
+      isOptions:[
+        {
+          value: '1',
+          label: '否',
+        },
+        {
+          value: '0',
+          label: '是',
+        }
+      ],
+      userFormList:[],
+      userTotal:'',
+      userDataList:[],
+      title:'',
+      dialogVisible:false,
+      isDefault:'否',
+      loading:false,
+      total:0,
+      tableHeight:'', //表格高度
+      queryParams:{
+        hId:undefined,
+        pageNum:1,
+        pageSize:10,
+        userName:'',
+        nickName:'',
+        deptName:'',
+      },
+      dataList:[]
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+
+</style>

+ 211 - 0
src/views/business/as/hospital/index.vue

@@ -0,0 +1,211 @@
+<template>
+  <div class="hospital">
+    <el-row type="flex" class="row-bg" justify="space-between">
+      <el-form ref="queryParams" :model="queryParams" label-width="130px">
+        <el-col :span="5" style="width: 100%">
+          <el-form-item label="项目/医院名称">
+            <el-input v-model="queryParams.projectSource"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-form>
+      <el-col :span="2">
+        <el-button type="primary" @click="queryBtn">搜索</el-button>
+      </el-col>
+    </el-row>
+    <el-row type="flex" class="row-bg" justify="end">
+      <el-col :span="2">
+        <el-button @click="addBtn">新增</el-button>
+      </el-col>
+    </el-row>
+
+    <el-table
+      v-loading="loading"
+      :data="dataList"
+      :height="tableHeight"
+      :header-cell-style="{'text-align':'center'}"
+      :cell-style="{'text-align':'center'}"
+      border
+      style="width: 100%;margin-top: 20px">
+      <el-table-column
+        prop="id"
+        label="序号"
+        width="100">
+      </el-table-column>
+      <el-table-column
+        prop="projectSource"
+        label="项目/医院名称"
+        width="240">
+      </el-table-column>
+      <el-table-column
+        prop="remark"
+        label="备注"
+        width="240">
+      </el-table-column>
+      <el-table-column
+        fixed="right"
+        label="操作">
+        <template #default="scope">
+          <el-button type="text">编辑</el-button>|
+          <el-button type="text" @click="routerBtn(scope.row)">权限分配</el-button>|
+          <el-button type="text" @click="delBtn(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="this.title"
+      :visible.sync="dialogVisible"
+      width="30%"
+      :before-close="handleClose">
+      <el-form ref="form" :model="form" label-width="130px">
+        <el-form-item label="项目/医院名称">
+          <el-input v-model="form.projectSource"></el-input>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+    <el-button @click="dialogVisible = false">取 消</el-button>
+    <el-button type="primary" @click="submitForm">确 定</el-button>
+  </span>
+    </el-dialog>
+  </div>
+
+
+</template>
+<script>
+import {add,edit,list,remove} from '@/api/business/as/hospital'
+export default {
+  mounted() {
+    //挂载window.onresize事件(动态设置table高度)
+    let _this = this;
+    window.onresize = () => {
+      if (_this.resizeFlag) {
+        clearTimeout(_this.resizeFlag);
+      }
+      _this.resizeFlag = setTimeout(() => {
+        _this.getTableHeight();
+        _this.resizeFlag = null;
+      }, 100);
+    };
+  },
+  created() {
+    this.getData()
+    this.getTableHeight();
+  },
+  methods:{
+    routerBtn(row,event,colum) {
+      let resolve = this.$router.push({path:'/business/as/hospital/assignAuthority',query:{id:row.id}});
+    },
+    //计算table高度(动态设置table高度)
+    getTableHeight() {
+      let tableH = 150; //距离页面下方的高度
+      let tableHeightDetil = window.innerHeight - tableH;
+      if (tableHeightDetil <= 300) {
+        this.tableHeight = 300;
+      } else {
+        this.tableHeight = window.innerHeight - tableH;
+      }
+    },
+    queryBtn(){
+      this.getData()
+    },
+    getData(){
+      list(this.queryParams).then(res =>{
+        if(res.code == 200){
+          this.dataList = res.rows
+          this.total = res.total
+        }
+      })
+    },
+    handleSizeChange(val) {
+      console.log(`每页 ${val} 条`);
+      this.queryParams.pageSize = val
+    },
+    handleCurrentChange(val) {
+      console.log(`当前页: ${val}`);
+      this.queryParams.pageNum = val
+    },
+    handleClose(done) {
+      this.$confirm('确认关闭?')
+        .then(_ => {
+          done();
+        })
+        .catch(_ => {});
+    },
+    addBtn() {
+      this.dialogVisible=true
+      this.title="新增"
+    },
+    delBtn(scope){
+      this.$confirm('确认删除?')
+        .then(_ => {
+          remove(scope.id).then(res =>{
+            if(res.code == 200){
+              this.$modal.msgSuccess("删除成功");
+              this.getData()
+            }
+          })
+        })
+        .catch(_ => {});
+    },
+    cancal(){
+      this.form={
+        id:undefined,
+        projectSource:''
+      }
+    },
+    submitForm(){
+      this.$refs["form"].validate( valid => {
+        if (valid) {
+          if (this.form.id == undefined) {
+            add(this.form).then(res =>{
+              if(res.code == 200){
+                this.$modal.msgSuccess("新增成功");
+                this.dialogVisible = false
+                this.cancal()
+                this.getData()
+              }
+            })
+          }else {
+            edit().then(res =>{
+              if(res.code == 200){
+                this.$modal.msgSuccess("修改成功");
+                this.dialogVisible = false
+              }
+            })
+          }
+        }
+      })
+    }
+  },
+  data() {
+    return {
+      dialogVisible:false,
+      loading:false,
+      tableHeight:'', //表格高度
+      title:'',
+      total:'',
+      dataList:[],
+      queryParams:{
+        pageNum:1,
+        pageSize:10,
+        projectSource:''
+      },
+      form:{
+        id:undefined,
+        projectSource:''
+      }
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+</style>

+ 114 - 61
src/views/business/as/problemInfo/index.vue

@@ -12,28 +12,26 @@
       <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-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-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">
@@ -269,32 +267,32 @@
       <el-button @click="cancel">取 消</el-button>
       <el-button type="primary" @click="submitForm">确 定</el-button>
 
-      <el-form ref="form" :model="form" label-width="160px">
+      <el-form ref="form" :model="form" :rules="rules" label-width="170px">
         <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-col :span="6">
+            <el-form-item label="项目来源/医院" prop="projectSource">
+              <el-autocomplete
+                v-model="form.projectSource"
+                :fetch-suggestions="querySearchAsync"
+                placeholder="请输入内容"
+                @select="handleSelect"
+              ></el-autocomplete>
             </el-form-item>
           </el-col>
-          <el-col :span="5">
-            <el-form-item label="提问人">
+          <el-col :span="6">
+            <el-form-item label="提问人" prop="questioner">
               <el-input v-model="form.questioner"></el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="5">
-            <el-form-item label="提问人联系人方式">
+          <el-col :span="6">
+            <el-form-item label="提问人联系人方式" prop="questionerWay">
               <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-col :span="6">
+            <el-form-item label="问题类别" prop="problemType">
               <el-select v-model="form.problemType" placeholder="请选择">
                 <el-option
                   v-for="item in problemTypeOptions"
@@ -305,26 +303,25 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="5">
-            <el-form-item label="科室信息">
+          <el-col :span="6">
+            <el-form-item label="科室信息" prop="roomInformation">
               <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-col :span="6">
+              <el-form-item label="处理负责人" prop="processor">
+                <el-select v-model="form.processor" placeholder="请选择">
+                  <el-option
+                    v-for="item in processorOptions"
+                    :key="item.userName"
+                    :label="item.nickName"
+                    :value="item.userName">
+                  </el-option>
+                </el-select>
               </el-form-item>
             </el-col>
-          <el-col :span="5">
-            <el-form-item label="处理负责人联系人方式">
+          <el-col :span="6">
+            <el-form-item label="处理负责人联系人方式" prop="processorWay">
               <el-input v-model="form.processorWay"></el-input>
             </el-form-item>
           </el-col>
@@ -427,7 +424,7 @@
             <el-form-item >
               <el-select v-model="form.workOrderProcessor" placeholder="请选择工单处理人">
                 <el-option
-                  v-for="item in processorOptions"
+                  v-for="item in processorOptions1"
                   :key="item.userCode"
                   :label="item.nickName"
                   :value="item.userCode">
@@ -457,7 +454,14 @@
 
 <script>
 
-import {list, remove, updateStage, pushWorkOrder, downloadExcel} from "@/api/business/as/problemInfo"
+import {
+  list,
+  remove,
+  updateStage,
+  pushWorkOrder,
+  downloadExcel,
+  getHospitalAndProcessor
+} from "@/api/business/as/problemInfo"
 import {getToken} from "@/utils/auth";
 import {Axios} from "axios";
 import axios from 'axios'
@@ -466,6 +470,31 @@ export default {
     this.handleClick()
   },
   methods: {
+    querySearchAsync(queryString, cb) {
+      console.log("queryString",queryString)
+      this.restaurants.forEach((item) =>{
+        item.value=item.projectSource
+      })
+      var restaurants = this.restaurants
+        console.log("restaurants",restaurants)
+      var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants;
+      cb(results)
+    },
+    createStateFilter(queryString) {
+      console.log("11111111",queryString)
+      return (item) => {
+        return item.projectSource.match(queryString);
+      };
+    },
+    handleSelect(item) {
+      console.log("item",item);
+      item.assignAuthorityUser.forEach((item) =>{
+        if(item.isDefaultPerson == 0){
+          this.processorOptions=[item]
+        }
+      })
+      console.log("this.processorOptions",this.processorOptions)
+    },
     getChangeType2(e) {
       for (var i = 0; i < this.problemTypeOptions.length; i++) {
         if (this.problemTypeOptions[i].value === e) { //dictValue,dictLabel保持和上面定义一致
@@ -623,6 +652,12 @@ export default {
     addFrom(){
       this.dialogTitle='新增问题'
       this.dialogVisible = true
+      getHospitalAndProcessor().then(res =>{
+        if(res.code == 200){
+          this.restaurants = res.data
+          console.log()
+        }
+      })
     },
     cancel(){
       this.form = {
@@ -658,6 +693,7 @@ export default {
       this.$refs["form"].validate(async valid => {
         if (valid) {
           if (this.form.id == undefined) {
+            console.log("this.form",this.form)
             //新增售后问题
             let formData = new FormData();
             formData.append("problemInfo",new Blob([JSON.stringify(this.form)], {type: "application/json"}))
@@ -679,7 +715,6 @@ export default {
             }).then(res =>{
               if(res.data.code == 200){
                 this.$modal.msgSuccess("新增成功");
-                console.log("图片返回结果",res)
                 this.dialogVisible = false
                 this.handleClick()
               }
@@ -799,6 +834,33 @@ export default {
   },
   data() {
     return {
+      rules: {
+        projectSource: [
+          { required: true, message: '请输入项目/医院', trigger: 'blur' },
+        ],
+        questioner: [
+          { required: true, message: '请输入提问人', trigger: 'blur' },
+        ],
+        questionerWay: [
+          { required: true, message: '请输入提问人联系方式', trigger: 'blur' },
+        ],
+        problemType: [
+          { required: true, message: '请选择问题类型', trigger: 'change' }
+        ],
+        roomInformation: [
+          { required: true, message: '请输入科室信息', trigger: 'blur' },
+        ],
+        processor: [
+          { required: true, message: '请选择负责处理人', trigger: 'change' }
+        ],
+        processorWay: [
+          { required: true, message: '请输入负责处理人联系方式', trigger: 'blur' },
+        ]
+      },
+      projectSource:'',
+      stateOne: '',
+      timeout:  null,
+      restaurants:[],
       dialogTitle:'',
       pictureList:[],
       //标签
@@ -828,16 +890,7 @@ export default {
           label:'转工单-已解决'
         }
       ],
-      processorOptions:[
-        {
-          userCode: '10001',
-          nickName: '王五'
-        },
-        {
-          userCode: '10002',
-          nickName: '张三'
-        }
-      ],
+      processorOptions:[],
       problemTypeOptions:[
         {
           value: '1',