tvAssessIndex.vue 77 KB

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