tvAssessIndex.vue 77 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867
  1. <template>
  2. <div class="mc-wrap">
  3. <div class="container-box">
  4. <div class="mc-top">
  5. <div class="mc-top-left">
  6. <el-row>
  7. <el-col :span="24">
  8. <div class="car-line">
  9. <h2 class="font-ui" style="margin-left: 20px;padding-top: 10px;">互联网电视合作考核流程</h2>
  10. <div class="adv-box">
  11. <!-- <div class="adv-tit" >
  12. <i class="el-icon-time"></i>
  13. <span>待办 <em>{{info.todoCount||0}}</em></span>
  14. </div>
  15. <div class="adv-tit" >
  16. <i class="el-icon-finished"></i>
  17. <span>已办 <em>{{info.doneCount||0}}</em></span>
  18. </div>
  19. <div class="adv-tit" >
  20. <i class="el-icon-notebook-1"></i>
  21. <span>已归档 <em>{{info.finishCount||0}}</em></span>
  22. </div>-->
  23. <div class="adv-tit adv-add" @click="advadd">
  24. <i class="el-icon-plus"></i>
  25. <span>创建</span>
  26. </div>
  27. </div>
  28. </div>
  29. </el-col>
  30. <el-col :span="24">
  31. <!--代办已办列表开始-->
  32. <div style="display: flex; justify-content: space-between">
  33. <div class="taskbox">
  34. <div class="tit">
  35. <span style="font-weight: bold">待办任务</span>
  36. </div>
  37. <div style="background: #fff; padding: 20px; min-height: 400px">
  38. <div class="tabbox">
  39. <el-table
  40. class="com-table"
  41. ref="multipleTable"
  42. :data="todoList"
  43. tooltip-effect="dark"
  44. size="small"
  45. border
  46. style="width: 100%"
  47. height="350px">
  48. <el-table-column prop="wo_title" label="工单标题">
  49. <template slot-scope="scope">
  50. <span>{{ scope.row.wo_title }}</span>
  51. </template>
  52. </el-table-column>
  53. <el-table-column prop="create_time" label="发起时间">
  54. <template slot-scope="scope">
  55. <span>{{ $formatDate(scope.row.create_time, "YYYY-MM-DD") }}</span>
  56. </template>
  57. </el-table-column>
  58. <el-table-column prop="op_name" label="发起姓名">
  59. <template slot-scope="scope">
  60. <span>{{ $desensitization(scope.row.op_name, 1) }}</span>
  61. </template>
  62. </el-table-column>
  63. <el-table-column label="操作" align="center" width="120">
  64. <template slot-scope="scope">
  65. <!-- <el-button
  66. size="mini"
  67. type="primary"
  68. @click="checkNotic(1, scope.row)"
  69. >查看</el-button>-->
  70. <el-button
  71. v-if="scope.row.sts == '0'"
  72. size="mini"
  73. type="primary"
  74. @click="checkNotic(2, scope.row)">处理</el-button>
  75. </template>
  76. </el-table-column>
  77. </el-table>
  78. </div>
  79. </div>
  80. </div>
  81. <div class="taskbox">
  82. <div class="tit">
  83. <span style="font-weight: bold">已办任务</span>
  84. </div>
  85. <div style="background: #fff; min-height: 400px; padding: 20px">
  86. <div class="tabbox">
  87. <el-table
  88. class="com-table"
  89. ref="tableDatayj"
  90. :data="doneList"
  91. tooltip-effect="dark"
  92. size="small"
  93. border
  94. style="width: 100%"
  95. height="350px">
  96. <el-table-column prop="wo_title" label="工单标题"> </el-table-column>
  97. <el-table-column prop="create_time" label="发起时间">
  98. <template slot-scope="scope">
  99. <span>{{ $formatDate(scope.row.create_time, "YYYY-MM-DD") }}</span>
  100. </template>
  101. </el-table-column>
  102. <el-table-column prop="op_name" label="发起姓名">
  103. <template slot-scope="scope">
  104. <span>{{ $desensitization(scope.row.op_name, 1) }}</span>
  105. </template>
  106. </el-table-column>
  107. <el-table-column label="操作" align="center">
  108. <template slot-scope="scope">
  109. <el-button
  110. size="mini"
  111. type="primary"
  112. @click="checkNotic(1, scope.row)">查看</el-button>
  113. </template>
  114. </el-table-column>
  115. </el-table>
  116. </div>
  117. </div>
  118. </div>
  119. </div>
  120. <!--代办已办列表结束。-->
  121. </el-col>
  122. </el-row>
  123. </div>
  124. </div>
  125. </div>
  126. <!--查看考核信息弹窗-->
  127. <el-dialog :title="dtit" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
  128. :modal-append-to-body="false" :close-on-click-modal="true" :modal="false"
  129. :before-close="closedia"
  130. :show-close="false"
  131. :fullscreen="true">
  132. <div v-loading="loadinged">
  133. <el-row>
  134. <el-col>
  135. <div>
  136. <div class="tit">
  137. <span style="font-weight: bold">工单信息</span>
  138. </div>
  139. <div style="background: #fff; padding: 20px; width:100%" >
  140. <el-form :model="bpmInfo" ref="bpmInfo">
  141. <div class="info-line">
  142. <el-form-item>
  143. <span>考核主题</span>
  144. <el-input v-model="bpmInfo.woTitle" placeholder="" disabled></el-input>
  145. </el-form-item>
  146. </div>
  147. <div class="info-line">
  148. <el-form-item>
  149. <span>发起人</span>
  150. <el-input v-model="bpmInfo.opName" placeholder="" disabled></el-input>
  151. <span>发起时间</span>
  152. <el-input v-model="bpmInfo.createTime" placeholder="" disabled></el-input>
  153. <span>状态</span>
  154. <el-input v-model="bpmInfo.taskName" placeholder="" disabled></el-input>
  155. </el-form-item>
  156. </div>
  157. <div v-if="showAudit" class="info-line">
  158. <el-form-item>
  159. <span>是否通过</span>
  160. <template>
  161. <el-radio :disabled="viewOnly" v-model="audit" label="Y">是</el-radio>
  162. <el-radio :disabled="viewOnly" v-model="audit" label="N">否</el-radio>
  163. </template>
  164. </el-form-item>
  165. </div>
  166. <div v-if="showShContent" class="info-line">
  167. <el-form-item>
  168. <span>初审意见</span>
  169. <el-input :disabled="viewOnly" type="textarea"
  170. :rows="3" v-model="shcontent" placeholder=""></el-input>
  171. </el-form-item>
  172. </div>
  173. <div v-if="showShContent1" class="info-line">
  174. <el-form-item>
  175. <span>终审意见</span>
  176. <el-input :disabled="viewOnly" type="textarea"
  177. :rows="3" v-model="shcontent1" placeholder=""></el-input>
  178. </el-form-item>
  179. </div>
  180. <div v-if="showFinishContent" class="info-line">
  181. <el-form-item>
  182. <span>结果意见</span>
  183. <el-input :disabled="viewOnly" type="textarea"
  184. :rows="3" v-model="finishcontent" placeholder=""></el-input>
  185. </el-form-item>
  186. </div>
  187. <div v-if="showFiles" class="info-line" style="width:400px">
  188. <el-form-item>
  189. <span>附件</span>
  190. <div v-if="!viewOnly" style="width:400px">
  191. <myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList">
  192. </myUpload>
  193. </div>
  194. <div v-if="viewOnly" style="width:400px">
  195. <uploadDown :key="componentKey1" :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
  196. </div>
  197. </el-form-item>
  198. </div>
  199. </el-form>
  200. </div>
  201. </div>
  202. </el-col>
  203. </el-row>
  204. <el-row>
  205. <el-col>
  206. <div>
  207. <div class="tit">
  208. <span style="font-weight: bold">打分信息</span>
  209. </div>
  210. <div style="background: #fff; padding: 20px; ">
  211. <!--评分信息-->
  212. <el-table
  213. class="com-table"
  214. ref="multipleTable"
  215. :data="khTableData"
  216. tooltip-effect="dark"
  217. size="mini"
  218. border
  219. style="width: 100%">
  220. <el-table-column prop="modelKey" :formatter="fmtModelKey" label="模板类型" width="120px">
  221. </el-table-column>
  222. <el-table-column prop="auditName" label="处理人" width="120px">
  223. </el-table-column>
  224. <el-table-column prop="createTime" label="发起时间" width="120px">
  225. </el-table-column>
  226. <el-table-column prop="opTime" label="操作时间" width="120px">
  227. </el-table-column>
  228. <el-table-column prop="sts" :formatter="fmsts" label="状态" width="120px">
  229. </el-table-column>
  230. <el-table-column prop="scoreAll" label="总分" width="120px">
  231. </el-table-column>
  232. <el-table-column prop="relkey" label="relkey" width="120px" v-if="false">
  233. </el-table-column>
  234. <el-table-column label="操作" width="120px" align="center">
  235. <template slot-scope="scope">
  236. <el-button size="mini" type="primary" @click="dialogCheck(1,scope.row)">查看</el-button>
  237. <el-button size="mini" type="primary" v-if="scope.row.sts==2" @click="expRet(scope.row)">导出</el-button>
  238. </template>
  239. </el-table-column>
  240. </el-table>
  241. </div>
  242. </div>
  243. </el-col>
  244. </el-row>
  245. <!--内层diaolog 用于处理评分信息-->
  246. <el-dialog :title="dtit1" :visible.sync="innerDialogStatus" width="50%" :destroy-on-close="true"
  247. :modal-append-to-body="false" :modal="false" :show-close="false" :close-on-click-modal="true" :before-close="closedia" :fullscreen="true">
  248. <!--vip 模板-->
  249. <div class="tabbox" v-show="tableType" style="padding: 0 20px;">
  250. <div class="info-line">
  251. <span width="200px">综合评估当月考核结果(合计)</span>
  252. <el-input v-model="scoreAll" placeholder="综合评估当月考核结果(合计)" disabled></el-input>
  253. </div>
  254. <el-table
  255. class="com-table"
  256. :key="Date.now()"
  257. ref="multipleTable"
  258. :data="khDetVipTable"
  259. tooltip-effect="dark"
  260. size="mini"
  261. border
  262. style="width: 100%">
  263. <el-table-column prop="parent_item" label="考核大类" width="120px">
  264. </el-table-column>
  265. <el-table-column prop="parent_score" label="大类总分" width="100px">
  266. </el-table-column>
  267. <el-table-column prop="assess_item" label="考核项目" >
  268. </el-table-column>
  269. <el-table-column prop="assess_content" width="300px" label="考核内容" >
  270. </el-table-column>
  271. <el-table-column prop="assess_criteria" width="200px" label="考核标准" >
  272. </el-table-column>
  273. <el-table-column prop="assess_score" label="单项得分" width="80px"></el-table-column>
  274. <el-table-column prop="f_base_on" label="考核依据">
  275. <!--依据-->
  276. </el-table-column>
  277. <el-table-column prop="f_score" label="得分" width="80px">
  278. <template slot-scope="scope">
  279. <span v-if="scope.row.show">
  280. <el-input size="mini" v-model="scope.row.f_score"></el-input>
  281. </span>
  282. <span v-else>{{scope.row.f_score}}</span>
  283. </template>
  284. </el-table-column>
  285. <el-table-column label="操作">
  286. <template slot-scope="scope">
  287. <!-- <el-button
  288. icon="el-icon-edit" size="mini"
  289. @click="edit(scope.row,scope.$index)">{{scope.row.show?'保存':"修改"}}
  290. </el-button>-->
  291. <el-button
  292. icon="el-icon-edit" size="mini"
  293. @click="editByDialog(scope.row,scope.$index)">查看
  294. </el-button>
  295. </template>
  296. </el-table-column>
  297. <el-table-column prop="table_row" label="序号" width="50px" v-if="false">
  298. </el-table-column>
  299. <el-table-column prop="infoid" label="序号" width="50px" v-if="false">
  300. </el-table-column>
  301. <el-table-column prop="detid" label="序号" width="50px" v-if="false">
  302. </el-table-column>
  303. </el-table>
  304. </div>
  305. <el-dialog :title="dtit1" :visible.sync="innerInnerDialogStatus" width="50%" :destroy-on-close="true"
  306. :modal-append-to-body="false" :modal="false" :show-close="false" :close-on-click-modal="true" :before-close="closedia" :fullscreen="true">
  307. <el-form :model="vipDetinfo" ref="vipDetinfo"
  308. style="height: calc(100vh - 180px);overflow-y: scroll;">
  309. <div class="info-line">
  310. <el-form-item>
  311. <span>考核大类</span>
  312. <el-input v-model="vipDetinfo.parent_item" placeholder="" disabled></el-input>
  313. </el-form-item>
  314. </div>
  315. <div class="info-line">
  316. <el-form-item>
  317. <span>大类总分</span>
  318. <el-input v-model="vipDetinfo.parent_score" placeholder="" disabled></el-input>
  319. </el-form-item>
  320. </div>
  321. <div class="info-line">
  322. <el-form-item>
  323. <span>考核项目</span>
  324. <el-input type="textarea" :row="3" v-model="vipDetinfo.assess_item" placeholder="考核项目" disabled></el-input>
  325. </el-form-item>
  326. </div>
  327. <div class="info-line">
  328. <el-form-item>
  329. <span>考核内容</span>
  330. <el-input type="textarea" :row="3" v-model="vipDetinfo.assess_content" placeholder="考核内容" disabled></el-input>
  331. </el-form-item>
  332. </div>
  333. <div class="info-line">
  334. <el-form-item>
  335. <span>单项得分</span>
  336. <el-input v-model="vipDetinfo.assess_score" placeholder="单项得分" disabled></el-input>
  337. </el-form-item>
  338. </div>
  339. <div class="info-line">
  340. <el-form-item>
  341. <span>考核依据</span>
  342. <el-input type="textarea" :row="3" v-model="vipDetinfo.f_base_on"
  343. placeholder="考核依据"></el-input>
  344. </el-form-item>
  345. </div>
  346. <div class="info-line" style="width:100%">
  347. <el-form-item>
  348. <span>考核依据(附件)</span>
  349. <!--vipDetinfo.f_base_on_file-->
  350. <div v-if="khdetstatus" style="width:400px">
  351. <myUpload @uploadBack="uploadBackKh" :fileInfo="khfileInfo" :fileList="khfileInfo.fileList">
  352. </myUpload>
  353. </div>
  354. <div style="width:400px">
  355. <uploadDown ref="uploadDown1" :key="componentKey" :datalist="khdatalist" :dialogStatus="uploadstatus"></uploadDown>
  356. </div>
  357. </el-form-item>
  358. </div>
  359. <div class="info-line">
  360. <el-form-item>
  361. <span>得分</span>
  362. <el-input v-model="vipDetinfo.f_score" placeholder="得分" ></el-input>
  363. </el-form-item>
  364. </div>
  365. </el-form>
  366. <div slot="footer" class="dialog-footer">
  367. <el-button @click="dialogCli(6)" v-if="khdetstatus">确 定</el-button>
  368. <el-button @click="dialogCli(7)">取 消</el-button>
  369. </div>
  370. </el-dialog>
  371. <!--正常 模板-->
  372. <div class="tabbox" v-show="!tableType" style="padding: 0 20px;">
  373. <el-table
  374. class="com-table"
  375. ref="multipleTable"
  376. :data="khDetCommTable"
  377. tooltip-effect="dark"
  378. size="mini"
  379. border
  380. style="width: 100%">
  381. <el-table-column prop="vendorName" label="应用提供商名称" width="120px">
  382. </el-table-column>
  383. <el-table-column label="分项考核得分" >
  384. <el-table-column prop="develop" label="发展指标(20分)" ></el-table-column>
  385. <el-table-column prop="prodQuality" label="产品质量(15分)" ></el-table-column>
  386. <el-table-column prop="contentQuality" label="内容质量(15分)" ></el-table-column>
  387. <el-table-column prop="operSupport" label="运营支撑(30分)" ></el-table-column>
  388. <el-table-column prop="complDispose" label="投诉处理(20分)" ></el-table-column>
  389. </el-table-column>
  390. <el-table-column prop="scoreSub" label="否决加分项" >
  391. </el-table-column>
  392. <el-table-column prop="scoreAdd" label="加分项" >
  393. </el-table-column>
  394. <el-table-column prop="finalScore" label="月度得分" >
  395. </el-table-column>
  396. <el-table-column label="操作">
  397. <template slot-scope="scope">
  398. <el-button
  399. icon="el-icon-edit" size="mini"
  400. @click="editByDialogComm(scope.row,scope.$index)">修改
  401. </el-button>
  402. </template>
  403. </el-table-column>
  404. <el-table-column prop="vendorId" label="序号" width="50px" v-if="false">
  405. </el-table-column>
  406. <el-table-column prop="id" label="序号" width="50px" v-if="false">
  407. </el-table-column>
  408. </el-table>
  409. </div>
  410. <el-dialog :title="dtit1" :visible.sync="innerInnerDialogStatus1" width="50%" :destroy-on-close="true"
  411. :modal-append-to-body="false" :modal="false" :show-close="false" :close-on-click-modal="true" :before-close="closedia" :fullscreen="true">
  412. <el-form :model="commDetinfo" ref="commDetinfo"
  413. style="height: calc(100vh - 180px);overflow-y: scroll;">
  414. <div class="info-line">
  415. <el-form-item>
  416. <span>应用提供商名称</span>
  417. <el-input v-model="commDetinfo.vendorName" placeholder="" disabled></el-input>
  418. </el-form-item>
  419. </div>
  420. <div class="info-line">
  421. <el-form-item>
  422. <span>发展指标(20分)</span>
  423. <el-input @change="refreshCommScoreAll" v-model="commDetinfo.develop" placeholder="" ></el-input>
  424. </el-form-item>
  425. </div>
  426. <div class="info-line">
  427. <el-form-item>
  428. <span>产品质量(15分)</span>
  429. <el-input @change="refreshCommScoreAll" v-model="commDetinfo.prodQuality" placeholder="" ></el-input>
  430. </el-form-item>
  431. </div>
  432. <div class="info-line">
  433. <el-form-item>
  434. <span>内容质量(15分)</span>
  435. <el-input @change="refreshCommScoreAll" v-model="commDetinfo.contentQuality" placeholder="" ></el-input>
  436. </el-form-item>
  437. </div>
  438. <div class="info-line">
  439. <el-form-item>
  440. <span>运营支撑(30分)</span>
  441. <el-input @change="refreshCommScoreAll" v-model="commDetinfo.operSupport" placeholder="" ></el-input>
  442. </el-form-item>
  443. </div>
  444. <div class="info-line">
  445. <el-form-item>
  446. <span>投诉处理(20分)</span>
  447. <el-input @change="refreshCommScoreAll" v-model="commDetinfo.complDispose" placeholder="" ></el-input>
  448. </el-form-item>
  449. </div>
  450. <div class="info-line">
  451. <el-form-item>
  452. <span>否决加分项</span>
  453. <el-input @change="refreshCommScoreAll" v-model="commDetinfo.scoreSub" placeholder="" ></el-input>
  454. </el-form-item>
  455. </div>
  456. <div class="info-line">
  457. <el-form-item>
  458. <span>加分项</span>
  459. <el-input @change="refreshCommScoreAll" v-model="commDetinfo.scoreAdd" placeholder="" ></el-input>
  460. </el-form-item>
  461. </div>
  462. <div class="info-line">
  463. <el-form-item>
  464. <span>月度得分</span>
  465. <el-input v-model="commDetinfo.finalScore" placeholder="" disabled></el-input>
  466. </el-form-item>
  467. </div>
  468. </el-form>
  469. <div slot="footer" class="dialog-footer">
  470. <el-button @click="dialogCli(8)" v-if="khdetstatus">确 定</el-button>
  471. <el-button @click="dialogCli(9)">取 消</el-button>
  472. </div>
  473. </el-dialog>
  474. <div slot="footer" class="dialog-footer myfooter">
  475. <el-button @click="dialogCli(5)">取消</el-button>
  476. </div>
  477. </el-dialog>
  478. <div slot="footer" class="dialog-footer myfooter">
  479. <!-- 这一步提交加入判断,是否走流程 -->
  480. <el-button v-if="doflowButton" @click="dialogCli(2)">提 交 流 程</el-button>
  481. <el-button @click="dialogCli(3)">取 消</el-button>
  482. </div>
  483. </div>
  484. </el-dialog>
  485. <div class="if-box-top" v-if="ifrshow" @keyup.esc="ifrshow = false">
  486. <i class="el-icon-close" @click="ifrshow = false"></i>
  487. <iframe height="100%" width="100%" :src="srcsc"> </iframe>
  488. </div>
  489. </div>
  490. </template>
  491. <script>
  492. import myUpload from "../../../../components/uploadKh";
  493. import uploadDown from '../../../../components/uploadDown.vue'
  494. export default {
  495. components: {
  496. myUpload,
  497. uploadDown
  498. },
  499. data() {
  500. return {
  501. detEditStatus:true,
  502. detViewStatus:true,
  503. componentKey: 0,
  504. componentKey1: 0,
  505. scoreAll:100,
  506. tableType:true,
  507. active: 0,
  508. bpmInfo:{taskName:""},
  509. audit:'Y',
  510. info: {},
  511. activeIndex: "1",
  512. bannerData: [
  513. {
  514. src: require("../../../../static/img/bannar-1.png"),
  515. id: "1",
  516. },
  517. {
  518. src: require("../../../../static/img/bannar-1.png"),
  519. id: "2",
  520. },
  521. {
  522. src: require("../../../../static/img/bannar-1.png"),
  523. id: "3",
  524. },
  525. ],
  526. calendar: new Date(),
  527. timeDay: 0,
  528. noticeData: [],
  529. srcsc: "",
  530. ifrshow: false,
  531. infolist: {},
  532. doneList: [],
  533. todoList: [],
  534. khTableData:[],
  535. dialogStatus: false,
  536. innerDialogStatus:false,
  537. innerInnerDialogStatus:false,
  538. innerInnerDialogStatus1:false,
  539. dialogStatusyj: false,
  540. diaKnowStatus: false,
  541. datalistk: {
  542. url: "/market/compatt/downfile",
  543. type: 1,
  544. },
  545. attList: [],
  546. niticList: [],
  547. datalistn: {
  548. url: "/sysmgr/noticeatt/downfile",
  549. type: 1,
  550. },
  551. noticStatus: false,
  552. noticList: {},
  553. typelist: [],
  554. userInfo: {},
  555. tableDatayj: [],
  556. khDetVipTable:[],//考核详情
  557. khDetCommTable:[],//考核详情
  558. btnsts: null,
  559. disableStatus: false,
  560. loadinged: false,
  561. dtit:"代办处理",
  562. dtit1:"打分",
  563. visiblec: [],
  564. typeOptions: [],
  565. fileInfo: {
  566. limit: 5,
  567. url: '/bpm/api/upload',
  568. fileList: [],
  569. },
  570. datalist: {
  571. url: '/bpm/api/download',
  572. type: 1,
  573. attList:[]
  574. },
  575. khfileInfo: {
  576. limit: 5,
  577. url: '/bpm/api/upload',
  578. fileList: [],
  579. },
  580. khdatalist: {
  581. url: '/bpm/api/download',
  582. type: 1,
  583. attList:[]
  584. },
  585. uploadstatus: false,
  586. khinfodis:false,//查看代办信息页面,是否只读。
  587. khdetstatus:false,
  588. btnctrlStatus: false,
  589. vipDetinfo:{},
  590. commDetinfo:{},
  591. mkkhinfo:{},
  592. showShContent:false,//审核文本框是否展示
  593. showShContent1:false,//审核文本框是否展示
  594. showAudit:false,
  595. flowinfo:{},
  596. shcontent:"",
  597. shcontent1:"",
  598. doflowButton:false,//是否点击了处理按钮。
  599. khdetEditButton:true,
  600. showFinishContent:false,
  601. showFiles:false,
  602. finishcontent:'',
  603. files:'',
  604. viewOnly:true,
  605. };
  606. },
  607. methods: {
  608. expRet(v) {
  609. let exdata = [];
  610. let header=[];
  611. let _filterVal=[];
  612. this.$http({
  613. url: "/market/cmkTvAssessModule/queryDetList",
  614. method: "post",
  615. headers: {
  616. "Content-Type": "application/json",
  617. },
  618. data: v,
  619. }).then((res) => {
  620. if(res.data.result=='0'&&v.modelType=="vip"){
  621. exdata=res.data.body;
  622. this.chgScoreAll();
  623. header=["考核大类","大类总分","考核项目","考核内容","考核标准","单项得分","考核依据","得分"];
  624. _filterVal=["parent_item","parent_score","assess_item","assess_content",
  625. "assess_criteria","assess_score","f_base_on","f_score"];
  626. }else{
  627. exdata=res.data.body;
  628. header=["应用提供商名称","发展指标(20分)","产品质量(15分)","内容质量(15分)",
  629. "运营支撑(30分)","投诉处理(20分)","否决加分项","加分项","月度得分"];
  630. _filterVal=["vendorName","develop","prodQuality","contentQuality",
  631. "operSupport","complDispose","scoreSub","scoreAdd","finalScore"];
  632. }
  633. var that = this;
  634. require.ensure([], () => {
  635. const { export_json_to_excel } = require("../../vendor/Export2Excel");
  636. const tHeader = header; // 导出的表头名
  637. const filterVal =_filterVal; // 导出的表头字段名
  638. let list = exdata;
  639. if(v.modelType=="vip"){
  640. list.push({"parent_item":"总分","parent_score":"-","assess_item":"-","assess_content":"-",
  641. "assess_criteria":"-","assess_score":"-","f_base_on":"-","f_score":v.scoreAll});
  642. }
  643. const data = that.formatJson(filterVal, list);
  644. export_json_to_excel(tHeader, data, `export`); // 导出的表格名称,根据需要自己命名
  645. });
  646. });
  647. },
  648. formatJson(filterVal, jsonData) {
  649. return jsonData.map((v) => filterVal.map((j) => v[j]));
  650. },
  651. chgScoreAll(){
  652. //vip 页面 根据khDetVipTable 计算总分,加载总分。mkkhinfo
  653. this.scoreAll=this.mkkhinfo.scoreAll;
  654. console.info('-----scoreall'+this.mkkhinfo);
  655. },
  656. //上传回调
  657. uploadBack(v) {
  658. console.info(v);
  659. this.attList=v;
  660. let dfiles=v;
  661. for(let i=0;i<dfiles.length;i++){
  662. dfiles[i].id=dfiles[i].attchFileId;
  663. }
  664. this.fileInfo.fileList=dfiles;
  665. },
  666. //考核依据附件,上传回调
  667. uploadBackKh(v){
  668. this.attList=v;
  669. let dfiles=v;
  670. for(let i=0;i<dfiles.length;i++){
  671. dfiles[i].id=dfiles[i].attchFileId;
  672. }
  673. this.khdatalist.attList=dfiles;
  674. this.khfileInfo.fileList=dfiles;
  675. console.info('uploadBackKh/this.khdatalist.attList>'+this.khdatalist.attList);
  676. //刷新数据
  677. this.uploadstatus=true;
  678. },
  679. //编辑vip 打分信息。
  680. editByDialog(row, index){
  681. console.info('--editByDialog-->'+JSON.stringify(row));
  682. this.innerInnerDialogStatus=true;
  683. //刷新download 组件
  684. this.componentKey+=1;
  685. this.vipDetinfo=row;
  686. //初始化表单文件信息。
  687. let filestr=row.f_base_on_file;
  688. console.info("filestr>"+filestr);
  689. if(filestr!=''&&filestr!=undefined){
  690. let dfiles=JSON.parse(filestr);
  691. for(let i=0;i<dfiles.length;i++){
  692. dfiles[i].id=dfiles[i].attchFileId;
  693. }
  694. this.khdatalist.attList=dfiles;
  695. //this.attList=dfiles;
  696. this.khfileInfo.fileList=dfiles;
  697. console.info('-------------->'+JSON.stringify(this.khfileInfo.fileList));
  698. console.info("this.khdatalist.attList->"+JSON.stringify(this.khdatalist.attList));
  699. //this.$refs.uploadDown1.dataHandle();
  700. }else{
  701. this.khdatalist.attList=[];
  702. this.khfileInfo.fileList=[];
  703. }
  704. },
  705. editByDialogComm(row, index){
  706. this.commDetinfo=row;
  707. this.innerInnerDialogStatus1=true;
  708. },
  709. refreshCommScoreAll(){
  710. //刷新 comm 打分详情页面的,月度考核汇总得分,根据前几项做加减法得到。
  711. let det=this.commDetinfo;
  712. console.info(det);
  713. if(det.develop){
  714. det.finalScore=parseInt(det.develop)+parseInt(det.prodQuality)+parseInt(det.contentQuality)+parseInt(det.operSupport)+parseInt(det.complDispose)-parseInt(det.scoreSub)+parseInt(det.scoreAdd);
  715. }
  716. },
  717. saveCommDet(row){
  718. this.loading = true;
  719. this.$http({
  720. url: "/market/assessCommDet/update",
  721. method: "post",
  722. headers: {
  723. "Content-Type": "application/json",
  724. },
  725. data: row,
  726. }).then((res) => {
  727. //重新加载,详情页面
  728. this.innerInnerDialogStatus1=false;
  729. this.loading=false;
  730. if(res.data.result!=0){
  731. this.$message({
  732. message: res.data.desc,
  733. type: 'error'
  734. });
  735. }else{
  736. //重新加载打分详情列表页面
  737. this.dialogCheck(1,this.mkkhinfo);
  738. }
  739. });
  740. },
  741. saveVipDet(row){
  742. var f_score = new Number(row.f_score)
  743. var assess_score = new Number(row.assess_score)
  744. if(f_score>assess_score){
  745. this.$message({
  746. message: '评分不能大于单项得分',
  747. type: 'error'
  748. });
  749. row.f_score=row.assess_score;
  750. return;
  751. }
  752. this.loading = true;
  753. this.$http({
  754. url: "/market/cmkTvAssessModule/chgScore",
  755. method: "post",
  756. headers: {
  757. "Content-Type": "application/json",
  758. },
  759. data: {
  760. id:row.detid,
  761. scoreSub:row.f_score,
  762. baseOn:row.f_base_on,
  763. baseOnFile:JSON.stringify(this.khfileInfo.fileList),
  764. infoid:row.infoid
  765. },
  766. }).then((res) => {
  767. //重新加载,详情页面
  768. this.innerInnerDialogStatus=false;
  769. this.loading=false;
  770. if(res.data.result!=0){
  771. this.$message({
  772. message: res.data.desc,
  773. type: 'error'
  774. });
  775. }else{
  776. this.mkkhinfo.scoreAll=res.data.body
  777. //重新加载打分详情列表页面
  778. this.dialogCheck(1,this.mkkhinfo);
  779. }
  780. });
  781. },
  782. // 编辑表格中按钮所在行
  783. edit(row, index) {
  784. //评分判断
  785. if(row.f_score>row.assess_score){
  786. this.$message({
  787. message: '评分不能大于单项得分',
  788. type: 'error'
  789. });
  790. row.f_score=row.assess_score;
  791. this.$set(this.khDetVipTable, index, row)
  792. }
  793. row.show = row.show ? false : true
  794. this.$set(this.khDetVipTable, index, row)
  795. // 修改后保存
  796. if (!row.show) {
  797. this.loading = true;
  798. this.$http({
  799. url: "/market/assessVipDet/update",
  800. method: "post",
  801. headers: {
  802. "Content-Type": "application/json",
  803. },
  804. data: {
  805. id:row.detid,
  806. scoreSub:row.f_score,
  807. baseOn:row.f_base_on
  808. },
  809. }).then((res) => {
  810. //重新加载,详情页面
  811. if(res.data.result!=0){
  812. this.chgScoreAll();
  813. this.$message({
  814. message: res.data.desc,
  815. type: 'error'
  816. });
  817. }
  818. });
  819. }
  820. },
  821. fmsts(row, column, cellValue, index){
  822. if(cellValue=='0'){
  823. return "待处理";
  824. }else if(cellValue=='1'){
  825. return "已处理";
  826. }else if(cellValue=='2'){
  827. return "汇总结果";
  828. }
  829. },
  830. /**
  831. 100001 互联网电视播控及内容服务月度考核细则(未来电视有限公司)
  832. 100002 互联网电视内容服务考核细则(湖南快乐阳光互动娱乐传媒有限公司)
  833. 100003 互联网电视内容服务考核细则(环球合一网络技术(北京)股份有限公司)
  834. 100004 互联网电视内容服务考核细则(华数传媒网络有限公司)
  835. 100005 互联网电视内容服务考核细则(百视通网络电视技术发展有限责任公司)
  836. 100006 互联网电视内容服务考核细则(应用考核汇总表)
  837. * @param row
  838. * @param column
  839. * @param cellValue
  840. * @param index
  841. * @returns {string}
  842. */
  843. fmtModelKey(row, column, cellValue, index){
  844. if(cellValue=="100001"){
  845. return "互联网电视播控及内容服务月度考核细则(未来电视有限公司)";
  846. }else if(cellValue=="100002"){
  847. return "互联网电视内容服务考核细则(湖南快乐阳光互动娱乐传媒有限公司)";
  848. }else if(cellValue=="100003"){
  849. return "互联网电视内容服务考核细则(环球合一网络技术(北京)股份有限公司)";
  850. }else if(cellValue=="100004"){
  851. return "互联网电视内容服务考核细则(华数传媒网络有限公司)";
  852. }else if(cellValue=="100005"){
  853. return "互联网电视内容服务考核细则(百视通网络电视技术发展有限责任公司)";
  854. }else if(cellValue=="100006"){
  855. return "互联网电视内容服务考核细则(应用考核汇总表)";
  856. }
  857. },
  858. //处理打分信息
  859. dialogCheck(n,v){
  860. //查看评分信息。
  861. if(n==1){
  862. this.mkkhinfo=v;
  863. console.info('------this.mkkhinfo---->'+JSON.stringify(this.mkkhinfo));
  864. //获取评分信息详情。this.khinfodis=true 查看,this.khinfodis=false 修改。
  865. this.innerDialogStatus=true;
  866. if(this.bpmInfo.taskName=='业务负责人打分'){
  867. //点击处理按钮,且是自己提交的打分。
  868. if(v.auditLogin==this.userInfo.loginNo&&this.doflowButton==true){
  869. //是自己的工单,并且是处理,可以进行更改。
  870. this.khdetstatus=true;
  871. }else{
  872. this.khdetstatus=false;
  873. }
  874. }else if(this.bpmInfo.taskName=='考核结果汇总'){
  875. if(v.sts=='1'){
  876. this.khdetstatus=false;
  877. }else if(v.sts=='2'){
  878. if(v.auditLogin==this.userInfo.loginNo&&this.doflowButton==true){
  879. //是自己的工单,并且是处理,可以进行更改。
  880. this.khdetstatus=true;
  881. }else{
  882. this.khdetstatus=false;
  883. }
  884. }
  885. }else {
  886. this.khdetstatus=false;
  887. }
  888. //获取详细信息。并展示。
  889. this.$http({
  890. url: "/market/cmkTvAssessModule/queryDetList",
  891. method: "post",
  892. headers: {
  893. "Content-Type": "application/json"
  894. },
  895. data: v,
  896. }).then((res) => {
  897. if(res.data.result=='0'&&v.modelType=="vip"){
  898. this.tableType=true;
  899. this.khDetVipTable=res.data.body;
  900. this.chgScoreAll();
  901. }else{
  902. this.khDetCommTable=res.data.body;
  903. this.tableType=false;
  904. }
  905. });
  906. }
  907. },
  908. submitInfo(u, v) {
  909. let _this = this;
  910. this.$http({
  911. url: u,
  912. method: "post",
  913. headers: {
  914. "Content-Type": "application/json",
  915. },
  916. data: v,
  917. }).then((res) => {
  918. this.dialogStatus=false;
  919. if (res.data.result === 0) {
  920. _this.$message({
  921. message: '成功',
  922. type: 'success'
  923. });
  924. this.initTaskCount();
  925. this.getToDoList();
  926. this.getDoneList();
  927. } else {
  928. _this.$message({
  929. message: res.data.desc,
  930. type: 'success'
  931. });
  932. }
  933. });
  934. },
  935. doFlow(n){
  936. //业务负责人打分-》考核结果汇总
  937. if(n==1){
  938. //记录考核信息,汇总考核信息
  939. let mkinfo={};
  940. console.info("---mkkhinfo---->"+JSON.stringify(this.mkkhinfo));
  941. //如果没有relkey 说明用户没有打开,打分详情页面,直接提交。
  942. if(!this.mkkhinfo.relkey){
  943. mkinfo=this.khTableData[0];
  944. }else{
  945. mkinfo=this.mkkhinfo;
  946. }
  947. mkinfo.sts='1';
  948. console.info("---mkinfo---->"+JSON.stringify(mkinfo));
  949. let params=Object.assign(mkinfo,this.bpmInfo);
  950. //根据上一步处理的返回结果,确定,是否提交流程,如果所有打分人都打分完毕。
  951. this.$http({
  952. url: "/market/cmkTvAssessModule/addFinalKhInfo",
  953. method: "post",
  954. headers: {
  955. "Content-Type": "application/json"
  956. },
  957. data: params,
  958. }).then((res) => {
  959. if(res.data.result=='0'){
  960. //已完成汇总,提交流程
  961. if(res.data.body=='0'){
  962. //提交流程
  963. this.bpmInfo.params={"audit":"Y","audit1":"Y","assigneeNo":this.bpmInfo.opNo,"assigneeName":this.bpmInfo.opName}
  964. this.submitInfo("/bpm/api/submitTask",this.bpmInfo);
  965. }
  966. }else{
  967. this.$message({
  968. message: res.data.desc,
  969. type: 'error'
  970. });
  971. }
  972. this.initTaskCount();
  973. this.getToDoList();
  974. this.getDoneList();
  975. });
  976. }
  977. //考核结果汇总-》初审
  978. if(n==2){
  979. //提交流程
  980. this.bpmInfo.params={"audit":"Y","audit1":"Y"}
  981. this.submitInfo("/bpm/api/submitTask",this.bpmInfo);
  982. }
  983. //初审-》终审/汇总
  984. if(n==3){
  985. this.bpmInfo.params={"audit":this.audit,"audit1":this.audit,"shcontent":this.shcontent};
  986. if(this.audit=='N'){
  987. this.bpmInfo.params.assigneeNo=this.bpmInfo.opNo;
  988. this.bpmInfo.params.assigneeName=this.bpmInfo.opName;
  989. }
  990. this.submitInfo("/bpm/api/submitTask",this.bpmInfo);
  991. }
  992. //终审-》结果确认/汇总
  993. if(n==4){
  994. this.bpmInfo.params={"audit":this.audit,"audit1":this.audit,"shcontent1":this.shcontent1};
  995. this.bpmInfo.params.assigneeNo=this.bpmInfo.opNo;
  996. this.bpmInfo.params.assigneeName=this.bpmInfo.opName;
  997. this.submitInfo("/bpm/api/submitTask",this.bpmInfo);
  998. }
  999. //结果确认
  1000. if(n==5){
  1001. //保存文件信息
  1002. this.files=JSON.stringify(this.attList);
  1003. console.info("files-->"+this.files);
  1004. this.bpmInfo.params={"audit":'Y',"audit1":'Y',"finishcontent":this.finishcontent,"files":this.files};
  1005. this.submitInfo("/bpm/api/submitTask",this.bpmInfo);
  1006. }
  1007. },
  1008. dialogCli(n){
  1009. if(n===2){
  1010. //提交流程处理,1.更新khinfo 状态为已处理。 2.判断是否所有人都完成了打分,如果完成,生成一张汇总打分表sts=2 汇总,处理人汇总人,流程提交下一阶段。
  1011. if(this.bpmInfo.taskName=="业务负责人打分"){
  1012. this.$confirm("确认提交打分信息么(所有人打分完成后会自动提交到'考核结果汇总'环节) ?",
  1013. "提示", {
  1014. confirmButtonText: "确定",
  1015. cancelButtonText: "取消",
  1016. type: "warning",
  1017. }).then(() => {
  1018. this.doFlow(1);
  1019. this.dialogStatus=false;
  1020. });
  1021. }else if(this.bpmInfo.taskName=="考核结果汇总"){
  1022. this.$confirm("确认提交到'初审'环节么 ?",
  1023. "提示", {
  1024. confirmButtonText: "确定",
  1025. cancelButtonText: "取消",
  1026. type: "warning",
  1027. }).then(() => {
  1028. this.doFlow(2);
  1029. this.dialogStatus=false;
  1030. });
  1031. }else if(this.bpmInfo.taskName=="初审"){
  1032. let msg="";
  1033. if(this.audit=='Y'){
  1034. msg="确认提交'初审'到'终审'环节么 ?";
  1035. }else{
  1036. msg="确认打回工单到'考核结果汇总'环节么 ?";
  1037. }
  1038. this.$confirm(msg,
  1039. "提示", {
  1040. confirmButtonText: "确定",
  1041. cancelButtonText: "取消",
  1042. type: "warning",
  1043. }).then(() => {
  1044. this.doFlow(3);
  1045. this.dialogStatus=false;
  1046. });
  1047. }else if(this.bpmInfo.taskName=="终审"){
  1048. let msg="";
  1049. if(this.audit=='Y'){
  1050. msg="确认提交'终审'到'结果确认'环节么 ?";
  1051. }else{
  1052. msg="确认打回工单到'考核结果汇总'环节么 ?";
  1053. }
  1054. this.$confirm(msg,
  1055. "提示", {
  1056. confirmButtonText: "确定",
  1057. cancelButtonText: "取消",
  1058. type: "warning",
  1059. }).then(() => {
  1060. this.doFlow(4);
  1061. this.dialogStatus=false;
  1062. });
  1063. }else if(this.bpmInfo.taskName=="结果确认"){
  1064. this.$confirm("确认提交'结果确认'到'结束'环节么 ?",
  1065. "提示", {
  1066. confirmButtonText: "确定",
  1067. cancelButtonText: "取消",
  1068. type: "warning",
  1069. }).then(() => {
  1070. this.doFlow(5);
  1071. this.dialogStatus=false;
  1072. });
  1073. }
  1074. }
  1075. if(n===3){
  1076. this.dialogStatus=false;
  1077. //页面临时元素清理
  1078. this.datalist.attList=[];
  1079. this.attList=[];
  1080. this.bpmInfo={taskName: ""};
  1081. this.khdatalist.attList=[];
  1082. this.khfileInfo.fileList=[];
  1083. }
  1084. //打分信息详情弹窗,关闭。
  1085. if(n===5){
  1086. this.innerDialogStatus=false;
  1087. }
  1088. //打分单项页面弹窗关闭
  1089. if(n===7){
  1090. this.innerInnerDialogStatus=false;
  1091. //this.khdatalist.attList=[];
  1092. //this.attList=[];
  1093. //this.khfileInfo.fileList=[];
  1094. }
  1095. if(n==6){
  1096. this.saveVipDet(this.vipDetinfo);
  1097. }
  1098. //打分项单独页面(comm )页面窗体关闭
  1099. if(n==9){
  1100. this.innerInnerDialogStatus1=false;
  1101. this.khdatalist.attList=[];
  1102. this.attList=[];
  1103. this.khfileInfo.fileList=[];
  1104. }
  1105. if(n==8){
  1106. //保存comm 打分结果。
  1107. this.saveCommDet(this.commDetinfo);
  1108. }
  1109. },
  1110. closedia(){
  1111. this.loading=false;
  1112. },
  1113. //查看代办已办工单
  1114. checkNotic(n,v){
  1115. this.bpmInfo.createTime=v.create_time;
  1116. this.bpmInfo.opName=v.op_name;
  1117. this.bpmInfo.opNo=v.op_no;
  1118. this.bpmInfo.woTitle=v.wo_title;
  1119. this.bpmInfo.woNo=v.wo_no;
  1120. this.bpmInfo.taskId=v.task_id;
  1121. this.bpmInfo.stepId=v.step_id;
  1122. this.bpmInfo.procVersion=v.proc_version;
  1123. this.bpmInfo.procId=v.proc_id;
  1124. this.bpmInfo.taskName=v.task_name;
  1125. this.bpmInfo.opLogin=this.userInfo.loginNo;
  1126. //1.查看。
  1127. if(n===1){
  1128. //查看的时候页面元素只读。
  1129. this.viewOnly=true;
  1130. //查看的时候可以看所有人的。
  1131. this.khinfodis=true;
  1132. this.bpmInfo.auditLogin='';
  1133. this.showShContent=false;
  1134. this.showAudit=false;
  1135. this.doflowButton=false;
  1136. this.khdetEditButton=false;
  1137. console.info("this.bpmInfo.taskName:"+this.bpmInfo.taskName);
  1138. }
  1139. this.queryWo(this.bpmInfo);
  1140. //2.处理。
  1141. //按钮点处理,且状态是 业务负责人打分的时候,值能看自己的
  1142. if(n===2){
  1143. this.viewOnly=false;
  1144. this.doflowButton=true;//点了处理按钮。
  1145. if(this.bpmInfo.taskName=="业务负责人打分"){
  1146. //根据 loginNo,查看当前负责人的打分信息。
  1147. this.bpmInfo.auditLogin=this.userInfo.loginNo;
  1148. this.khinfodis=false;
  1149. this.showShContent=false;
  1150. this.showShContent1=false;
  1151. this.showAudit=false;
  1152. }else if(this.bpmInfo.taskName=="考核结果汇总"){
  1153. this.bpmInfo.auditLogin='';
  1154. this.khinfodis=false;
  1155. this.showShContent=true;
  1156. this.showShContent1=true;
  1157. this.showAudit=false;
  1158. this.viewOnly=true;
  1159. }else if(this.bpmInfo.taskName=="初审"){
  1160. this.bpmInfo.auditLogin='';
  1161. this.khinfodis=false;
  1162. this.showShContent=true;
  1163. this.showShContent1=false;
  1164. this.showAudit=true;
  1165. this.bpmInfo.audit='Y';
  1166. }else if(this.bpmInfo.taskName=="终审"){
  1167. this.bpmInfo.auditLogin='';
  1168. this.khinfodis=false;
  1169. this.showShContent=false;
  1170. this.showShContent1=true;
  1171. this.showAudit=true;
  1172. this.bpmInfo.audit='Y';
  1173. }else if(this.bpmInfo.taskName=="结果确认"){
  1174. this.bpmInfo.auditLogin='';
  1175. this.khinfodis=false;
  1176. this.showShContent=false;
  1177. this.showShContent1=false;
  1178. this.showAudit=false;
  1179. this.showFinishContent=true;
  1180. this.showFiles=true;
  1181. this.viewOnly=false;
  1182. }else{
  1183. this.showShContent=false;
  1184. this.showAudit=false;
  1185. this.showFinishContent=true;
  1186. this.showFiles=true;
  1187. this.bpmInfo.auditLogin='';
  1188. this.khinfodis=false;
  1189. }
  1190. }else{
  1191. this.bpmInfo.auditLogin='';
  1192. this.khinfodis=false;
  1193. this.showShContent=false;
  1194. this.showAudit=false;
  1195. }
  1196. this.dialogStatus=true;
  1197. this.queryShInfoList(n,this.bpmInfo);
  1198. },
  1199. //获取代办信息
  1200. queryWo(v){
  1201. this.$http({
  1202. url: "/bpm/api/taskInit",
  1203. method: "post",
  1204. headers: {
  1205. "Content-Type": "application/json"
  1206. },
  1207. data: v,
  1208. }).then((res) => {
  1209. this.flowinfo=res.data;
  1210. this.shcontent=this.flowinfo.params.shcontent;
  1211. this.shcontent1=this.flowinfo.params.shcontent1;
  1212. this.finishcontent=this.flowinfo.params.finishcontent;
  1213. if(this.flowinfo.params.files!=''&&this.flowinfo.params.files!=undefined){
  1214. let dfiles=JSON.parse(this.flowinfo.params.files);
  1215. for(let i=0;i<dfiles.length;i++){
  1216. dfiles[i].id=dfiles[i].attchFileId;
  1217. }
  1218. this.files=dfiles
  1219. this.datalist.attList=dfiles;
  1220. // todo 重新加载,download 组件。
  1221. this.componentKey1+=1;
  1222. this.fileInfo.fileList=dfiles;
  1223. }
  1224. //已办信息中,获取taskName,和当前处理人。
  1225. if(this.bpmInfo.taskName==undefined){
  1226. let taskList=this.flowinfo.taskList;
  1227. for(let i=0;i<taskList.length;i++){
  1228. if(taskList[i].sts=='0'){
  1229. this.bpmInfo.taskName=taskList[i].taskName;
  1230. break;
  1231. }
  1232. }
  1233. }
  1234. //如果没有代办了,说明流程结束了。显示文件和结果建议。
  1235. if(this.bpmInfo.taskName==undefined){
  1236. this.showFiles=true;
  1237. this.showFinishContent=true;
  1238. this.bpmInfo.taskName='结束'
  1239. }
  1240. });
  1241. },
  1242. //查询打分信息
  1243. //获取打分详细信息,根据,人,当前节点,展示不同的结果
  1244. //打分人打分,当前查询人是审核人,只看自己的。
  1245. //审核人审核,看所有的。
  1246. //发起人,汇总人,看所有的。但只能操作自己的。(在打开详情页面时判断)
  1247. queryShInfoList(n,v){
  1248. //获取params
  1249. //代办处理。
  1250. this.$http({
  1251. url: "/market/cmkTvAssessModule/khInfoList",
  1252. method: "post",
  1253. headers: {
  1254. "Content-Type": "application/json"
  1255. },
  1256. data: v,
  1257. }).then((res) => {
  1258. if(res.data.result=='0'){
  1259. this.khTableData=res.data.body;
  1260. }
  1261. });
  1262. },
  1263. queryShDetList(){
  1264. //
  1265. },
  1266. initTaskCount(){
  1267. this.$http({
  1268. url: "/market/cmkTvAssessModule/getcount",
  1269. method: "post",
  1270. headers: {
  1271. "Content-Type": "application/json"
  1272. },
  1273. data: {},
  1274. }).then((res) => {
  1275. if(res.data.result=='0'){
  1276. this.info=res.data.body;
  1277. }
  1278. });
  1279. },
  1280. getToDoList(){
  1281. this.$http({
  1282. url: "/market/cmkTvAssessModule/todoList",
  1283. method: "post",
  1284. headers: {
  1285. "Content-Type": "application/json"
  1286. },
  1287. data: {},
  1288. }).then((res) => {
  1289. if(res.data.result=='0'){
  1290. this.todoList=res.data.body;
  1291. }
  1292. });
  1293. },
  1294. getDoneList(){
  1295. this.$http({
  1296. url: "/market/cmkTvAssessModule/doneList",
  1297. method: "post",
  1298. headers: {
  1299. "Content-Type": "application/json"
  1300. },
  1301. data: {},
  1302. }).then((res) => {
  1303. if(res.data.result=='0'){
  1304. this.doneList=res.data.body;
  1305. }
  1306. });
  1307. },
  1308. advadd(){
  1309. this.$router.push({
  1310. path: "/initiateAssess",
  1311. });
  1312. this.setabList("发起考核", "/initiateAssess");
  1313. },
  1314. setabList(n, p) {
  1315. let params = {
  1316. children: "",
  1317. name: n,
  1318. rountPath: p,
  1319. target: "_self",
  1320. };
  1321. for (let i = 0; i < this.$store.state.tabList.length; i++) {
  1322. if (this.$store.state.tabList[i].name === params.name) {
  1323. this.$store.state.tabList[i] = params;
  1324. }
  1325. }
  1326. let set = new Set([...this.$store.state.tabList, params]);
  1327. set.add(params);
  1328. this.$store.commit("setDefaultActive", params.rountPath);
  1329. this.$store.commit("setTabList", Array.from(set));
  1330. },
  1331. //跳转
  1332. jNotice(v) {
  1333. this.$router.push(v);
  1334. },
  1335. getUser() {
  1336. this.userInfo = JSON.parse(window.sessionStorage.userInfo);
  1337. },
  1338. },
  1339. mounted() {
  1340. this.getUser();
  1341. },
  1342. created() {
  1343. this.initTaskCount();
  1344. this.getToDoList();
  1345. this.getDoneList();
  1346. },
  1347. };
  1348. </script>
  1349. <style lang="scss" scoped>
  1350. .taskbox {
  1351. width: 49.5%;
  1352. display: inline-block;
  1353. }
  1354. .mc-wrap {
  1355. box-sizing: border-box !important;
  1356. margin: 0;
  1357. height: calc(100vh - 120px);
  1358. overflow: hidden;
  1359. width: 100%;
  1360. padding-right: 15px;
  1361. .container-box {
  1362. width: 100%;
  1363. height: calc(100% - 40px);
  1364. margin-top: 20px;
  1365. overflow-y: scroll;
  1366. padding: 0 0 0 15px;
  1367. }
  1368. .tit {
  1369. height: 30px;
  1370. background: #fff;
  1371. line-height: 35px;
  1372. padding: 0 20px;
  1373. display: flex;
  1374. justify-content: space-between;
  1375. }
  1376. }
  1377. .mc-top {
  1378. display: flex;
  1379. width: 100%;
  1380. }
  1381. .mc-wrap .mc-top-left {
  1382. width: 100%;
  1383. margin-right: 15px;
  1384. }
  1385. .car-line-knowledge {
  1386. min-height: 250px;
  1387. max-height: 250px;
  1388. background: #fff;
  1389. // margin: 10px 0 0 0;
  1390. margin-left: 10px;
  1391. overflow-y: auto;
  1392. .car-box {
  1393. padding: 0 20px;
  1394. line-height: 44px;
  1395. height: 44px;
  1396. color: #333;
  1397. border-bottom: 1px solid #c1abfc;
  1398. span {
  1399. cursor: pointer;
  1400. margin-right: 20px;
  1401. }
  1402. span:first-child {
  1403. cursor: auto;
  1404. }
  1405. span:last-child {
  1406. float: right;
  1407. margin-right: 0;
  1408. }
  1409. }
  1410. }
  1411. .car-line {
  1412. height: 140px;
  1413. background: #fff;
  1414. // margin: 10px 0 0 0;
  1415. .car-box {
  1416. padding: 0 20px;
  1417. line-height: 40px;
  1418. color: #333;
  1419. span {
  1420. cursor: pointer;
  1421. margin-right: 20px;
  1422. }
  1423. span:first-child {
  1424. cursor: auto;
  1425. }
  1426. span:last-child {
  1427. float: right;
  1428. margin-right: 0;
  1429. }
  1430. }
  1431. .adv-box {
  1432. margin-top: 20px;
  1433. margin-left: 20px;
  1434. margin-right: 20px;
  1435. display: flex;
  1436. flex-wrap: nowrap;
  1437. justify-content: space-between;
  1438. div {
  1439. display: inline-block;
  1440. cursor: pointer;
  1441. .el-card {
  1442. width: 100%;
  1443. }
  1444. i{
  1445. margin-right: 10px;
  1446. }
  1447. }
  1448. .adv-tit {
  1449. width: 28%;
  1450. border: 1px solid transparent;
  1451. border-radius: 5px;
  1452. height: 60px;
  1453. line-height: 60px;
  1454. padding-left: 20px;
  1455. box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
  1456. overflow: hidden;
  1457. em{
  1458. float: right;
  1459. margin-right: 20px;
  1460. font-style: normal;
  1461. color: #0074D9;
  1462. }
  1463. }
  1464. .adv-tit:hover{
  1465. border: 1px solid #CFE8FC;
  1466. background: #CFE8FC;
  1467. }
  1468. .adv-add {
  1469. width: 100px;
  1470. }
  1471. }
  1472. }
  1473. .mc-wrap .mc-top-right {
  1474. width: calc(20% - 15px);
  1475. background-color: white;
  1476. overflow: hidden;
  1477. .inner-box {
  1478. width: calc(100% + 20px);
  1479. background-color: white;
  1480. overflow-y: scroll;
  1481. }
  1482. }
  1483. .swiper-pagination {
  1484. position: absolute;
  1485. bottom: 0;
  1486. }
  1487. .main-box .item {
  1488. float: left;
  1489. width: 50%;
  1490. }
  1491. .main-box {
  1492. overflow: hidden;
  1493. }
  1494. #test-n2 #layui-laydate1 {
  1495. width: 100% !important;
  1496. }
  1497. .mc-wrap .laydate-theme-grid .layui-laydate-content td {
  1498. border: none !important;
  1499. border-radius: 50%;
  1500. }
  1501. .mc-wrap .layui-laydate-main {
  1502. width: 100% !important;
  1503. }
  1504. .mc-wrap .layui-laydate-content table {
  1505. width: 100%;
  1506. }
  1507. .mc-wrap .layui-laydate-static {
  1508. width: 100% !important;
  1509. border: none !important;
  1510. box-shadow: none !important;
  1511. }
  1512. .mc-wrap .laydate-day-mark::after {
  1513. bottom: 0 !important;
  1514. left: 45% !important;
  1515. top: 50px !important;
  1516. }
  1517. .mc-wrap .laydate-day-mark {
  1518. overflow: inherit !important;
  1519. overflow: none !important;
  1520. }
  1521. .mc-wrap .layui-laydate .layui-this {
  1522. background-color: #a3c1e5 !important;
  1523. }
  1524. #test-n2 {
  1525. width: initial !important;
  1526. }
  1527. .tasksituation {
  1528. border-bottom: 1px solid #f7f7f7;
  1529. }
  1530. .mc-wrap .tasksituation > .title {
  1531. font-size: 16px;
  1532. font-weight: 500;
  1533. padding-top: 20px;
  1534. padding-left: 20px;
  1535. color: #333;
  1536. }
  1537. .mc-wrap .main-box .point {
  1538. color: #ff6060;
  1539. font-size: 30px;
  1540. font-weight: 500;
  1541. }
  1542. .mc-wrap .main-box .item img {
  1543. width: 100%;
  1544. }
  1545. .mc-wrap .describe {
  1546. text-align: center;
  1547. }
  1548. .mc-wrap .describe .title {
  1549. color: #999;
  1550. font-size: 12px;
  1551. padding: 5px 0;
  1552. }
  1553. .mc-wrap .describe .day {
  1554. color: #0081cc;
  1555. font-size: 16px;
  1556. }
  1557. .mc-wrap .swiper-pagination-bullet {
  1558. width: 10% !important;
  1559. border-radius: 0;
  1560. height: 5px !important;
  1561. }
  1562. .mc-wrap .laydate-icon {
  1563. display: none;
  1564. }
  1565. .mc-wrap .laydate-set-ym {
  1566. text-align: left;
  1567. }
  1568. .mc-wrap .layui-laydate-header {
  1569. padding: 0;
  1570. }
  1571. .mc-wrap .layui-laydate-header i {
  1572. display: none !important;
  1573. }
  1574. .mc-wrap .data-box {
  1575. position: relative;
  1576. }
  1577. .datetimeBox {
  1578. .el-timeline {
  1579. padding-left: 20px;
  1580. }
  1581. }
  1582. .mc-wrap .operation {
  1583. padding-right: 20px;
  1584. cursor: pointer;
  1585. margin-top: 10px;
  1586. text-align: right;
  1587. }
  1588. .mc-wrap .layui-laydate-footer {
  1589. display: none;
  1590. }
  1591. .mc-wrap .layui-timeline-axis {
  1592. width: 50px !important;
  1593. height: 18px;
  1594. border-radius: 20px;
  1595. top: 3px;
  1596. color: white;
  1597. line-height: 18px;
  1598. }
  1599. .mc-wrap .layui-timeline-content {
  1600. margin-left: 35px;
  1601. }
  1602. .mc-wrap .layui-timeline {
  1603. width: 80%;
  1604. margin: 0 auto;
  1605. }
  1606. .mc-wrap .layui-timeline-item:before {
  1607. left: 9% !important;
  1608. width: 3px;
  1609. background-color: #daeaf2;
  1610. top: 3px;
  1611. }
  1612. .mc-wrap .layui-timeline-axis:hover {
  1613. color: white !important;
  1614. }
  1615. .mc-wrap .ztree li a.curSelectedNode {
  1616. border: none !important;
  1617. background-color: white !important;
  1618. }
  1619. .point-baifen {
  1620. font-size: 14px;
  1621. margin-left: -5%;
  1622. }
  1623. @keyframes spin {
  1624. 0% {
  1625. transform: rotate(0deg);
  1626. }
  1627. to {
  1628. transform: rotate(1turn);
  1629. }
  1630. }
  1631. .info-line {
  1632. width: 100%;
  1633. display: block;
  1634. padding-left: 20px;
  1635. div {
  1636. width: 50%;
  1637. display: inline-block;
  1638. overflow: hidden;
  1639. }
  1640. .mytxt {
  1641. height: 40px;
  1642. padding-left: 20px;
  1643. border: 1px solid #ddd;
  1644. border-radius: 5px;
  1645. width: calc(100% - 100px);
  1646. float: left;
  1647. }
  1648. .mytxtinfo {
  1649. line-height: 40px;
  1650. height: auto;
  1651. padding-left: 20px;
  1652. border: 1px solid #ddd;
  1653. border-radius: 5px;
  1654. width: calc(100% - 100px);
  1655. }
  1656. span {
  1657. width: 80px;
  1658. display: inline-block;
  1659. text-align: left;
  1660. float: left;
  1661. i {
  1662. color: red;
  1663. display: inline-block;
  1664. padding-right: 5px;
  1665. }
  1666. }
  1667. .el-select,
  1668. .el-input {
  1669. width: calc(100% - 100px);
  1670. }
  1671. }
  1672. .online {
  1673. width: 100%;
  1674. .el-select {
  1675. width: calc(100% - 100px);
  1676. }
  1677. span {
  1678. vertical-align: top;
  1679. }
  1680. .el-textarea {
  1681. width: calc(100% - 100px);
  1682. }
  1683. }
  1684. </style>