EvaluateRepeatModel.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558
  1. <template>
  2. <el-dialog
  3. ref="dialog"
  4. :close-on-click-modal="false"
  5. :title="title"
  6. :top="dialogFormTop"
  7. :visible.sync="dialogVisible"
  8. :destroy-on-close="true"
  9. width="97.5%"
  10. :model="false"
  11. :before-close="handleClose"
  12. >
  13. <div v-loading="loading" element-loading-text="数据加载中"
  14. element-loading-spinner="el-icon-loading"
  15. element-loading-background="rgba(3, 30, 57, 0.8)">
  16. <div class="dialog_content">
  17. <div class="block-info">
  18. <div class="cate-title">
  19. <span class="order">01</span>
  20. <span>基本信息</span>
  21. </div>
  22. <div class="info-content base-info">
  23. <div class="item" v-for="(item,index) in baseInfo" :key="index">
  24. <span class="item_name">{{item.name}}:</span>
  25. <span>{{item.value}}</span>
  26. </div>
  27. </div>
  28. </div>
  29. <div class="block-info">
  30. <div class="cate-title">
  31. <span class="order">02</span>
  32. <span>评价信息</span>
  33. </div>
  34. <div class="info-content base-info">
  35. <div class="item" v-for="(item,index) in evaluateInfo.slice(0,5)" :key="index">
  36. <span class="item_name">{{item.name}}:</span>
  37. <span>{{item.value}}</span>
  38. </div>
  39. <div class="item_line" v-for="(item,index) in evaluateInfo.slice(5,8)" :key="index">
  40. <span class="item_name">{{item.name}}:</span>
  41. <span>{{item.value}}</span>
  42. </div>
  43. </div>
  44. <div>
  45. <el-button type="primary" size="small">屏蔽文字</el-button>
  46. <el-button type="primary" size="small">撤销屏蔽</el-button>
  47. </div>
  48. <div class="evaluate_img" v-for="(item,index) in evaluate_img" :key="index">
  49. <el-image
  50. style="width: 80px; height: 80px;margin: 10px 5px 0px 0px;"
  51. :src="item.PICTURE_PATH"
  52. :preview-src-list="srcList">
  53. </el-image>
  54. <el-checkbox class="checkbox" v-model="item.STATE" @change="evaluatChange(item.MARK_UUID)" ></el-checkbox>
  55. </div>
  56. </div>
  57. <div v-if="operationType === 'find' || operationType === 'exam'" class="block-info">
  58. <div class="cate-title">
  59. <span class="order">03</span>
  60. <span>答复管理信息</span>
  61. </div>
  62. <div class="info-content base-info">
  63. <div class="item_line" v-for="(item,index) in repeatInfo" :key="index">
  64. <span class="item_name">{{item.name}}:</span>
  65. <span>{{item.value}}</span>
  66. </div>
  67. </div>
  68. </div>
  69. <div v-if="operationType === 'find'" class="block-info">
  70. <div class="cate-title">
  71. <span class="order">04</span>
  72. <span>审核回复信息</span>
  73. </div>
  74. <div class="info-content base-info">
  75. <div class="item_line" v-for="(item,index) in examInfo" :key="index">
  76. <span class="item_name">{{item.name}}:</span>
  77. <span>{{item.value}}</span>
  78. </div>
  79. </div>
  80. </div>
  81. <div v-if="operationType === 'exam'" class="block-info">
  82. <div class="cate-title">
  83. <span class="order">04</span>
  84. <span>审核回复信息</span>
  85. </div>
  86. <div class="form-area">
  87. <el-form size="small" :model="formExamData" inline label-width="100">
  88. <el-form-item label="审核意见">
  89. <el-input v-model="formExamData.advance" type="textarea"></el-input>
  90. </el-form-item>
  91. </el-form>
  92. </div>
  93. </div>
  94. <div v-if="operationType === 'repeat'" class="block-info">
  95. <div class="cate-title">
  96. <span class="order">03</span>
  97. <span>答复管理信息</span>
  98. </div>
  99. <div class="form-area">
  100. <el-form size="small" :model="formData" inline label-width="100">
  101. <el-form-item label="回复内容">
  102. <el-input v-model="formData.advance" type="textarea"></el-input>
  103. </el-form-item>
  104. </el-form>
  105. </div>
  106. </div>
  107. <div class="btns model-btns save-class" v-if="operationType!=='exam'">
  108. <el-button size="small" v-if="operationType === 'repeat'" @click="saveRepeatInfo()" type="primary">保存</el-button>
  109. <el-button size="small" @click="handleClose" type="primary">关闭</el-button>
  110. </div>
  111. <div class="btns model-btns save-class" v-else>
  112. <el-button size="small" type="primary" @click="saveExamInfo('1')">审核通过</el-button>
  113. <el-button size="small" type="primary" @click="saveExamInfo('2')">审核不通过</el-button>
  114. <el-button size="small" @click="handleClose" type="primary">关闭</el-button>
  115. </div>
  116. </div>
  117. </div>
  118. </el-dialog>
  119. </template>
  120. <script>
  121. import {getCurrentTime} from "@/commomUse";
  122. import {MessageBox} from "element-ui";
  123. export default {
  124. name: "EvaluateRepeatModel",
  125. data(){
  126. return {
  127. evaluate_img:[
  128. ],
  129. srcList: [
  130. ],
  131. loading:false,
  132. dialogFormTop:'12vh',
  133. baseInfo:[
  134. {
  135. name:'办件编号',
  136. code:'HANDING_NUMBER',
  137. value:"",
  138. },
  139. {
  140. name:'事项名称',
  141. code:'MATTER_NAME',
  142. value:"",
  143. },
  144. {
  145. name:'归属部门',
  146. code:'BELONGING_DEPARTMENT',
  147. value:"",
  148. },
  149. {
  150. name:'事项编码',
  151. code:'MATTER_CODE',
  152. value:"",
  153. },
  154. {
  155. name:'办理点',
  156. code:'HANDING_POING',
  157. value:"",
  158. },
  159. {
  160. name:'评价对象',
  161. code:'EVALUATION_OBJECT',
  162. value:"",
  163. },
  164. {
  165. name:'窗口号',
  166. code:'WINDOW_NUMBER',
  167. value:"",
  168. },
  169. {
  170. name:'数据来源',
  171. code:'DATA_SOURCES',
  172. value:"",
  173. },
  174. {
  175. name:'工作人员',
  176. code:'WORKING_PERSONNEL',
  177. value:"",
  178. },
  179. {
  180. name:'办件对象',
  181. code:'HANDING_OBJECT',
  182. value:"",
  183. },
  184. {
  185. name:'工号',
  186. code:'JOB_NUMBER',
  187. value:"",
  188. },
  189. {
  190. name:'实名途径',
  191. code:'REAL_NAME_CHANNEL',
  192. value:"",
  193. },
  194. {
  195. name:'是否转办12345',
  196. code:'TRANSFER',
  197. value:"",
  198. },
  199. ],
  200. evaluateInfo:[
  201. {
  202. name:'联系人',
  203. code:'CONTACTS',
  204. value:''
  205. },
  206. {
  207. name:'联系方式',
  208. code:'CONTACT_MODE',
  209. value:''
  210. },
  211. {
  212. name:'评价时间',
  213. code:'COMMENT_TIME',
  214. value:''
  215. },
  216. {
  217. name:'社会信用代码',
  218. code:'CREDIT_CODE',
  219. value:''
  220. },
  221. {
  222. name:'总体满意度',
  223. code:'OVERALL_SATISFACTION',
  224. value:''
  225. },
  226. {
  227. name:'勾选理由',
  228. code:'REASON',
  229. value:''
  230. },
  231. {
  232. name:'评价内容(原文)',
  233. code:'EVALUATION_CONTENT',
  234. value:''
  235. },
  236. {
  237. name:'评价内容(发布)',
  238. code:'EVALUATION_CONTENT',
  239. value:''
  240. },
  241. ],
  242. repeatInfo:[
  243. {
  244. name:'回复人',
  245. code:'REPLY_USERNAME',
  246. value:''
  247. },
  248. {
  249. name:'回复时间',
  250. code:'REPLY_TIME',
  251. value:''
  252. },
  253. {
  254. name:'回复内容',
  255. code:'REPLY_CONTENT',
  256. value:''
  257. },
  258. ],
  259. examInfo:[
  260. {
  261. name:'审核状态',
  262. code:'EXAMINE_STATE',
  263. value:''
  264. },
  265. {
  266. name:'审核人',
  267. code:'EXAMINE_USERNAME',
  268. value:''
  269. },
  270. {
  271. name:'审核时间',
  272. code:'EXAMINE_TIME',
  273. value:''
  274. },
  275. {
  276. name:'审核内容',
  277. code:'EXAMINE_CONTENT',
  278. value:''
  279. },
  280. ],
  281. formData: {
  282. advance:''
  283. },
  284. formExamData: {
  285. advance:''
  286. },
  287. }
  288. },
  289. props:{
  290. dialogVisible:{
  291. },
  292. title:{
  293. },
  294. currentData:{
  295. },
  296. operationType:{
  297. }
  298. },
  299. methods:{
  300. evaluatChange(MARK_UUID){//循环
  301. for(var i = 0 ; i < this.evaluate_img.length;i++){
  302. if(MARK_UUID == this.evaluate_img[i]["MARK_UUID"]){
  303. this.editYwtbEvaluatePicture(MARK_UUID,this.evaluate_img[i]["STATE"]);
  304. break;
  305. }
  306. }
  307. },
  308. selectYwtbEvaluatePicture(){
  309. this.$request({
  310. url:'/ywtb/selectYwtbEvaluatePicture',
  311. method:'post',
  312. data:{
  313. 'EVALUATE_UUID':this.currentData.MARK_UUID
  314. }
  315. }).then(response => {
  316. let dataArr = response.data.msg[0].Rows
  317. if(dataArr.length > 0){
  318. this.srcList = [];
  319. for(let i=0;i<dataArr.length;i++){
  320. this.srcList.push(dataArr[i]["PICTURE_PATH"]);
  321. if(dataArr[i]["STATE"] == "1"){
  322. dataArr[i]["STATE"] = true;
  323. }else{
  324. dataArr[i]["STATE"] = false;
  325. }
  326. }
  327. this.evaluate_img =dataArr;
  328. }else{
  329. this.srcList = [];
  330. this.evaluate_img = [];
  331. }
  332. })
  333. },
  334. editYwtbEvaluatePicture(MARK_UUID,STATE){
  335. this.$request({
  336. url:'/ywtb/editYwtbEvaluatePicture',
  337. method:'post',
  338. data:{
  339. "MARK_UUID":MARK_UUID,
  340. "STATE":STATE == true ? 1 : 0
  341. }
  342. }).then(response => {
  343. let dataArr = response.data.msg[0].success;
  344. if(dataArr=='true'){
  345. MessageBox.alert('操作成功', '提示', {
  346. confirmButtonText: '确定'
  347. });
  348. }else{
  349. this.loading=false;
  350. MessageBox.alert('操作失败', '提示', {
  351. confirmButtonText: '确定'
  352. });
  353. }
  354. })
  355. },
  356. showData(){
  357. let DataList = ["baseInfo","evaluateInfo","repeatInfo","examInfo"];
  358. for(let i =0;i<DataList.length;i++){
  359. for(let j=0;j< this[DataList[i]].length;j++){
  360. this[DataList[i]][j].value = '';
  361. }
  362. }
  363. for(let obj in this.currentData){
  364. for(let i=0;i<DataList.length;i++){
  365. for(let j=0;j<this[DataList[i]].length;j++){
  366. if(obj==this[DataList[i]][j].code){
  367. if(obj =='EXAMINE_STATE'){
  368. if(this.currentData[obj] =='1'){
  369. this[DataList[i]][j].value ='审核通过'
  370. }else if(this.currentData[obj] =='2'){
  371. this[DataList[i]][j].value ='审核不通过'
  372. }
  373. }else{
  374. this[DataList[i]][j].value =this.currentData[obj]
  375. }
  376. }
  377. }
  378. }
  379. }
  380. this.selectYwtbEvaluatePicture();
  381. },
  382. saveRepeatInfo(){
  383. this.loading=true;
  384. let time =getCurrentTime()
  385. this.$request({
  386. url:'/ywtb/editYwtbEvaluate',
  387. method:'post',
  388. data:{
  389. "REPLY_USER":localStorage.getItem("ywtb_usercode"),
  390. "REPLY_TIME":time,
  391. "REPLY_CONTENT":this.formData.advance,
  392. "MARK_UUID":this.currentData.MARK_UUID,
  393. "EXAMINE_STATE":'0',
  394. "appkey":localStorage.getItem("ywtb_userkeycode")
  395. }
  396. }).then(response => {
  397. let dataArr = response.data.msg[0].success;
  398. if(dataArr=='true'){
  399. console.log(dataArr);
  400. this.loading=false;
  401. MessageBox.alert('回复成功', '提示', {
  402. confirmButtonText: '确定'
  403. });
  404. this.handleClose();
  405. }else{
  406. this.loading=false;
  407. MessageBox.alert('回复失败', '提示', {
  408. confirmButtonText: '确定'
  409. });
  410. }
  411. })
  412. },
  413. saveExamInfo(index){
  414. this.loading=true;
  415. let time =getCurrentTime()
  416. this.$request({
  417. url:'/ywtb/editYwtbEvaluate',
  418. method:'post',
  419. data:{
  420. "REPLY_TIME":this.currentData.REPLY_TIME.slice(0, -2),
  421. "EXAMINE_USER":localStorage.getItem("ywtb_usercode"),
  422. "EXAMINE_TIME":time,
  423. "EXAMINE_CONTENT":this.formExamData.advance,
  424. "MARK_UUID":this.currentData.MARK_UUID,
  425. "EXAMINE_STATE":index,
  426. "appkey":localStorage.getItem("ywtb_userkeycode")
  427. }
  428. }).then(response => {
  429. let dataArr = response.data.msg[0].success;
  430. if(dataArr=='true'){
  431. console.log(dataArr);
  432. this.loading=false;
  433. MessageBox.alert('审核成功', '提示', {
  434. confirmButtonText: '确定'
  435. });
  436. this.handleClose();
  437. }else{
  438. this.loading=false;
  439. MessageBox.alert('审核失败', '提示', {
  440. confirmButtonText: '确定'
  441. });
  442. }
  443. })
  444. },
  445. handleClose() {
  446. this.formData.advance = '';
  447. this.formExamData.advance = '';
  448. this.$emit('update:dialogVisible',false)
  449. },
  450. },
  451. watch:{
  452. dialogVisible:{
  453. handler(val){
  454. if(val){
  455. this.showData();
  456. }
  457. },
  458. deep:true
  459. }
  460. }
  461. }
  462. </script>
  463. <style scoped lang="scss">
  464. .evaluate_img{
  465. display: inline-block;
  466. position:relative;
  467. }
  468. .evaluate_img .checkbox{
  469. position: absolute;
  470. top:10px;
  471. left:5px;
  472. }
  473. .el-dialog__wrapper{
  474. overflow: hidden;
  475. }
  476. .form-area{
  477. margin-top: 10px;
  478. margin-bottom: 10px;
  479. }
  480. ::v-deep{
  481. .el-form-item__label{
  482. font-weight: bolder !important;
  483. //color: #71d7ff;
  484. }
  485. .el-form-item--small .el-form-item__content{
  486. .el-textarea__inner{
  487. height:110px;
  488. }
  489. width: 600px;
  490. }
  491. .el-dialog__wrapper{
  492. overflow: hidden;
  493. }
  494. .el-dialog{
  495. //height: 70%;
  496. // overflow: auto;
  497. }
  498. }
  499. .dialog_content{
  500. /* height: 650px;*/
  501. width: 100%;
  502. display: flex;
  503. flex-wrap: wrap;
  504. //overflow: auto;
  505. }
  506. .block-info{
  507. width: 45%;
  508. padding-left: 2.5%;
  509. padding-right: 2.5%;
  510. margin: 15px 0;
  511. .info-content{
  512. display: flex;
  513. flex-wrap: wrap;
  514. .item{
  515. width: 50%;
  516. line-height:40px;
  517. }
  518. .item_line{
  519. width: 100%;
  520. line-height:40px;
  521. }
  522. }
  523. .cate-title{
  524. padding: 10px 0;
  525. margin-bottom: 4px;
  526. border-bottom: 1px solid #2c91cc;
  527. color: #71d7ff;
  528. font-size: 18px;
  529. font-weight: bold;
  530. }
  531. .order{
  532. margin-right: 6px;
  533. }
  534. color: #fff;
  535. font-size: 16px;
  536. }
  537. .save-class{
  538. width: 100%;
  539. }
  540. .item_name{
  541. //color: #71d7ff;
  542. font-weight: bolder;
  543. }
  544. </style>