EvaluateRepeat.vue 29 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019
  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. this.currentRepeatId = this.evaRepeatId;
  449. selectConfigModuleByRole(this);
  450. },
  451. computed:{
  452. ...mapEvaluateState({
  453. evaCurrentId:'evaluateCurrentId',
  454. evaFirstLevel:'evaluateFirstLevel',
  455. evaRepeatId:'evaluateRepeatId'
  456. }),
  457. evaluateRepeatTableHeader(){
  458. return evaluateRepeatTableHeader
  459. },
  460. totalEvaluate() {
  461. return totalEvaluate
  462. },
  463. isRepeatTabArr() {
  464. return isRepeatTabArr
  465. }
  466. },
  467. methods:{
  468. uploadError (response, file, fileList) {
  469. this.loading=false;
  470. console.log('上传失败,请重试!',response, file, fileList)
  471. },
  472. uploadSuccess (response, file, fileList) {
  473. console.log('上传文件', response,file, fileList)
  474. if(response.msg[0].success =='true'){
  475. this.loading=false;
  476. this.onCommit();
  477. MessageBox.alert('文件上传成功', '提示', {
  478. confirmButtonText: '确定'
  479. });
  480. }else{
  481. this.loading=false;
  482. this.onCommit();
  483. MessageBox.alert('文件上传失败', '提示', {
  484. confirmButtonText: '确定'
  485. });
  486. }
  487. },
  488. // 上传前对文件的大小的判断
  489. beforeAvatarUpload (file) {
  490. this.loading=true;
  491. const extension = file.name.split('.')[1] === 'xls'
  492. const extension2 = file.name.split('.')[1] === 'xlsx'
  493. const isLt2M = file.size / 1024 / 1024 < 100
  494. if (!extension && !extension2) {
  495. this.loading=false;
  496. MessageBox.alert('上传模板只能是 xls、xlsx 格式!', '提示', {
  497. confirmButtonText: '确定'
  498. });
  499. }
  500. if (!isLt2M) {
  501. this.loading=false;
  502. MessageBox.alert('上传模板大小不能超过 100MB!', '提示', {
  503. confirmButtonText: '确定'
  504. });
  505. }
  506. return extension || extension2 && isLt2M
  507. },
  508. ShowDownloadDialog(){
  509. this.numberList = [];
  510. this.$request({
  511. url:'/ywtb/selectYwtbEvaluatePageList',
  512. method:'post',
  513. data:{
  514. 'MATTER_NAME':this.formData.name,
  515. 'OVERALL_SATISFACTION':'',
  516. 'TYPE':'0,1,2,3,4,5,6,7',
  517. "START_TIME":this.form.date1,
  518. "END_TIME":this.form.date2,
  519. 'pageSize':this.pageSize,
  520. 'pageIndex':this.currentPage,
  521. "appkey":localStorage.getItem("ywtb_userkeycode")
  522. }
  523. }).then(response => {
  524. this.totalCountAll =response.data.msg[0].TotalRowCount;
  525. let length = Math.trunc(this.totalCountAll/50000) +1 ;
  526. for(let i=0;i<length;i++){
  527. if(i<length -1){
  528. this.numberList.push({
  529. start: i*50000 + 1,
  530. end: (i+1)*50000
  531. })
  532. }else{
  533. this.numberList.push({
  534. start: i*50000 + 1,
  535. end: this.totalCountAll
  536. })
  537. }
  538. }
  539. this.dialogNumberVisible = true;
  540. })
  541. },
  542. downloadFile(start,end){
  543. let MATTER_NAME = this.formData.name;
  544. let PAGE_START = start;
  545. let PAGE_END = end;
  546. let url='http://10.81.66.9:9250/ywtb/export_selectYwtbEvaluatePageList?PAGE_START='+PAGE_START +'&PAGE_END='+PAGE_END+'&APPKEY='+localStorage.getItem("ywtb_userkeycode");
  547. if(MATTER_NAME!=''){
  548. url +='&MATTER_NAME='+MATTER_NAME
  549. }
  550. const a = document.createElement('a')
  551. a.href = url;
  552. a.style.display="none";
  553. //测试链接
  554. console.log(a.href)
  555. a.download = '差评回复--'+MATTER_NAME + PAGE_START +'至' + PAGE_END;// 下载文件的名字
  556. document.body.appendChild(a)
  557. a.click();
  558. document.body.removeChild(a);
  559. this.dialogNumberVisible = false;
  560. },
  561. onCommit(){
  562. this.currentPage = 1;
  563. this.commit();
  564. },
  565. commit(){
  566. if(this.currentRepeatId == ''){
  567. return
  568. }
  569. this.huifuState = localStorage.getItem('ywtb_role')
  570. this.getCurrentRepeatIdTitle();
  571. this.loading=true;
  572. this.$request({
  573. url:'/ywtb/selectYwtbEvaluatePageList',
  574. method:'post',
  575. data:{
  576. 'MATTER_NAME':this.formData.name,
  577. 'OVERALL_SATISFACTION':this.formData.myTotalEvaluate,
  578. 'TYPE':this.currentRepeatId,
  579. "START_TIME":this.form.date1,
  580. "END_TIME":this.form.date2,
  581. 'pageSize':this.pageSize,
  582. 'pageIndex':this.currentPage,
  583. "appkey":localStorage.getItem("ywtb_userkeycode")
  584. }
  585. }).then(response => {
  586. this.loading=false;
  587. let dataArr = response.data.msg[0].Rows
  588. this.totalCount =response.data.msg[0].TotalRowCount;
  589. if(dataArr.length > 0){
  590. this.tableData = [];
  591. for(let i=0;i<dataArr.length;i++){
  592. for(let i=0;i<dataArr.length;i++){
  593. if(dataArr[i].COMMENT_TIME != null){
  594. 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;
  595. }
  596. if(dataArr[i].REPLY_TIME != null){
  597. 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;
  598. }
  599. }
  600. this.tableData.push(dataArr[i]);
  601. }
  602. }else{
  603. this.loading=false;
  604. this.tableData = [];
  605. }
  606. })
  607. },
  608. showDialog(type,data){
  609. if(data.HANDING_NUMBER == null){
  610. return;
  611. }
  612. this.$request({
  613. url:'/ywtb/selectYwtbBanJianFullByAumber',
  614. method:'post',
  615. data:{
  616. "HANDING_NUMBER":data.HANDING_NUMBER,
  617. "appkey":localStorage.getItem("ywtb_userkeycode")
  618. }
  619. }).then(response => {
  620. this.detailAllList = response.data.msg[0].Rows;
  621. if(this.detailAllList.length >0){
  622. this.fillDialogDetail(data.MATTER_NAME);
  623. this.dialogFormVisible = true;
  624. }else{
  625. MessageBox.alert('暂无数据', '提示', {
  626. confirmButtonText: '确定'
  627. });
  628. }
  629. })
  630. //this.chooseStep('1');
  631. },
  632. fillDialogDetail(title){
  633. this.selectableStep();
  634. this.dialogTitle = title + '-详情';
  635. this.chooseStep('1');
  636. },
  637. chooseStep(id){
  638. for(let i=0;i<this.stepList.length;i++){
  639. if(id ==this.stepList[i].id&&!this.stepList[i].selectable){
  640. return
  641. }
  642. }
  643. for(let i=0;i<this.stepList.length;i++){
  644. this.chosenStep= id;
  645. if(id==this.stepList[i].id){
  646. this.stepList[i].chosen = true;
  647. this.showChosenData(this.stepList[i].id);
  648. }else{
  649. if(this.stepList[i].selectable){
  650. this.stepList[i].chosen = false;
  651. }
  652. }
  653. }
  654. },
  655. selectableStep(){
  656. for(let i = 0;i<this.stepList.length; i++){
  657. this.stepList[i].chosen = false
  658. this.stepList[i].selectable = false
  659. }
  660. for(let i=0;i<this.detailAllList.length;i++){
  661. let node = this.detailAllList[i].NODE_NAME;
  662. if(node=="1"){
  663. this.stepList[0].selectable = true;
  664. }else if(node=="5"){
  665. this.stepList[1].selectable = true;
  666. }else if(node=="6"||node=="7"||node=="8"){
  667. this.stepList[2].selectable = true;
  668. }
  669. }
  670. },
  671. showChosenData(index){
  672. if(index == '1'){
  673. for(let i=0;i<this.detailAllList.length;i++){
  674. let node = this.detailAllList[i].NODE_NAME;
  675. if(node=="1"){
  676. this.singleDetail(i);
  677. }
  678. }
  679. }else if(index == '2'){
  680. for(let i=0;i<this.detailAllList.length;i++){
  681. let node = this.detailAllList[i].NODE_NAME;
  682. if(node=="5"){
  683. this.singleDetail(i);
  684. }
  685. }
  686. }else if(index == '3'){
  687. for(let i=0;i<this.detailAllList.length;i++){
  688. let node = this.detailAllList[i].NODE_NAME;
  689. if(node=="6"||node=="7"||node=="8"){
  690. this.singleDetail(i);
  691. }
  692. }
  693. }
  694. },
  695. getCurrentRepeatIdTitle(){
  696. this.dialogRepeatTitle = ''
  697. switch (this.currentRepeatId){
  698. case "0,1,2,3,4":
  699. this.dialogRepeatTitle = '差评回复';
  700. break;
  701. case "0":
  702. this.dialogRepeatTitle = '差评回复';
  703. break;
  704. case "1":
  705. this.dialogRepeatTitle = '差评回复';
  706. break;
  707. case "2":
  708. this.dialogRepeatTitle = '差评回复';
  709. break;
  710. case "3":
  711. this.dialogRepeatTitle = '差评回复';
  712. break;
  713. case "4":
  714. this.dialogRepeatTitle = '差评回复';
  715. break;
  716. case "5":
  717. this.dialogRepeatTitle = '非差评回复';
  718. break;
  719. case "6":
  720. this.dialogRepeatTitle = '非差评回复';
  721. break;
  722. case "5,6":
  723. this.dialogRepeatTitle = '非差评回复';
  724. break;
  725. }
  726. },
  727. singleDetail(rn){
  728. for(let i =0;i< this.detailList.length;i++){
  729. this.detailList[i].content = ''
  730. }
  731. for(let index in this.detailAllList[rn]){
  732. for(let j =0;j<this.detailList.length;j++){
  733. if(index==this.detailList[j].code.toUpperCase()){
  734. this.detailList[j].content = this.detailAllList[rn][index];
  735. }
  736. }
  737. }
  738. if(rn =='1'){
  739. for(let i =0;i< this.detailList.length;i++){
  740. if(this.detailList[i].id =='23'){
  741. this.detailList[i].content = this.detailAllList[rn].OPERATION_TIME1;
  742. }
  743. }
  744. }
  745. },
  746. sizeOrPageChange(page,size){
  747. this.currentPage = page;
  748. this.pageSize = size;
  749. this.commit();
  750. },
  751. openModel(type,data) {
  752. this.operationType = type || ''
  753. this.currentData = data;
  754. this.isModelShow = true
  755. console.log(type,data)
  756. },
  757. ...mapEvaluateMutations(['evaluateCurrentId','evaluateFirstLevel','evaluateSecondLevel','evaluateThirdLevel','evaluateTimer','evaluateRepeatId'])
  758. },
  759. watch:{
  760. isModelShow:{
  761. handler(val){
  762. if(!val){
  763. this.onCommit();
  764. }
  765. },
  766. deep:true
  767. },
  768. currentRepeatId:{
  769. handler(){
  770. this.onCommit();
  771. },
  772. deep:true
  773. }
  774. }
  775. }
  776. </script>
  777. <style scoped lang="scss">
  778. #evaluate-repeat{
  779. width:100%;
  780. height:100%;
  781. .tab-number{
  782. width: 100%;
  783. display: flex;
  784. .tab-area{
  785. margin-bottom: 1px;
  786. width:70%;
  787. ::v-deep{
  788. .tab-item{
  789. //padding: 2px 4px;
  790. margin-right: 10px;
  791. &.class1{
  792. &.active{
  793. color: #40a0ff;
  794. }
  795. background: rgba(0, 128, 255, 0.3);
  796. border: 1px solid #0080ff;
  797. }
  798. &.class2{
  799. &.active{
  800. color: #e6ac00;
  801. }
  802. background: rgba(255, 191, 0, 0.3);
  803. border: 1px solid #ffbf00;
  804. }
  805. &.class3{
  806. &.active{
  807. color: #ff5c25;
  808. }
  809. background: rgba(255, 64, 0, 0.3) ;
  810. border: 1px solid #ff4000;
  811. }
  812. &.class4{
  813. &.active{
  814. color: #39e545;
  815. }
  816. background: rgba(34, 172, 56, 0.3);
  817. border: 1px solid #22ac38;
  818. }
  819. }
  820. }
  821. }
  822. .search_right{
  823. width: 30%;
  824. height: 100%;
  825. color: #fff;
  826. font-size: 17px;
  827. display: flex;
  828. flex-direction: row;
  829. justify-content: flex-end;
  830. }
  831. }
  832. .table_wide{
  833. width: 100%;
  834. height: 80%;
  835. }
  836. .table-area{
  837. width: 100%;
  838. height:100%;
  839. }
  840. .page{
  841. margin-top: 30px;
  842. text-align: right;
  843. }
  844. .guide_body{
  845. color: #FFF;
  846. .step_menu{
  847. width: 100%;
  848. height: 80px;
  849. display: flex;
  850. flex-direction: column;
  851. .step_top{
  852. width: 100%;
  853. height:40px;
  854. display: flex;
  855. flex-direction: row;
  856. justify-content: center;
  857. .single_step{
  858. width: 4.15%;
  859. height:100%;
  860. display: flex;
  861. justify-content: center;
  862. align-items: center;
  863. cursor: pointer;
  864. .single_bg{
  865. width: 50px;
  866. height: 50px;
  867. border-radius: 25px;
  868. display: flex;
  869. justify-content: center;
  870. align-items: center;
  871. }
  872. .single_bg_active, single_bg_active:hover{
  873. background: rgb(0,128,255,0.2);
  874. .single_num{
  875. font-weight: bold;
  876. color: #fdbf00 !important;
  877. }
  878. }
  879. .single_button{
  880. border:1px solid #2c91cc;
  881. width: 32px;
  882. height: 32px;
  883. border-radius: 16px;
  884. display: flex;
  885. justify-content: center;
  886. align-items: center;
  887. .single_num{
  888. color: #8c8c8c;
  889. }
  890. .single_num_active{
  891. color: #fff;
  892. }
  893. }
  894. .single_button_active,.single_button_active:focus,.single_button_active:hover{
  895. background:#2c91cc;
  896. }
  897. }
  898. .line{
  899. width: 19%;
  900. height:100%;
  901. display: flex;
  902. justify-content: center;
  903. align-items: center;
  904. }
  905. }
  906. .step_bottom{
  907. width: 100%;
  908. height:40px;
  909. display: flex;
  910. flex-direction: row;
  911. justify-content: center;
  912. align-items: center;
  913. .single_title{
  914. width: 23%;
  915. display: flex;
  916. justify-content: center;
  917. align-items: center;
  918. .single_remarks{
  919. font-size: 18px;
  920. }
  921. }
  922. }
  923. }
  924. .basic_info{
  925. width: 100%;
  926. height: 500px;
  927. padding-left: 20px;
  928. overflow-y:auto;
  929. font-size: 14px;
  930. display: flex;
  931. flex-direction: row;
  932. flex-wrap: wrap;
  933. align-content: space-around;
  934. justify-content: flex-start;
  935. .single_item{
  936. width: 32%;
  937. height:40px;
  938. display: flex;
  939. align-items: center;
  940. .basic_single_title{
  941. color: #71d7ff;
  942. }
  943. .basic_single_content{
  944. padding-left: 20px;
  945. }
  946. }
  947. }
  948. }
  949. .number_body{
  950. color: #FFF;
  951. height: 500px;
  952. .search_left{
  953. width: 100%;
  954. padding-bottom: 20px;
  955. >span{
  956. font-size: 18px;
  957. }
  958. }
  959. .button_list{
  960. display: flex;
  961. flex-wrap:wrap;
  962. justify-content: flex-start;
  963. align-items: center;
  964. >span{
  965. cursor: pointer;
  966. font-size: 20px;
  967. font-weight: bold;
  968. width: 30%;
  969. margin-left: 1.5%;
  970. margin-left: 1.5%;
  971. margin-bottom: 20px;
  972. height: 40px;
  973. border:1px solid #2c91cc;
  974. display: flex;
  975. justify-content: center;
  976. align-items: center;
  977. }
  978. }
  979. }
  980. .diff_color{
  981. color: #01d6ff;
  982. }
  983. }
  984. </style>