index.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548
  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" @click="jumpadv('0')">
  12. <i class="el-icon-time"></i>
  13. <span>待办 <em>{{totalToDo||0}}</em></span>
  14. </div>
  15. <div class="adv-tit" @click="jumpadv('1')">
  16. <i class="el-icon-finished"></i>
  17. <span>已办 <em>{{totalDone||0}}</em></span>
  18. </div>
  19. <div class="adv-tit" @click="jumpadv('2')">
  20. <i class="el-icon-notebook-1"></i>
  21. <span>已归档 <em>{{totalFinish||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. <hometask></hometask>
  32. </el-col>
  33. </el-row>
  34. </div>
  35. </div>
  36. </div>
  37. </div>
  38. </template>
  39. <script>
  40. import hometask from "./homeTask.vue";
  41. export default {
  42. components: {
  43. hometask,
  44. },
  45. data() {
  46. return {
  47. totalToDo: 0,
  48. totalDone: 0,
  49. totalFinish: 0,
  50. };
  51. },
  52. methods: {
  53. advadd(){
  54. this.$router.push({
  55. path: "/mbAuditAdd",
  56. });
  57. this.setabList("发起需求", "/mbAuditAdd");
  58. },
  59. jumpadv(v){
  60. if(v!=='2'){
  61. this.$router.push({ path: "/mbAuditList", query:{ type:v}});
  62. this.setabList("魔百和审批流程列表", "/mbAuditList?type="+v);
  63. }else if(v==='2'){
  64. this.$router.push({ path: "/magicBoxItem"});
  65. }
  66. },
  67. setabList(n, p) {
  68. let params = {
  69. children: "",
  70. name: n,
  71. rountPath: p,
  72. target: "_self",
  73. };
  74. for (let i = 0; i < this.$store.state.tabList.length; i++) {
  75. if (this.$store.state.tabList[i].name === params.name) {
  76. this.$store.state.tabList[i] = params;
  77. }
  78. }
  79. let set = new Set([...this.$store.state.tabList, params]);
  80. set.add(params);
  81. this.$store.commit("setDefaultActive", params.rountPath);
  82. this.$store.commit("setTabList", Array.from(set));
  83. },
  84. //待办工单列表查询
  85. getToDoList(v, n) {
  86. this.pageSizeToDo = n;
  87. v.procName = "魔百和大屏广告自有业务承载审批流程";
  88. //v.procName = "广告申请";
  89. this.$http({
  90. url: "/bpm/api/queryToDoTaskList",
  91. method: "post",
  92. headers: {
  93. "Content-Type": "application/json",
  94. "page": '{"pageNo":"' + n + '","pageSize":"10"}'
  95. },
  96. data: v,
  97. }).then((res) => {
  98. this.totalToDo = res.data.totalRecord;
  99. });
  100. },
  101. //已办工单列表查询
  102. getDoneList(v, n) {
  103. this.pageSizeDone = n;
  104. v.procName = "魔百和大屏广告自有业务承载审批流程";
  105. //v.procName = "广告申请";
  106. this.$http({
  107. url: "/bpm/api/queryDoneTaskList",
  108. method: "post",
  109. headers: {
  110. "Content-Type": "application/json",
  111. "page": '{"pageNo":"' + n + '","pageSize":"10"}'
  112. },
  113. data: v,
  114. }).then((res) => {
  115. this.totalDone = res.data.totalRecord;
  116. });
  117. },
  118. //已归档工单列表查询
  119. getFinishList(v, n) {
  120. this.pageSizeDone = n;
  121. v.procName = "魔百和大屏广告自有业务承载审批流程";
  122. //v.procName = "广告申请";
  123. this.$http({
  124. url: "/market/mbh/list",
  125. method: "post",
  126. headers: {
  127. "Content-Type": "application/json"
  128. },
  129. data: {"status":"1"},
  130. }).then((res) => {
  131. this.totalFinish = res.data.body.length
  132. });
  133. },
  134. },
  135. mounted() {
  136. this.getToDoList({}, 1);
  137. this.getDoneList({}, 1);
  138. this.getFinishList({}, 1);
  139. },
  140. created() {},
  141. };
  142. </script>
  143. <style lang="scss" scoped>
  144. .mc-wrap {
  145. box-sizing: border-box !important;
  146. margin: 0;
  147. height: calc(100vh - 120px);
  148. overflow: hidden;
  149. width: 100%;
  150. padding-right: 15px;
  151. .container-box {
  152. width: 100%;
  153. height: calc(100% - 40px);
  154. margin-top: 20px;
  155. overflow-y: scroll;
  156. padding: 0 0 0 15px;
  157. }
  158. .tit {
  159. height: 30px;
  160. background: #fff;
  161. line-height: 35px;
  162. padding: 0 20px;
  163. display: flex;
  164. justify-content: space-between;
  165. }
  166. }
  167. .mc-top {
  168. display: flex;
  169. width: 100%;
  170. }
  171. .mc-wrap .mc-top-left {
  172. width: 100%;
  173. margin-right: 15px;
  174. }
  175. .car-line-knowledge {
  176. min-height: 250px;
  177. max-height: 250px;
  178. background: #fff;
  179. // margin: 10px 0 0 0;
  180. margin-left: 10px;
  181. overflow-y: auto;
  182. .car-box {
  183. padding: 0 20px;
  184. line-height: 44px;
  185. height: 44px;
  186. color: #333;
  187. border-bottom: 1px solid #c1abfc;
  188. span {
  189. cursor: pointer;
  190. margin-right: 20px;
  191. }
  192. span:first-child {
  193. cursor: auto;
  194. }
  195. span:last-child {
  196. float: right;
  197. margin-right: 0;
  198. }
  199. }
  200. }
  201. .car-line {
  202. height: 140px;
  203. background: #fff;
  204. // margin: 10px 0 0 0;
  205. .car-box {
  206. padding: 0 20px;
  207. line-height: 40px;
  208. color: #333;
  209. span {
  210. cursor: pointer;
  211. margin-right: 20px;
  212. }
  213. span:first-child {
  214. cursor: auto;
  215. }
  216. span:last-child {
  217. float: right;
  218. margin-right: 0;
  219. }
  220. }
  221. .adv-box {
  222. margin-top: 20px;
  223. margin-left: 20px;
  224. margin-right: 20px;
  225. display: flex;
  226. flex-wrap: nowrap;
  227. justify-content: space-between;
  228. div {
  229. display: inline-block;
  230. cursor: pointer;
  231. .el-card {
  232. width: 100%;
  233. }
  234. i{
  235. margin-right: 10px;
  236. }
  237. }
  238. .adv-tit {
  239. width: 28%;
  240. border: 1px solid transparent;
  241. border-radius: 5px;
  242. height: 60px;
  243. line-height: 60px;
  244. padding-left: 20px;
  245. box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
  246. overflow: hidden;
  247. em{
  248. float: right;
  249. margin-right: 20px;
  250. font-style: normal;
  251. color: #0074D9;
  252. }
  253. }
  254. .adv-tit:hover{
  255. border: 1px solid #CFE8FC;
  256. background: #CFE8FC;
  257. }
  258. .adv-add {
  259. width: 100px;
  260. }
  261. }
  262. }
  263. .mc-wrap .mc-top-right {
  264. width: calc(20% - 15px);
  265. background-color: white;
  266. overflow: hidden;
  267. .inner-box {
  268. width: calc(100% + 20px);
  269. background-color: white;
  270. overflow-y: scroll;
  271. }
  272. }
  273. .swiper-pagination {
  274. position: absolute;
  275. bottom: 0;
  276. }
  277. .main-box .item {
  278. float: left;
  279. width: 50%;
  280. }
  281. .main-box {
  282. overflow: hidden;
  283. }
  284. #test-n2 #layui-laydate1 {
  285. width: 100% !important;
  286. }
  287. .mc-wrap .laydate-theme-grid .layui-laydate-content td {
  288. border: none !important;
  289. border-radius: 50%;
  290. }
  291. .mc-wrap .layui-laydate-main {
  292. width: 100% !important;
  293. }
  294. .mc-wrap .layui-laydate-content table {
  295. width: 100%;
  296. }
  297. .mc-wrap .layui-laydate-static {
  298. width: 100% !important;
  299. border: none !important;
  300. box-shadow: none !important;
  301. }
  302. .mc-wrap .laydate-day-mark::after {
  303. bottom: 0 !important;
  304. left: 45% !important;
  305. top: 50px !important;
  306. }
  307. .mc-wrap .laydate-day-mark {
  308. overflow: inherit !important;
  309. overflow: none !important;
  310. }
  311. .mc-wrap .layui-laydate .layui-this {
  312. background-color: #a3c1e5 !important;
  313. }
  314. #test-n2 {
  315. width: initial !important;
  316. }
  317. .tasksituation {
  318. border-bottom: 1px solid #f7f7f7;
  319. }
  320. .mc-wrap .tasksituation > .title {
  321. font-size: 16px;
  322. font-weight: 500;
  323. padding-top: 20px;
  324. padding-left: 20px;
  325. color: #333;
  326. }
  327. .mc-wrap .main-box .point {
  328. color: #ff6060;
  329. font-size: 30px;
  330. font-weight: 500;
  331. }
  332. .mc-wrap .main-box .item img {
  333. width: 100%;
  334. }
  335. .mc-wrap .describe {
  336. text-align: center;
  337. }
  338. .mc-wrap .describe .title {
  339. color: #999;
  340. font-size: 12px;
  341. padding: 5px 0;
  342. }
  343. .mc-wrap .describe .day {
  344. color: #0081cc;
  345. font-size: 16px;
  346. }
  347. .mc-wrap .swiper-pagination-bullet {
  348. width: 10% !important;
  349. border-radius: 0;
  350. height: 5px !important;
  351. }
  352. .mc-wrap .laydate-icon {
  353. display: none;
  354. }
  355. .mc-wrap .laydate-set-ym {
  356. text-align: left;
  357. }
  358. .mc-wrap .layui-laydate-header {
  359. padding: 0;
  360. }
  361. .mc-wrap .layui-laydate-header i {
  362. display: none !important;
  363. }
  364. .mc-wrap .data-box {
  365. position: relative;
  366. }
  367. .datetimeBox {
  368. .el-timeline {
  369. padding-left: 20px;
  370. }
  371. }
  372. .mc-wrap .operation {
  373. padding-right: 20px;
  374. cursor: pointer;
  375. margin-top: 10px;
  376. text-align: right;
  377. }
  378. .mc-wrap .layui-laydate-footer {
  379. display: none;
  380. }
  381. .mc-wrap .layui-timeline-axis {
  382. width: 50px !important;
  383. height: 18px;
  384. border-radius: 20px;
  385. top: 3px;
  386. color: white;
  387. line-height: 18px;
  388. }
  389. .mc-wrap .layui-timeline-content {
  390. margin-left: 35px;
  391. }
  392. .mc-wrap .layui-timeline {
  393. width: 80%;
  394. margin: 0 auto;
  395. }
  396. .mc-wrap .layui-timeline-item:before {
  397. left: 9% !important;
  398. width: 3px;
  399. background-color: #daeaf2;
  400. top: 3px;
  401. }
  402. .mc-wrap .layui-timeline-axis:hover {
  403. color: white !important;
  404. }
  405. .mc-wrap .ztree li a.curSelectedNode {
  406. border: none !important;
  407. background-color: white !important;
  408. }
  409. .point-baifen {
  410. font-size: 14px;
  411. margin-left: -5%;
  412. }
  413. @keyframes spin {
  414. 0% {
  415. transform: rotate(0deg);
  416. }
  417. to {
  418. transform: rotate(1turn);
  419. }
  420. }
  421. .info-line {
  422. width: 100%;
  423. display: block;
  424. padding-left: 20px;
  425. div {
  426. width: 50%;
  427. display: inline-block;
  428. overflow: hidden;
  429. }
  430. .mytxt {
  431. height: 40px;
  432. padding-left: 20px;
  433. border: 1px solid #ddd;
  434. border-radius: 5px;
  435. width: calc(100% - 100px);
  436. float: left;
  437. }
  438. .mytxtinfo {
  439. line-height: 40px;
  440. height: auto;
  441. padding-left: 20px;
  442. border: 1px solid #ddd;
  443. border-radius: 5px;
  444. width: calc(100% - 100px);
  445. }
  446. span {
  447. width: 80px;
  448. display: inline-block;
  449. text-align: left;
  450. float: left;
  451. i {
  452. color: red;
  453. display: inline-block;
  454. padding-right: 5px;
  455. }
  456. }
  457. .el-select,
  458. .el-input {
  459. width: calc(100% - 100px);
  460. }
  461. }
  462. .online {
  463. width: 100%;
  464. .el-select {
  465. width: calc(100% - 100px);
  466. }
  467. span {
  468. vertical-align: top;
  469. }
  470. .el-textarea {
  471. width: calc(100% - 100px);
  472. }
  473. }
  474. </style>