EvaluateRepeat.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020
  1. <style>
  2. .active{
  3. color:#AEADAD;
  4. }
  5. </style>
  6. <template>
  7. <div id="evaluate-repeat" >
  8. <el-form size="small" :model="formData" inline>
  9. <el-row :gutter="20">
  10. <el-col :span="20">
  11. <el-form-item label="事项名称">
  12. <el-input
  13. v-model="formData.name"
  14. placeholder="事项名称">
  15. </el-input>
  16. </el-form-item>
  17. <el-form-item label="总体满意度">
  18. <el-select v-model="formData.myTotalEvaluate" placeholder="请选择">
  19. <el-option
  20. v-for="item in totalEvaluate"
  21. :key="item.value"
  22. :label="item.label"
  23. :value="item.value">
  24. </el-option>
  25. </el-select>
  26. </el-form-item>
  27. <el-form-item label="开始时间:">
  28. <el-date-picker format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd" placeholder="选择日期" v-model="form.date1" style="width: 100%;"></el-date-picker>
  29. </el-form-item>
  30. <el-form-item label="结束时间:">
  31. <el-date-picker format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd" placeholder="选择日期" v-model="form.date2" style="width: 100%;"></el-date-picker>
  32. </el-form-item>
  33. </el-col>
  34. <el-col :span="4">
  35. <el-form-item class="btn-i">
  36. <el-button class="role_button" role_button_code="a8f2fe9f-f63f-431e-83d9-cc014cc56737" @click="onCommit">查询</el-button>
  37. <el-button class="role_button" role_button_code="ec6284bf-4a37-40e1-b833-7d33195ca82d" @click="ShowDownloadDialog()">导出</el-button>
  38. <el-upload style="display: inline-block;margin-left:8px"
  39. class="upload-demo role_button" role_button_code="5190f699-c2d9-4d14-ae11-39d6b06c0d28"
  40. action="http://10.81.66.9:9250/ywtb/ywtbHcp_upload"
  41. :show-file-list="showList"
  42. :onError="uploadError"
  43. :onSuccess="uploadSuccess"
  44. :beforeUpload="beforeAvatarUpload"
  45. :file-list="fileList">
  46. <el-button class="role_button" role_button_code="5190f699-c2d9-4d14-ae11-39d6b06c0d28" type="primary">上传</el-button>
  47. </el-upload>
  48. </el-form-item>
  49. </el-col>
  50. </el-row>
  51. </el-form>
  52. <div class="tab-number">
  53. <div class="tab-area">
  54. <tab-control :tab-id.sync="currentRepeatId" style-type="colorful" :data-arr="isRepeatTabArr" />
  55. </div>
  56. <div class="search_right">
  57. <span>共有</span>
  58. <span>{{totalCount}}</span>
  59. <span>条记录</span>
  60. </div>
  61. </div>
  62. <div v-loading="loading" class="table_wide" element-loading-text="数据加载中"
  63. element-loading-spinner="el-icon-loading"
  64. element-loading-background="rgba(3, 30, 57, 0.8)">
  65. <div class="table-area">
  66. <my-table :headers="evaluateRepeatTableHeader" :table-data="tableData" :has-operation="true">
  67. <template #selectionBefore>
  68. <el-table-column
  69. type="selection"
  70. width="55"
  71. >
  72. </el-table-column>
  73. </template>
  74. <template #operation="{data}">
  75. <el-link class="mr-link" type="primary" @click="openModel('find',data)">查看 </el-link>
  76. <el-link class="mr-link diff_color" v-if="huifuState =='173'&&(data.EXAMINE_STATE==undefined || data.EXAMINE_STATE=='2')&&(data.TYPE =='0'||data.TYPE =='2'||data.TYPE =='3'||data.TYPE =='5')"
  77. type="primary" @click="openModel('repeat',data)">回复 </el-link>
  78. <el-link class="mr-link diff_color" v-if="huifuState =='174'&&data.EXAMINE_STATE=='0'&&(data.TYPE =='0'||data.TYPE =='2'||data.TYPE =='3'||data.TYPE =='5')" type="primary" @click="openModel('exam',data)">审批 </el-link>
  79. <!-- <el-link class="mr-link diff_color" v-if="data.EXAMINE_STATE=='1'&&(data.TYPE =='1'||data.TYPE =='4'||data.TYPE =='6'||data.TYPE =='7')" type="primary" @click="openModel('find',data)">已审批 </el-link>-->
  80. <el-link class="mr-link" type="primary" @click="showDialog('situation',data)"><span v-bind:class="{active: data.HANDING_NUMBER==null}">办件情况 </span></el-link>
  81. </template>
  82. </my-table>
  83. </div>
  84. </div>
  85. <div class="page">
  86. <ele-pagination @sizeOrPageChange="sizeOrPageChange" :total-count="totalCount" :current-page="currentPage" :page-size="pageSize"/>
  87. </div>
  88. <evaluate-repeat-model :operation-type="operationType" :title="dialogRepeatTitle" :currentData="currentData" :dialog-visible.sync="isModelShow"/>
  89. <el-dialog :title="dialogTitle" :visible.sync="dialogFormVisible" :width="dialogFormWidth" :top="dialogFormTop">
  90. <div class="guide_body">
  91. <div class="step_menu">
  92. <div class="step_top">
  93. <div class="single_step">
  94. <div class="single_bg" :class="[stepList[0].chosen?'single_bg_active':'']">
  95. <div class="single_button" :class="[stepList[0].selectable?'single_button_active':'']" @click="chooseStep(stepList[0].id)">
  96. <span class="single_num" :class="[stepList[0].selectable?'single_num_active':'']">{{stepList[0].id}}</span>
  97. </div>
  98. </div>
  99. </div>
  100. <div class="line">
  101. <el-divider></el-divider>
  102. </div>
  103. <div class="single_step">
  104. <div class="single_bg" :class="[stepList[1].chosen?'single_bg_active':'']">
  105. <div class="single_button" :class="[stepList[1].selectable?'single_button_active':'']" @click="chooseStep(stepList[1].id)">
  106. <span class="single_num" :class="[stepList[1].selectable?'single_num_active':'']">{{stepList[1].id}}</span>
  107. </div>
  108. </div>
  109. </div>
  110. <div class="line">
  111. <el-divider></el-divider>
  112. </div>
  113. <div class="single_step">
  114. <div class="single_bg" :class="[stepList[2].chosen?'single_bg_active':'']">
  115. <div class="single_button" :class="[stepList[2].selectable?'single_button_active':'']" @click="chooseStep(stepList[2].id)">
  116. <span class="single_num" :class="[stepList[2].selectable?'single_num_active':'']">{{stepList[2].id}}</span>
  117. </div>
  118. </div>
  119. </div>
  120. </div>
  121. <div class="step_bottom">
  122. <div class="single_title">
  123. <span class="single_remarks">{{stepList[0].name}}</span>
  124. </div>
  125. <div class="single_title">
  126. <span class="single_remarks">{{stepList[1].name}}</span>
  127. </div>
  128. <div class="single_title">
  129. <span class="single_remarks">{{stepList[2].name}}</span>
  130. </div>
  131. </div>
  132. </div>
  133. <div class="basic_info">
  134. <div v-for="(item,index) in detailList" :key="index" class="single_item">
  135. <span class="basic_single_title">{{item.title}}:</span>
  136. <span class="basic_single_content">{{item.content}}</span>
  137. </div>
  138. </div>
  139. </div>
  140. </el-dialog>
  141. <el-dialog title="选择导出数量" :visible.sync="dialogNumberVisible" width="45%" :top="dialogFormTop">
  142. <div class="number_body">
  143. <div class="search_left">
  144. <span>共有</span>
  145. <span>{{totalCountAll}}</span>
  146. <span>条记录</span>
  147. </div>
  148. <div class="button_list">
  149. <span v-for="(item,index) in numberList" :key="index" class="single_number" @click="downloadFile(item.start,item.end)">
  150. {{item.start}}----{{item.end}}
  151. </span>
  152. </div>
  153. </div>
  154. </el-dialog>
  155. </div>
  156. </template>
  157. <script>
  158. import {MessageBox} from "element-ui";
  159. import {mapEvaluateState,mapEvaluateMutations} from "@/units/map-units";
  160. import MyTable from "@/components/my-table/MyTable";
  161. import {evaluateRepeatTableHeader, isRepeatTabArr, totalEvaluate} from "@/views/units/local-data";
  162. import ElePagination from "@/components/ele-paga/ElePagination";
  163. import TabControl from "@/components/common-panel/c-cpns/TabControl";
  164. import EvaluateRepeatModel from "@/views/evaluate/c-cpns/EvaluateRepeatModel";
  165. import selectConfigModuleByRole from "@/role_button";
  166. export default {
  167. name: "EvaluateRepeat",
  168. components: {EvaluateRepeatModel, TabControl, ElePagination, MyTable},
  169. filters:{
  170. stateType(state){
  171. let obj = {
  172. '0,1,2,3,4':'差评回复',
  173. '2':'网上预审',
  174. '3':'收件',
  175. '4':'补正',
  176. '5':'受理',
  177. '6':'特别程序',
  178. '7':'决定',
  179. '8':'制发证',
  180. '9':'审查',
  181. }
  182. return obj[state]
  183. }
  184. },
  185. data() {
  186. return {
  187. showList:false,
  188. fileList:[],
  189. huifuState:'',
  190. loading: true,
  191. dialogRepeatTitle:'',
  192. totalCount:0,
  193. tableData:[],
  194. numberList:[],
  195. currentRepeatId:'',
  196. currentData:{},
  197. totalCountAll:'',
  198. formData:{
  199. name:'',
  200. myTotalEvaluate:''
  201. },
  202. form: {
  203. //operationUnit: '',
  204. date1: '',
  205. date2: '',
  206. },
  207. currentPage:1,
  208. pageSize:10,
  209. isModelShow:false,
  210. operationType:'',
  211. stepList:[
  212. {
  213. id:'1',
  214. name:'申请',
  215. chosen:true,
  216. selectable:false,
  217. },
  218. {
  219. id:'2',
  220. name:'受理',
  221. chosen:false,
  222. selectable:false,
  223. },
  224. {
  225. id:'3',
  226. name:'办结',
  227. chosen:false,
  228. selectable:false,
  229. },
  230. ],
  231. //模态框参数
  232. dialogTitle:'',
  233. dialogFormWidth:'60%',
  234. dialogFormTop:'12vh',
  235. dialogFormVisible: false,
  236. dialogNumberVisible:false,
  237. chosenStep:'1',
  238. detailAllList:[],
  239. detailList:[
  240. {
  241. id:'1',
  242. code:'item_type',
  243. title:'事项类型',
  244. content:''
  245. },
  246. {
  247. id:'2',
  248. code:'item_code',
  249. title:'实施编码',
  250. content:''
  251. },
  252. {
  253. id:'3',
  254. code:'situation_code',
  255. title:'业务办理项编码',
  256. content:''
  257. },
  258. {
  259. id:'4',
  260. code:'Apply_number',
  261. title:'统一审批编码',
  262. content:''
  263. },
  264. {
  265. id:'5',
  266. code:'item_name',
  267. title:'事项名称',
  268. content:''
  269. },
  270. {
  271. id:'6',
  272. code:'target_type',
  273. title:'办理对象类型',
  274. content:''
  275. },
  276. {
  277. id:'7',
  278. code:'target_name',
  279. title:'办理对象名称',
  280. content:''
  281. },
  282. {
  283. id:'8',
  284. code:'target_license_type',
  285. title:'办理对象证件类型',
  286. content:''
  287. },
  288. {
  289. id:'9',
  290. code:'target_license_number',
  291. title:'办理对象证件编号',
  292. content:''
  293. },
  294. {
  295. id:'10',
  296. code:'user_id',
  297. title:'申请经办人用户ID',
  298. content:''
  299. },
  300. {
  301. id:'11',
  302. code:'user_name',
  303. title:'申请经办人姓名',
  304. content:''
  305. },
  306. {
  307. id:'12',
  308. code:'license_type',
  309. title:'申请经办人证件类型',
  310. content:''
  311. },
  312. {
  313. id:'13',
  314. code:'license_number',
  315. title:'申请经办人证件编号',
  316. content:''
  317. },
  318. {
  319. id:'14',
  320. code:'mobile_number',
  321. title:'申请经办人手机号',
  322. content:''
  323. },
  324. {
  325. id:'15',
  326. code:'node_name',
  327. title:'环节名称',
  328. content:''
  329. },
  330. {
  331. id:'16',
  332. code:'suggestion',
  333. title:'处理意见',
  334. content:''
  335. },
  336. {
  337. id:'17',
  338. code:'operation_department_code',
  339. title:'操作部门编号',
  340. content:''
  341. },
  342. {
  343. id:'18',
  344. code:'operation_department_name',
  345. title:'操作部门名称',
  346. content:''
  347. },
  348. {
  349. id:'19',
  350. code:'operation_user_name',
  351. title:'经办人用户姓名',
  352. content:''
  353. },
  354. {
  355. id:'20',
  356. code:'operation_user_id',
  357. title:'经办人用户编号',
  358. content:''
  359. },
  360. {
  361. id:'22',
  362. code:'Data_source',
  363. title:'数据来源单位',
  364. content:''
  365. },
  366. {
  367. id:'23',
  368. code:'operation_time2',
  369. title:'处理时间',
  370. content:''
  371. },
  372. {
  373. id:'24',
  374. code:'operation_department_name',
  375. title:'操作部门名称',
  376. content:''
  377. },
  378. {
  379. id:'25',
  380. code:'SpecialType',
  381. title:'特别程序种类',
  382. content:''
  383. },
  384. {
  385. id:'26',
  386. code:'SpecialReason',
  387. title:'特别程序启动理由或依据',
  388. content:''
  389. },
  390. {
  391. id:'27',
  392. code:'SpecialName',
  393. title:'特别程序种类名称',
  394. content:''
  395. },
  396. {
  397. id:'28',
  398. code:'source',
  399. title:'办件来源',
  400. content:''
  401. },
  402. {
  403. id:'29',
  404. code:'sdfs',
  405. title:'送达方式',
  406. content:''
  407. },
  408. {
  409. id:'30',
  410. code:'SendMethod',
  411. title:'结果证照类型',
  412. content:''
  413. },
  414. {
  415. id:'31',
  416. code:'result',
  417. title:'处理结果',
  418. content:''
  419. },
  420. {
  421. id:'32',
  422. code:'ProjectType',
  423. title:'办件类型',
  424. content:''
  425. },
  426. {
  427. id:'33',
  428. code:'matter_code',
  429. title:'事项编码',
  430. content:''
  431. },
  432. {
  433. id:'34',
  434. code:'method',
  435. title:'处理类型',
  436. content:''
  437. },
  438. {
  439. id:'35',
  440. code:'IsDeliveryResults',
  441. title:'是否快递递送纸质结果',
  442. content:''
  443. },
  444. ],
  445. }
  446. },
  447. mounted(){
  448. console.log(this.evaRepeatId)
  449. this.currentRepeatId = this.evaRepeatId;
  450. selectConfigModuleByRole(this);
  451. },
  452. computed:{
  453. ...mapEvaluateState({
  454. evaCurrentId:'evaluateCurrentId',
  455. evaFirstLevel:'evaluateFirstLevel',
  456. evaRepeatId:'evaluateRepeatId'
  457. }),
  458. evaluateRepeatTableHeader(){
  459. return evaluateRepeatTableHeader
  460. },
  461. totalEvaluate() {
  462. return totalEvaluate
  463. },
  464. isRepeatTabArr() {
  465. return isRepeatTabArr
  466. }
  467. },
  468. methods:{
  469. uploadError (response, file, fileList) {
  470. this.loading=false;
  471. console.log('上传失败,请重试!',response, file, fileList)
  472. },
  473. uploadSuccess (response, file, fileList) {
  474. console.log('上传文件', response,file, fileList)
  475. if(response.msg[0].success =='true'){
  476. this.loading=false;
  477. this.onCommit();
  478. MessageBox.alert('文件上传成功', '提示', {
  479. confirmButtonText: '确定'
  480. });
  481. }else{
  482. this.loading=false;
  483. this.onCommit();
  484. MessageBox.alert('文件上传失败', '提示', {
  485. confirmButtonText: '确定'
  486. });
  487. }
  488. },
  489. // 上传前对文件的大小的判断
  490. beforeAvatarUpload (file) {
  491. this.loading=true;
  492. const extension = file.name.split('.')[1] === 'xls'
  493. const extension2 = file.name.split('.')[1] === 'xlsx'
  494. const isLt2M = file.size / 1024 / 1024 < 100
  495. if (!extension && !extension2) {
  496. this.loading=false;
  497. MessageBox.alert('上传模板只能是 xls、xlsx 格式!', '提示', {
  498. confirmButtonText: '确定'
  499. });
  500. }
  501. if (!isLt2M) {
  502. this.loading=false;
  503. MessageBox.alert('上传模板大小不能超过 100MB!', '提示', {
  504. confirmButtonText: '确定'
  505. });
  506. }
  507. return extension || extension2 && isLt2M
  508. },
  509. ShowDownloadDialog(){
  510. this.numberList = [];
  511. this.$request({
  512. url:'/ywtb/selectYwtbEvaluatePageList',
  513. method:'post',
  514. data:{
  515. 'MATTER_NAME':this.formData.name,
  516. 'OVERALL_SATISFACTION':'',
  517. 'TYPE':'0,1,2,3,4,5,6,7',
  518. "START_TIME":this.form.date1,
  519. "END_TIME":this.form.date2,
  520. 'pageSize':this.pageSize,
  521. 'pageIndex':this.currentPage,
  522. "appkey":localStorage.getItem("ywtb_userkeycode")
  523. }
  524. }).then(response => {
  525. this.totalCountAll =response.data.msg[0].TotalRowCount;
  526. let length = Math.trunc(this.totalCountAll/50000) +1 ;
  527. for(let i=0;i<length;i++){
  528. if(i<length -1){
  529. this.numberList.push({
  530. start: i*50000 + 1,
  531. end: (i+1)*50000
  532. })
  533. }else{
  534. this.numberList.push({
  535. start: i*50000 + 1,
  536. end: this.totalCountAll
  537. })
  538. }
  539. }
  540. this.dialogNumberVisible = true;
  541. })
  542. },
  543. downloadFile(start,end){
  544. let MATTER_NAME = this.formData.name;
  545. let PAGE_START = start;
  546. let PAGE_END = end;
  547. let url='http://10.81.66.9:9250/ywtb/export_selectYwtbEvaluatePageList?PAGE_START='+PAGE_START +'&PAGE_END='+PAGE_END+'&APPKEY='+localStorage.getItem("ywtb_userkeycode");
  548. if(MATTER_NAME!=''){
  549. url +='&MATTER_NAME='+MATTER_NAME
  550. }
  551. const a = document.createElement('a')
  552. a.href = url;
  553. a.style.display="none";
  554. //测试链接
  555. console.log(a.href)
  556. a.download = '差评回复--'+MATTER_NAME + PAGE_START +'至' + PAGE_END;// 下载文件的名字
  557. document.body.appendChild(a)
  558. a.click();
  559. document.body.removeChild(a);
  560. this.dialogNumberVisible = false;
  561. },
  562. onCommit(){
  563. this.currentPage = 1;
  564. this.commit();
  565. },
  566. commit(){
  567. if(this.currentRepeatId == ''){
  568. return
  569. }
  570. this.huifuState = localStorage.getItem('ywtb_role')
  571. this.getCurrentRepeatIdTitle();
  572. this.loading=true;
  573. this.$request({
  574. url:'/ywtb/selectYwtbEvaluatePageList',
  575. method:'post',
  576. data:{
  577. 'MATTER_NAME':this.formData.name,
  578. 'OVERALL_SATISFACTION':this.formData.myTotalEvaluate,
  579. 'TYPE':this.currentRepeatId,
  580. "START_TIME":this.form.date1,
  581. "END_TIME":this.form.date2,
  582. 'pageSize':this.pageSize,
  583. 'pageIndex':this.currentPage,
  584. "appkey":localStorage.getItem("ywtb_userkeycode")
  585. }
  586. }).then(response => {
  587. this.loading=false;
  588. let dataArr = response.data.msg[0].Rows
  589. this.totalCount =response.data.msg[0].TotalRowCount;
  590. if(dataArr.length > 0){
  591. this.tableData = [];
  592. for(let i=0;i<dataArr.length;i++){
  593. for(let i=0;i<dataArr.length;i++){
  594. if(dataArr[i].COMMENT_TIME != null){
  595. dataArr[i].COMMENT_TIME =dataArr[i].COMMENT_TIME.length > 16 ?dataArr[i].COMMENT_TIME =dataArr[i].COMMENT_TIME.substring(0,16):dataArr[i].COMMENT_TIME;
  596. }
  597. if(dataArr[i].REPLY_TIME != null){
  598. dataArr[i].REPLY_TIME =dataArr[i].REPLY_TIME.length > 16 ?dataArr[i].REPLY_TIME =dataArr[i].REPLY_TIME.substring(0,16):dataArr[i].REPLY_TIME;
  599. }
  600. }
  601. this.tableData.push(dataArr[i]);
  602. }
  603. }else{
  604. this.loading=false;
  605. this.tableData = [];
  606. }
  607. })
  608. },
  609. showDialog(type,data){
  610. if(data.HANDING_NUMBER == null){
  611. return;
  612. }
  613. this.$request({
  614. url:'/ywtb/selectYwtbBanJianFullByAumber',
  615. method:'post',
  616. data:{
  617. "HANDING_NUMBER":data.HANDING_NUMBER,
  618. "appkey":localStorage.getItem("ywtb_userkeycode")
  619. }
  620. }).then(response => {
  621. this.detailAllList = response.data.msg[0].Rows;
  622. if(this.detailAllList.length >0){
  623. this.fillDialogDetail(data.MATTER_NAME);
  624. this.dialogFormVisible = true;
  625. }else{
  626. MessageBox.alert('暂无数据', '提示', {
  627. confirmButtonText: '确定'
  628. });
  629. }
  630. })
  631. //this.chooseStep('1');
  632. },
  633. fillDialogDetail(title){
  634. this.selectableStep();
  635. this.dialogTitle = title + '-详情';
  636. this.chooseStep('1');
  637. },
  638. chooseStep(id){
  639. for(let i=0;i<this.stepList.length;i++){
  640. if(id ==this.stepList[i].id&&!this.stepList[i].selectable){
  641. return
  642. }
  643. }
  644. for(let i=0;i<this.stepList.length;i++){
  645. this.chosenStep= id;
  646. if(id==this.stepList[i].id){
  647. this.stepList[i].chosen = true;
  648. this.showChosenData(this.stepList[i].id);
  649. }else{
  650. if(this.stepList[i].selectable){
  651. this.stepList[i].chosen = false;
  652. }
  653. }
  654. }
  655. },
  656. selectableStep(){
  657. for(let i = 0;i<this.stepList.length; i++){
  658. this.stepList[i].chosen = false
  659. this.stepList[i].selectable = false
  660. }
  661. for(let i=0;i<this.detailAllList.length;i++){
  662. let node = this.detailAllList[i].NODE_NAME;
  663. if(node=="1"){
  664. this.stepList[0].selectable = true;
  665. }else if(node=="5"){
  666. this.stepList[1].selectable = true;
  667. }else if(node=="6"||node=="7"||node=="8"){
  668. this.stepList[2].selectable = true;
  669. }
  670. }
  671. },
  672. showChosenData(index){
  673. if(index == '1'){
  674. for(let i=0;i<this.detailAllList.length;i++){
  675. let node = this.detailAllList[i].NODE_NAME;
  676. if(node=="1"){
  677. this.singleDetail(i);
  678. }
  679. }
  680. }else if(index == '2'){
  681. for(let i=0;i<this.detailAllList.length;i++){
  682. let node = this.detailAllList[i].NODE_NAME;
  683. if(node=="5"){
  684. this.singleDetail(i);
  685. }
  686. }
  687. }else if(index == '3'){
  688. for(let i=0;i<this.detailAllList.length;i++){
  689. let node = this.detailAllList[i].NODE_NAME;
  690. if(node=="6"||node=="7"||node=="8"){
  691. this.singleDetail(i);
  692. }
  693. }
  694. }
  695. },
  696. getCurrentRepeatIdTitle(){
  697. this.dialogRepeatTitle = ''
  698. switch (this.currentRepeatId){
  699. case "0,1,2,3,4":
  700. this.dialogRepeatTitle = '差评回复';
  701. break;
  702. case "0,2,3":
  703. this.dialogRepeatTitle = '差评回复';
  704. break;
  705. case "1":
  706. this.dialogRepeatTitle = '差评回复';
  707. break;
  708. case "2":
  709. this.dialogRepeatTitle = '差评回复';
  710. break;
  711. case "3":
  712. this.dialogRepeatTitle = '差评回复';
  713. break;
  714. case "4":
  715. this.dialogRepeatTitle = '差评回复';
  716. break;
  717. case "5":
  718. this.dialogRepeatTitle = '非差评回复';
  719. break;
  720. case "6":
  721. this.dialogRepeatTitle = '非差评回复';
  722. break;
  723. case "5,6":
  724. this.dialogRepeatTitle = '非差评回复';
  725. break;
  726. }
  727. },
  728. singleDetail(rn){
  729. for(let i =0;i< this.detailList.length;i++){
  730. this.detailList[i].content = ''
  731. }
  732. for(let index in this.detailAllList[rn]){
  733. for(let j =0;j<this.detailList.length;j++){
  734. if(index==this.detailList[j].code.toUpperCase()){
  735. this.detailList[j].content = this.detailAllList[rn][index];
  736. }
  737. }
  738. }
  739. if(rn =='1'){
  740. for(let i =0;i< this.detailList.length;i++){
  741. if(this.detailList[i].id =='23'){
  742. this.detailList[i].content = this.detailAllList[rn].OPERATION_TIME1;
  743. }
  744. }
  745. }
  746. },
  747. sizeOrPageChange(page,size){
  748. this.currentPage = page;
  749. this.pageSize = size;
  750. this.commit();
  751. },
  752. openModel(type,data) {
  753. this.operationType = type || ''
  754. this.currentData = data;
  755. this.isModelShow = true
  756. console.log(type,data)
  757. },
  758. ...mapEvaluateMutations(['evaluateCurrentId','evaluateFirstLevel','evaluateSecondLevel','evaluateThirdLevel','evaluateTimer','evaluateRepeatId'])
  759. },
  760. watch:{
  761. isModelShow:{
  762. handler(val){
  763. if(!val){
  764. this.onCommit();
  765. }
  766. },
  767. deep:true
  768. },
  769. currentRepeatId:{
  770. handler(){
  771. this.onCommit();
  772. },
  773. deep:true
  774. }
  775. }
  776. }
  777. </script>
  778. <style scoped lang="scss">
  779. #evaluate-repeat{
  780. width:100%;
  781. height:100%;
  782. .tab-number{
  783. width: 100%;
  784. display: flex;
  785. .tab-area{
  786. margin-bottom: 1px;
  787. width:70%;
  788. ::v-deep{
  789. .tab-item{
  790. //padding: 2px 4px;
  791. margin-right: 10px;
  792. &.class1{
  793. &.active{
  794. color: #40a0ff;
  795. }
  796. background: rgba(0, 128, 255, 0.3);
  797. border: 1px solid #0080ff;
  798. }
  799. &.class2{
  800. &.active{
  801. color: #e6ac00;
  802. }
  803. background: rgba(255, 191, 0, 0.3);
  804. border: 1px solid #ffbf00;
  805. }
  806. &.class3{
  807. &.active{
  808. color: #ff5c25;
  809. }
  810. background: rgba(255, 64, 0, 0.3) ;
  811. border: 1px solid #ff4000;
  812. }
  813. &.class4{
  814. &.active{
  815. color: #39e545;
  816. }
  817. background: rgba(34, 172, 56, 0.3);
  818. border: 1px solid #22ac38;
  819. }
  820. }
  821. }
  822. }
  823. .search_right{
  824. width: 30%;
  825. height: 100%;
  826. color: #fff;
  827. font-size: 17px;
  828. display: flex;
  829. flex-direction: row;
  830. justify-content: flex-end;
  831. }
  832. }
  833. .table_wide{
  834. width: 100%;
  835. height: 80%;
  836. }
  837. .table-area{
  838. width: 100%;
  839. height:100%;
  840. }
  841. .page{
  842. margin-top: 30px;
  843. text-align: right;
  844. }
  845. .guide_body{
  846. color: #FFF;
  847. .step_menu{
  848. width: 100%;
  849. height: 80px;
  850. display: flex;
  851. flex-direction: column;
  852. .step_top{
  853. width: 100%;
  854. height:40px;
  855. display: flex;
  856. flex-direction: row;
  857. justify-content: center;
  858. .single_step{
  859. width: 4.15%;
  860. height:100%;
  861. display: flex;
  862. justify-content: center;
  863. align-items: center;
  864. cursor: pointer;
  865. .single_bg{
  866. width: 50px;
  867. height: 50px;
  868. border-radius: 25px;
  869. display: flex;
  870. justify-content: center;
  871. align-items: center;
  872. }
  873. .single_bg_active, single_bg_active:hover{
  874. background: rgb(0,128,255,0.2);
  875. .single_num{
  876. font-weight: bold;
  877. color: #fdbf00 !important;
  878. }
  879. }
  880. .single_button{
  881. border:1px solid #2c91cc;
  882. width: 32px;
  883. height: 32px;
  884. border-radius: 16px;
  885. display: flex;
  886. justify-content: center;
  887. align-items: center;
  888. .single_num{
  889. color: #8c8c8c;
  890. }
  891. .single_num_active{
  892. color: #fff;
  893. }
  894. }
  895. .single_button_active,.single_button_active:focus,.single_button_active:hover{
  896. background:#2c91cc;
  897. }
  898. }
  899. .line{
  900. width: 19%;
  901. height:100%;
  902. display: flex;
  903. justify-content: center;
  904. align-items: center;
  905. }
  906. }
  907. .step_bottom{
  908. width: 100%;
  909. height:40px;
  910. display: flex;
  911. flex-direction: row;
  912. justify-content: center;
  913. align-items: center;
  914. .single_title{
  915. width: 23%;
  916. display: flex;
  917. justify-content: center;
  918. align-items: center;
  919. .single_remarks{
  920. font-size: 18px;
  921. }
  922. }
  923. }
  924. }
  925. .basic_info{
  926. width: 100%;
  927. height: 500px;
  928. padding-left: 20px;
  929. overflow-y:auto;
  930. font-size: 14px;
  931. display: flex;
  932. flex-direction: row;
  933. flex-wrap: wrap;
  934. align-content: space-around;
  935. justify-content: flex-start;
  936. .single_item{
  937. width: 32%;
  938. height:40px;
  939. display: flex;
  940. align-items: center;
  941. .basic_single_title{
  942. color: #71d7ff;
  943. }
  944. .basic_single_content{
  945. padding-left: 20px;
  946. }
  947. }
  948. }
  949. }
  950. .number_body{
  951. color: #FFF;
  952. height: 500px;
  953. .search_left{
  954. width: 100%;
  955. padding-bottom: 20px;
  956. >span{
  957. font-size: 18px;
  958. }
  959. }
  960. .button_list{
  961. display: flex;
  962. flex-wrap:wrap;
  963. justify-content: flex-start;
  964. align-items: center;
  965. >span{
  966. cursor: pointer;
  967. font-size: 20px;
  968. font-weight: bold;
  969. width: 30%;
  970. margin-left: 1.5%;
  971. margin-left: 1.5%;
  972. margin-bottom: 20px;
  973. height: 40px;
  974. border:1px solid #2c91cc;
  975. display: flex;
  976. justify-content: center;
  977. align-items: center;
  978. }
  979. }
  980. }
  981. .diff_color{
  982. color: #01d6ff;
  983. }
  984. }
  985. </style>