‘liyuanpeng’ 3 年 前
コミット
d340788985
100 ファイル変更22512 行追加1421 行削除
  1. 54 143
      package-lock.json
  2. 1 1
      package.json
  3. 3 4
      public/index.html
  4. 1 1
      public/static/js/exceljs.js
  5. 1 1
      public/static/js/lay/modules/laydate.js
  6. 1 1
      public/static/js/lay/modules/util.js
  7. 2 2
      public/static/js/layui.all.js
  8. 1 1
      public/static/js/luckysheet/luckysheet.umd.js
  9. 307 0
      public/static/views/Hallstore.html
  10. 308 0
      public/static/views/foocusAssessH.html
  11. 272 0
      public/static/views/settlementEval.html
  12. 5 0
      src/assets/style.scss
  13. 4 1
      src/components/deptTreeOnly.vue
  14. 1 1
      src/components/p-form.vue
  15. 1 1
      src/components/p-header.vue
  16. 6 0
      src/components/search.vue
  17. 39 1
      src/components/upload.vue
  18. 0 1
      src/components/uploadDown.vue
  19. 165 0
      src/components/uploadKh.vue
  20. 118 0
      src/components/uploadMbh.vue
  21. 102 0
      src/components/uploadNew.vue
  22. 61 0
      src/components/uploadNewDown.vue
  23. 1 1
      src/pages/main/achievements/achievementsMuban.vue
  24. 3 3
      src/pages/main/advReleaseAppro/advgys.vue
  25. 3 3
      src/pages/main/advReleaseAppro/advysx.vue
  26. 1136 991
      src/pages/main/advReleaseAppro/index.vue
  27. 5 4
      src/pages/main/advReleaseAppro/internet.vue
  28. 2 1
      src/pages/main/advReleaseAppro/outdoors.vue
  29. 1 1
      src/pages/main/advertising/businessHall.vue
  30. 1 1
      src/pages/main/advertising/contractCap.vue
  31. 18 1
      src/pages/main/advertising/materialApplication.vue
  32. 1 1
      src/pages/main/advertising/materialApplicationExa.vue
  33. 1 1
      src/pages/main/advertising/materialApplicationExac.vue
  34. 141 151
      src/pages/main/advertising/materialApplicationadd.vue
  35. 1 1
      src/pages/main/advertising/materialApplicationc.vue
  36. 1 1
      src/pages/main/advertising/materiel.vue
  37. 1 1
      src/pages/main/advertising/materielPick.vue
  38. 3 3
      src/pages/main/advertising/supplier.vue
  39. 800 0
      src/pages/main/badInfoGovern/index.vue
  40. 1 1
      src/pages/main/budget/budgetList.vue
  41. 930 0
      src/pages/main/businessOutsourc/benefitEvalua.vue
  42. 595 0
      src/pages/main/businessOutsourc/businessbudget.vue
  43. 283 0
      src/pages/main/businessOutsourc/index.vue
  44. 10 0
      src/pages/main/businessOutsourc/settlementEval.vue
  45. 436 0
      src/pages/main/businessOutsourc/settlementEvalua.vue
  46. 368 0
      src/pages/main/businessOutsourc/stageCensus.vue
  47. 780 0
      src/pages/main/businessOutsourc/stageSeat.vue
  48. 474 0
      src/pages/main/businessOutsourc/stageSeatcheck.vue
  49. 546 0
      src/pages/main/businessOutsourc/standard.vue
  50. 1 1
      src/pages/main/competitor/addCompetitor.vue
  51. 1 1
      src/pages/main/competitor/changeCompet.vue
  52. 2 2
      src/pages/main/competitor/compete.vue
  53. 2 2
      src/pages/main/competitor/competeInfo.vue
  54. 2 2
      src/pages/main/compvis/compvisList.vue
  55. 110 14
      src/pages/main/cooOperation/index.vue
  56. 1 1
      src/pages/main/cooOperation/yStanding.vue
  57. 1124 0
      src/pages/main/demandCollection/index.vue
  58. 86 57
      src/pages/main/demandDevelop/index.vue
  59. 1 1
      src/pages/main/development/dStanding.vue
  60. 101 10
      src/pages/main/development/index.vue
  61. 623 0
      src/pages/main/emergingMarket/index.vue
  62. 1022 0
      src/pages/main/endToEnd/index.vue
  63. 6 2
      src/pages/main/funcInit/manageLnit.vue
  64. 1 1
      src/pages/main/funcInit/plugInunit.vue
  65. 1 1
      src/pages/main/groupMSsend/groupAdd.vue
  66. 1 1
      src/pages/main/groupMSsend/index.vue
  67. 525 0
      src/pages/main/homeMarket/magicboxAudit/audit.vue
  68. 162 0
      src/pages/main/homeMarket/magicboxAudit/base.vue
  69. 539 0
      src/pages/main/homeMarket/magicboxAudit/dealAudit.vue
  70. 429 0
      src/pages/main/homeMarket/magicboxAudit/homeTask.vue
  71. 547 0
      src/pages/main/homeMarket/magicboxAudit/index.vue
  72. 95 0
      src/pages/main/homeMarket/magicboxAudit/itemDlg.vue
  73. 214 0
      src/pages/main/homeMarket/magicboxAudit/magicBoxItem.vue
  74. 531 0
      src/pages/main/homeMarket/magicboxAudit/mbAuditAdd.vue
  75. 329 0
      src/pages/main/homeMarket/magicboxAudit/mbAuditList.vue
  76. 714 0
      src/pages/main/homeMarket/tvAssess/initiateAssess.vue
  77. 1865 0
      src/pages/main/homeMarket/tvAssess/tvAssessIndex.vue
  78. 465 0
      src/pages/main/homeMarket/tvIntroduction/create.vue
  79. 175 0
      src/pages/main/homeMarket/tvIntroduction/deal/assignExpert.vue
  80. 60 0
      src/pages/main/homeMarket/tvIntroduction/deal/audit.vue
  81. 140 0
      src/pages/main/homeMarket/tvIntroduction/deal/auditQualification.vue
  82. 301 0
      src/pages/main/homeMarket/tvIntroduction/deal/base.vue
  83. 608 0
      src/pages/main/homeMarket/tvIntroduction/deal/basePeerReview.vue
  84. 150 0
      src/pages/main/homeMarket/tvIntroduction/deal/extendCentralAudit.vue
  85. 223 0
      src/pages/main/homeMarket/tvIntroduction/deal/extendOfficerAudit.vue
  86. 218 0
      src/pages/main/homeMarket/tvIntroduction/deal/idxDialog.vue
  87. 162 0
      src/pages/main/homeMarket/tvIntroduction/deal/importProvince.vue
  88. 150 0
      src/pages/main/homeMarket/tvIntroduction/deal/innerCentralAudit.vue
  89. 225 0
      src/pages/main/homeMarket/tvIntroduction/deal/innerOfficerAudit.vue
  90. 203 0
      src/pages/main/homeMarket/tvIntroduction/deal/inputMeetingReport.vue
  91. 342 0
      src/pages/main/homeMarket/tvIntroduction/deal/itemDialog.vue
  92. 161 0
      src/pages/main/homeMarket/tvIntroduction/deal/marketDecision.vue
  93. 164 0
      src/pages/main/homeMarket/tvIntroduction/deal/peerReview.vue
  94. 159 0
      src/pages/main/homeMarket/tvIntroduction/deal/publish.vue
  95. 155 0
      src/pages/main/homeMarket/tvIntroduction/deal/publish2.vue
  96. 200 0
      src/pages/main/homeMarket/tvIntroduction/deal/reviewSummary.vue
  97. 179 0
      src/pages/main/homeMarket/tvIntroduction/deal/sendLetter.vue
  98. 458 0
      src/pages/main/homeMarket/tvIntroduction/homeTask.vue
  99. 584 0
      src/pages/main/homeMarket/tvIntroduction/index.vue
  100. 0 0
      src/pages/main/homeMarket/tvIntroduction/itemList.vue

+ 54 - 143
package-lock.json

@@ -1975,9 +1975,9 @@
       }
       }
     },
     },
     "are-we-there-yet": {
     "are-we-there-yet": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
-      "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+      "version": "1.1.7",
+      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz",
+      "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "delegates": "^1.0.0",
         "delegates": "^1.0.0",
@@ -6551,9 +6551,9 @@
       }
       }
     },
     },
     "globule": {
     "globule": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
-      "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.3.tgz",
+      "integrity": "sha512-mb1aYtDbIjTu4ShMB85m3UzjX9BVKe9WCzsnfMSZk+K5GpIbBOexgg4PPCt5eHDEG5/ZQAUX2Kct02zfiPLsKg==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "glob": "~7.1.1",
         "glob": "~7.1.1",
@@ -7098,9 +7098,9 @@
       "dev": true
       "dev": true
     },
     },
     "in-publish": {
     "in-publish": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
-      "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz",
+      "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==",
       "dev": true
       "dev": true
     },
     },
     "indent-string": {
     "indent-string": {
@@ -7469,13 +7469,10 @@
       "dev": true
       "dev": true
     },
     },
     "is-finite": {
     "is-finite": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
-      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
-      "dev": true,
-      "requires": {
-        "number-is-nan": "^1.0.0"
-      }
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
+      "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
+      "dev": true
     },
     },
     "is-fullwidth-code-point": {
     "is-fullwidth-code-point": {
       "version": "2.0.0",
       "version": "2.0.0",
@@ -7692,9 +7689,9 @@
       "integrity": "sha1-AVAcuesUPVeZS0K9Wul5dP2hiQg="
       "integrity": "sha1-AVAcuesUPVeZS0K9Wul5dP2hiQg="
     },
     },
     "js-base64": {
     "js-base64": {
-      "version": "2.5.2",
-      "resolved": "https://registry.npm.taobao.org/js-base64/download/js-base64-2.5.2.tgz",
-      "integrity": "sha1-MTtidN2nGPcU0AszMLuubjjpAgk=",
+      "version": "2.6.4",
+      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
+      "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
       "dev": true
       "dev": true
     },
     },
     "js-levenshtein": {
     "js-levenshtein": {
@@ -8785,9 +8782,9 @@
       }
       }
     },
     },
     "node-sass": {
     "node-sass": {
-      "version": "4.13.0",
-      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.0.tgz",
-      "integrity": "sha512-W1XBrvoJ1dy7VsvTAS5q1V45lREbTlZQqFbiHb3R3OTTCma0XBtuG6xZ6Z4506nR4lmHPTqVRwxT6KgtWC97CA==",
+      "version": "4.14.1",
+      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz",
+      "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "async-foreach": "^0.1.3",
         "async-foreach": "^0.1.3",
@@ -8804,7 +8801,7 @@
         "node-gyp": "^3.8.0",
         "node-gyp": "^3.8.0",
         "npmlog": "^4.0.0",
         "npmlog": "^4.0.0",
         "request": "^2.88.0",
         "request": "^2.88.0",
-        "sass-graph": "^2.2.4",
+        "sass-graph": "2.2.5",
         "stdout-stream": "^1.4.0",
         "stdout-stream": "^1.4.0",
         "true-case-path": "^1.0.2"
         "true-case-path": "^1.0.2"
       },
       },
@@ -10837,155 +10834,69 @@
       "dev": true
       "dev": true
     },
     },
     "sass-graph": {
     "sass-graph": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
-      "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
+      "version": "2.2.5",
+      "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz",
+      "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==",
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "glob": "^7.0.0",
         "glob": "^7.0.0",
         "lodash": "^4.0.0",
         "lodash": "^4.0.0",
         "scss-tokenizer": "^0.2.3",
         "scss-tokenizer": "^0.2.3",
-        "yargs": "^7.0.0"
+        "yargs": "^13.3.2"
       },
       },
       "dependencies": {
       "dependencies": {
-        "ansi-regex": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-          "dev": true
-        },
-        "camelcase": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
-          "dev": true
-        },
-        "cliui": {
-          "version": "3.2.0",
-          "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
-          "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
-          "dev": true,
-          "requires": {
-            "string-width": "^1.0.1",
-            "strip-ansi": "^3.0.1",
-            "wrap-ansi": "^2.0.0"
-          }
-        },
-        "get-caller-file": {
-          "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
-          "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
-          "dev": true
-        },
-        "invert-kv": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
-          "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
-          "dev": true,
-          "requires": {
-            "number-is-nan": "^1.0.0"
-          }
-        },
-        "lcid": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
-          "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
-          "dev": true,
-          "requires": {
-            "invert-kv": "^1.0.0"
-          }
-        },
-        "os-locale": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
-          "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
-          "dev": true,
-          "requires": {
-            "lcid": "^1.0.0"
-          }
-        },
-        "require-main-filename": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
-          "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+        "emoji-regex": {
+          "version": "7.0.3",
+          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
           "dev": true
           "dev": true
         },
         },
         "string-width": {
         "string-width": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
           "dev": true,
           "dev": true,
           "requires": {
           "requires": {
-            "code-point-at": "^1.0.0",
-            "is-fullwidth-code-point": "^1.0.0",
-            "strip-ansi": "^3.0.0"
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
           }
           }
         },
         },
         "strip-ansi": {
         "strip-ansi": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        },
-        "which-module": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
-          "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
-          "dev": true
-        },
-        "wrap-ansi": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
-          "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
           "dev": true,
           "dev": true,
           "requires": {
           "requires": {
-            "string-width": "^1.0.1",
-            "strip-ansi": "^3.0.1"
+            "ansi-regex": "^4.1.0"
           }
           }
         },
         },
-        "y18n": {
-          "version": "3.2.1",
-          "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
-          "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
-          "dev": true
-        },
         "yargs": {
         "yargs": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
-          "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
+          "version": "13.3.2",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+          "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
           "dev": true,
           "dev": true,
           "requires": {
           "requires": {
-            "camelcase": "^3.0.0",
-            "cliui": "^3.2.0",
-            "decamelize": "^1.1.1",
-            "get-caller-file": "^1.0.1",
-            "os-locale": "^1.4.0",
-            "read-pkg-up": "^1.0.1",
+            "cliui": "^5.0.0",
+            "find-up": "^3.0.0",
+            "get-caller-file": "^2.0.1",
             "require-directory": "^2.1.1",
             "require-directory": "^2.1.1",
-            "require-main-filename": "^1.0.1",
+            "require-main-filename": "^2.0.0",
             "set-blocking": "^2.0.0",
             "set-blocking": "^2.0.0",
-            "string-width": "^1.0.2",
-            "which-module": "^1.0.0",
-            "y18n": "^3.2.1",
-            "yargs-parser": "^5.0.0"
+            "string-width": "^3.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^4.0.0",
+            "yargs-parser": "^13.1.2"
           }
           }
         },
         },
         "yargs-parser": {
         "yargs-parser": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
-          "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
+          "version": "13.1.2",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+          "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
           "dev": true,
           "dev": true,
           "requires": {
           "requires": {
-            "camelcase": "^3.0.0"
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
           }
           }
         }
         }
       }
       }

+ 1 - 1
package.json

@@ -43,7 +43,7 @@
     "compression-webpack-plugin": "^3.0.1",
     "compression-webpack-plugin": "^3.0.1",
     "eslint": "^5.16.0",
     "eslint": "^5.16.0",
     "eslint-plugin-vue": "^5.0.0",
     "eslint-plugin-vue": "^5.0.0",
-    "node-sass": "^4.12.0",
+    "node-sass": "^4.14.1",
     "sass-loader": "^8.0.0",
     "sass-loader": "^8.0.0",
     "script-loader": "^0.7.2",
     "script-loader": "^0.7.2",
     "vue-template-compiler": "^2.6.11",
     "vue-template-compiler": "^2.6.11",

+ 3 - 4
public/index.html

@@ -18,10 +18,9 @@
   <div id="app"></div>
   <div id="app"></div>
   <!-- built files will be auto injected -->
   <!-- built files will be auto injected -->
   <script type="text/javascript">
   <script type="text/javascript">
-    // window.staticHost = 'http://10.230.26.15:8000/spfm';
-    // window.staticHost = 'http://114.215.71.182:29600';
-    window.staticHost = 'http://192.168.2.145:9600/';
+    window.staticHost = 'http://10.230.26.15:8000/spfm';
+    // window.staticHost = 'http://192.168.2.142:9600/';
   </script>
   </script>
 </body>
 </body>
 
 
-</html>
+</html>

+ 1 - 1
public/static/js/exceljs.js

@@ -44570,7 +44570,7 @@
           var a = n.toDate;
           var a = n.toDate;
 
 
           n.toDate = function (t) {
           n.toDate = function (t) {
-            return "s" === t && this.$offset ? e(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate() : a.call(this);
+            return "s" === t && this.$offset ? e(this.format("YYYY-MM-DD")).toDate() : a.call(this);
           };
           };
 
 
           var c = n.diff;
           var c = n.diff;

+ 1 - 1
public/static/js/lay/modules/laydate.js

@@ -443,7 +443,7 @@
       ,month: 'yyyy-MM'
       ,month: 'yyyy-MM'
       ,date: 'yyyy-MM-dd'
       ,date: 'yyyy-MM-dd'
       ,time: 'HH:mm:ss'
       ,time: 'HH:mm:ss'
-      ,datetime: 'yyyy-MM-dd HH:mm:ss'
+      ,datetime: 'YYYY-MM-DD'
     };
     };
     
     
     options.elem = lay(options.elem);
     options.elem = lay(options.elem);

ファイルの差分が大きいため隠しています
+ 1 - 1
public/static/js/lay/modules/util.js


ファイルの差分が大きいため隠しています
+ 2 - 2
public/static/js/layui.all.js


ファイルの差分が大きいため隠しています
+ 1 - 1
public/static/js/luckysheet/luckysheet.umd.js


ファイルの差分が大きいため隠しています
+ 307 - 0
public/static/views/Hallstore.html


ファイルの差分が大きいため隠しています
+ 308 - 0
public/static/views/foocusAssessH.html


ファイルの差分が大きいため隠しています
+ 272 - 0
public/static/views/settlementEval.html


+ 5 - 0
src/assets/style.scss

@@ -428,3 +428,8 @@
 .ggtabinp .el-date-editor .el-input__inner{
 .ggtabinp .el-date-editor .el-input__inner{
 	padding-left: 25px!important;
 	padding-left: 25px!important;
 }
 }
+// .zdy{
+//     .is-scrolling-none{
+//         height: calc(100% - 120px)!important;
+//     }
+// }

+ 4 - 1
src/components/deptTreeOnly.vue

@@ -57,6 +57,7 @@
                 if (v.children && v.children.length > 0 && v.children[v.children.length - 1].type == 1) {
                 if (v.children && v.children.length > 0 && v.children[v.children.length - 1].type == 1) {
                     return
                     return
                 }
                 }
+                console.log(v)
                 this.$http({
                 this.$http({
                     url: "/sysmgr/sysuserinfo/queryList",
                     url: "/sysmgr/sysuserinfo/queryList",
                     method: "post",
                     method: "post",
@@ -86,10 +87,12 @@
                 }
                 }
             },
             },
             handleCheckChange(v){
             handleCheckChange(v){
+                console.log(v)
                 let opt = {
                 let opt = {
                     leaderAuditNo:v.data.loginNoStr,
                     leaderAuditNo:v.data.loginNoStr,
                     leaderAuditName:v.data.label,
                     leaderAuditName:v.data.label,
-                    displayname:v.data.displayname
+                    displayname:v.data.displayname,
+                    groupId:v.data.o
                 }
                 }
                 this.$emit("treeCheck", opt);
                 this.$emit("treeCheck", opt);
                 for (let i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {
                 for (let i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) {

+ 1 - 1
src/components/p-form.vue

@@ -78,7 +78,7 @@
             style="width:100% !important"
             style="width:100% !important"
             v-model="formData[item.value]"
             v-model="formData[item.value]"
             :placeholder="item.placeholder"
             :placeholder="item.placeholder"
-            value-format="yyyy-MM-DD hh:mm:ss"
+            value-format="YYYY-MM-DD"
             type="datetime"
             type="datetime"
           ></el-date-picker>
           ></el-date-picker>
           <el-input
           <el-input

+ 1 - 1
src/components/p-header.vue

@@ -18,7 +18,7 @@
 
 
       <div class="bars-item" @click="handleHelp">
       <div class="bars-item" @click="handleHelp">
         <i class="el-icon-time"></i>
         <i class="el-icon-time"></i>
-        {{ $formatDate(date, "YYYY-MM-DD HH:mm:ss") }}
+        {{ $formatDate(date, "YYYY-MM-DD") }}
       </div>
       </div>
       <div class="bars-item" @click="handleCall">
       <div class="bars-item" @click="handleCall">
         <i class="el-icon-chat-dot-round"></i>
         <i class="el-icon-chat-dot-round"></i>

+ 6 - 0
src/components/search.vue

@@ -16,6 +16,12 @@
 				<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'datetime'"
 				<el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'datetime'"
 					size="medium" type="datetime" :placeholder="item.tit">
 					size="medium" type="datetime" :placeholder="item.tit">
 				</el-date-picker>
 				</el-date-picker>
+                <el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'month'"
+					size="medium" type="month" :placeholder="item.tit">
+				</el-date-picker>
+                <el-date-picker :append-to-body="false" v-model="item.value" v-if="item.type === 'year'"
+					size="medium" type="year" :placeholder="item.tit">
+				</el-date-picker>
 			</div>
 			</div>
 		</div>
 		</div>
 		<el-button class="btn-check" size="medium" type="primary" plain icon="el-icon-search" @click="searchInfo">搜索
 		<el-button class="btn-check" size="medium" type="primary" plain icon="el-icon-search" @click="searchInfo">搜索

+ 39 - 1
src/components/upload.vue

@@ -9,7 +9,7 @@
                 <div class="el-upload__text">点击上传</div>
                 <div class="el-upload__text">点击上传</div>
             </div>
             </div>
             <div v-if="fileInfo.type === 'btn'">
             <div v-if="fileInfo.type === 'btn'">
-                <el-button size="medium" :type="fileInfo.btntype">{{fileInfo.typename}}</el-button>
+                <el-button :size="fileInfo.size?fileInfo.size:'medium'" :type="fileInfo.btntype">{{fileInfo.typename}}</el-button>
             </div>
             </div>
         </el-upload>
         </el-upload>
     </div>
     </div>
@@ -56,6 +56,21 @@
                         return false
                         return false
                     }
                     }
                 }
                 }
+                if(this.fileInfo.typexz == 'ppt'){
+                    const isImg = file.name.split(".")[1] == 'pptx';
+                    console.log(file.name.split(".")[1] == 'pptx')
+                    if (!isImg) {
+                        this.$message.error('请上传ppt格式文件!');
+                        return false
+                    }
+                }
+                if(this.fileInfo.typexz == 'csv'){
+                    const isImg = file.name.split(".")[1] == 'csv';
+                    if (!isImg) {
+                        this.$message.error('请上传csv格式文件!');
+                        return false
+                    }
+                }
                 this.loading = true;
                 this.loading = true;
                 let query = new FormData();
                 let query = new FormData();
                 query.append("file", file);
                 query.append("file", file);
@@ -63,6 +78,29 @@
                     query.append("advType", this.fileInfo.advType);
                     query.append("advType", this.fileInfo.advType);
                     query.append("advTypeName", this.fileInfo.advTypeName);
                     query.append("advTypeName", this.fileInfo.advTypeName);
                 }
                 }
+                if(this.fileInfo.url == '/market/cIllegalCallTask/importTempByProv'||this.fileInfo.url == '/market/cChannelInfo/cIllegalCallTask/importTempByProv'){
+                    query.append("taskId", this.fileInfo.taskId);
+                    query.append("tempId", this.fileInfo.tempId);
+                }
+                //违规外呼
+                if(this.fileInfo.uploadType == 'outCall'){
+                    query.append("uploadType", 'outCall');
+                    query.append("relId", this.fileInfo.relId);
+                }
+                if(this.fileInfo.uploadType == 'train'){
+                    query.append("uploadType", 'train');
+                    query.append("relId", this.fileInfo.relId);
+                }
+                //运营类项目考核及结算
+                if(this.fileInfo.url == '/market/cmkAttachInfo/upload'){
+                    query.append("uploadType", this.fileInfo.uploadType);
+                }
+                if(this.fileInfo.url == '/market/cStoreOutWo/importData'){
+                    query.append("woNo", this.fileInfo.woNo);
+                }
+                if(this.fileInfo.url == '/market/cStoreScheTrainEva/importDataEva'){
+                    query.append("evaId", this.fileInfo.evaId);
+                }
                 this.num++;
                 this.num++;
                 let _this = this;
                 let _this = this;
                 this.$http({
                 this.$http({

+ 0 - 1
src/components/uploadDown.vue

@@ -43,7 +43,6 @@
             },
             },
             uploadsee(v) {
             uploadsee(v) {
                 let url = encodeURIComponent(v.callPath);
                 let url = encodeURIComponent(v.callPath);
-                console.log(v)
                 this.srcsc = 'http://114.215.71.182:8012/onlinePreview?url=' + url;
                 this.srcsc = 'http://114.215.71.182:8012/onlinePreview?url=' + url;
                 this.ifrshow=true;
                 this.ifrshow=true;
                 // window.open('http://114.215.71.182:8012/onlinePreview?url=' + url);
                 // window.open('http://114.215.71.182:8012/onlinePreview?url=' + url);

+ 165 - 0
src/components/uploadKh.vue

@@ -0,0 +1,165 @@
+<template>
+    <el-upload  class="upload-demo"  multiple :limit="fileInfo.limit" ref="upload"
+                action="string" :on-remove="handleRemove" :on-exceed="handleExceed" :file-list="attList"
+                :auto-upload="true" :show-file-list="fileInfo.type !== 'btn'"
+                :before-upload="deforeUp" :http-request="signUpload">
+        <!--            <div v-if="fileInfo.type !== 'btn'">
+                        <i class="el-icon-upload"></i>
+                        <div class="el-upload__text">点击上传</div>
+                    </div>-->
+        <el-button size="small" type="primary">点击上传</el-button>
+    </el-upload>
+</template>
+<script>
+    export default {
+        props: ['fileInfo', 'fileList'],
+        data() {
+            return {
+                fileLists: [],
+                attList: [],
+                loading: false,
+                num: 0,
+                s: false
+            }
+        },
+        methods: {
+            signUpload(){},
+            //删除
+            handleRemove(file) {
+                for (let i = 0; i < this.attList.length; i++) {
+                    if (this.attList[i].fileName === file.name) {
+                        this.attList.splice(i, 1);
+                        this.$emit('uploadBack', this.attList)
+                    }
+                }
+            },
+            //数量限制
+            handleExceed(files, fileList) {
+                this.$message.warning(
+                    `当前限制选择 ${this.fileInfo.limit} 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`
+                );
+            },
+            deforeUp(file) {
+                const isLt2M = file.size / 1024 / 1024 < 100;
+                if (!isLt2M) {
+                    this.$message.error('上传文件大小不能超过 20MB!');
+                    return false
+                }
+                if(this.fileInfo.type == 'img'){
+                    const isImg = file.type.split("/")[0] == 'image';
+                    if (!isImg) {
+                        this.$message.error('请上传图片格式文件!');
+                        return false
+                    }
+                }
+                this.loading = true;
+                let query = new FormData();
+                query.append("file", file);
+                if(this.fileInfo.typename == '新增素材'){
+                    query.append("advType", this.fileInfo.advType);
+                    query.append("advTypeName", this.fileInfo.advTypeName);
+                }
+                this.num++;
+                let _this = this;
+                this.$http({
+                    url: this.fileInfo.url,
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: query,
+                }).then((res) => {
+                    if (this.fileInfo.type === 'btn') {
+                        this.$refs['upload'].clearFiles();
+                        this.$emit('uploadBack',res)
+                        _this.$message({
+                            message: res.data.desc,
+                            type: 'success'
+                        });
+                        this.num--;
+                        if (this.num == 0) {
+                            this.loading = false;
+                        }
+                        return
+                    }
+                    if (this.fileInfo.type === 'voice') {
+                        this.attList = res.data;
+                    } else {
+                        this.attList.push({
+                            id: res.data.body.id,
+                            fileName: res.data.body.fileName,
+                            fileCode: res.data.body.fileCode,
+                            opName: res.data.body.opName,
+                            opNo: res.data.body.opNo,
+                            opTime: res.data.body.opTime,
+                            attchFileId: res.data.body.attchFileId,
+                            type: res.data.body.type,
+                        });
+                    }
+                    this.$emit('uploadBack', this.attList);
+                    this.num--;
+                    if (this.num == 0) {
+                        this.loading = false;
+                    }
+                    return true
+                }).catch((res) => {
+                    this.$message({
+                        message: file.name+'上传失败',
+                        type: 'error'
+                    });
+                    this.num--;
+                    if (this.num == 0) {
+                        this.loading = false;
+                    }
+                    for (let i = 0; i < this.$refs['upload'].uploadFiles.length; i++) {
+                        if(file.name == this.$refs['upload'].uploadFiles[i].name){
+                            this.$refs['upload'].uploadFiles.splice(i,1)
+                        }
+                    }
+                    return false
+                })
+            },
+        },
+        mounted() {
+
+        },
+        created() {
+            this.attList = [];
+            for (let i = 0; i < this.fileList.length; i++) {
+                console.info("--created--"+this.fileList[i]);
+                this.attList.push({
+                    id: this.fileList[i].id,
+                    fileName: this.fileList[i].fileName,
+                    name:this.fileList[i].fileName,
+                    fileCode: this.fileList[i].fileCode,
+                    opName: this.fileList[i].opName,
+                    opNo: this.fileList[i].opNo,
+                    opTime: this.fileList[i].opTime,
+                    attchFileId: this.fileList[i].attchFileId,
+                    type: this.fileList[i].type,
+                })
+            }
+        },
+        watch: {
+            fileList() {
+                console.info('watch.fileList->'+JSON.stringify(this.fileList));
+                this.attList = [];
+                for (let i = 0; i < this.fileList.length; i++) {
+                    this.attList.push({
+                        id: this.fileList[i].id,
+                        fileName: this.fileList[i].fileName,
+                        name:this.fileList[i].fileName,
+                        opName: this.fileList[i].opName,
+                        opNo: this.fileList[i].opNo,
+                        opTime: this.fileList[i].opTime,
+                        attchFileId: this.fileList[i].attchFileId,
+                        type: this.fileList[i].type,
+                    })
+                }
+            }
+        }
+    }
+</script>
+<style scoped lang="scss">
+
+</style>

+ 118 - 0
src/components/uploadMbh.vue

@@ -0,0 +1,118 @@
+<template>
+    <div>
+        <el-upload
+            class="upload-demo"
+            action="string"
+            :on-preview="handlePreview"
+            :on-remove="handleRemove"
+            :before-remove="beforeRemove"
+            :before-upload="beforeUpload"
+            multiple
+            :file-list="fileList"
+            :modal-append-to-body="false"
+            drag
+            ref="n_u_l_c"
+            >
+            <i class="el-icon-upload"></i>
+            <div class="el-upload__text">点击上传</div>
+        </el-upload>
+    </div>
+
+
+</template>
+<script>
+import {strToFileList} from "@/utils/tv.js"
+ export default {
+     props:{
+        fList :{required: false,type: String},
+     },
+    data() {
+      return {
+          fileList:[],
+          params:{}
+      }
+    },
+    methods: {
+      handleRemove(file, fileList) {
+        this.$emit("handleResult",{file, fileList});
+      },
+      handlePreview(file) {
+      },
+      beforeRemove(file, fileList) {
+        return true;//this.$confirm(`确定移除 ${ file.name }?`);
+      },
+      beforeUpload(file){
+        let query = new FormData();
+        query.append("file", file);
+        this.$http({
+            url: "/bpm/api/upload",
+            method: "post",
+            headers: {"Content-Type": "application/json",},
+            data: query,
+        }).then((res) => {
+            if(res.data.result===0){
+              this.handleResult(res.data.body)
+            }else{
+              this.$message({ message: res.data.desc,type: 'error'});
+            }
+        });
+      },
+      handleResult(body){
+        let file = {"name":body.fileName,"url":"/bmp/api/download?id=" + body.attchFileId,"attchFileId":body.attchFileId}
+        this.fileList.push(file)
+        let files = this.fileList
+        this.$emit("handleResult",{file,files});
+      },
+      resetFile(fileList){
+        this.fileList = fileList
+      },
+      getFileList(){
+        return this.fileList
+      },
+      download(v) {
+        let fileData = v;
+        this.$http({
+            url: '/bpm/api/download',
+            method: "post",
+            headers: {
+                "Content-Type": "application/json",
+            },
+            responseType: "blob",
+            data: {"id": fileData.id, "fileName": fileData.fileName},
+        }).then((response) => {
+            if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                let blob = new Blob([response.data], {
+                    type: 'application/vnd.ms-excel'
+                });
+                window.navigator.msSaveOrOpenBlob(blob, fileData.fileName);
+            } else {
+                /* 火狐谷歌的文件下载方式 */
+                var blob = new Blob([response.data])
+                var downloadElement = document.createElement('a')
+                var href = window.URL.createObjectURL(blob);
+                downloadElement.href = href;
+                downloadElement.download = fileData.fileName;
+                document.body.appendChild(downloadElement);
+                downloadElement.click();
+                document.body.removeChild(downloadElement);
+                window.URL.revokeObjectURL(href);
+            }
+        });
+      },
+    },
+    watch:{
+      itemId(){
+        this.fileList = strToFileList(this.fList)
+      },
+      idx(){
+        this.fileList = strToFileList(this.fList)
+      }
+    },
+    created(){
+      this.fileList = strToFileList(this.fList)
+    }
+ }
+</script>
+<style>
+
+</style>

+ 102 - 0
src/components/uploadNew.vue

@@ -0,0 +1,102 @@
+<template>
+  <el-upload
+    class="upload-demo"
+    action="string"
+    :on-preview="handlePreview"
+    :on-remove="handleRemove"
+    :before-remove="beforeRemove"
+    :before-upload="beforeUpload"
+    multiple
+    :file-list="fileList"
+    :modal-append-to-body="false"
+    ref="n_u_l_c"
+    >
+    <template v-if="btn=='btn'">
+      <el-button size="small" type="success">点击上传</el-button>
+    </template>
+    <template v-else>
+      <el-button size="small" type="text">点击上传</el-button>
+    </template>
+  </el-upload>
+</template>
+<script>
+import {strToFileList} from "@/utils/tv.js"
+ export default {
+     props:{
+        itemId:{required: true,type: String},
+        type: {required: true,type: String},
+        idx: {required: false,type: String},
+        btn: {required: false,type: String},
+        fList :{required: false,type: String},
+     },
+    data() {
+      return {
+          fileList:[],
+          params:{}
+      }
+    },
+    methods: {
+      handleRemove(file, fileList) {
+        let type = this.type
+        let k = 1
+        let body = file;
+        let files = fileList
+        this.$emit("handleResult",{k,type,body,files});
+      },
+      handlePreview(file) {
+      },
+      beforeRemove(file, fileList) {
+        return true;//this.$confirm(`确定移除 ${ file.name }?`);
+      },
+      beforeUpload(file){
+        //market/tvImport/upload
+        let query = new FormData();
+        query.append("file", file);
+        query.append("itemId", this.itemId);
+        query.append("idx", this.idx);
+        query.append("type", this.type);
+        this.$http({
+            url: "/market/tvImport/upload",
+            method: "post",
+            headers: {
+                "Content-Type": "application/json",
+            },
+            data: query,
+        }).then((res) => {
+            if(res.data.result===0){
+              this.handleResult(1,this.type,res.data.body)
+            }else{
+              this.$message({ message: res.data.desc,type: 'error'});
+            }
+        });
+      },
+      handleResult(k,type,body){
+        let file = {"name":body.realName,"url":body.path + "/" + body.fileName,"fileId":body.fileId,"itemId":body.itemId,"idx":body.idx}
+        this.fileList.push(file)
+        let files = this.fileList
+        //console.log(this.fileList)
+        this.$emit("handleResult",{k,type,body,files});
+      },
+      resetFile(fileList){
+        this.fileList = fileList
+      },
+      getFileList(){
+        return this.fileList
+      }
+    },
+    watch:{
+      itemId(){
+        this.fileList = strToFileList(this.fList)
+      },
+      idx(){
+        this.fileList = strToFileList(this.fList)
+      }
+    },
+    created(){
+      this.fileList = strToFileList(this.fList)
+    }
+ }
+</script>
+<style>
+
+</style>

+ 61 - 0
src/components/uploadNewDown.vue

@@ -0,0 +1,61 @@
+<template>
+    <div>
+        <div v-for="item in fileList" :key="item.id">
+            <el-button type="text" size="small" @click="uploaddown(item)" >{{item.name}}</el-button>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    props:{
+        files :{required: false,type: String},
+    },
+    data() {
+      return {
+          fileList:[],
+          params:{}
+      }
+    },
+    methods:{
+        uploaddown(v){
+            this.$http({
+                url: '/market/tvImport/download',
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                responseType: "blob",
+                data: {"id": v.fileId, "fileName": v.name},
+            }).then((response) => {
+                if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                    let blob = new Blob([response.data], {
+                        type: 'application/vnd.ms-excel'
+                    });
+                    window.navigator.msSaveOrOpenBlob(blob, v.name);
+                } else {
+                    /* 火狐谷歌的文件下载方式 */
+                    var blob = new Blob([response.data])
+                    var downloadElement = document.createElement('a')
+                    var href = window.URL.createObjectURL(blob);
+                    downloadElement.href = href;
+                    downloadElement.download = v.name;
+                    document.body.appendChild(downloadElement);
+                    downloadElement.click();
+                    document.body.removeChild(downloadElement);
+                    window.URL.revokeObjectURL(href);
+                }
+            });
+        }
+    },
+    created(){
+        if(this.files===""){
+            this.fileList=[];
+        }else{
+            this.fileList = JSON.parse(this.files);
+        }
+    }
+}
+</script>
+<style scoped lang="scss">
+  
+</style>

+ 1 - 1
src/pages/main/achievements/achievementsMuban.vue

@@ -72,7 +72,7 @@
 				</el-form-item>
 				</el-form-item>
 				<el-form-item label="反馈时间" prop="requiredTime">
 				<el-form-item label="反馈时间" prop="requiredTime">
 					<el-date-picker style="width: 100%" v-model="formData.requiredTime" type="datetime"
 					<el-date-picker style="width: 100%" v-model="formData.requiredTime" type="datetime"
-						placeholder="选择反馈时间" value-format="yyyy-MM-dd HH:mm:ss">
+						placeholder="选择反馈时间" value-format="YYYY-MM-DD">
 					</el-date-picker>
 					</el-date-picker>
 				</el-form-item>
 				</el-form-item>
 				<el-form-item label="接收科室" prop="sendNoArr">
 				<el-form-item label="接收科室" prop="sendNoArr">

+ 3 - 3
src/pages/main/advReleaseAppro/advgys.vue

@@ -12,7 +12,7 @@
                     tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
                     tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
                     <el-table-column prop="supplierName" label="供应商">
                     <el-table-column prop="supplierName" label="供应商">
                     </el-table-column>
                     </el-table-column>
-                    <el-table-column prop="supplierCode" label="供应商编码">
+                    <el-table-column prop="supplierCode" label="合同编码">
                     </el-table-column>
                     </el-table-column>
 					<el-table-column prop="contractName" label="合同名称">
 					<el-table-column prop="contractName" label="合同名称">
                     </el-table-column>
                     </el-table-column>
@@ -207,8 +207,8 @@
                     this.dialogStatus = false;
                     this.dialogStatus = false;
                     return
                     return
                 } else {
                 } else {
-                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
-                    this.infolist.endTime = this.$formatDate(this.infolist.endTime, "YYYY-MM-DD HH:mm:ss");
+                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD");
+                    this.infolist.endTime = this.infolist.endTime?this.$formatDate(this.infolist.endTime, "YYYY-MM-DD"):'';
                     if (this.titname === '添加') {
                     if (this.titname === '添加') {
                         this.submitInfo("/market/cAdvPubSupplier/add");
                         this.submitInfo("/market/cAdvPubSupplier/add");
                     } else if (this.titname === '修改') {
                     } else if (this.titname === '修改') {

+ 3 - 3
src/pages/main/advReleaseAppro/advysx.vue

@@ -246,9 +246,9 @@
                     this.dialogStatus = false;
                     this.dialogStatus = false;
                     return
                     return
                 } else {
                 } else {
-                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
-                    this.infolist.startTime = this.$formatDate(this.infolist.startTime, "YYYY-MM-DD HH:mm:ss");
-                    this.infolist.endTime = this.$formatDate(this.infolist.endTime, "YYYY-MM-DD HH:mm:ss");
+                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD");
+                    this.infolist.startTime = this.infolist.startTime?this.$formatDate(this.infolist.startTime, "YYYY-MM-DD"):'';
+                    this.infolist.endTime = this.infolist.endTime?this.$formatDate(this.infolist.endTime, "YYYY-MM-DD"):'';
 					this.infolist.areaCode = this.areaCode;
 					this.infolist.areaCode = this.areaCode;
 					this.infolist.areaName = this.areaName;
 					this.infolist.areaName = this.areaName;
                     if (this.titname === '添加') {
                     if (this.titname === '添加') {

ファイルの差分が大きいため隠しています
+ 1136 - 991
src/pages/main/advReleaseAppro/index.vue


+ 5 - 4
src/pages/main/advReleaseAppro/internet.vue

@@ -40,7 +40,7 @@
 					<el-input v-model="scope.row.putForm" :disabled="titname != '添加'&&vision != '流程发起'"></el-input>
 					<el-input v-model="scope.row.putForm" :disabled="titname != '添加'&&vision != '流程发起'"></el-input>
 				</template>
 				</template>
 			</el-table-column>
 			</el-table-column>
-			
+
 			<el-table-column prop="material_req" label="物料要求" width="200">
 			<el-table-column prop="material_req" label="物料要求" width="200">
 				<template slot-scope="scope">
 				<template slot-scope="scope">
 					<el-input v-model="scope.row.materialReq" :disabled="titname != '添加'&&vision != '流程发起'"></el-input>
 					<el-input v-model="scope.row.materialReq" :disabled="titname != '添加'&&vision != '流程发起'"></el-input>
@@ -368,14 +368,15 @@
 				}
 				}
 			},
 			},
 			sumprice(v){
 			sumprice(v){
+                v.row.discountRate=v.row.discountRate.replace(/[^\d.]/g,'');
 				let info = this.infodata[v.$index];
 				let info = this.infodata[v.$index];
-				
+
 				this.infodata[v.$index].discountPrice = info.unitPrice*info.discountRate/100;
 				this.infodata[v.$index].discountPrice = info.unitPrice*info.discountRate/100;
 				this.infodata[v.$index].discountPrice = Math.floor(this.infodata[v.$index].discountPrice * 100) / 100;
 				this.infodata[v.$index].discountPrice = Math.floor(this.infodata[v.$index].discountPrice * 100) / 100;
-				
+
 				this.infodata[v.$index].buyPrice = info.discountPrice*info.exposureSum;
 				this.infodata[v.$index].buyPrice = info.discountPrice*info.exposureSum;
 				this.infodata[v.$index].buyPrice = Math.floor(this.infodata[v.$index].buyPrice * 100) / 100;
 				this.infodata[v.$index].buyPrice = Math.floor(this.infodata[v.$index].buyPrice * 100) / 100;
-				
+
 				this.allSum = 0;
 				this.allSum = 0;
 				for (let i = 0; i < this.infodata.length; i++) {
 				for (let i = 0; i < this.infodata.length; i++) {
 					this.allSum += this.infodata[i].buyPrice;
 					this.allSum += this.infodata[i].buyPrice;

+ 2 - 1
src/pages/main/advReleaseAppro/outdoors.vue

@@ -76,7 +76,7 @@
 						@change="sumzkj(scope)" type="number"></el-input>
 						@change="sumzkj(scope)" type="number"></el-input>
 				</template>
 				</template>
 			</el-table-column>
 			</el-table-column>
-			<el-table-column prop="discount_rate" label="优惠折扣" width="200">
+			<el-table-column prop="discount_rate" label="优惠折扣(%)" width="200">
 				<template slot-scope="scope">
 				<template slot-scope="scope">
 					<el-input v-model="scope.row.discountRate" :disabled="titname != '添加'&&vision != '流程发起'"
 					<el-input v-model="scope.row.discountRate" :disabled="titname != '添加'&&vision != '流程发起'"
 						@change="sumzkj(scope)" type="number"></el-input>
 						@change="sumzkj(scope)" type="number"></el-input>
@@ -134,6 +134,7 @@
 				this.sumadd();
 				this.sumadd();
 			},
 			},
 			sumzkj(v) {
 			sumzkj(v) {
+                v.row.discountRate=v.row.discountRate.replace(/[^\d.]/g,'');
 				let info = this.infodata[v.$index];
 				let info = this.infodata[v.$index];
 				this.infodata[v.$index].discountPrice = info.pubPrice * info.discountRate / 100;
 				this.infodata[v.$index].discountPrice = info.pubPrice * info.discountRate / 100;
 				this.infodata[v.$index].discountPrice = Math.floor(this.infodata[v.$index].discountPrice * 100) / 100;
 				this.infodata[v.$index].discountPrice = Math.floor(this.infodata[v.$index].discountPrice * 100) / 100;

+ 1 - 1
src/pages/main/advertising/businessHall.vue

@@ -459,7 +459,7 @@
 					this.dialogStatus = false;
 					this.dialogStatus = false;
 					return
 					return
 				} else {
 				} else {
-					this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+					this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD");
 					if (this.titname === '添加') {
 					if (this.titname === '添加') {
 						this.submitInfo("/market/cadvBusiMetirial/add");
 						this.submitInfo("/market/cadvBusiMetirial/add");
 					} else if (this.titname === '修改') {
 					} else if (this.titname === '修改') {

+ 1 - 1
src/pages/main/advertising/contractCap.vue

@@ -270,7 +270,7 @@
                     this.dialogStatus = false;
                     this.dialogStatus = false;
                     return
                     return
                 } else {
                 } else {
-                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD");
 					this.infolist.areaCode = this.areaCode;
 					this.infolist.areaCode = this.areaCode;
 					this.infolist.areaName = this.areaName;
 					this.infolist.areaName = this.areaName;
                     if (this.titname === '添加') {
                     if (this.titname === '添加') {

+ 18 - 1
src/pages/main/advertising/materialApplication.vue

@@ -231,6 +231,23 @@
 				});
 				});
 				this.setabList('物料宣传申请','/materialApplicationadd');
 				this.setabList('物料宣传申请','/materialApplicationadd');
 			},
 			},
+            setabList(n, p) {
+            	let params = {
+            		children: "",
+            		name: n,
+            		rountPath: p,
+            		target: "_self",
+            	};
+            	for (let i = 0; i < this.$store.state.tabList.length; i++) {
+            		if (this.$store.state.tabList[i].name === params.name) {
+            			this.$store.state.tabList[i] = params;
+            		}
+            	}
+            	let set = new Set([...this.$store.state.tabList, params]);
+            	set.add(params);
+            	this.$store.commit("setDefaultActive", params.rountPath);
+            	this.$store.commit("setTabList", Array.from(set));
+            },
             closedia() {
             closedia() {
                 this.infolist = {};
                 this.infolist = {};
                 this.dialogStatus = false;
                 this.dialogStatus = false;
@@ -300,7 +317,7 @@
                     this.dialogStatus = false;
                     this.dialogStatus = false;
                     return
                     return
                 } else {
                 } else {
-                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD");
                     if (this.titname === '添加') {
                     if (this.titname === '添加') {
                         this.submitInfo("/bpm/api/addBpmPrePlugin");
                         this.submitInfo("/bpm/api/addBpmPrePlugin");
                     } else if (this.titname === '修改') {
                     } else if (this.titname === '修改') {

+ 1 - 1
src/pages/main/advertising/materialApplicationExa.vue

@@ -292,7 +292,7 @@
                     return
                     return
                 }
                 }
                 let _this = this;
                 let _this = this;
-                this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss")
+                this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD")
 				this.infolist.opNo = this.userInfo.loginNo;
 				this.infolist.opNo = this.userInfo.loginNo;
 				this.infolist.opName = this.userInfo.loginName;
 				this.infolist.opName = this.userInfo.loginName;
 				console.log(this.infolist)
 				console.log(this.infolist)

+ 1 - 1
src/pages/main/advertising/materialApplicationExac.vue

@@ -265,7 +265,7 @@
                     return
                     return
                 }
                 }
                 let _this = this;
                 let _this = this;
-                this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss")
+                this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD")
 				this.infolist.opNo = this.userInfo.loginNo;
 				this.infolist.opNo = this.userInfo.loginNo;
 				this.infolist.opName = this.userInfo.loginName;
 				this.infolist.opName = this.userInfo.loginName;
 				console.log(this.infolist)
 				console.log(this.infolist)

+ 141 - 151
src/pages/main/advertising/materialApplicationadd.vue

@@ -10,112 +10,56 @@
 							<el-input v-model="infolist.tit" placeholder="业务名称" :disabled="disableStatus"></el-input>
 							<el-input v-model="infolist.tit" placeholder="业务名称" :disabled="disableStatus"></el-input>
 						</el-form-item>
 						</el-form-item>
 						<el-form-item>
 						<el-form-item>
-							<span>申请流程</span>
-							<el-select clearable v-model="terminal" placeholder="申请流程" @change="terminalChange">
-								<el-option v-for="items in options" :key="items.procId" :label="items.procName"
-									:value="items.procId">
-								</el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item prop="regionCode">
-							<span>地市名称</span>
-							<el-select :popper-append-to-body="false" v-model="infolist.regionCode" placeholder="地市名称"
-								@change="verifcheck" :disabled="!regionsts">
-								<el-option v-for="item in regionOpt" :key="item.compId" :label="item.compName"
-									:value="item.compId">
-								</el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item>
-							<span>使用场景</span>
-							<el-select :popper-append-to-body="false" clearable v-model="infolist.scene"
-								placeholder="使用场景">
-								<el-option v-for="items in sceneopt" :key="items.dataCode" :label="items.dataName"
-									:value="items.dataCode">
-								</el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item>
 							<span>下单周期</span>
 							<span>下单周期</span>
 							<el-date-picker v-model="infolist.overtime" type="date" placeholder="下单周期">
 							<el-date-picker v-model="infolist.overtime" type="date" placeholder="下单周期">
 							</el-date-picker>
 							</el-date-picker>
 						</el-form-item>
 						</el-form-item>
-						<el-form-item>
-							<span>预估预算</span>
-							<el-input v-model="infolist.budget" :placeholder="'当前剩余预算:'+preAccount"
-								:disabled="disableStatus"></el-input>
-						</el-form-item>
 					</div>
 					</div>
 					<el-form-item class="info-line online">
 					<el-form-item class="info-line online">
 						<span>物料类型</span>
 						<span>物料类型</span>
 						<el-button type="primary" @click="gettypests"
 						<el-button type="primary" @click="gettypests"
 							style="width: 80px;margin-right: 20px;margin-bottom: 20px;">选择</el-button>
 							style="width: 80px;margin-right: 20px;margin-bottom: 20px;">选择</el-button>
-						<el-table v-if="!regionsts" :data="infomaterType" style="width: calc(100% - 100px);margin-left: 80px;" border
+						<el-table :data="infomaterType" style="width: calc(100% - 100px);margin-left: 80px;" border
 							size="mini">
 							size="mini">
-							<el-table-column prop="type" label="类型">
-							</el-table-column>
-							<el-table-column prop="allProv" label="全省">
-							</el-table-column>
-							<el-table-column prop="hrb" label="哈尔滨">
+							<el-table-column prop="type" label="物料ID">
 							</el-table-column>
 							</el-table-column>
-							<el-table-column prop="qqhr" label="齐齐哈尔">
+                            <el-table-column prop="type" label="物料类型">
 							</el-table-column>
 							</el-table-column>
-							<el-table-column prop="mdj" label="牡丹江">
+							<el-table-column prop="allProv" label="地市公司">
 							</el-table-column>
 							</el-table-column>
-							<el-table-column prop="jms" label="佳木斯">
+							<el-table-column prop="hrb" label="区县名称">
 							</el-table-column>
 							</el-table-column>
-							<el-table-column prop="dq" label="大庆">
+							<el-table-column prop="qqhr" label="渠道名称">
 							</el-table-column>
 							</el-table-column>
-							<el-table-column prop="hg" label="鹤岗">
+							<el-table-column prop="mdj" label="使用场景">
 							</el-table-column>
 							</el-table-column>
-							<el-table-column prop="yc" label="伊春">
+							<el-table-column prop="jms" label="物料类别">
 							</el-table-column>
 							</el-table-column>
-							<el-table-column prop="hh" label="黑河">
+							<el-table-column prop="dq" label="物料名称">
 							</el-table-column>
 							</el-table-column>
-							<el-table-column prop="jx" label="鸡西">
+							<el-table-column prop="hg" label="物料单位">
 							</el-table-column>
 							</el-table-column>
-							<el-table-column prop="sh" label="绥化">
+							<el-table-column prop="yc" label="规格尺寸">
 							</el-table-column>
 							</el-table-column>
-							<el-table-column prop="sys" label="双鸭山">
+							<el-table-column prop="hh" label="长">
 							</el-table-column>
 							</el-table-column>
-							<el-table-column prop="qth" label="七台河">
+							<el-table-column prop="jx" label="宽">
 							</el-table-column>
 							</el-table-column>
-							<el-table-column prop="dxal" label="大兴安岭">
+							<el-table-column prop="sh" label="横竖">
 							</el-table-column>
 							</el-table-column>
-						</el-table>
-						<div v-if="regionsts" style="border: 1px solid #ddd;width: auto;padding:0 20px;">
-							<span style="width: auto;margin-right: 20px;">预估预算:{{infomaterType.ys}}</span>
-							<span style="width: auto;">剩余成本:{{infomaterType.sy}}</span>
-						</div>
-					</el-form-item>
-					<el-form-item class="info-line online">
-						<span>供应商</span>
-						<el-button type="primary" @click="getsuppliersts"
-							style="width: 80px;margin-right: 20px;margin-bottom: 20px;">选择</el-button>
-						<el-table :data="infolist.supplier" style="width: calc(100% - 100px);margin-left: 80px;" border
-							size="mini">
-							<el-table-column prop="name" label="供应商">
+							<el-table-column prop="sys" label="系数">
 							</el-table-column>
 							</el-table-column>
-							<el-table-column prop="user" label="预算">
+							<el-table-column prop="qth" label="数量" width="100">
+                                <template slot-scope="scope">
+                                    <el-input v-model="scope.row.qth" :disabled="disableStatus" style="width: 100%!important;">
+                                    </el-input>
+                                </template>
 							</el-table-column>
 							</el-table-column>
-							<el-table-column prop="cost" label="剩余">
+                            <el-table-column prop="dxal" label="优先级">
 							</el-table-column>
 							</el-table-column>
 						</el-table>
 						</el-table>
 					</el-form-item>
 					</el-form-item>
-					<el-form-item class="info-line online">
-						<span>广告素材</span>
-						<el-button type="primary" @click="getmater('01')"
-							style="width: 80px;margin-right: 20px;margin-bottom: 20px;">选择</el-button>
-						<div class="boximgc">
-							<div v-for="(item,index) in checkList" :key="item.id">
-								<img :src="item.fileBase64">
-							</div>
-						</div>
-					</el-form-item>
-					<el-form-item class="info-line online">
-						<span>补充说明</span>
-						<el-input v-model="infolist.explain" placeholder="补充说明" type="textarea" :rows="3"></el-input>
-					</el-form-item>
+
 				</div>
 				</div>
 				<div class="t-footer">
 				<div class="t-footer">
 					<el-button type="primary" @click="dialogCli(2)">确 定</el-button>
 					<el-button type="primary" @click="dialogCli(2)">确 定</el-button>
@@ -124,70 +68,82 @@
 			</el-form>
 			</el-form>
 		</div>
 		</div>
 
 
+
+
+
 		<el-dialog title="物料类型" :visible.sync="typests" width="50%" :destroy-on-close="true"
 		<el-dialog title="物料类型" :visible.sync="typests" width="50%" :destroy-on-close="true"
-			:modal-append-to-body="false" :close-on-click-modal="false" :fullscreen="true">
-			<el-table ref="multipleTable" :data="typelist" tooltip-effect="dark" style="width: 100%"
-				highlight-current-row @current-change="handleSelectionChange" border height="calc(100vh - 180px)">
-				<el-table-column prop="metirialCode" label="物料代码" width="240">
-				</el-table-column>
-				<el-table-column prop="metirialName" label="物料名称" width="240">
-				</el-table-column>
-				<el-table-column prop="quality" label="物料材质">
-				</el-table-column>
-				<el-table-column prop="size" label="规格尺寸" width="240">
-				</el-table-column>
-			</el-table>
+			:modal-append-to-body="false" :close-on-click-modal="false">
+
+            <el-form :model="infolist" ref="infolist" :rules="rules"
+            	style="height: 50vh;overflow-y: scroll;">
+            	<div class="info-line">
+                    <el-form-item>
+                    	<span>使用场景</span>
+                    	<el-select @change="changeSearch(1)" clearable v-model="infolist.sycj" placeholder="使用场景" :disabled="disableStatus">
+                    		<el-option v-for="items in useOpt" :key="items.name" :label="items.name"
+                    			:value="items.name">
+                    		</el-option>
+                    	</el-select>
+                    </el-form-item>
+                    <el-form-item>
+                    	<span>物料类别</span>
+                    	<el-select @change="changeSearch(2)" clearable v-model="infolist.wllb" placeholder="物料类别" :disabled="disableStatus">
+                    		<el-option v-for="items in useOpt" :key="items.name" :label="items.name"
+                    			:value="items.name">
+                    		</el-option>
+                    	</el-select>
+                    </el-form-item>
+                    <el-form-item>
+                    	<span>物料名称</span>
+                    	<el-select clearable v-model="infolist.wlmc" placeholder="物料名称" :disabled="disableStatus">
+                    		<el-option v-for="items in useOpt" :key="items.name" :label="items.name"
+                    			:value="items.name">
+                    		</el-option>
+                    	</el-select>
+                    </el-form-item>
+                    <el-form-item>
+                    	<span>供应商</span>
+                    	<el-select clearable v-model="infolist.gys" placeholder="供应商" :disabled="disableStatus">
+                    		<el-option v-for="items in useOpt" :key="items.name" :label="items.name"
+                    			:value="items.name">
+                    		</el-option>
+                    	</el-select>
+                    </el-form-item>
+            	</div>
+                <el-form-item class="info-line online">
+                	<span>地市名称</span>
+                	<el-select @change="changeRegion(1)" clearable multiple v-model="infolist.dsmc" placeholder="地市名称" :disabled="disableStatus">
+                		<el-option v-for="items in useOpt" :key="items.name" :label="items.name"
+                			:value="items.name">
+                		</el-option>
+                	</el-select>
+                </el-form-item>
+                <el-form-item class="info-line online">
+                	<span>区县名称</span>
+                	<el-select @change="changeRegion(2)" clearable multiple v-model="infolist.qxmc" placeholder="区县名称" :disabled="disableStatus">
+                		<el-option v-for="items in useOpt" :key="items.name" :label="items.name"
+                			:value="items.name">
+                		</el-option>
+                	</el-select>
+                </el-form-item>
+                <el-form-item class="info-line online">
+                	<span>渠道名称</span>
+                	<el-select clearable multiple v-model="infolist.qdmc" placeholder="渠道名称" :disabled="disableStatus">
+                		<el-option v-for="items in useOpt" :key="items.name" :label="items.name"
+                			:value="items.name">
+                		</el-option>
+                	</el-select>
+                </el-form-item>
+            </el-form>
+
 			<div class="t-footer">
 			<div class="t-footer">
 				<el-button type="primary" @click="typestscheck">确 定</el-button>
 				<el-button type="primary" @click="typestscheck">确 定</el-button>
 				<el-button @click="typests = false">取 消</el-button>
 				<el-button @click="typests = false">取 消</el-button>
 			</div>
 			</div>
 		</el-dialog>
 		</el-dialog>
-		<el-dialog title="供应商" :visible.sync="suppliersts" width="50%" :destroy-on-close="true"
-			:modal-append-to-body="false" :close-on-click-modal="false" :fullscreen="true">
-			<el-table ref="multipleTablet" :data="suppList" tooltip-effect="dark" style="width: 100%"
-				@selection-change="handleSelectionChange" border height="calc(100vh - 180px)">
-				<el-table-column type="selection" width="55" align="center">
-				</el-table-column>
-				<el-table-column prop="name" label="供应商" width="120">
-				</el-table-column>
-				<el-table-column prop="cost" label="剩余预算" show-overflow-tooltip>
-				</el-table-column>
-				<el-table-column prop="user" label="预计使用">
-					<template slot-scope="scope">
-						<el-input v-model="scope.row.user"></el-input>
-					</template>
-				</el-table-column>
-			</el-table>
-			<div class="t-footer">
-				<el-button type="primary" @click="suppliercheck">确 定</el-button>
-				<el-button @click="suppliersts = false">取 消</el-button>
-			</div>
-		</el-dialog>
-		<el-dialog title="素材库" :visible.sync="matersts" width="50%" :destroy-on-close="true"
-			:modal-append-to-body="false" :close-on-click-modal="false" :fullscreen="true">
-			<el-select v-model="infotype" @change="getmater">
-				<el-option v-for="items in stypeList" :key="items.dataCode" :label="items.dataName"
-					:value="items.dataCode">
-				</el-option>
-			</el-select>
-			<div class="img-box">
-				<div class="boximg">
-					<div v-for="(item,index) in materList" :key="item.id">
-						<img :src="item.fileBase64" alt="" @click="checkimg(item,index)">
-					</div>
-				</div>
-				<h2>已选素材</h2>
-				<div class="boximg">
-					<div v-for="(item,index) in checkList" :key="item.id">
-						<img :src="item.fileBase64">
-					</div>
-				</div>
-			</div>
-			<div class="t-footer">
-				<el-button type="primary" @click="matersts = false">确 定</el-button>
-				<el-button @click="matersts = false">取 消</el-button>
-			</div>
-		</el-dialog>
+
+
+
 
 
 	</div>
 	</div>
 </template>
 </template>
@@ -220,9 +176,12 @@
 				tableData: [{}],
 				tableData: [{}],
 				disableStatus: false,
 				disableStatus: false,
 				infolist: {
 				infolist: {
-
+                    wllb:'',
+                    wlmc:'',
+                    qxmc:'',
+                    qdmc:'',
 				},
 				},
-				terminal: '',
+				terminal: '705230214235115520',
 				userInfo: {},
 				userInfo: {},
 				params: {},
 				params: {},
 				attList: [],
 				attList: [],
@@ -276,12 +235,47 @@
 				},
 				},
 				infotype: '01',
 				infotype: '01',
 				checkList: [],
 				checkList: [],
-				infomaterType: [],
+				infomaterType: [{}],
 				metirialName: '',
 				metirialName: '',
-				regionsts: false
+				regionsts: false,
+                useOpt:[
+                    {name:'营业厅-常规物料'},
+                    {name:'营业厅-VI改造'},
+                    {name:'小区'},
+                    {name:'校园'},
+                ]
 			}
 			}
 		},
 		},
 		methods: {
 		methods: {
+            //物料筛选条件
+            changeSearch(v){
+                if(v == 1){
+                    //获取物料类别
+                    // this.infolist.sycj
+                    this.infolist.wllb = '';
+                    this.infolist.wlmc = '';
+                }else if(v == 2){
+                    //获取物料名称
+                    // this.infolist.sycj
+                    // this.infolist.wllb
+                    this.infolist.wlmc = '';
+                }
+            },
+            //物料筛选条件-地市
+            changeRegion(v){
+                if(v == 1){
+                    //获取区县
+                    // this.infolist.dsmc
+                    this.infolist.qxmc = '';
+                    this.infolist.qdmc = '';
+                }else if(v == 2){
+                    //获取渠道
+                    // this.infolist.dsmc
+                    // this.infolist.qxmc
+                    this.infolist.qdmc = '';
+                }
+            },
+
 			terminalChange(v) {
 			terminalChange(v) {
 				if (v == '722389970331279360') {
 				if (v == '722389970331279360') {
 					this.regionsts = true;
 					this.regionsts = true;
@@ -310,15 +304,6 @@
 			},
 			},
 			//获取物料类型
 			//获取物料类型
 			gettypests() {
 			gettypests() {
-				if (this.regionsts) {
-					if (!this.infolist.regionCode) {
-						this.$message({
-							message: '请先选择地市!',
-							type: 'error'
-						});
-						return
-					}
-				}
 				this.typests = true;
 				this.typests = true;
 				this.$http({
 				this.$http({
 					url: "/market/cadvMetirial/queryPage",
 					url: "/market/cadvMetirial/queryPage",
@@ -423,12 +408,17 @@
 			dialogCli(v) {
 			dialogCli(v) {
 				if (v === 1) {
 				if (v === 1) {
 					this.fileInfo.fileList = [];
 					this.fileInfo.fileList = [];
-					this.infolist = {};
+					this.infolist = {
+                        wllb:'',
+                        wlmc:'',
+                        qxmc:'',
+                        qdmc:'',
+                    };
 					return
 					return
 				}
 				}
 				let _this = this;
 				let _this = this;
 				let info = {};
 				let info = {};
-				info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+				info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD");
 				info.opNo = this.userInfo.loginNo;
 				info.opNo = this.userInfo.loginNo;
 				info.opName = this.userInfo.loginName;
 				info.opName = this.userInfo.loginName;
 				info.woTitle = this.infolist.tit;
 				info.woTitle = this.infolist.tit;

+ 1 - 1
src/pages/main/advertising/materialApplicationc.vue

@@ -268,7 +268,7 @@
                     this.dialogStatus = false;
                     this.dialogStatus = false;
                     return
                     return
                 } else {
                 } else {
-                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD");
                     if (this.titname === '添加') {
                     if (this.titname === '添加') {
                         this.submitInfo("/bpm/api/addBpmPrePlugin");
                         this.submitInfo("/bpm/api/addBpmPrePlugin");
                     } else if (this.titname === '修改') {
                     } else if (this.titname === '修改') {

+ 1 - 1
src/pages/main/advertising/materiel.vue

@@ -423,7 +423,7 @@
 					this.dialogStatus = false;
 					this.dialogStatus = false;
 					return
 					return
 				} else {
 				} else {
-					this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+					this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD");
 					this.infolist.sts = "0";
 					this.infolist.sts = "0";
 					this.infolist.stsDesc = "在用";
 					this.infolist.stsDesc = "在用";
 					this.infolist.proviceFlagName = this.infolist.proviceFlag == "0"?'省公司':'地市公司';
 					this.infolist.proviceFlagName = this.infolist.proviceFlag == "0"?'省公司':'地市公司';

+ 1 - 1
src/pages/main/advertising/materielPick.vue

@@ -428,7 +428,7 @@
 					this.dialogStatus = false;
 					this.dialogStatus = false;
 					return
 					return
 				} else {
 				} else {
-					this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+					this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD");
 					this.infolist.sts = "0";
 					this.infolist.sts = "0";
 					this.infolist.stsDesc = "在用";
 					this.infolist.stsDesc = "在用";
 					this.infolist.proviceFlagName = this.infolist.proviceFlag == "0"?'省公司':'地市公司';
 					this.infolist.proviceFlagName = this.infolist.proviceFlag == "0"?'省公司':'地市公司';

+ 3 - 3
src/pages/main/advertising/supplier.vue

@@ -323,9 +323,9 @@
                     return
                     return
                 } else {
                 } else {
 					this.infolist.buyTypeCode = this.infolist.buyTypeName == '一采'?'1':'2';
 					this.infolist.buyTypeCode = this.infolist.buyTypeName == '一采'?'1':'2';
-                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
-                    this.infolist.contractSignTime = this.$formatDate(this.infolist.contractSignTime, "YYYY-MM-DD HH:mm:ss");
-                    this.infolist.contractEndTime = this.$formatDate(this.infolist.contractEndTime, "YYYY-MM-DD HH:mm:ss");
+                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD");
+                    this.infolist.contractSignTime = this.infolist.contractSignTime?this.$formatDate(this.infolist.contractSignTime, "YYYY-MM-DD"):'';
+                    this.infolist.contractEndTime = this.infolist.contractEndTime?this.$formatDate(this.infolist.contractEndTime, "YYYY-MM-DD"):'';
                     if (this.titname === '添加') {
                     if (this.titname === '添加') {
                         this.submitInfo("/market/cadvSupplier/add");
                         this.submitInfo("/market/cadvSupplier/add");
                     } else if (this.titname === '修改') {
                     } else if (this.titname === '修改') {

+ 800 - 0
src/pages/main/badInfoGovern/index.vue

@@ -0,0 +1,800 @@
+<template>
+	<fullscreen :fullscreen.sync="fullscreen" class="container">
+		<div class="container-box">
+			<toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <div class="search">
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <el-button size="medium" type="primary" @click="dialogCheck(3)">添加</el-button>
+            </div>
+			<div class="tabbox">
+				<el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+					tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+					<el-table-column prop="woTitle" label="标题">
+					</el-table-column>
+                    <el-table-column prop="opName" label="申请人">
+					</el-table-column>
+					<el-table-column prop="createTime" label="申请时间">
+					</el-table-column>
+                    <el-table-column prop="extField4" label="申请地市">
+					</el-table-column>
+                    <el-table-column prop="extField5" label="申请内容">
+					</el-table-column>
+					<el-table-column label="操作" width="120px" align="center">
+						<template slot-scope="scope">
+							<el-button size="mini" type="primary" @click="dialogCheck(1,scope.row)">查看</el-button>
+							<el-button size="mini" type="danger" v-if="scope.row.sts != 1"
+								@click="dialogCheck(2,scope.row)">处理</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
+				<el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+					:total="total">
+				</el-pagination>
+			</div>
+		</div>
+
+		<el-dialog :title="titname" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
+			:modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia" :fullscreen="true">
+			<div v-loading="loadinged">
+				<el-form :model="infolist" ref="infolist" :rules="rules"
+					style="height: calc(100vh - 180px);overflow-y: scroll;">
+					<div class="info-line">
+						<el-form-item prop="woName">
+							<span>标题</span>
+							<el-input v-model="infolist.woName" placeholder="标题" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+                        <el-form-item>
+                        	<span>申请地市</span>
+                            <el-select :popper-append-to-body="false" v-model="infolist.region" placeholder="申请地市" :disabled="disableStatus">
+                                <el-option v-for="item in deptList" :key="item.ou" :label="item.ou"
+                                    :value="item.ou">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+					</div>
+					<el-form-item class="info-line online">
+						<span>申请内容</span>
+						<el-input v-model="infolist.textContent" placeholder="申请内容" type="textarea" :autosize="{ minRows: 4, maxRows: 10}"
+							:disabled="disableStatus">
+						</el-input>
+					</el-form-item>
+
+					<div style="padding:0 20px 0 120px;margin-bottom: 20px;" v-if="disableStatus">
+						<uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
+					</div>
+					<div style="padding-left: 100px" v-if="!disableStatus">
+						<myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList">
+						</myUpload>
+					</div>
+
+					<el-form-item class="info-line online" v-if="vision == '审批'">
+						<span>审批说明</span>
+						<el-input v-model="remark" placeholder="审批说明" type="textarea" :autosize="{ minRows: 4, maxRows: 10}"
+							:disabled="titname == '查看'">
+						</el-input>
+					</el-form-item>
+
+					<div style="margin-bottom: 20px;padding: 0 20px;" v-if="titname != '添加'">
+						<el-table class="com-table" ref="multipleTable" :data="rovaList" tooltip-effect="dark"
+							size="small" border style="width: 100%">
+							<el-table-column prop="taskId" label="编号">
+							</el-table-column>
+							<el-table-column prop="taskName" label="环节">
+							</el-table-column>
+							<el-table-column prop="assigneeName" label="处理人">
+							</el-table-column>
+							<el-table-column prop="assigneeNo" label="处理人工号">
+							</el-table-column>
+							<el-table-column prop="opTime" label="处理时间">
+							</el-table-column>
+							<el-table-column prop="remark" label="备注">
+							</el-table-column>
+						</el-table>
+					</div>
+				</el-form>
+
+				<div slot="footer" class="dialog-footer myfooter">
+					<el-button v-if="titname != '查看' && vision == '流程发起'" type="primary" @click="checkexa = true">确 定
+					</el-button>
+                    <el-button v-if="titname != '查看' && vision == '省在线公司确认'" type="primary" @click="dialogCli(2)">确 定
+					</el-button>
+					<el-button v-if="titname != '查看' && vision == '审批'" type="primary" @click="checkexa = true">通 过
+					</el-button>
+					<el-button v-if="titname != '查看' && vision == '审批'" type="primary" @click="dialogCli(1)">打 回
+					</el-button>
+					<el-button v-if="titname == '添加'" type="primary" @click="checkexa = true">确 定</el-button>
+					<el-button v-if="titname == '查看'" @click="dialogCli(3)">确 定</el-button>
+					<el-button @click="dialogCli(3)">取 消</el-button>
+				</div>
+			</div>
+		</el-dialog>
+
+        <el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
+        	:modal-append-to-body="false" :close-on-click-modal="false">
+        	<div>
+
+        		<el-form :model="infolist" ref="infolist" :rules="rules">
+        			<el-form-item prop="visiblec" class="info-line online">
+        				<span>审批人员</span>
+        				<deptTreeOnly class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
+        					:type="depttype" :closeList="closeList"></deptTreeOnly>
+        				<div class="tree treeUser">
+        					<p>{{treeListonly.leaderAuditName}}
+        						<i v-if="treeListonly.leaderAuditName" @click="deletes()"
+        							class="el-icon-error"></i>
+        					</p>
+        				</div>
+        			</el-form-item>
+        		</el-form>
+
+        		<div slot="footer" style="text-align: right;padding-bottom: 20px;">
+        			<el-button type="primary" @click="dialogCliadd" v-if="!visionchonly">确 定</el-button>
+        			<el-button type="primary" @click="dialogCli(2)" v-if="visionchonly">确 定</el-button>
+        			<el-button @click="checkexa = false">取 消</el-button>
+        		</div>
+        	</div>
+        </el-dialog>
+
+
+		<myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
+			v-if="centerDialogVisible"></myMessage>
+	</fullscreen>
+
+</template>
+<script>
+	import mySearch from "../../../components/search.vue";
+	import myMessage from "../../../components/myMessage.vue"
+	import toolList from '../../../components/toolList'
+	import myUpload from '../../../components/upload'
+	import uploadDown from '../../../components/uploadDown.vue'
+    import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+
+	export default {
+		components: {
+			mySearch,
+			myMessage,
+			toolList,
+			myUpload,
+			uploadDown,
+            deptTreeOnly
+		},
+		data() {
+			const woName = (rule, value, callback) => {
+				if (!this.infolist.woName) {
+					callback(new Error('不能为空'))
+				} else {
+					callback()
+				}
+			}
+			const terminal = (rule, value, callback) => {
+				if (!this.terminal) {
+					callback(new Error('不能为空'))
+				} else {
+					callback()
+				}
+			}
+			return {
+				rules: {
+					woName: [{
+						required: true,
+						trigger: 'blur',
+						validator: woName
+					}],
+					terminal: [{
+						required: true,
+						trigger: 'change',
+						validator: terminal
+					}],
+				},
+                searchList: [
+                    {
+                        type: 'input',
+                        tit: '标题',
+                        value: '',
+                        width: '32%',
+                    },{
+                        type: 'sel',
+                        tit: '申请地市',
+                        value: '',
+                        width: '32%',
+                        options:[]
+                    },{
+                        type: 'input',
+                        tit: '申请内容',
+                        value: '',
+                        width: '32%',
+                    }
+                ],
+				tooltit: '不良信息治理白名单',
+				fullscreen: false,
+				total: 0,
+				pageSize: 1,
+				tableData: [{}],
+				dialogStatus: false,
+				disableStatus: false,
+				titname: '',
+				infolist: {
+
+				},
+				userInfo: {},
+				params: {},
+				centerDialogVisible: false,
+				messTit: '',
+				delid: '',
+				loading: false,
+				loadinged: false,
+				fileInfo: {
+					limit: 5,
+					url: '/bpm/api/upload',
+					fileList: []
+				},
+				rovaList: [],
+				vision: '',
+				datalist: {
+					url: '/bpm/api/download',
+					type: 1
+				},
+				uploadstatus: false,
+				rovaList: [],
+				mydisable: 1,
+				opname: '',
+				opno: '',
+				attList: [],
+				options: [],
+				// terminal: '741861222376599552',
+				terminal: '741967005139509248',
+				remark: '',
+				visionsts: '1',
+                checkexa: false,
+                treeListonly: {},
+                defaultList: [],
+                closeList: false,
+                visionchonly: false,
+                depttype: 0,
+                deptList:[]
+			}
+		},
+		methods: {
+            deletes() {
+            	this.treeListonly = {};
+            	this.closeList = !this.closeList;
+            },
+            treeCheckonly(v) {
+            	this.treeListonly = v;
+            },
+
+			closedia() {
+				this.infolist = {};
+				this.attList = [];
+				this.fileInfo.fileList = [];
+				this.dialogStatus = false;
+				this.checkexa = false;
+			},
+            //搜索数据
+            searchInfo(v) {
+                this.params = {};
+                v[0] ? this.params.woTitle = v[0] : '';
+                v[1] ? this.params.extField4 = v[1] : '';
+                v[2] ? this.params.extField5 = v[2] : '';
+                this.getList(this.params, this.pageSize);
+            },
+			//获取列表
+			getList(v, n) {
+				this.pageSize = n;
+				let _this = this;
+				this.loading = true;
+				v.procName = "不良信息治理白名单";
+				this.$http({
+					url: "/bpm/api/queryToDoAndFinishTaskList",
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+						"page": '{"pageNo":"' + n + '","pageSize":"10"}'
+					},
+					data: v,
+				}).then((res) => {
+					this.tableData = res.data.data;
+					this.total = res.data.totalRecord;
+					this.loading = false;
+				});
+			},
+			// 分页
+			currchange(v) {
+				this.pageSize = v;
+				this.getList(this.params, this.pageSize);
+			},
+			//申请
+			dialogCheck(v, n) {
+				this.dialogStatus = true;
+				let infolist = Object.assign({}, n);
+				this.vision = '';
+				this.visionsts = '';
+				if (v === 1) {
+					this.titname = '查看';
+					this.disableStatus = true;
+				} else if (v === 2) {
+					this.titname = '审批';
+					this.disableStatus = true;
+				} else if (v === 3) {
+					this.titname = '添加';
+					this.disableStatus = false;
+					return
+				}
+				this.$http({
+					url: '/bpm/api/taskInit',
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+					},
+					data: {
+						woNo: n.woNo
+					},
+				}).then((res) => {
+					// this.infolist = Object.assign({}, res.data);
+					this.terminal = infolist.procId;
+					this.opname = res.data.opName;
+					this.opno = res.data.opNo;
+					this.infolist = JSON.parse(res.data.params.terminalRes);
+					this.infolist.procId = infolist.procId;
+					this.infolist.procVersion = infolist.procVersion;
+					this.remark = infolist.remark;
+					this.infolist.stepId = infolist.stepId;
+					this.infolist.taskId = infolist.taskId;
+					this.infolist.taskName = infolist.taskName;
+					this.infolist.opName = infolist.opName;
+					this.infolist.opNo = infolist.opNo;
+					this.infolist.opTime = infolist.opTime;
+					this.infolist.woNo = infolist.woNo;
+                    this.visionchonly = true;
+					if (res.data.taskList[res.data.taskList.length - 1].taskName == '流程发起') {
+						this.vision = '流程发起';
+						if(this.titname == '审批'){
+							this.disableStatus = false;
+						}
+                        this.visionchonly = true;
+					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '省在线公司确认') {
+						this.vision = '省在线公司确认';
+					} else {
+						this.vision = '审批';
+                        this.visionchonly = true;
+					}
+					this.datalist.attList = JSON.parse(res.data.params.attList);
+					this.attList = [];
+					this.fileInfo.fileList = [];
+					this.datalist.attList.forEach(item => {
+						item.id = item.attchFileId;
+						this.fileInfo.fileList.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+						this.attList.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+					})
+					this.rovaList = res.data.taskList;
+					this.uploadstatus = true;
+				});
+			},
+			//审批
+			dialogCli(v) {
+				this.dialogStatus = false;
+				if (v === 3) {
+					this.infolist = {};
+					this.attList = [];
+					this.fileInfo.fileList = [];
+                    this.checkexa = false;
+					return
+				}
+				let _this = this;
+				this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD")
+				if (v === 1) {
+					let params = {
+						dealType: '1',
+						dealTypeDesc: '打回',
+						procId: this.infolist.procId,
+						procVersion: this.infolist.procVersion,
+						remark: this.remark,
+						stepId: this.infolist.stepId,
+						taskId: this.infolist.taskId,
+						taskName: this.infolist.taskName,
+						opName: this.infolist.opName,
+						opNo: this.opno,
+						opTime: this.infolist.opTime,
+						params: {
+							procExeCondiVal: '不同意',
+							terminalRes: JSON.stringify(this.infolist),
+							assigneeNo: this.opno,
+							assigneeName: this.opname,
+						},
+						woNo: this.infolist.woNo,
+					}
+					this.submitInfo("/bpm/api/submitTask", params);
+				} else if (v === 2) {
+					let param = {
+						dealType: '0',
+						dealTypeDesc: '提交',
+						procId: this.infolist.procId,
+						procVersion: this.infolist.procVersion,
+						remark: this.remark,
+						stepId: this.infolist.stepId,
+						taskId: this.infolist.taskId,
+						taskName: this.infolist.taskName,
+						opName: this.infolist.opName,
+						opNo: this.opno,
+						opTime: this.infolist.opTime,
+						params: {
+							woType: this.infolist.woType,
+							terminalRes: JSON.stringify(this.infolist),
+						},
+						woNo: this.infolist.woNo,
+
+					}
+                    param.params.assigneeNo = this.treeListonly.leaderAuditNo;
+                    param.params.assigneeName = this.treeListonly.leaderAuditName;
+					if (this.vision == '流程发起') {
+						let attList = [];
+						for (let i = 0; i < this.attList.length; i++) {
+							attList.push({
+								id: this.attList[i].id,
+								fileCode: this.attList[i].fileCode,
+								fileName: this.attList[i].fileName,
+								opName: this.attList[i].opName,
+								opNo: this.attList[i].opNo,
+								opTime: this.attList[i].opTime,
+								woNo: this.infolist.woNo,
+								attchFileId: this.attList[i].attchFileId,
+							});
+						}
+						param.params.attList = JSON.stringify(attList)
+					}
+					this.submitInfo("/bpm/api/submitTask", param);
+				}
+			},
+			//添加
+			dialogCliadd(v) {
+				let _this = this;
+				let info = {};
+				info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD");
+				info.opNo = this.userInfo.loginNo;
+				info.opName = this.userInfo.loginName;
+				info.woTitle = this.infolist.woName;
+
+				info.extField4 = this.infolist.region;
+				info.extField5 = this.infolist.textContent;
+
+				info.params = {};
+				info.params.terminalRes = this.infolist;
+				info.procId = this.terminal;
+				for (let i = 0; i < this.options.length; i++) {
+					if (this.terminal == this.options[i].procId) {
+						info.procName = this.options[i].procName;
+						info.procVersion = this.options[i].procVersion;
+					}
+				}
+				let attList = [];
+				for (let i = 0; i < this.attList.length; i++) {
+					attList.push({
+						id: this.attList[i].id,
+						fileCode: this.attList[i].fileCode,
+						fileName: this.attList[i].fileName,
+						opName: this.attList[i].opName,
+						opNo: this.attList[i].opNo,
+						opTime: this.attList[i].opTime,
+						woNo: this.infolist.woNo,
+						attchFileId: this.attList[i].attchFileId,
+					});
+				}
+                info.params.assigneeNo = this.treeListonly.leaderAuditNo;
+                info.params.assigneeName = this.treeListonly.leaderAuditName;
+				info.params.attList = JSON.stringify(attList)
+				info.params.terminalRes = JSON.stringify(info.params.terminalRes);
+				info.params.factoryList = JSON.stringify(info.params.factoryList);
+
+				this.submitInfo("/bpm/api/startProc", info);
+			},
+
+			submitInfo(u, v) {
+				let _this = this;
+				this.$refs.infolist.validate(valid => {
+					if (valid) {
+						this.$http({
+							url: u,
+							method: "post",
+							headers: {
+								"Content-Type": "application/json",
+							},
+							data: v,
+						}).then((res) => {
+							if (res.data.result === 1) {
+								_this.$message({
+									message: res.data.desc,
+									type: 'error'
+								});
+							} else {
+								_this.$message({
+									message: '成功',
+									type: 'success'
+								});
+								_this.closedia();
+								_this.infolist = {};
+								_this.attList = [];
+								_this.fileInfo.fileList = [];
+                                _this.checkexa = false;
+								_this.getList(this.params, this.pageSize);
+							}
+
+						});
+					}
+				})
+			},
+			getStanding() {
+				this.$router.push({
+					path: '/yStanding',
+				});
+				this.setabList('运营流程台账', '/yStanding');
+			},
+			setabList(n, p) {
+				let params = {
+					children: "",
+					name: n,
+					rountPath: p,
+					target: "_self",
+				};
+				for (let i = 0; i < this.$store.state.tabList.length; i++) {
+					if (this.$store.state.tabList[i].name === params.name) {
+						this.$store.state.tabList[i] = params;
+					}
+				}
+				let set = new Set([...this.$store.state.tabList, params]);
+				set.add(params);
+				this.$store.commit("setDefaultActive", params.rountPath);
+				this.$store.commit("setTabList", Array.from(set));
+			},
+			//流程
+			getTermianl() {
+				this.$http({
+					url: "/bpm/api/queryBpmProcList",
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+						"page": '{"pageNo":"' + 1 + '","pageSize":"100"}'
+					},
+					data: {},
+				}).then((res) => {
+					this.options = res.data.data;
+				});
+			},
+			closeMessage(v) {
+				this.centerDialogVisible = false;
+				let _this = this;
+				if (v === 1) {
+					_this.$http({
+						url: "/bpm/api/deleteBpmPrePlugin",
+						method: "post",
+						headers: {
+							"Content-Type": "application/json",
+						},
+						data: {
+							id: this.delid
+						},
+					}).then((res) => {
+						if (res.data.result === 1) {
+							_this.$message({
+								message: res.data.desc,
+								type: 'error'
+							});
+						} else {
+							_this.$message({
+								message: '删除成功',
+								type: 'success'
+							});
+							_this.getList(this.params, this.pageSize);
+						}
+					});
+				}
+			},
+			//删除
+			delLine(v) {
+				this.centerDialogVisible = true;
+				this.messTit = '即将删除此条数据, 是否删除?';
+				this.delid = v.id;
+			},
+			//文件返回值
+			uploadBack(v) {
+				this.attList = v;
+			},
+			//功能栏
+			iconCli(v) {
+				if (v === 1) {
+					this.getList(this.params, this.pageSize);
+				}
+				if (v === 2) {
+					this.fullscreen = !this.fullscreen
+				}
+			},
+			getUser() {
+				this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+                this.$http({
+                    url: "/sysmgr/csysdept/queryRegionDeptList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {},
+                }).then((res) => {
+                    this.deptList = res.data[0].children;
+                    for (let i = 0; i < this.deptList.length; i++) {
+                        this.searchList[1].options.push({dataCode: this.deptList[i].ou,dataName:this.deptList[i].ou})
+                    }
+                });
+			}
+		},
+		mounted() {
+			this.getList({}, 1);
+			this.getUser();
+			this.getTermianl();
+		},
+		created() {
+
+		}
+	}
+</script>
+<style scoped lang="scss">
+	.onetab {
+		margin-bottom: 20px;
+		padding: 0 20px;
+	}
+
+	.titbox {
+		div {
+			float: right;
+
+			i {
+				font-size: 22px;
+				margin-left: 20px;
+				cursor: pointer;
+			}
+		}
+	}
+
+	.tabbox {
+		margin-top: 15px;
+	}
+
+	.pageBox {
+		text-align: right;
+		margin-top: 10px;
+	}
+
+	.info-line {
+		width: 100%;
+		display: block;
+		padding-left: 20px;
+
+		div {
+			width: 50%;
+			display: inline-block;
+		}
+
+		span {
+			width: 100px;
+			display: inline-block;
+			text-align: left;
+
+			i {
+				color: red;
+				display: inline-block;
+				padding-right: 5px;
+			}
+		}
+
+		.el-select,
+		.el-input {
+			width: calc(100% - 120px);
+		}
+	}
+
+	.online {
+		width: 100%;
+
+		.el-select {
+			width: calc(100% - 100px);
+		}
+
+		span {
+			vertical-align: top;
+		}
+
+		.el-textarea {
+			width: calc(100% - 120px);
+		}
+
+		.tree {
+			width: calc(50% - 60px);
+			display: inline-block;
+			margin-right: 20px;
+			height: 300px;
+			overflow-y: scroll;
+
+			.el-icon-error {
+				float: right;
+				font-size: 20px;
+				margin-top: 9px;
+				cursor: pointer;
+			}
+		}
+
+		.treeUser {
+			margin: 0;
+			border: 1px solid #ddd;
+
+			p {
+				background: #f4f4f4;
+				padding: 0 20px;
+				margin-bottom: 5px;
+			}
+		}
+
+		.treeUserb {
+		    width: calc(100% - 100px);
+		    border: 1px solid #ddd;
+		    background: #f4f4f4;
+		    border-radius: 3px;
+		    height: auto;
+		    overflow: hidden;
+
+		    p {
+		        display: inline-block;
+		        padding: 0 20px;
+		        margin-bottom: 5px;
+		    }
+		}
+	}
+
+	.adv-type {
+		margin-top: 20px;
+		display: flex;
+		justify-content: space-between;
+		flex-wrap: wrap;
+		// border: 1px solid #ddd;
+		border-radius: 5px;
+		padding: 20px;
+		box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+
+		div {
+			width: 33%;
+			text-align: center;
+			height: 80px;
+			overflow: hidden;
+			min-width: 100px;
+			cursor: pointer;
+			padding-top: 10px;
+			margin: 10px 0;
+		}
+
+		div:hover {
+			background: #CFE8FC;
+			border-radius: 5px;
+		}
+
+		span {
+			width: 100%;
+			display: inline-block;
+			height: 40px;
+
+			// line-height: 40px;
+			i {
+				color: #0074D9;
+				font-size: 36px;
+			}
+		}
+	}
+</style>

+ 1 - 1
src/pages/main/budget/budgetList.vue

@@ -213,7 +213,7 @@
             v-model="formData.requiredTime"
             v-model="formData.requiredTime"
             type="datetime"
             type="datetime"
             placeholder="选择反馈时间"
             placeholder="选择反馈时间"
-            value-format="yyyy-MM-dd HH:mm:ss"
+            value-format="YYYY-MM-DD"
           >
           >
           </el-date-picker>
           </el-date-picker>
         </el-form-item>
         </el-form-item>

+ 930 - 0
src/pages/main/businessOutsourc/benefitEvalua.vue

@@ -0,0 +1,930 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <div class="search">
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <el-button size="medium" type="primary" @click="dialogCheck(3)">添加</el-button>
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                    <el-table-column prop="extField5" label="月份">
+                    </el-table-column>
+                    <el-table-column prop="extField4" label="地市名称">
+                    </el-table-column>
+                    <el-table-column prop="createTime" label="申请时间">
+                    </el-table-column>
+                    <el-table-column prop="stsDesc" label="状态">
+                    </el-table-column>
+                    <el-table-column label="操作" width="120px" align="center">
+                        <template slot-scope="scope">
+                            <el-button size="mini" type="primary" @click="dialogCheck(1,scope.row)">查看</el-button>
+                            <el-button size="mini" type="danger" v-if="scope.row.sts != 1"
+                                @click="dialogCheck(2,scope.row)">处理</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+        </div>
+
+        <el-dialog :title="titname" :visible.sync="dialogStatuss" width="50%" :destroy-on-close="true"
+            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia">
+            <div v-loading="loadinged">
+                <el-form :model="infolistt" ref="infolistt" :rules="rules">
+                    <el-form-item class="info-line online" prop="extField4">
+                        <span>地市名称</span>
+                        <el-select clearable v-model="infolistt.extField4" placeholder="地市名称">
+                            <el-option v-for="items in regionopt" :key="items.o" :label="items.ou" :value="items.ou">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item class="info-line online" prop="extField5">
+                        <span>月份标识</span>
+                        <el-date-picker v-model="infolistt.extField5" type="month" placeholder="月份标识"
+                            style="display: inline-flex;width: calc(100% - 120px);">
+                        </el-date-picker>
+                    </el-form-item>
+                    <el-form-item prop="visiblec" class="info-line online">
+                        <span>地市人员</span>
+                        <deptTreeOnly class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
+                            :type="depttype" :closeList="closeList"></deptTreeOnly>
+                        <div class="tree treeUser">
+                            <p>{{treeListonly.leaderAuditName}}
+                                <i v-if="treeListonly.leaderAuditName" @click="deletes()" class="el-icon-error"></i>
+                            </p>
+                        </div>
+                    </el-form-item>
+                </el-form>
+
+                <div slot="footer" class="dialog-footer myfooter">
+                    <el-button type="primary" @click="dialogCliadd">确 定</el-button>
+                    <el-button @click="dialogStatuss=false">取 消</el-button>
+                </div>
+            </div>
+        </el-dialog>
+
+        <el-dialog :title="titname" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
+            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia" :fullscreen="true">
+            <div v-loading="loadinged">
+                <el-form :model="infolist" ref="infolist" :rules="rules"
+                    style="height: calc(100vh - 180px);overflow-y: scroll;">
+                    <div v-if="vision == '地市负责人填写'">
+                        <myUpload @uploadBack="uploadBackd" :fileInfo="fileInfotd" style="float: left;"
+                            :fileList="fileInfotd.fileList"></myUpload>
+                        <el-button size="medium" type="primary" @click="downmb">下载模板</el-button>
+                    </div>
+                    <div style="margin: 20px 0;padding: 0 20px;">
+                        <el-table class="com-table" ref="multipleTable" :data="infodatas" tooltip-effect="dark"
+                            size="small" border style="width: 100%">
+
+                            <el-table-column label="地市">
+                                <template slot-scope="scope">
+                                    <el-input v-model="scope.row.dishi" :disabled="visionsts == '2'"></el-input>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="区县">
+                                <template slot-scope="scope">
+                                    <el-input v-model="scope.row.quxian" :disabled="visionsts == '2'"></el-input>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="渠道编码">
+                                <template slot-scope="scope">
+                                    <el-input v-model="scope.row.qdbm" :disabled="visionsts == '2'"></el-input>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="渠道名称">
+                                <template slot-scope="scope">
+                                    <el-input v-model="scope.row.qdmc" :disabled="visionsts == '2'"></el-input>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="效益">
+                                <template slot-scope="scope">
+                                    <el-input v-model="scope.row.xiaoyi" :disabled="visionsts == '2'"></el-input>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="提升计划">
+                                <template slot-scope="scope">
+                                    <el-input v-model="scope.row.tsjh" :disabled="visionsts == '2'"></el-input>
+                                </template>
+                            </el-table-column>
+
+                            <el-table-column label="操作" width="120px" align="center" v-if="visionsts != '2'">
+                                <template slot-scope="scope">
+                                    <el-button size="mini" type="primary" @click="choline(1,scope)">添加</el-button>
+                                    <el-button size="mini" type="danger" @click="choline(2,scope)">删除</el-button>
+                                </template>
+                            </el-table-column>
+                        </el-table>
+                    </div>
+
+                    <div v-if="visionsts == '2'" style="padding:0 20px;">
+                        <uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
+                    </div>
+                    <myUpload v-if="visionsts != '2'" @uploadBack="uploadBack" :fileInfo="fileInfo"
+                        :fileList="fileInfo.fileList">
+                    </myUpload>
+
+                    <el-form-item class="info-line online" v-if="visionsts == '2'" style="margin-top: 20px;">
+                        <span>审批说明</span>
+                        <el-input v-model="remark" placeholder="审批说明" type="textarea" :rows="3"
+                            :disabled="titname == '查看'">
+                        </el-input>
+                    </el-form-item>
+
+                    <div style="margin: 20px 0;padding: 0 20px;">
+                        <el-table class="com-table" :data="rovaList" tooltip-effect="dark" size="small" border
+                            style="width: 100%">
+                            <el-table-column prop="taskId" label="编号">
+                            </el-table-column>
+                            <el-table-column prop="taskName" label="环节">
+                            </el-table-column>
+                            <el-table-column prop="assigneeName" label="处理人">
+                            </el-table-column>
+                            <el-table-column prop="assigneeNo" label="处理人工号">
+                            </el-table-column>
+                            <el-table-column prop="opTime" label="处理时间">
+                            </el-table-column>
+                            <el-table-column prop="remark" label="备注">
+                            </el-table-column>
+                        </el-table>
+                    </div>
+                </el-form>
+
+                <div slot="footer" class="dialog-footer myfooter">
+                    <el-button v-if="titname != '查看' && vision == '地市负责人填写'" type="primary" @click="checkexa = true">确 定
+                    </el-button>
+                    <el-button v-if="titname != '查看' && vision == '审批人审批'" type="primary" @click="chospjd(1)">提交省公司
+                    </el-button>
+                    <el-button v-if="titname != '查看' && vision == '审批人审批'" type="primary" @click="chospjd(2)">提交审批
+                    </el-button>
+                    <el-button v-if="titname != '查看' && vision == '省公司查看'" type="primary" @click="dialogCli(2)">通 过
+                    </el-button>
+                    <el-button v-if="titname != '查看' && visionsts == '2'" type="primary" @click="dialogCli(1)">打 回
+                    </el-button>
+                    <el-button v-if="titname == '查看'" @click="dialogCli(3)">确 定</el-button>
+                    <el-button @click="dialogCli(3)">取 消</el-button>
+                </div>
+            </div>
+        </el-dialog>
+
+        <el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
+            :modal-append-to-body="false" :close-on-click-modal="false">
+            <div>
+
+                <el-form :model="infolist" ref="infolist" :rules="rules">
+                    <el-form-item prop="visiblec" class="info-line online">
+                        <span>审批人员</span>
+                        <deptTreeOnly class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
+                            :type="depttype" :closeList="closeList"></deptTreeOnly>
+                        <div class="tree treeUser">
+                            <p>{{treeListonly.leaderAuditName}}
+                                <i v-if="treeListonly.leaderAuditName" @click="deletes()" class="el-icon-error"></i>
+                            </p>
+                        </div>
+                    </el-form-item>
+                </el-form>
+
+                <div slot="footer" style="text-align: right;padding-bottom: 20px;">
+                    <el-button type="primary" @click="dialogCli(2)">确 定</el-button>
+                    <el-button @click="checkexa = false">取 消</el-button>
+                </div>
+            </div>
+        </el-dialog>
+
+        <myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible"></myMessage>
+    </fullscreen>
+
+</template>
+<script>
+    import mySearch from "../../../components/search.vue";
+    import myMessage from "../../../components/myMessage.vue"
+    import toolList from '../../../components/toolList'
+    import myUpload from '../../../components/upload'
+    import uploadDown from '../../../components/uploadDown.vue'
+    import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+
+    export default {
+        components: {
+            mySearch,
+            myMessage,
+            toolList,
+            myUpload,
+            uploadDown,
+            deptTreeOnly
+        },
+        data() {
+            const extField4 = (rule, value, callback) => {
+                if (!this.infolistt.extField4) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            const extField5 = (rule, value, callback) => {
+                if (!this.infolistt.extField5) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            return {
+                rules: {
+                    extField4: [{
+                        required: true,
+                        trigger: 'change',
+                        validator: extField4
+                    }],
+                    extField5: [{
+                        required: true,
+                        trigger: 'change',
+                        validator: extField5
+                    }],
+                },
+                tooltit: '效益评估',
+                fullscreen: false,
+                total: 0,
+                pageSize: 1,
+                tableData: [{}],
+                dialogStatus: false,
+                disableStatus: false,
+                titname: '',
+                infolist: {},
+                infolistt: {
+                    extField4: '',
+                    extField5: ''
+                },
+                userInfo: {},
+                params: {},
+                centerDialogVisible: false,
+                messTit: '',
+                delid: '',
+                loading: false,
+                loadinged: false,
+                fileInfo: {
+                    limit: 5,
+                    url: '/bpm/api/upload',
+                    fileList: []
+                },
+                rovaList: [],
+                vision: '',
+                datalist: {
+                    url: '/bpm/api/download',
+                    type: 1
+                },
+                uploadstatus: false,
+                mydisable: 1,
+                opname: '',
+                opno: '',
+                attList: [],
+                options: [],
+                // terminal: '745181114903359488',
+                terminal: '745948501986680832',
+                remark: '',
+                visionsts: '1',
+                visionchonly: false,
+                infodatas: [{}, {}],
+                busiTime: [],
+                demandTypeopt: [],
+                carryChannelopt: [],
+                checkexa: false,
+                treeListonly: {},
+                defaultList: [],
+                closeList: false,
+                depttype: 0,
+                fileInfotd: {
+                    type: 'btn',
+                    typename: '导入',
+                    btntype: 'success',
+                    limit: 1,
+                    url: '/market/cStoreOutWo/importDataEva',
+                    fileList: []
+                },
+                dialogStatuss: false,
+                regionopt: [],
+                chosts: 0,
+                searchList: [{
+                    type: 'month',
+                    tit: '月份标识',
+                    value: '',
+                    width: '48%'
+                }, {
+                    type: 'input',
+                    tit: '地市名称',
+                    value: '',
+                    width: '48%'
+                }],
+            }
+        },
+        methods: {
+            uploadBackd(v){
+                for (let i = 1; i < v.data.body.length; i++) {
+                    let one = v.data.body[i].split(",")
+                    this.infodatas.push({
+                        qdbm:one[0],
+                        qdmc:one[1],
+                        xiaoyi:one[2],
+                        tsjh:one[3],
+                    })
+                }
+            },
+            downmb(){
+                this.$http({
+                    url: '/market/cStoreOutWo/downLoadTempEva',
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    responseType: "blob",
+                    data: {},
+                }).then((response) => {
+                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                        let blob = new Blob([response.data], {
+                            type: 'application/vnd.ms-excel'
+                        })
+                        window.navigator.msSaveOrOpenBlob(blob, '模板.csv')
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([response.data])
+                        var downloadElement = document.createElement('a')
+                        var href = window.URL.createObjectURL(blob)
+                        downloadElement.href = href
+                        downloadElement.download = '模板.csv'
+                        document.body.appendChild(downloadElement)
+                        downloadElement.click()
+                        document.body.removeChild(downloadElement)
+                        window.URL.revokeObjectURL(href)
+                    }
+                });
+            },
+            //搜索数据
+            searchInfo(v) {
+                this.params = {};
+                v[0] ? this.params.extField5 = this.$formatDate(v[0], "YYYY-MM") : '';
+                v[1] ? this.params.extField4 = v[1] : '';
+                this.getList(this.params, this.pageSize);
+            },
+            chospjd(v) {
+                this.chosts = v;
+                this.checkexa = true;
+            },
+            deletes() {
+                this.treeListonly = {};
+                this.closeList = !this.closeList;
+            },
+            treeCheckonly(v) {
+                this.treeListonly = v;
+            },
+            choline(v, n) {
+                if (v == 1) {
+                    this.infodatas.push({})
+                } else {
+                    this.infodatas.splice(n.$index, 1)
+                }
+            },
+            closedia() {
+                this.infolist = {};
+                this.attList = [];
+                this.fileInfo.fileList = [];
+                this.dialogStatus = false;
+                this.dialogStatuss = false;
+                this.checkexa = false;
+            },
+            //获取列表
+            getList(v, n) {
+                this.pageSize = n;
+                let _this = this;
+                this.loading = true;
+                v.procName = "效益评估";
+                this.$http({
+                    url: "/bpm/api/queryToDoAndFinishTaskList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                        "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                    },
+                    data: v,
+                }).then((res) => {
+                    this.tableData = res.data.data;
+                    this.total = res.data.totalRecord;
+                    this.loading = false;
+                });
+            },
+            // 分页
+            currchange(v) {
+                this.pageSize = v;
+                this.getList(this.params, this.pageSize);
+            },
+            //申请
+            dialogCheck(v, n) {
+                let infolist = Object.assign({}, n);
+                this.vision = '';
+                this.visionsts = '';
+                this.infodatas = [{}, {}];
+                if (v === 1) {
+                    this.titname = '查看';
+                    this.dialogStatus = true;
+                    this.disableStatus = true;
+                } else if (v === 2) {
+                    this.titname = '审批';
+                    this.dialogStatus = true;
+                    this.disableStatus = false;
+                } else if (v === 3) {
+                    this.titname = '添加';
+                    this.dialogStatuss = true;
+                    this.disableStatus = false;
+                    return
+                }
+                this.$http({
+                    url: '/bpm/api/taskInit',
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        woNo: n.woNo
+                    },
+                }).then((res) => {
+                    this.terminal = infolist.procId;
+                    this.opname = res.data.opName;
+                    this.opno = res.data.opNo;
+                    if (JSON.parse(res.data.params.terminalRes).length == 0) {
+                        this.infolist = {};
+                    } else {
+                        this.infolist = JSON.parse(res.data.params.terminalRes);
+                    }
+                    res.data.params.fillList ? this.infodatas = JSON.parse(res.data.params.fillList) : '';
+                    if (this.infodatas.length == 0) {
+                        this.infodatas = [{}];
+                    }
+                    this.infolist.procId = infolist.procId;
+                    this.infolist.procVersion = infolist.procVersion;
+                    this.remark = infolist.remark;
+                    this.infolist.stepId = infolist.stepId;
+                    this.infolist.taskId = infolist.taskId;
+                    this.infolist.taskName = infolist.taskName;
+                    this.infolist.opName = infolist.opName;
+                    this.infolist.opNo = infolist.opNo;
+                    this.infolist.opTime = infolist.opTime;
+                    this.infolist.woNo = infolist.woNo;
+                    if (res.data.taskList[res.data.taskList.length - 1].taskName == '地市负责人填写') {
+                        this.vision = '地市负责人填写';
+                        if (this.titname == '审批') {
+                            this.disableStatus = false;
+                        }
+                        this.visionchonly = true;
+                    } else if (res.data.taskList[res.data.taskList.length - 1].taskName == '审批人审批') {
+                        this.vision = '审批人审批';
+                        this.visionsts = '2';
+                    } else if (res.data.taskList[res.data.taskList.length - 1].taskName == '省公司查看') {
+                        this.vision = '省公司查看';
+                        this.visionsts = '2';
+                    }
+                    this.datalist.attList = JSON.parse(res.data.params.attList);
+                    this.attList = [];
+                    this.fileInfo.fileList = [];
+                    this.datalist.attList.forEach(item => {
+                        item.id = item.attchFileId;
+                        this.fileInfo.fileList.push({
+                            name: item.fileName,
+                            url: '',
+                            id: item.id,
+                            attchFileId: item.attchFileId,
+                            fileName: item.fileName
+                        });
+                        this.attList.push({
+                            name: item.fileName,
+                            url: '',
+                            id: item.id,
+                            attchFileId: item.attchFileId,
+                            fileName: item.fileName
+                        });
+                    })
+                    this.rovaList = res.data.taskList;
+                    this.uploadstatus = true;
+                });
+            },
+            //审批
+            dialogCli(v) {
+                this.dialogStatus = false;
+                if (v === 3) {
+                    this.infolist = {};
+                    this.attList = [];
+                    this.fileInfo.fileList = [];
+                    this.checkexa = false;
+                    return
+                }
+                let _this = this;
+                if (v === 1) {
+                    let params = {
+                        dealType: '1',
+                        dealTypeDesc: '打回',
+                        procId: this.infolist.procId,
+                        procVersion: this.infolist.procVersion,
+                        remark: this.remark,
+                        stepId: this.infolist.stepId,
+                        taskId: this.infolist.taskId,
+                        taskName: this.infolist.taskName,
+                        opName: this.infolist.opName,
+                        opNo: this.opno,
+                        opTime: this.infolist.opTime,
+                        params: {
+                            procExeCondiVal: '不同意',
+                            terminalRes: JSON.stringify(this.infolist),
+                            assigneeNo: this.opno,
+                            assigneeName: this.opname,
+                        },
+                        woNo: this.infolist.woNo,
+                    }
+                    this.submitInfo("/bpm/api/submitTask", params);
+                } else if (v === 2) {
+                    let param = {
+                        dealType: '0',
+                        dealTypeDesc: '提交',
+                        procId: this.infolist.procId,
+                        procVersion: this.infolist.procVersion,
+                        remark: this.remark,
+                        stepId: this.infolist.stepId,
+                        taskId: this.infolist.taskId,
+                        taskName: this.infolist.taskName,
+                        opName: this.infolist.opName,
+                        opNo: this.opno,
+                        opTime: this.infolist.opTime,
+                        params: {
+                            woType: this.infolist.woType,
+                            terminalRes: JSON.stringify(this.infolist),
+                        },
+                        woNo: this.infolist.woNo,
+                    }
+                    param.params.fillList = JSON.stringify(this.infodatas);
+                    if (this.vision == '审批人审批') {
+                        if (this.chosts == '1') {
+                            param.params.procExeCondiVal = '提交'
+                        } else if (this.chosts == '2') {
+                            param.params.procExeCondiVal = '审批'
+                        }
+                        param.params.assigneeNo = this.treeListonly.leaderAuditNo;
+                        param.params.assigneeName = this.treeListonly.leaderAuditName;
+                    }
+                    if (this.vision == '地市负责人填写') {
+                        let attList = [];
+                        for (let i = 0; i < this.attList.length; i++) {
+                            attList.push({
+                                id: this.attList[i].id,
+                                fileCode: this.attList[i].fileCode,
+                                fileName: this.attList[i].fileName,
+                                opName: this.attList[i].opName,
+                                opNo: this.attList[i].opNo,
+                                opTime: this.attList[i].opTime,
+                                woNo: this.infolist.woNo,
+                                attchFileId: this.attList[i].attchFileId,
+                            });
+                        }
+                        param.params.attList = JSON.stringify(attList)
+                    }
+                    this.submitInfo("/bpm/api/submitTask", param);
+                }
+                this.checkexa = false;
+            },
+            //添加
+            dialogCliadd(v) {
+                let _this = this;
+                let info = {};
+                info.params = {};
+                info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD");
+                info.opNo = this.userInfo.loginNo;
+                info.opName = this.userInfo.loginName;
+                info.extField5 = _this.$formatDate(_this.infolistt.extField5, "YYYY-MM");
+                info.extField4 = this.infolistt.extField4;
+                info.woTitle = '效益评估' + info.extField4 + info.extField5;
+                info.params.terminalRes = {};
+                info.params.assigneeNo = this.treeListonly.leaderAuditNo;
+                info.params.assigneeName = this.treeListonly.leaderAuditName;
+                info.procId = this.terminal;
+                for (let i = 0; i < this.options.length; i++) {
+                    if (this.terminal == this.options[i].procId) {
+                        info.procName = this.options[i].procName;
+                        info.procVersion = this.options[i].procVersion;
+                    }
+                }
+                info.params.terminalRes = JSON.stringify(info.params.terminalRes);
+                let fillList = [];
+                let attList = [];
+                info.params.fillList = JSON.stringify(fillList);
+                info.params.attList = JSON.stringify(attList);
+
+                this.$refs.infolistt.validate(valid => {
+                    if (valid) {
+                        this.$http({
+                            url: '/bpm/api/startProc',
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: info,
+                        }).then((res) => {
+                            if (res.data.result === 1) {
+                                _this.$message({
+                                    message: res.data.desc,
+                                    type: 'error'
+                                });
+                            } else {
+                                _this.$message({
+                                    message: '成功',
+                                    type: 'success'
+                                });
+                                _this.dialogStatuss = false;
+                                _this.infolistt.extField4 = '';
+                                _this.infolistt.extField5 = '';
+                                _this.getList(this.params, this.pageSize);
+                            }
+
+                        });
+                    }
+                })
+            },
+
+            submitInfo(u, v) {
+                let _this = this;
+                this.$refs.infolist.validate(valid => {
+                    if (valid) {
+                        this.$http({
+                            url: u,
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: v,
+                        }).then((res) => {
+                            if (res.data.result === 1) {
+                                _this.$message({
+                                    message: res.data.desc,
+                                    type: 'error'
+                                });
+                            } else {
+                                _this.$message({
+                                    message: '成功',
+                                    type: 'success'
+                                });
+                                _this.closedia();
+                                _this.infolist = {};
+                                _this.attList = [];
+                                _this.fileInfo.fileList = [];
+                                _this.getList(this.params, this.pageSize);
+                            }
+
+                        });
+                    }
+                })
+            },
+            //流程
+            getTermianl() {
+                this.$http({
+                    url: "/bpm/api/queryBpmProcList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                        "page": '{"pageNo":"' + 1 + '","pageSize":"100"}'
+                    },
+                    data: {},
+                }).then((res) => {
+                    this.options = res.data.data;
+                });
+            },
+            closeMessage(v) {
+                this.centerDialogVisible = false;
+                let _this = this;
+                if (v === 1) {
+                    _this.$http({
+                        url: "/bpm/api/deleteBpmPrePlugin",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        data: {
+                            id: this.delid
+                        },
+                    }).then((res) => {
+                        if (res.data.result === 1) {
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'error'
+                            });
+                        } else {
+                            _this.$message({
+                                message: '删除成功',
+                                type: 'success'
+                            });
+                            _this.getList(this.params, this.pageSize);
+                        }
+                    });
+                }
+            },
+            //删除
+            delLine(v) {
+                this.centerDialogVisible = true;
+                this.messTit = '即将删除此条数据, 是否删除?';
+                this.delid = v.id;
+            },
+            //文件返回值
+            uploadBack(v) {
+                this.attList = v;
+            },
+            uploadBackin(v) {
+                let x = [];
+                for (let i = 1; i < v.data.body.length; i++) {
+                    x.push({
+                        factoryName: v.data.body[i].factoryName,
+                        workLoad: v.data.body[i].workLoad
+                    })
+                }
+                this.infodatas = x;
+            },
+            //功能栏
+            iconCli(v) {
+                if (v === 1) {
+                    this.getList(this.params, this.pageSize);
+                }
+                if (v === 2) {
+                    this.fullscreen = !this.fullscreen
+                }
+            },
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+                this.$http({
+                    url: "/sysmgr/csysdept/queryRegionDeptList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {},
+                }).then((res) => {
+                    this.regionopt = res.data[0].children;
+                });
+            },
+        },
+        mounted() {
+            this.getList({}, 1);
+            this.getUser();
+            this.getTermianl();
+        },
+        created() {
+
+        }
+    }
+</script>
+<style scoped lang="scss">
+    .onetab {
+        margin-bottom: 20px;
+        padding: 0 20px;
+    }
+
+    .titbox {
+        div {
+            float: right;
+
+            i {
+                font-size: 22px;
+                margin-left: 20px;
+                cursor: pointer;
+            }
+        }
+    }
+
+    .tabbox {
+        margin-top: 15px;
+    }
+
+    .pageBox {
+        text-align: right;
+        margin-top: 10px;
+    }
+
+    .info-line {
+        width: 100%;
+        display: block;
+        padding-left: 20px;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 100px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 120px);
+        }
+    }
+
+    .online {
+        width: 100%;
+
+        .el-select {
+            width: calc(100% - 120px);
+        }
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 120px);
+        }
+
+        .tree {
+            width: calc(50% - 60px);
+            display: inline-block;
+            margin-right: 20px;
+            height: 300px;
+            overflow-y: scroll;
+
+            .el-icon-error {
+                float: right;
+                font-size: 20px;
+                margin-top: 9px;
+                cursor: pointer;
+            }
+        }
+
+        .treeUser {
+            margin: 0;
+            border: 1px solid #ddd;
+
+            p {
+                background: #f4f4f4;
+                padding: 0 20px;
+                margin-bottom: 5px;
+            }
+        }
+
+        .treeUserb {
+            width: calc(100% - 100px);
+            border: 1px solid #ddd;
+            background: #f4f4f4;
+            border-radius: 3px;
+            height: auto;
+            overflow: hidden;
+
+            p {
+                display: inline-block;
+                padding: 0 20px;
+                margin-bottom: 5px;
+            }
+        }
+    }
+
+    .adv-type {
+        margin-top: 20px;
+        display: flex;
+        justify-content: space-between;
+        flex-wrap: wrap;
+        // border: 1px solid #ddd;
+        border-radius: 5px;
+        padding: 20px;
+        box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+
+        div {
+            width: 33%;
+            text-align: center;
+            height: 80px;
+            overflow: hidden;
+            min-width: 100px;
+            cursor: pointer;
+            padding-top: 10px;
+            margin: 10px 0;
+        }
+
+        div:hover {
+            background: #CFE8FC;
+            border-radius: 5px;
+        }
+
+        span {
+            width: 100%;
+            display: inline-block;
+            height: 40px;
+
+            // line-height: 40px;
+            i {
+                color: #0074D9;
+                font-size: 36px;
+            }
+        }
+    }
+</style>

+ 595 - 0
src/pages/main/businessOutsourc/businessbudget.vue

@@ -0,0 +1,595 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <div class="search">
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" >
+                    <el-table-column prop="cityName" label="地市" align="center" width="120">
+                    </el-table-column>
+                    <el-table-column label="预算使用进度" align="center">
+                        <el-table-column prop="budgetMoney" label="预算金额(万元)" width="150">
+                            <template slot-scope="scope">
+                                <el-input v-if="scope.row.cityName != '全省'" :disabled="companyFlag != 0" v-model="scope.row.budgetMoney" @change="changeRow(scope.row)"></el-input>
+                                <span v-if="scope.row.cityName == '全省'" style="padding-left: 10px;">{{scope.row.budgetMoney}}</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="useMoney" label="已用金额(万元)" width="120">
+                        </el-table-column>
+                        <el-table-column prop="useProcess" label="使用进度" width="120">
+                        </el-table-column>
+                        <el-table-column prop="surplusMoney" label="剩余金额(万元)" width="120">
+                        </el-table-column>
+                    </el-table-column>
+                    <el-table-column label="当月使用金额(万元)" align="center">
+                        <el-table-column prop="month1" label="一月" width="150">
+                            <template slot-scope="scope">
+                                <el-input v-if="scope.row.cityName != '全省'" v-model="scope.row.month1" @change="changeRow(scope.row)"></el-input>
+                                <span v-if="scope.row.cityName == '全省'" style="padding-left: 10px;">{{scope.row.month1}}</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="month1" label="二月" width="150">
+                            <template slot-scope="scope">
+                                <el-input v-if="scope.row.cityName != '全省'" v-model="scope.row.month2" @change="changeRow(scope.row)"></el-input>
+                            <span v-if="scope.row.cityName == '全省'" style="padding-left: 10px;">{{scope.row.month2}}</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="month1" label="三月" width="150">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.cityName == '全省'" style="padding-left: 10px;">{{scope.row.month3}}</span>
+                                <el-input v-if="scope.row.cityName != '全省'" v-model="scope.row.month3" @change="changeRow(scope.row)"></el-input>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="month1" label="四月" width="150">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.cityName == '全省'" style="padding-left: 10px;">{{scope.row.month4}}</span>
+                                <el-input v-if="scope.row.cityName != '全省'" v-model="scope.row.month4" @change="changeRow(scope.row)"></el-input>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="month1" label="五月" width="150">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.cityName == '全省'" style="padding-left: 10px;">{{scope.row.month5}}</span>
+                                <el-input v-if="scope.row.cityName != '全省'" v-model="scope.row.month5" @change="changeRow(scope.row)"></el-input>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="month1" label="六月" width="150">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.cityName == '全省'" style="padding-left: 10px;">{{scope.row.month6}}</span>
+                                <el-input v-if="scope.row.cityName != '全省'" v-model="scope.row.month6" @change="changeRow(scope.row)"></el-input>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="month1" label="七月" width="150">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.cityName == '全省'" style="padding-left: 10px;">{{scope.row.month7}}</span>
+                                <el-input v-if="scope.row.cityName != '全省'" v-model="scope.row.month7" @change="changeRow(scope.row)"></el-input>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="month1" label="八月" width="150">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.cityName == '全省'" style="padding-left: 10px;">{{scope.row.month8}}</span>
+                                <el-input v-if="scope.row.cityName != '全省'" v-model="scope.row.month8" @change="changeRow(scope.row)"></el-input>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="month1" label="九月" width="150">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.cityName == '全省'" style="padding-left: 10px;">{{scope.row.month9}}</span>
+                                <el-input v-if="scope.row.cityName != '全省'" v-model="scope.row.month9" @change="changeRow(scope.row)"></el-input>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="month1" label="十月" width="150">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.cityName == '全省'" style="padding-left: 10px;">{{scope.row.month10}}</span>
+                                <el-input v-if="scope.row.cityName != '全省'" v-model="scope.row.month10" @change="changeRow(scope.row)"></el-input>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="month1" label="十一月" width="150">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.cityName == '全省'" style="padding-left: 10px;">{{scope.row.month11}}</span>
+                                <el-input v-if="scope.row.cityName != '全省'" v-model="scope.row.month11" @change="changeRow(scope.row)"></el-input>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="month1" label="十二月" width="150">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.cityName == '全省'" style="padding-left: 10px;">{{scope.row.month12}}</span>
+                                <el-input v-if="scope.row.cityName != '全省'" v-model="scope.row.month12" @change="changeRow(scope.row)"></el-input>
+                            </template>
+                        </el-table-column>
+
+                    </el-table-column>
+
+                </el-table>
+                <!-- <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination> -->
+            </div>
+        </div>
+    </fullscreen>
+
+</template>
+<script>
+    import mySearch from "../../../components/search.vue";
+    import myMessage from "../../../components/myMessage.vue"
+    import toolList from '../../../components/toolList'
+
+    export default {
+        components: {
+            mySearch,
+            myMessage,
+            toolList
+        },
+        data() {
+            return {
+                searchList: [{
+                    type: 'year',
+                    tit: '年份标识',
+                    value: '',
+                    width: '98%'
+                }],
+                tooltit: '预算管理',
+                fullscreen: false,
+                total: 0,
+                pageSize: 1,
+                tableData: [{}],
+                dialogStatus: false,
+                disableStatus: false,
+                titname: '',
+                infolist: {
+
+                },
+                userInfo: {},
+                params: {},
+                centerDialogVisible: false,
+                messTit: '',
+                delid: '',
+                loading: false,
+                loadinged: false,
+                companyFlag:'',
+                region:'',
+            }
+        },
+        methods: {
+            changeRow(v) {
+                v.month1 = (v.month1*1).toFixed(6);
+                v.month2 = (v.month2*1).toFixed(6);
+                v.month3 = (v.month3*1).toFixed(6);
+                v.month4 = (v.month4*1).toFixed(6);
+                v.month5 = (v.month5*1).toFixed(6);
+                v.month6 = (v.month6*1).toFixed(6);
+                v.month7 = (v.month7*1).toFixed(6);
+                v.month8 = (v.month8*1).toFixed(6);
+                v.month9 = (v.month9*1).toFixed(6);
+                v.month10 = (v.month10*1).toFixed(6);
+                v.month11 = (v.month11*1).toFixed(6);
+                v.month12 = (v.month12*1).toFixed(6);
+                v.month1 = parseFloat(v.month1);
+                v.month2 = parseFloat(v.month2);
+                v.month3 = parseFloat(v.month3);
+                v.month4 = parseFloat(v.month4);
+                v.month5 = parseFloat(v.month5);
+                v.month6 = parseFloat(v.month6);
+                v.month7 = parseFloat(v.month7);
+                v.month8 = parseFloat(v.month8);
+                v.month9 = parseFloat(v.month9);
+                v.month10 = parseFloat(v.month10);
+                v.month11 = parseFloat(v.month11);
+                v.month12 = parseFloat(v.month12);
+                v.useMoney = v.month1 * 1 + v.month2 * 1 + v.month3 * 1 + v.month4 * 1 + v.month5 * 1 + v.month6 * 1 + v
+                    .month7 * 1 + v.month8 * 1 + v.month9 * 1 + v.month10 * 1 + v.month11 * 1 + v.month12 * 1;
+                v.useMoney = (v.useMoney*1).toFixed(6);
+                v.useMoney = parseFloat(v.useMoney);
+                v.budgetMoney = (v.budgetMoney*1).toFixed(6);
+                v.budgetMoney = parseFloat(v.budgetMoney);
+                if (v.budgetMoney*1 < v.useMoney*1) {
+                    this.$message({
+                    	message: '预算金额须大于使用金额',
+                    	type: 'error'
+                    });
+                    this.getList(this.params, this.pageSize);
+                    return
+                }
+                v.useProcess = (v.useMoney/v.budgetMoney*100).toFixed(2) +'%';
+                v.surplusMoney = (v.budgetMoney-v.useMoney).toFixed(6);
+                v.surplusMoney = parseFloat(v.surplusMoney);
+
+                this.$http({
+                    url: "/market/cStoreOutBudget/update",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: v,
+                }).then((res) => {
+                    this.getList(this.params, this.pageSize);
+                });
+            },
+            //搜索数据
+            searchInfo(v) {
+                this.params = {};
+                v[0] ? this.params.year = this.$formatDate(v[0], "YYYY") : '';
+                this.getList(this.params, this.pageSize);
+            },
+            //获取列表
+            getList(v, n) {
+                this.pageSize = n;
+                let _this = this;
+                this.loading = true;
+                this.$http({
+                    url: "/market/cStoreOutBudget/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                        "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                    },
+                    data: v,
+                }).then((res) => {
+                    this.tableData = res.data;
+                    this.total = res.data.totalRecord;
+                    this.loading = false;
+                    if(this.tableData[0].cityName == '全省'){
+                        this.tableData[0].budgetMoney = 0;
+                        this.tableData[0].month1 = 0;
+                        this.tableData[0].month2 = 0;
+                        this.tableData[0].month3 = 0;
+                        this.tableData[0].month4 = 0;
+                        this.tableData[0].month5 = 0;
+                        this.tableData[0].month6 = 0;
+                        this.tableData[0].month7 = 0;
+                        this.tableData[0].month8 = 0;
+                        this.tableData[0].month9 = 0;
+                        this.tableData[0].month10 = 0;
+                        this.tableData[0].month11 = 0;
+                        this.tableData[0].month12 = 0;
+                        this.tableData[0].useMoney = 0;
+                        for (let i = 1; i < this.tableData.length; i++) {
+                            this.tableData[0].budgetMoney = this.tableData[i].budgetMoney*1 + this.tableData[0].budgetMoney*1;
+                            this.tableData[0].budgetMoney = (this.tableData[0].budgetMoney*1).toFixed(6);
+                            this.tableData[0].budgetMoney = parseFloat(this.tableData[0].budgetMoney);
+                    
+                            this.tableData[0].month1 = this.tableData[i].month1*1 + this.tableData[0].month1*1;
+                            this.tableData[0].month1 = (this.tableData[0].month1*1).toFixed(6);
+                            this.tableData[0].month1 = parseFloat(this.tableData[0].month1);
+                    
+                            this.tableData[0].month2 = this.tableData[i].month2*1 + this.tableData[0].month2*1;
+                            this.tableData[0].month2 = (this.tableData[0].month2*1).toFixed(6);
+                            this.tableData[0].month2 = parseFloat(this.tableData[0].month2);
+                    
+                            this.tableData[0].month3 = this.tableData[i].month3*1 + this.tableData[0].month3*1;
+                            this.tableData[0].month3 = (this.tableData[0].month3*1).toFixed(6);
+                            this.tableData[0].month3 = parseFloat(this.tableData[0].month3);
+                    
+                            this.tableData[0].month4 = this.tableData[i].month4*1 + this.tableData[0].month4*1;
+                            this.tableData[0].month4 = (this.tableData[0].month4*1).toFixed(6);
+                            this.tableData[0].month4 = parseFloat(this.tableData[0].month4);
+                    
+                            this.tableData[0].month5 = this.tableData[i].month5*1 + this.tableData[0].month5*1;
+                            this.tableData[0].month5 = (this.tableData[0].month5*1).toFixed(6);
+                            this.tableData[0].month5 = parseFloat(this.tableData[0].month5);
+                    
+                            this.tableData[0].month6 = this.tableData[i].month6*1 + this.tableData[0].month6*1;
+                            this.tableData[0].month6 = (this.tableData[0].month6*1).toFixed(6);
+                            this.tableData[0].month6 = parseFloat(this.tableData[0].month6);
+                    
+                            this.tableData[0].month7 = this.tableData[i].month7*1 + this.tableData[0].month7*1;
+                            this.tableData[0].month7 = (this.tableData[0].month7*1).toFixed(6);
+                            this.tableData[0].month7 = parseFloat(this.tableData[0].month7);
+                    
+                            this.tableData[0].month8 = this.tableData[i].month8*1 + this.tableData[0].month8*1;
+                            this.tableData[0].month8 = (this.tableData[0].month8*1).toFixed(6);
+                            this.tableData[0].month8 = parseFloat(this.tableData[0].month8);
+                    
+                            this.tableData[0].month9 = this.tableData[i].month9*1 + this.tableData[0].month9*1;
+                            this.tableData[0].month9 = (this.tableData[0].month9*1).toFixed(6);
+                            this.tableData[0].month9 = parseFloat(this.tableData[0].month9);
+                    
+                            this.tableData[0].month10 = this.tableData[i].month10*1 + this.tableData[0].month10*1;
+                            this.tableData[0].month10 = (this.tableData[0].month10*1).toFixed(6);
+                            this.tableData[0].month10 = parseFloat(this.tableData[0].month10);
+                    
+                            this.tableData[0].month11 = this.tableData[i].month11*1 + this.tableData[0].month11*1;
+                            this.tableData[0].month11 = (this.tableData[0].month11*1).toFixed(6);
+                            this.tableData[0].month11 = parseFloat(this.tableData[0].month11);
+                    
+                            this.tableData[0].month12 = this.tableData[i].month12*1 + this.tableData[0].month12*1;
+                            this.tableData[0].month12 = (this.tableData[0].month12*1).toFixed(6);
+                            this.tableData[0].month12 = parseFloat(this.tableData[0].month12);
+                    
+                            this.tableData[0].useMoney = this.tableData[i].useMoney*1 + this.tableData[0].useMoney*1;
+                            this.tableData[0].useMoney = (this.tableData[0].useMoney*1).toFixed(6);
+                            this.tableData[0].useMoney = parseFloat(this.tableData[0].useMoney);
+                    
+                            this.tableData[0].useProcess = (this.tableData[0].useMoney/this.tableData[0].budgetMoney*100).toFixed(2) +'%';
+                            this.tableData[0].surplusMoney = (this.tableData[0].budgetMoney-this.tableData[0].useMoney).toFixed(6);
+                            this.tableData[0].surplusMoney = parseFloat(this.tableData[0].surplusMoney);
+                        }
+                    }
+                });
+            },
+            // 分页
+            currchange(v) {
+                this.pageSize = v;
+                this.getList(this.params, this.pageSize);
+            },
+            setabList(n, p) {
+                let params = {
+                    children: "",
+                    name: n,
+                    rountPath: p,
+                    target: "_self",
+                };
+                for (let i = 0; i < this.$store.state.tabList.length; i++) {
+                    if (this.$store.state.tabList[i].name === params.name) {
+                        this.$store.state.tabList[i] = params;
+                    }
+                }
+                let set = new Set([...this.$store.state.tabList, params]);
+                set.add(params);
+                this.$store.commit("setDefaultActive", params.rountPath);
+                this.$store.commit("setTabList", Array.from(set));
+            },
+            //申请
+            dialogCheck(v, n) {
+                let id = n.woNo + ',' + v;
+                this.$router.push({
+                    path: "/stageSeatcheck?id=" + id,
+                    query: {
+                        id: id
+                    }
+                });
+                this.setabList("台席管理详情", "/stageSeatcheck?id=" + id);
+            },
+            //功能栏
+            iconCli(v) {
+                if (v === 1) {
+                    this.getList(this.params, this.pageSize);
+                }
+                if (v === 2) {
+                    this.fullscreen = !this.fullscreen
+                }
+            },
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+                this.$http({
+                    url: "/sysmgr/csysuserinfo/queryUserInfoByLoginNo",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {},
+                }).then((res) => {
+                    this.companyFlag = res.data.companyFlag;
+                    this.region = res.data.groupName.split("/")[1];
+                });
+            },
+        },
+        mounted() {
+            let time = this.$formatDate(new Date(), "YYYY");
+            this.params.year = time;
+            this.searchList[0].value = time;
+            this.getList({
+                year: time
+            }, 1);
+            this.getUser();
+        },
+        created() {
+
+        }
+    }
+</script>
+<style scoped lang="scss">
+    .onetab {
+        margin-bottom: 20px;
+        padding: 0 20px;
+    }
+
+    .titbox {
+        div {
+            float: right;
+
+            i {
+                font-size: 22px;
+                margin-left: 20px;
+                cursor: pointer;
+            }
+        }
+    }
+
+    .tabbox {
+        margin-top: 15px;
+    }
+
+    .pageBox {
+        text-align: right;
+        margin-top: 10px;
+    }
+
+    .info-line {
+        width: 100%;
+        display: block;
+        padding-left: 20px;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 80px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 100px);
+        }
+    }
+
+    .online {
+        width: 100%;
+
+        .el-select {
+            width: calc(100% - 100px);
+        }
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 80px);
+        }
+
+        .tree {
+            width: calc(50% - 60px);
+            display: inline-block;
+            margin-right: 20px;
+            height: 300px;
+            overflow-y: scroll;
+
+            p {
+                overflow: hidden;
+                display: flex;
+                justify-content: space-between;
+            }
+
+            .p-btn {
+                width: 50px !important;
+                cursor: pointer;
+                color: #0074DA;
+            }
+
+            span {
+                display: inline-block;
+                width: calc(100% - 100px);
+            }
+
+            .el-icon-error {
+                float: right;
+                font-size: 20px;
+                margin-top: 9px;
+                cursor: pointer;
+            }
+        }
+
+        .treeUser {
+            margin: 0;
+            border: 1px solid #ddd;
+
+            p {
+                background: #f4f4f4;
+                padding: 0 20px;
+                margin-bottom: 5px;
+            }
+        }
+
+        .treeUserb {
+            width: calc(100% - 80px);
+            border: 1px solid #ddd;
+            background: #f4f4f4;
+            border-radius: 3px;
+            height: auto;
+            overflow: hidden;
+
+            p {
+                display: inline-block;
+                padding: 0 20px;
+                margin-bottom: 5px;
+            }
+        }
+    }
+
+    .adv-type {
+        margin-top: 20px;
+        display: flex;
+        justify-content: space-between;
+        flex-wrap: wrap;
+        // border: 1px solid #ddd;
+        border-radius: 5px;
+        padding: 20px;
+        box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+
+        div {
+            width: 33%;
+            text-align: center;
+            height: 80px;
+            overflow: hidden;
+            min-width: 100px;
+            cursor: pointer;
+            padding-top: 10px;
+            margin: 10px 0;
+        }
+
+        div:hover {
+            background: #CFE8FC;
+            border-radius: 5px;
+        }
+
+        span {
+            width: 100%;
+            display: inline-block;
+            height: 40px;
+
+            // line-height: 40px;
+            i {
+                color: #0074D9;
+                font-size: 36px;
+            }
+        }
+    }
+
+    .tempbox {
+        // border: 1px solid #ddd;
+        padding: 5px;
+        margin-bottom: 10px;
+
+        span {
+            display: inline-block;
+            width: 40%;
+            padding: 0 10px;
+        }
+
+        span:first-child {
+            width: 20%;
+            text-align: center;
+        }
+    }
+
+    .tempbox2 {
+
+        border: 1px solid #ddd;
+        border-bottom: 0;
+
+        span {
+            display: inline-block;
+            width: 25%;
+            padding: 0 10px;
+            border-left: 1px solid #ddd;
+            padding: 5px;
+        }
+    }
+
+    .tempbox2:last-child {
+        border-bottom: 1px solid #ddd;
+    }
+
+    .treeUserp {
+        p {
+            padding: 5px;
+        }
+
+        p:hover {
+            background: #01BEF0;
+            color: #fff;
+            cursor: pointer;
+        }
+    }
+</style>

ファイルの差分が大きいため隠しています
+ 283 - 0
src/pages/main/businessOutsourc/index.vue


+ 10 - 0
src/pages/main/businessOutsourc/settlementEval.vue

@@ -0,0 +1,10 @@
+<template>
+  <div class="container">
+    <iframe
+      height="100%"
+      width="100%"
+      src="/static/views/settlementEval.html"
+      frameborder="0"
+    ></iframe>
+  </div>
+</template>

+ 436 - 0
src/pages/main/businessOutsourc/settlementEvalua.vue

@@ -0,0 +1,436 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <div class="search">
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <span style="line-height: 36px;height: 36px;overflow: hidden;">保存说明:{{remark}}</span>
+                <el-button type="primary" @click="dialogCheck" size="medium">保存</el-button>
+            </div>
+            <div class="tabbox">
+                <table cellspacing='0' style="width: auto;">
+                    <tr>
+                        <th colspan="8">{{nowmouth}}月 业务外包合作商考评扣罚表</th>
+                    </tr>
+                    <tr>
+                        <th colspan="5">评分规则</th>
+                        <th colspan="3">{{region}}</th>
+                    </tr>
+                    <tr>
+                        <th>序号</th>
+                        <th>一级指标</th>
+                        <th>二级指标</th>
+                        <th>分值</th>
+                        <th>评分标准</th>
+                        <th>合作商名称</th>
+                        <th>得分</th>
+                        <th>扣款原因</th>
+                    </tr>
+                    <tr v-for="(item,index) in tabList">
+                        <td>
+                            <div style="text-align: left;width: 50px;">{{index+1}}</div>
+                        </td>
+                        <td>
+                            <div style="text-align: left;width: 120px;">{{item.one}}</div>
+                        </td>
+                        <td>
+                            <div style="text-align: left;width: 200px;">{{item.two}}</div>
+                        </td>
+                        <td>
+                            <div style="text-align: left;width: 50px;">{{item.num}}</div>
+                        </td>
+                        <td>
+                            <div style="text-align: left;width: 500px;">{{item.bz}}</div>
+                        </td>
+                        <td rowspan="11" v-if="index == 0">
+                            <el-input v-model="factoryName" :disabled="disableStatus"
+                                style="text-align: left;width: 200px;">
+                            </el-input>
+                        </td>
+                        <td style="text-align: left;width: 120px;">
+                            <el-input v-model="item.score" :disabled="disableStatus"
+                                style="text-align: left;width: 120px;">
+                            </el-input>
+                        </td>
+                        <td style="text-align: left;width: 500px;">
+                            <el-input v-model="item.reason" :disabled="disableStatus"
+                                style="text-align: left;width: 200px;">
+                            </el-input>
+                        </td>
+                    </tr>
+                </table>
+            </div>
+        </div>
+
+
+    </fullscreen>
+
+</template>
+<script>
+    import mySearch from "../../../components/search.vue";
+    import myMessage from "../../../components/myMessage.vue"
+    import toolList from '../../../components/toolList'
+    import myUpload from '../../../components/upload'
+    import uploadDown from '../../../components/uploadDown.vue'
+    import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+
+    export default {
+        components: {
+            mySearch,
+            myMessage,
+            toolList,
+            myUpload,
+            uploadDown,
+            deptTreeOnly
+        },
+        data() {
+            return {
+                tooltit: '结算考评',
+                fullscreen: false,
+                total: 0,
+                pageSize: 1,
+                tableData: [{}],
+                dialogStatus: false,
+                disableStatus: false,
+                titname: '',
+                infolist: {},
+                userInfo: {},
+                params: {},
+                centerDialogVisible: false,
+                messTit: '',
+                delid: '',
+                uploadstatus: false,
+                rovaList: [],
+                mydisable: 1,
+                opname: '',
+                opno: '',
+                tabList: [{
+                    one: '业务营销能力',
+                    two: '考核合作商重点营业营销能力营销项目及目标由地市结合当前营销重点而制定',
+                    num: '50',
+                    bz: '单项业务得分标准为:完成目标值此项得满分,完成50%以上线性得分,低于50%不得分。',
+                    checkId: "",
+                    id: "",
+                    idPks: null,
+                    itemId: "",
+                    reason: "",
+                    score: "",
+                }, {
+                    one: '客户服务能力',
+                    two: '考核合作商客户服务能力服务规范及要求由地市制定',
+                    num: '20',
+                    bz: '根据服务考核要求及规范,符合要求得满分,未达标的,每次没台席扣0.5分,扣完为止。',
+                    checkId: "",
+                    id: "",
+                    idPks: null,
+                    itemId: "",
+                    reason: "",
+                    score: "",
+                }, {
+                    one: '台席运营能力',
+                    two: '考核合作商外包台席稳定性及人员招聘及时率',
+                    num: '5',
+                    bz: '在甲方提出业务外包营业人员使用需求后,乙方应在“15个”工作日内到位。每延迟完成一天扣1分。合同期内乙方业务外包营业人员无故离岗,导致台席无法正常运营的,每出现一次扣2分。',
+                    checkId: "",
+                    id: "",
+                    idPks: null,
+                    itemId: "",
+                    reason: "",
+                    score: "",
+                }, {
+                    one: '资产安全管理',
+                    two: '考核合作商营业物资使用及安全',
+                    num: '5',
+                    bz: '乙方在承接业务外包工作中,如涉及营业人员需使用、借用甲方的固定、流动资产、低值易耗品时,必须保障相关资产及物品的安全,如出现丢失或人为损坏,需按相关资产的残值进行赔偿甲方外,每出现一次此类情况扣当月考评分2分。',
+                    checkId: "",
+                    id: "",
+                    idPks: null,
+                    itemId: "",
+                    reason: "",
+                    score: "",
+                }, {
+                    one: '外包合作情况',
+                    two: '考核合作商与项目相关的日常及临时性工作执行或合作效果',
+                    num: '10',
+                    bz: '及时配合甲方项目经理要求提供相关材料及相应文件,视情节严重,延误1次扣0.5-2分。',
+                    checkId: "",
+                    id: "",
+                    idPks: null,
+                    itemId: "",
+                    reason: "",
+                    score: "",
+                }, {
+                    one: '纠纷处理效果',
+                    two: '考察合作商的纠纷处理措施是否满足我司的需求',
+                    num: '10',
+                    bz: '因乙方在承接业务外包工作中,涉及到人员用工、劳务等问题,造成不良的社会影响,视情节严重及处理效果得分:纠纷处理措施完全满足我司需求,8分<得分≤10分;纠纷处理措施较好满足我司需求,6分<得分≤8分;纠纷处理措施一般满足我司需求,4分<得分≤6分;纠纷处理措施较差满足我司需求,0分<得分≤4分',
+                    checkId: "",
+                    id: "",
+                    idPks: null,
+                    itemId: "",
+                    reason: "",
+                    score: "",
+                }, {
+                    one: '信息安全管理(扣分项)',
+                    two: '考核合作商客户资料、数据及企业机密信息保密情况',
+                    num: '-10',
+                    bz: '乙方工作人员应严格遵守通信企业保密纪律,不准泄露任何客户资料和甲方数据。一旦发现违反此条款规定,甲方有权进行严格考核,每出现一次扣2分,如经查证,非营业员个人原因(即合作商主观指使或默许的)。甲方有权立即中止合作,给甲方及甲方的客户方造成的损失,甲方有权向乙方追究法律责任和经济补偿,当月扣10分。',
+                    checkId: "",
+                    id: "",
+                    idPks: null,
+                    itemId: "",
+                    reason: "",
+                    score: "",
+                }, {
+                    one: '不良社会影响(扣分项)',
+                    two: '考核合作商客户满意度及社会影响',
+                    num: '-10',
+                    bz: '1、在业务外包合作项目中,如因乙方业务外包人员个人主观原因(殴打或漫骂客户、窃取客户信息或隐私等)造成的客户升级投诉、上访或其它原因给甲方造成不良影响的,扣5分。2、乙方业务外包台席所在厅店,若单店当月客户满意度打分99分以上不扣分,97分-99分之间每厅扣2分,低于97分每厅扣3分,扣完为止。',
+                    checkId: "",
+                    id: "",
+                    idPks: null,
+                    itemId: "",
+                    reason: "",
+                    score: "",
+                }, {
+                    one: '业务发展真实性(扣分项)',
+                    two: '考核合作商业务发展真实性',
+                    num: '-5',
+                    bz: '根据省市公司数据核查,若发现虚假发展业务,则根据严重程度进行扣分,每次扣1-5分',
+                    checkId: "",
+                    id: "",
+                    idPks: null,
+                    itemId: "",
+                    reason: "",
+                    score: "",
+                }, {
+                    one: '重点业务营销(加分项)',
+                    two: '考核合作商业务贡献,鼓励业务发展',
+                    num: '10',
+                    bz: '根据当前重点推广业务下发各类营销指标,最多加10分,加分标准由地市自行制定。',
+                    checkId: "",
+                    id: "",
+                    idPks: null,
+                    itemId: "",
+                    reason: "",
+                    score: "",
+                }, {
+                    one: '团队建设能力(加分项)',
+                    two: '考核合作商团队建设及合作情况',
+                    num: '10',
+                    bz: '从合作商工作配合、驻地支撑、外包台席工资发放及时率等多维度评估团队运营效果.团队建设及合作完全满足我司需求,8分<得分≤10分;团队建设及合作较好满足我司需求,6分<得分≤8分;团队建设及合作一般满足我司需求,4分<得分≤6分;团队建设及合作较差满足我司需求,0分<得分≤4分。',
+                    checkId: "",
+                    id: "",
+                    idPks: null,
+                    itemId: "",
+                    reason: "",
+                    score: "",
+                }, ],
+                nowmouth: '',
+                region: '',
+                factoryName: '',
+                searchList: [{
+                    type: 'month',
+                    tit: '月度标识',
+                    value: '',
+                    width: '98%'
+                }],
+                nowTime:'',
+                detailList:[],
+                companyFlag:'',
+                remark:'',
+            }
+        },
+        methods: {
+            dialogCheck() {
+                let v= {};
+                let _this = this;
+                this.detailList = [];
+                for (let i = 0; i < this.tabList.length; i++) {
+                    this.detailList.push({
+                        checkId:'',
+                        itemId:'',
+                        reason:'',
+                        score:'',
+                        idPks:'',
+                        id:'',
+                    });
+                        this.detailList[i].checkId = this.tabList[i].checkId;
+                    this.detailList[i].id = this.tabList[i].id;
+                    this.detailList[i].itemId = i+1;
+                    this.detailList[i].reason = this.tabList[i].reason;
+                    this.detailList[i].score = this.tabList[i].score;
+                    this.detailList[i].idPks = this.tabList[i].idPks;
+                }
+                v.detailList = this.detailList;
+                v.factoryName = this.factoryName;
+                v.fillTime = this.nowTime;
+                this.$http({
+                    url: "/market/cStoreOutCheck/add",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: v,
+                }).then((res) => {
+                    if (res.data.result === 1) {
+                        _this.$message({
+                            message: res.data.desc,
+                            type: 'error'
+                        });
+                    } else {
+                        _this.$message({
+                            message: '成功',
+                            type: 'success'
+                        });
+                        _this.getList(this.params, this.pageSize);
+                    }
+                });
+            },
+            //搜索数据
+            searchInfo(v) {
+                this.params = {};
+                v[0] ? this.params.fillTime = this.$formatDate(v[0], "YYYY-MM") : '';
+                this.nowTime = this.params.fillTime;
+                this.nowmouth = this.nowTime.split("-")[1];
+                this.getList(this.params, this.pageSize);
+            },
+            //获取列表
+            getList(v, n) {
+                this.pageSize = n;
+                let _this = this;
+                let time = this.$formatDate(new Date(), "YYYY-MM");
+                if(!v.fillTime){
+                    this.nowTime = time;
+                    this.nowmouth = time.split("-")[1];
+                    v.fillTime = time;
+                }
+                this.$http({
+                    url: "/market/cStoreOutCheck/queryByCity",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: v,
+                }).then((res) => {
+                    if(res.data.detailList){
+                        for (let i = 0; i < this.tabList.length; i++) {
+                            this.tabList[i].checkId = res.data.detailList[i].checkId;
+                            this.tabList[i].id = res.data.detailList[i].id;
+                            this.tabList[i].itemId = res.data.detailList[i].itemId;
+                            this.tabList[i].reason = res.data.detailList[i].reason;
+                            this.tabList[i].score = res.data.detailList[i].score;
+                        }
+                        this.factoryName = res.data.factoryName;
+                    }else{
+                        for (let i = 0; i < this.tabList.length; i++) {
+                            this.tabList[i].checkId = '';
+                            this.tabList[i].id = '';
+                            this.tabList[i].itemId = '';
+                            this.tabList[i].reason = '';
+                            this.tabList[i].score = '';
+                        }
+                        this.factoryName = res.data.factoryName;
+                    }
+                });
+            },
+            //功能栏
+            iconCli(v) {
+                if (v === 1) {
+                    this.getList(this.params, this.pageSize);
+                }
+                if (v === 2) {
+                    this.fullscreen = !this.fullscreen
+                }
+            },
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+                this.$http({
+                    url: "/sysmgr/csysuserinfo/queryUserInfoByLoginNo",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {},
+                }).then((res) => {
+                    this.region = res.data.description;
+                    this.companyFlag=res.data.companyFlag;
+                    if(this.companyFlag == 1){
+                        this.region = res.data.description.split("/")[1]
+                    }else if(this.companyFlag == 0){
+                        this.region = '省公司'
+                    }
+                });
+
+                this.$http({
+                    url: "/market/cStoreOutCheck/queryMkStoreOutCheckRemark",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {},
+                }).then((res) => {
+                    this.remark = res.data.remark;
+                });
+
+            }
+        },
+        mounted() {
+            this.getList({}, 1);
+            this.getUser();
+        },
+        created() {
+
+        }
+    }
+</script>
+<style scoped lang="scss">
+    .onetab {
+        margin-bottom: 20px;
+        padding: 0 20px;
+    }
+
+    .titbox {
+        div {
+            float: right;
+
+            i {
+                font-size: 22px;
+                margin-left: 20px;
+                cursor: pointer;
+            }
+        }
+    }
+
+    .tabbox {
+        margin-top: 15px;
+        height: calc(100vh - 300px);
+        overflow: scroll;
+
+        table {
+            border-bottom: 1px solid #ddd;
+            border-right: 1px solid #ddd;
+            text-align: center;
+        }
+
+        tr {
+            // width: 100%;
+        }
+
+        th {
+            border: 1px solid #ddd;
+            border-bottom: 0;
+            border-right: 0;
+            padding: 5px 10px;
+            font-size: 14px;
+        }
+
+        td {
+            border: 1px solid #ddd;
+            border-bottom: 0;
+            border-right: 0;
+            padding: 5px 10px;
+            font-size: 12px;
+        }
+    }
+</style>

+ 368 - 0
src/pages/main/businessOutsourc/stageCensus.vue

@@ -0,0 +1,368 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <div class="search">
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                    <el-table-column prop="cityName" label="地市">
+                    </el-table-column>
+                    <el-table-column prop="channelCnt" label="外包厅店数">
+                    </el-table-column>
+                    <el-table-column prop="cnt" label="外包人员数量">
+                    </el-table-column>
+
+                    <el-table-column label="操作" width="120px" align="center">
+                        <template slot-scope="scope">
+                            <el-button v-if="scope.row.woNo" size="mini" type="primary" @click="dialogCheck(0,scope.row)">查看</el-button>
+                        </template>
+                    </el-table-column>
+
+                </el-table>
+                <!-- <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination> -->
+            </div>
+        </div>
+    </fullscreen>
+
+</template>
+<script>
+    import mySearch from "../../../components/search.vue";
+    import myMessage from "../../../components/myMessage.vue"
+    import toolList from '../../../components/toolList'
+
+    export default {
+        components: {
+            mySearch,
+            myMessage,
+            toolList
+        },
+        data() {
+            return {
+                searchList: [{
+                    type: 'month',
+                    tit: '月份标识',
+                    value: '',
+                    width: '98%'
+                }],
+                tooltit: '台席管理统计',
+                fullscreen: false,
+                total: 0,
+                pageSize: 1,
+                tableData: [{}],
+                dialogStatus: false,
+                disableStatus: false,
+                titname: '',
+                infolist: {
+
+                },
+                userInfo: {},
+                params: {},
+                centerDialogVisible: false,
+                messTit: '',
+                delid: '',
+                loading: false,
+                loadinged: false,
+            }
+        },
+        methods: {
+            //搜索数据
+            searchInfo(v) {
+                this.params = {};
+                v[0] ? this.params.woMonth = this.$formatDate(v[0], "YYYY-MM") : '';
+                this.getList(this.params, this.pageSize);
+            },
+            //获取列表
+            getList(v, n) {
+                this.pageSize = n;
+                let _this = this;
+                this.loading = true;
+                this.$http({
+                    url: "/market/cStoreOutWo/queryStoreOutStatisticsList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                        "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                    },
+                    data: v,
+                }).then((res) => {
+                    this.tableData = res.data;
+                    this.total = res.data.totalRecord;
+                    this.loading = false;
+                });
+            },
+            // 分页
+            currchange(v) {
+                this.pageSize = v;
+                this.getList(this.params, this.pageSize);
+            },
+            setabList(n, p) {
+                let params = {
+                    children: "",
+                    name: n,
+                    rountPath: p,
+                    target: "_self",
+                };
+                for (let i = 0; i < this.$store.state.tabList.length; i++) {
+                    if (this.$store.state.tabList[i].name === params.name) {
+                        this.$store.state.tabList[i] = params;
+                    }
+                }
+                let set = new Set([...this.$store.state.tabList, params]);
+                set.add(params);
+                this.$store.commit("setDefaultActive", params.rountPath);
+                this.$store.commit("setTabList", Array.from(set));
+            },
+            //申请
+            dialogCheck(v, n) {
+                let id = n.woNo + ',' + v;
+                this.$router.push({
+                    path: "/stageSeatcheck?id=" + id,
+                    query: {
+                        id: id
+                    }
+                });
+                this.setabList("台席管理详情", "/stageSeatcheck?id=" + id);
+            },
+            //功能栏
+            iconCli(v) {
+                if (v === 1) {
+                    this.getList(this.params, this.pageSize);
+                }
+                if (v === 2) {
+                    this.fullscreen = !this.fullscreen
+                }
+            },
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+            },
+        },
+        mounted() {
+            let time = this.$formatDate(new Date(), "YYYY-MM");
+            this.params.woMonth = time;
+            this.searchList.value = time;
+            this.getList({woMonth:time}, 1);
+            this.getUser();
+        },
+        created() {
+
+        }
+    }
+</script>
+<style scoped lang="scss">
+    .onetab {
+        margin-bottom: 20px;
+        padding: 0 20px;
+    }
+
+    .titbox {
+        div {
+            float: right;
+
+            i {
+                font-size: 22px;
+                margin-left: 20px;
+                cursor: pointer;
+            }
+        }
+    }
+
+    .tabbox {
+        margin-top: 15px;
+    }
+
+    .pageBox {
+        text-align: right;
+        margin-top: 10px;
+    }
+
+    .info-line {
+        width: 100%;
+        display: block;
+        padding-left: 20px;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 80px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 100px);
+        }
+    }
+
+    .online {
+        width: 100%;
+
+        .el-select {
+            width: calc(100% - 100px);
+        }
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 80px);
+        }
+
+        .tree {
+            width: calc(50% - 60px);
+            display: inline-block;
+            margin-right: 20px;
+            height: 300px;
+            overflow-y: scroll;
+
+            p {
+                overflow: hidden;
+                display: flex;
+                justify-content: space-between;
+            }
+
+            .p-btn {
+                width: 50px !important;
+                cursor: pointer;
+                color: #0074DA;
+            }
+
+            span {
+                display: inline-block;
+                width: calc(100% - 100px);
+            }
+
+            .el-icon-error {
+                float: right;
+                font-size: 20px;
+                margin-top: 9px;
+                cursor: pointer;
+            }
+        }
+
+        .treeUser {
+            margin: 0;
+            border: 1px solid #ddd;
+
+            p {
+                background: #f4f4f4;
+                padding: 0 20px;
+                margin-bottom: 5px;
+            }
+        }
+
+        .treeUserb {
+            width: calc(100% - 80px);
+            border: 1px solid #ddd;
+            background: #f4f4f4;
+            border-radius: 3px;
+            height: auto;
+            overflow: hidden;
+
+            p {
+                display: inline-block;
+                padding: 0 20px;
+                margin-bottom: 5px;
+            }
+        }
+    }
+
+    .adv-type {
+        margin-top: 20px;
+        display: flex;
+        justify-content: space-between;
+        flex-wrap: wrap;
+        // border: 1px solid #ddd;
+        border-radius: 5px;
+        padding: 20px;
+        box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+
+        div {
+            width: 33%;
+            text-align: center;
+            height: 80px;
+            overflow: hidden;
+            min-width: 100px;
+            cursor: pointer;
+            padding-top: 10px;
+            margin: 10px 0;
+        }
+
+        div:hover {
+            background: #CFE8FC;
+            border-radius: 5px;
+        }
+
+        span {
+            width: 100%;
+            display: inline-block;
+            height: 40px;
+
+            // line-height: 40px;
+            i {
+                color: #0074D9;
+                font-size: 36px;
+            }
+        }
+    }
+
+    .tempbox {
+        // border: 1px solid #ddd;
+        padding: 5px;
+        margin-bottom: 10px;
+
+        span {
+            display: inline-block;
+            width: 40%;
+            padding: 0 10px;
+        }
+
+        span:first-child {
+            width: 20%;
+            text-align: center;
+        }
+    }
+
+    .tempbox2 {
+
+        border: 1px solid #ddd;
+        border-bottom: 0;
+        span {
+            display: inline-block;
+            width: 25%;
+            padding: 0 10px;
+            border-left: 1px solid #ddd;
+            padding: 5px;
+        }
+    }
+    .tempbox2:last-child{
+        border-bottom: 1px solid #ddd;
+    }
+
+    .treeUserp {
+        p {
+            padding: 5px;
+        }
+
+        p:hover {
+            background: #01BEF0;
+            color: #fff;
+            cursor: pointer;
+        }
+    }
+</style>

+ 780 - 0
src/pages/main/businessOutsourc/stageSeat.vue

@@ -0,0 +1,780 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <div class="search">
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <span>
+                    <el-button type="primary" @click="template" size="medium" v-if="companyFlag == 0">汇报模板设置</el-button>
+                    <el-button type="primary" @click="tempDown" size="medium">下发</el-button>
+                </span>
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                    <el-table-column prop="woMonth" label="月份标识">
+                    </el-table-column>
+                    <el-table-column prop="cityName" label="地市">
+                    </el-table-column>
+                    <el-table-column prop="woType" label="反馈类型">
+                    </el-table-column>
+                    <el-table-column prop="opTime" label="提交时间">
+                    </el-table-column>
+                    <el-table-column prop="dutyName" label="负责人">
+                    </el-table-column>
+
+                    <el-table-column label="操作" width="220px" align="center">
+                        <template slot-scope="scope">
+                            <el-button size="mini" type="primary" @click="dialogCheck(0,scope.row)">查看</el-button>
+                            <el-button v-if="scope.row.dutyNo == userInfo.loginNoStr" size="mini" type="primary"
+                                @click="dialogCheck(1,scope.row)">填写</el-button>
+                            <el-button size="mini" type="primary" @click="guiji(scope.row)">轨迹</el-button>
+                            <el-button size="mini" v-if="scope.row.opNo == userInfo.loginNoStr" type="danger" @click="delLine(scope.row)">删除</el-button>
+                        </template>
+                    </el-table-column>
+
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+        </div>
+
+        <el-dialog title="模板设置" :visible.sync="templateSts" width="800px" :destroy-on-close="true"
+            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia">
+            <div style="height: 60vh;overflow-y: scroll;">
+                <div v-for="(item,index) in templist" class="tempbox">
+                    <span>扩展字段{{index}}</span>
+                    <span>
+                        <el-input v-model="item.colContent" placeholder="扩展字段名" @change="tempchange(item)"></el-input>
+                    </span>
+                    <span>
+                        <el-select clearable v-model="item.colFlag" placeholder="是否启用" @change="tempchange(item)">
+                            <el-option v-for="items in colFlagopt" :key="items.id" :label="items.name"
+                                :value="items.id">
+                            </el-option>
+                        </el-select>
+                    </span>
+                </div>
+            </div>
+        </el-dialog>
+
+        <el-dialog title="轨迹" :visible.sync="gjsts" width="80%" :destroy-on-close="true" :modal-append-to-body="false"
+            :close-on-click-modal="false" :before-close="closedia">
+            <div style="height: 50vh;overflow-y: scroll;margin-bottom: 20px;">
+                <div class="tempbox2">
+                    <span>
+                        流程环节
+                    </span>
+                    <span>
+                        处理人
+                    </span>
+                    <span>
+                        处理工号
+                    </span>
+                    <span>
+                        处理时间
+                    </span>
+                </div>
+                <div v-for="(item,index) in gjlist" class="tempbox2">
+                    <span>
+                        {{item.stepName}}
+                    </span>
+                    <span>
+                        {{item.dealName}}
+                    </span>
+                    <span>
+                        {{item.dealNo}}
+                    </span>
+                    <span>
+                        {{item.dealTime}}
+                    </span>
+                </div>
+            </div>
+        </el-dialog>
+
+
+        <el-dialog title="模板下发" :visible.sync="tempdownSts" width="80%" :destroy-on-close="true"
+            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia">
+            <div>
+
+                <el-form :model="infolist" ref="infolist" style="height: 52vh;overflow-y: scroll;" :rules="rules">
+
+                    <div>
+                        <el-form-item prop="woType" class="info-line online">
+                            <span>反馈类型</span>
+                            <el-select clearable v-model="infolist.woType">
+                                <el-option v-for="items in searchList[2].options" :key="items.dataName"
+                                    :label="items.dataName" :value="items.dataName">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+
+                        <el-form-item prop="woMonth" class="info-line online">
+                            <span>月份标识</span>
+                            <el-date-picker v-model="infolist.woMonth" type="month" placeholder="月份标识"
+                                :disabled="disableStatus">
+                            </el-date-picker>
+                        </el-form-item>
+                    </div>
+
+                    <el-form-item class="info-line online">
+                        <span>负责人</span>
+                        <div class="tree treeUser" style="width: 30%;margin-right: 1%;">
+                            <p v-for="(item,index) in deptList" :key="index" @click="choseDept(item)">{{item.ou}}</p>
+                        </div>
+                        <div class="tree treeUser" style="width: 30%;margin-right: 1%;">
+                            <p v-for="(item,index) in treeListp" :key="index">
+                                <span>{{item.ou}}</span>
+                                <span class="p-btn" @click="fzperson(item)">负责人</span>
+                                <i @click="deletest(item,index)" class="el-icon-error"></i>
+                            </p>
+                        </div>
+                        <div class="tree treeUser" style="width: 30%;">
+                            <p v-for="(item,index) in treeListp" :key="index">{{item.loginNameStr}}</p>
+                        </div>
+                    </el-form-item>
+
+                </el-form>
+
+                <div slot="footer" style="text-align: right;padding: 20px 0;">
+                    <el-button type="primary" @click="tempdownadd">确 定</el-button>
+                    <el-button @click="tempdownSts = false">取 消</el-button>
+                </div>
+
+            </div>
+        </el-dialog>
+
+        <el-dialog title="选择负责人" :visible.sync="dialogStatusp" width="50%" :destroy-on-close="true"
+            :modal-append-to-body="false" :close-on-click-modal="false">
+            <el-form style="height: 50vh;overflow-y: scroll;">
+                <div class="treeUserp">
+                    <p v-for="(item,index) in treeListponly" :key="index" @click="chofz(item)">{{item.loginNameStr}}</p>
+                </div>
+            </el-form>
+        </el-dialog>
+
+        <myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible"></myMessage>
+    </fullscreen>
+
+</template>
+<script>
+    import mySearch from "../../../components/search.vue";
+    import myMessage from "../../../components/myMessage.vue"
+    import toolList from '../../../components/toolList'
+    import myUpload from '../../../components/upload'
+    import uploadDown from '../../../components/uploadDown.vue'
+    import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+
+    export default {
+        components: {
+            mySearch,
+            myMessage,
+            toolList,
+            myUpload,
+            uploadDown,
+            deptTreeOnly
+        },
+        data() {
+            const woType = (rule, value, callback) => {
+                if (!this.infolist.woType) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            const woMonth = (rule, value, callback) => {
+                if (!this.infolist.woMonth) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            return {
+                rules: {
+                    woType: [{
+                        required: true,
+                        trigger: 'change',
+                        validator: woType
+                    }],
+                    woMonth: [{
+                        required: true,
+                        trigger: 'change',
+                        validator: woMonth
+                    }],
+                },
+                searchList: [{
+                    type: 'month',
+                    tit: '月份标识',
+                    value: '',
+                    width: '32%'
+                }, {
+                    type: 'input',
+                    tit: '地市名称',
+                    value: '',
+                    width: '32%'
+                }, {
+                    type: 'sel',
+                    tit: '反馈类型',
+                    value: '',
+                    width: '32%',
+                    options: [{
+                        dataCode: '月度反馈',
+                        dataName: '月度反馈'
+                    }, {
+                        dataCode: '临时反馈',
+                        dataName: '临时反馈'
+                    }, ]
+                }],
+                tooltit: '台席管理',
+                fullscreen: false,
+                total: 0,
+                pageSize: 1,
+                tableData: [{}],
+                dialogStatus: false,
+                disableStatus: false,
+                titname: '',
+                infolist: {
+
+                },
+                userInfo: {},
+                params: {},
+                centerDialogVisible: false,
+                messTit: '',
+                delid: '',
+                loading: false,
+                loadinged: false,
+                templateSts: false,
+                templist: [],
+                colFlagopt: [{
+                    id: '1',
+                    name: '是'
+                }, {
+                    id: '0',
+                    name: '否'
+                }, ],
+                tempdownSts: false,
+                deptList: [],
+                treeListp: [],
+                treeListponly: [],
+                dialogStatusp: false,
+                companyFlag: '',
+                groupId: '',
+                gjsts: false,
+                gjlist: []
+            }
+        },
+        methods: {
+            guiji(n) {
+                this.gjsts = true;
+                this.$http({
+                    url: "/market/cStoreOutWo/queryMkStoreOutWoTraceList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        woNo: n.woNo,
+                    },
+                }).then((res) => {
+                    this.gjlist = res.data;
+                });
+            },
+            tempdownadd() {
+                let param = [];
+                let _this = this;
+                for (let i = 0; i < this.treeListp.length; i++) {
+                    if (this.treeListp[i].loginNoStr) {
+                        param.push({
+                            dutyNo: this.treeListp[i].loginNoStr,
+                            dutyName: this.treeListp[i].loginNameStr,
+                            cityId: this.treeListp[i].o,
+                            cityName: this.treeListp[i].ou,
+                        })
+                    }
+                }
+                if (param.length == 0) {
+                    _this.$message({
+                        message: '请选择地市及负责人',
+                        type: 'error'
+                    });
+                    return
+                }
+                this.$refs.infolist.validate(valid => {
+                    if (valid) {
+                        this.$http({
+                            url: "/market/cStoreOutWo/add",
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: {
+                                "outWoList": param,
+                                "woMonth": this.$formatDate(this.infolist.woMonth, "YYYY-MM"),
+                                "woType": this.infolist.woType
+                            },
+                        }).then((res) => {
+                            if (res.data.result === 1) {
+                                _this.$message({
+                                    message: res.data.desc,
+                                    type: 'error'
+                                });
+                            } else {
+                                _this.$message({
+                                    message: '成功',
+                                    type: 'success'
+                                });
+                                _this.tempdownSts = false;
+                                _this.getList(this.params, this.pageSize);
+                            }
+                        });
+                    }
+                })
+            },
+            chofz(v) {
+                this.dialogStatusp = false;
+                for (let i = 0; i < this.treeListp.length; i++) {
+                    if (this.treeListp[i].o == this.fadept.o) {
+                        this.treeListp[i].loginNameStr = v.loginNameStr;
+                        this.treeListp[i].loginNoStr = v.loginNoStr;
+                    }
+                }
+            },
+            fzperson(v) {
+                this.fadept = v;
+                this.dialogStatusp = true;
+                this.$http({
+                    url: "/sysmgr/sysuserinfo/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        groupId: v.o,
+                    },
+                }).then((res) => {
+                    this.treeListponly = res.data;
+                });
+            },
+            deletest(val, index) {
+                this.treeListp.splice(index, 1);
+            },
+            choseDept(v) {
+                let x = 'no';
+                for (let i = 0; i < this.treeListp.length; i++) {
+                    if (this.treeListp[i].o == v.o) {
+                        x = i;
+                    }
+                }
+                if (x != 'no') {
+                    this.treeListp.splice(x, 1)
+                } else {
+                    this.treeListp.push(v);
+                }
+            },
+            //下发模板
+            tempDown() {
+                this.tempdownSts = true;
+                if (this.companyFlag == '0') {
+                    this.$http({
+                        url: "/sysmgr/csysdept/queryRegionDeptList",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        data: {},
+                    }).then((res) => {
+                        this.deptList = res.data[0].children;
+                    });
+                } else {
+                    this.$http({
+                        url: "/sysmgr/csysdept/queryChildListByLoginDept",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        data: {
+                            // parentorgid: this.groupId
+                        },
+                    }).then((res) => {
+                        this.deptList = res.data;
+                    });
+                }
+            },
+            //修改模板
+            tempchange(v) {
+                this.$http({
+                    url: "/market/cStoreOutCfg/update",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: v,
+                }).then((res) => {
+
+                });
+            },
+            //查询模板
+            template() {
+                this.templateSts = true;
+                this.$http({
+                    url: "/market/cStoreOutCfg/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {},
+                }).then((res) => {
+                    this.templist = res.data;
+                });
+            },
+            //搜索数据
+            searchInfo(v) {
+                this.params = {};
+                v[0] ? this.params.woMonth = this.$formatDate(v[0], "YYYY-MM") : '';
+                v[1] ? this.params.cityName = v[1] : '';
+                v[2] ? this.params.woType = v[2] : '';
+                this.getList(this.params, this.pageSize);
+            },
+            closedia() {
+                this.infolist = {};
+                this.infodata = [{}];
+                this.dialogStatus = false;
+                this.templateSts = false;
+                this.tempdownSts = false;
+                this.gjsts = false;
+            },
+            //获取列表
+            getList(v, n) {
+                this.pageSize = n;
+                let _this = this;
+                this.loading = true;
+                this.$http({
+                    url: "/market/cStoreOutWo/queryPage",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                        "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                    },
+                    data: v,
+                }).then((res) => {
+                    this.tableData = res.data.data;
+                    this.total = res.data.totalRecord;
+                    this.loading = false;
+                });
+            },
+            // 分页
+            currchange(v) {
+                this.pageSize = v;
+                this.getList(this.params, this.pageSize);
+            },
+            setabList(n, p) {
+                let params = {
+                    children: "",
+                    name: n,
+                    rountPath: p,
+                    target: "_self",
+                };
+                for (let i = 0; i < this.$store.state.tabList.length; i++) {
+                    if (this.$store.state.tabList[i].name === params.name) {
+                        this.$store.state.tabList[i] = params;
+                    }
+                }
+                let set = new Set([...this.$store.state.tabList, params]);
+                set.add(params);
+                this.$store.commit("setDefaultActive", params.rountPath);
+                this.$store.commit("setTabList", Array.from(set));
+            },
+            //申请
+            dialogCheck(v, n) {
+                let id = n.woNo + ',' + v;
+                this.$router.push({
+                    path: "/stageSeatcheck?id=" + id,
+                    query: {
+                        id: id
+                    }
+                });
+                this.setabList("台席管理详情", "/stageSeatcheck?id=" + id);
+            },
+            closeMessage(v) {
+                this.centerDialogVisible = false;
+                let _this = this;
+                if (v === 1) {
+                    _this.$http({
+                        url: "/market/cStoreOutWo/del",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        data: {
+                            woNo: this.delid
+                        },
+                    }).then((res) => {
+                        if (res.data.result === 1) {
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'error'
+                            });
+                        } else {
+                            _this.$message({
+                                message: '删除成功',
+                                type: 'success'
+                            });
+                            _this.getList(this.params, this.pageSize);
+                        }
+                    });
+                }
+            },
+            //删除
+            delLine(v) {
+                this.centerDialogVisible = true;
+                this.messTit = '即将删除此条数据, 是否删除?';
+                this.delid = v.woNo;
+            },
+            //功能栏
+            iconCli(v) {
+                if (v === 1) {
+                    this.getList(this.params, this.pageSize);
+                }
+                if (v === 2) {
+                    this.fullscreen = !this.fullscreen
+                }
+            },
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+                this.$http({
+                    url: "/sysmgr/csysuserinfo/queryUserInfoByLoginNo",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {},
+                }).then((res) => {
+                    this.companyFlag = res.data.companyFlag;
+                    this.groupId = res.data.groupId;
+                });
+            },
+        },
+        mounted() {
+            this.getList({}, 1);
+            this.getUser();
+        },
+        created() {
+
+        }
+    }
+</script>
+<style scoped lang="scss">
+    .onetab {
+        margin-bottom: 20px;
+        padding: 0 20px;
+    }
+
+    .titbox {
+        div {
+            float: right;
+
+            i {
+                font-size: 22px;
+                margin-left: 20px;
+                cursor: pointer;
+            }
+        }
+    }
+
+    .tabbox {
+        margin-top: 15px;
+    }
+
+    .pageBox {
+        text-align: right;
+        margin-top: 10px;
+    }
+
+    .info-line {
+        width: 100%;
+        display: block;
+        padding-left: 20px;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 80px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 100px);
+        }
+    }
+
+    .online {
+        width: 100%;
+
+        .el-select {
+            width: calc(100% - 100px);
+        }
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 80px);
+        }
+
+        .tree {
+            width: calc(50% - 60px);
+            display: inline-block;
+            margin-right: 20px;
+            height: 300px;
+            overflow-y: scroll;
+
+            p {
+                overflow: hidden;
+                display: flex;
+                justify-content: space-between;
+            }
+
+            .p-btn {
+                width: 50px !important;
+                cursor: pointer;
+                color: #0074DA;
+            }
+
+            span {
+                display: inline-block;
+                width: calc(100% - 100px);
+            }
+
+            .el-icon-error {
+                float: right;
+                font-size: 20px;
+                margin-top: 9px;
+                cursor: pointer;
+            }
+        }
+
+        .treeUser {
+            margin: 0;
+            border: 1px solid #ddd;
+
+            p {
+                background: #f4f4f4;
+                padding: 0 20px;
+                margin-bottom: 5px;
+            }
+        }
+
+        .treeUserb {
+            width: calc(100% - 80px);
+            border: 1px solid #ddd;
+            background: #f4f4f4;
+            border-radius: 3px;
+            height: auto;
+            overflow: hidden;
+
+            p {
+                display: inline-block;
+                padding: 0 20px;
+                margin-bottom: 5px;
+            }
+        }
+    }
+
+    .adv-type {
+        margin-top: 20px;
+        display: flex;
+        justify-content: space-between;
+        flex-wrap: wrap;
+        // border: 1px solid #ddd;
+        border-radius: 5px;
+        padding: 20px;
+        box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+
+        div {
+            width: 33%;
+            text-align: center;
+            height: 80px;
+            overflow: hidden;
+            min-width: 100px;
+            cursor: pointer;
+            padding-top: 10px;
+            margin: 10px 0;
+        }
+
+        div:hover {
+            background: #CFE8FC;
+            border-radius: 5px;
+        }
+
+        span {
+            width: 100%;
+            display: inline-block;
+            height: 40px;
+
+            // line-height: 40px;
+            i {
+                color: #0074D9;
+                font-size: 36px;
+            }
+        }
+    }
+
+    .tempbox {
+        // border: 1px solid #ddd;
+        padding: 5px;
+        margin-bottom: 10px;
+
+        span {
+            display: inline-block;
+            width: 40%;
+            padding: 0 10px;
+        }
+
+        span:first-child {
+            width: 20%;
+            text-align: center;
+        }
+    }
+
+    .tempbox2 {
+
+        border: 1px solid #ddd;
+        border-bottom: 0;
+        span {
+            display: inline-block;
+            width: 25%;
+            padding: 0 10px;
+            border-left: 1px solid #ddd;
+            padding: 5px;
+        }
+    }
+    .tempbox2:last-child{
+        border-bottom: 1px solid #ddd;
+    }
+
+    .treeUserp {
+        p {
+            padding: 5px;
+        }
+
+        p:hover {
+            background: #01BEF0;
+            color: #fff;
+            cursor: pointer;
+        }
+    }
+</style>

+ 474 - 0
src/pages/main/businessOutsourc/stageSeatcheck.vue

@@ -0,0 +1,474 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <div class="search">
+                <span v-if="tsts == 1">
+                    <el-button type="primary" size="medium" @click="tijiao">提交</el-button>
+                    <myUpload style="display:inline-block;" :fileInfo="fileInfot"
+                        :fileList="fileInfot.fileList" @uploadBack='uploadBack'></myUpload>
+                    <el-button type="primary" @click="downmb" size="medium">下载模板</el-button>
+                </span>
+                <span v-if="tsts == 0">
+                    <el-button type="primary" @click="daochu" size="medium">导出</el-button>
+                </span>
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+
+                    <el-table-column prop="cityName" label="地市">
+                    </el-table-column>
+                    <el-table-column prop="areaName" label="区县">
+                    </el-table-column>
+                    <el-table-column prop="channelCode" label="渠道编码">
+                    </el-table-column>
+                    <el-table-column prop="channelName" label="渠道名称">
+                    </el-table-column>
+                    <el-table-column prop="channelType" label="渠道类型">
+                    </el-table-column>
+                    <el-table-column prop="staffName" label="姓名">
+                    </el-table-column>
+                    <el-table-column prop="staffPlace" label="档位">
+                    </el-table-column>
+                    <el-table-column prop="bossNo" label="BOSS工号">
+                    </el-table-column>
+                    <el-table-column prop="staffNo" label="台席编号">
+                    </el-table-column>
+                    <el-table-column prop="month" label="统计月份">
+                    </el-table-column>
+                    <el-table-column prop="evaCoe" label="考评系数">
+                    </el-table-column>
+                    <el-table-column prop="settleAmount" label="结算金额">
+                    </el-table-column>
+                    <el-table-column prop="trainDays" label="培训天数">
+                    </el-table-column>
+                    <el-table-column prop="trainAmount" label="培训费">
+                    </el-table-column>
+                    <el-table-column prop="practiceDays" label="实习天数">
+                    </el-table-column>
+                    <el-table-column prop="practiceAmount" label="实习期费用">
+                    </el-table-column>
+                    <el-table-column prop="workDays" label="上岗天数">
+                    </el-table-column>
+                    <el-table-column prop="sickDays" label="病假天数">
+                    </el-table-column>
+                    <el-table-column prop="sickAmount" label="病假费用">
+                    </el-table-column>
+                    <el-table-column prop="maternityDays" label="产假天数">
+                    </el-table-column>
+                    <el-table-column prop="leaveDays" label="事假天数">
+                    </el-table-column>
+                    <el-table-column prop="leaveAmount" label="事假扣款">
+                    </el-table-column>
+                    <el-table-column prop="absentDays" label="旷工天数">
+                    </el-table-column>
+                    <el-table-column prop="yearHoliday" label="年休假">
+                    </el-table-column>
+                    <el-table-column prop="marryHoliday" label="婚假">
+                    </el-table-column>
+                    <el-table-column prop="deathHoliday" label="丧假">
+                    </el-table-column>
+                    <el-table-column prop="familyPlanHoliday" label="计划生育假">
+                    </el-table-column>
+                    <el-table-column prop="paidHoliday" label="带薪休假天数">
+                    </el-table-column>
+                    <el-table-column v-for="(item,index) in kzData" :prop="item.colName" :label="item.colContent">
+                    </el-table-column>
+
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+        </div>
+
+        <myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible"></myMessage>
+    </fullscreen>
+
+</template>
+<script>
+    import mySearch from "../../../components/search.vue";
+    import myMessage from "../../../components/myMessage.vue"
+    import toolList from '../../../components/toolList'
+    import myUpload from '../../../components/upload'
+    import uploadDown from '../../../components/uploadDown.vue'
+    import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+
+    export default {
+        components: {
+            mySearch,
+            myMessage,
+            toolList,
+            myUpload,
+            uploadDown,
+            deptTreeOnly
+        },
+        data() {
+
+            return {
+                tooltit: '台席管理',
+                fullscreen: false,
+                total: 0,
+                pageSize: 1,
+                tableData: [{}],
+                dialogStatus: false,
+                disableStatus: false,
+                titname: '',
+                infolist: {
+
+                },
+                userInfo: {},
+                params: {},
+                centerDialogVisible: false,
+                messTit: '',
+                delid: '',
+                loading: false,
+                loadinged: false,
+                fileInfot: {
+                    type: 'btn',
+                    typename: '导入',
+                    btntype: 'primary',
+                    limit: 1,
+                    url: '/market/cStoreOutWo/importData',
+                    fileList: [],
+                    woNo: "",
+                },
+                tsts:'',
+                kzData:[]
+            }
+        },
+        methods: {
+            tijiao(){
+                this.$http({
+                    url: "/market/cStoreOutWo/commitInfoByCity",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {woNo:this.$route.query.id.split(",")[0]},
+                }).then((res) => {
+                    this.getList(this.params, this.pageSize);
+                });
+            },
+            uploadBack(v) {
+            },
+            daochu(){
+                let param = new FormData();
+                param.append("woNo", this.$route.query.id.split(",")[0]);
+                this.$http({
+                    url: '/market/cStoreOutWo/excelExport',
+                    method: "post",
+                    responseType: 'blob',
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: param,
+                }).then((response) => {
+                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                        let blob = new Blob([response.data], {
+                            type: response.data.type
+                        });
+                        window.navigator.msSaveOrOpenBlob(blob, '数据.xlsx');
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([response.data])
+                        var downloadElement = document.createElement('a')
+                        var href = window.URL.createObjectURL(blob);
+                        downloadElement.href = href;
+                        downloadElement.download = '数据.xlsx';
+                        document.body.appendChild(downloadElement);
+                        downloadElement.click();
+                        document.body.removeChild(downloadElement);
+                        window.URL.revokeObjectURL(href);
+                    }
+                });
+            },
+            downmb(){
+                let param = new FormData();
+                param.append("woNo", this.$route.query.id.split(",")[0]);
+                this.$http({
+                    url: '/market/cStoreOutWo/downLoadTemp',
+                    method: "post",
+                    responseType: 'blob',
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: param,
+                }).then((response) => {
+                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                        let blob = new Blob([response.data], {
+                            type: response.data.type
+                        });
+                        window.navigator.msSaveOrOpenBlob(blob, '模板.csv');
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([response.data])
+                        var downloadElement = document.createElement('a')
+                        var href = window.URL.createObjectURL(blob);
+                        downloadElement.href = href;
+                        downloadElement.download = '模板.csv';
+                        document.body.appendChild(downloadElement);
+                        downloadElement.click();
+                        document.body.removeChild(downloadElement);
+                        window.URL.revokeObjectURL(href);
+                    }
+                });
+            },
+            //获取列表
+            getList(v, n) {
+                this.pageSize = n;
+                let _this = this;
+                this.loading = true;
+                v.woNo = this.$route.query.id.split(",")[0]
+                this.$http({
+                    url: "/market/cStoreOutWo/queryMkStoreOutInfoPage",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                        "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                    },
+                    data: v,
+                }).then((res) => {
+                    this.tableData = res.data.data;
+                    this.total = res.data.totalRecord;
+                    this.loading = false;
+                });
+            },
+            // 分页
+            currchange(v) {
+                this.pageSize = v;
+                this.getList(this.params, this.pageSize);
+            },
+            //申请
+            dialogCheck(v, n) {
+
+            },
+            //功能栏
+            iconCli(v) {
+                if (v === 1) {
+                    this.getList(this.params, this.pageSize);
+                }
+                if (v === 2) {
+                    this.fullscreen = !this.fullscreen
+                }
+            },
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+                this.fileInfot.woNo = this.$route.query.id.split(",")[0];
+                this.tsts = this.$route.query.id.split(",")[1];
+
+                this.$http({
+                    url: "/market/cStoreOutWo/queryMkStoreOutInfoExtList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {woNo : this.$route.query.id.split(",")[0]}
+                }).then((res) => {
+                    this.kzData = res.data
+                });
+            },
+        },
+        mounted() {
+            this.getList({}, 1);
+            this.getUser();
+        },
+        created() {
+
+        }
+    }
+</script>
+<style scoped lang="scss">
+    .onetab {
+        margin-bottom: 20px;
+        padding: 0 20px;
+    }
+
+    .titbox {
+        div {
+            float: right;
+
+            i {
+                font-size: 22px;
+                margin-left: 20px;
+                cursor: pointer;
+            }
+        }
+    }
+
+    .tabbox {
+        margin-top: 15px;
+    }
+
+    .pageBox {
+        text-align: right;
+        margin-top: 10px;
+    }
+
+    .info-line {
+        width: 100%;
+        display: block;
+        padding-left: 20px;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 80px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 100px);
+        }
+    }
+
+    .online {
+        width: 100%;
+
+        .el-select {
+            width: calc(100% - 100px);
+        }
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 80px);
+        }
+
+        .tree {
+            width: calc(50% - 60px);
+            display: inline-block;
+            margin-right: 20px;
+            height: 300px;
+            overflow-y: scroll;
+            p {
+                overflow: hidden;
+                display: flex;
+                justify-content: space-between;
+            }
+
+            .p-btn {
+                width: 50px !important;
+                cursor: pointer;
+                color: #0074DA;
+            }
+
+            span {
+                display: inline-block;
+                width: calc(100% - 100px);
+            }
+
+            .el-icon-error {
+                float: right;
+                font-size: 20px;
+                margin-top: 9px;
+                cursor: pointer;
+            }
+        }
+
+        .treeUser {
+            margin: 0;
+            border: 1px solid #ddd;
+
+            p {
+                background: #f4f4f4;
+                padding: 0 20px;
+                margin-bottom: 5px;
+            }
+        }
+
+        .treeUserb {
+            width: calc(100% - 80px);
+            border: 1px solid #ddd;
+            background: #f4f4f4;
+            border-radius: 3px;
+            height: auto;
+            overflow: hidden;
+
+            p {
+                display: inline-block;
+                padding: 0 20px;
+                margin-bottom: 5px;
+            }
+        }
+    }
+
+    .adv-type {
+        margin-top: 20px;
+        display: flex;
+        justify-content: space-between;
+        flex-wrap: wrap;
+        // border: 1px solid #ddd;
+        border-radius: 5px;
+        padding: 20px;
+        box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+
+        div {
+            width: 33%;
+            text-align: center;
+            height: 80px;
+            overflow: hidden;
+            min-width: 100px;
+            cursor: pointer;
+            padding-top: 10px;
+            margin: 10px 0;
+        }
+
+        div:hover {
+            background: #CFE8FC;
+            border-radius: 5px;
+        }
+
+        span {
+            width: 100%;
+            display: inline-block;
+            height: 40px;
+
+            // line-height: 40px;
+            i {
+                color: #0074D9;
+                font-size: 36px;
+            }
+        }
+    }
+    .tempbox{
+        // border: 1px solid #ddd;
+        padding: 5px;
+        margin-bottom: 10px;
+        span{
+            display: inline-block;
+            width: 40%;
+            padding: 0 10px;
+        }
+        span:first-child{
+            width: 20%;
+            text-align: center;
+        }
+    }
+    .treeUserp {
+        p {
+            padding: 5px;
+        }
+
+        p:hover {
+            background: #01BEF0;
+            color: #fff;
+            cursor: pointer;
+        }
+    }
+</style>

+ 546 - 0
src/pages/main/businessOutsourc/standard.vue

@@ -0,0 +1,546 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <div class="search">
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <el-button type="primary" @click="dialogCheck(3)" size="medium">添加</el-button>
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                    <el-table-column prop="normContent" label="管理规范名称">
+                    </el-table-column>
+                    <el-table-column prop="cityName" label="来源">
+                    </el-table-column>
+                    <el-table-column prop="opName" label="操作人">
+                    </el-table-column>
+                    <el-table-column prop="opTime" label="发布时间">
+                    </el-table-column>
+                    <el-table-column label="操作" width="220px" align="center">
+                        <template slot-scope="scope">
+                            <el-button size="mini" type="primary" @click="dialogCheck(1,scope.row)">查看</el-button>
+                            <el-button size="mini" type="primary" @click="dialogCheck(2,scope.row)">修改</el-button>
+                            <el-button size="mini" type="danger" @click="delLine(scope.row)">删除</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+        </div>
+
+        <el-dialog :title="titname" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
+            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia" :fullscreen="true">
+            <div v-loading="loadinged">
+                <el-form :model="infolist" ref="infolist" :rules="rules"
+                    style="height: calc(100vh - 180px);overflow-y: scroll;">
+
+                    <el-form-item prop="normContent" class="info-line online">
+                        <span>管理规范名称</span>
+                        <el-input v-model="infolist.normContent" placeholder="管理规范名称" :disabled="disableStatus">
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item class="info-line online">
+                        <span>管理规范内容</span>
+                        <el-input v-model="infolist.normName" placeholder="管理规范内容" type="textarea" :rows="4"
+                            :disabled="disableStatus">
+                        </el-input>
+                    </el-form-item>
+
+                    <div v-if="disableStatus">
+                        <uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
+                    </div>
+                    <div v-if="!disableStatus">
+                        <myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList">
+                        </myUpload>
+                    </div>
+
+                </el-form>
+                <div slot="footer" style="float: right;margin-top: 20px;">
+                    <el-button type="primary" @click="dialogCliadd(2)">确 定</el-button>
+                    <el-button @click="dialogCliadd(1)">取 消</el-button>
+                </div>
+            </div>
+        </el-dialog>
+        <myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible"></myMessage>
+    </fullscreen>
+
+</template>
+<script>
+    import mySearch from "../../../components/search.vue";
+    import myMessage from "../../../components/myMessage.vue"
+    import toolList from '../../../components/toolList'
+    import myUpload from '../../../components/upload'
+    import uploadDown from '../../../components/uploadDown.vue'
+    import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+
+    export default {
+        components: {
+            mySearch,
+            myMessage,
+            toolList,
+            myUpload,
+            uploadDown,
+            deptTreeOnly
+        },
+        data() {
+            const coopName = (rule, value, callback) => {
+                if (!this.infolist.coopName) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            return {
+                rules: {
+                    coopName: [{
+                        required: true,
+                        trigger: 'blur',
+                        validator: coopName
+                    }],
+                },
+                searchList: [{
+                        type: 'input',
+                        tit: '规范名称',
+                        value: '',
+                        width: '49%'
+                    },
+                    {
+                        type: 'sel',
+                        tit: '来源',
+                        value: '',
+                        width: '49%',
+                        options:[]
+                    },
+                ],
+                tooltit: '管理规范',
+                fullscreen: false,
+                total: 0,
+                pageSize: 1,
+                tableData: [{}],
+                dialogStatus: false,
+                disableStatus: false,
+                titname: '',
+                infolist: {
+                    signTime:'',
+                },
+                userInfo: {},
+                params: {},
+                centerDialogVisible: false,
+                messTit: '',
+                delid: '',
+                loading: false,
+                loadinged: false,
+                docType:[],
+                contentType:[],
+                infodata:[{}],
+                infodatat:[{}],
+                datalist: {
+                    url: '/market/compatt/downfile',
+                    type: 1
+                },
+                uploadstatus: false,
+                attList: [],
+                fileInfo: {
+                    limit: 5,
+                    url: '/market/cmkAttachInfo/upload',
+                    fileList: [],
+                    uploadType:'storeNorm'
+                },
+            }
+        },
+        methods: {
+            uploadBack(v) {
+                this.attList = v;
+            },
+            //搜索数据
+            searchInfo(v) {
+                this.params = {};
+                v[0] ? this.params.normContent = v[0] : '';
+                v[1] ? this.params.cityName = v[1] : '';
+                this.getList(this.params, this.pageSize);
+            },
+            closedia() {
+                this.infolist = {
+                    signTime:'',
+                };
+                this.infodata = [{}];
+                this.infodatat = [{}];
+                this.attList = [];
+                this.fileInfo.fileList = [];
+                this.dialogStatus = false;
+            },
+            //获取列表
+            getList(v, n) {
+                this.pageSize = n;
+                let _this = this;
+                this.loading = true;
+                this.$http({
+                    url: "/market/cStoreOutNorm/queryPage",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                        "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                    },
+                    data: v,
+                }).then((res) => {
+                    this.tableData = res.data.data;
+                    this.total = res.data.totalRecord;
+                    this.loading = false;
+                });
+            },
+            // 分页
+            currchange(v) {
+                this.pageSize = v;
+                this.getList(this.params, this.pageSize);
+            },
+            //申请
+            dialogCheck(v, n) {
+                this.dialogStatus = true;
+                let infolist = Object.assign({}, n);
+                if (v === 1) {
+                    this.titname = '查看';
+                    this.disableStatus = true;
+                } else if (v === 2) {
+                    this.titname = '修改';
+                    this.disableStatus = false;
+                } else if (v === 3) {
+                    this.titname = '添加';
+                    this.disableStatus = false;
+                    return
+                }
+                this.infolist = infolist;
+                this.$http({
+                    url: "/market/cStoreOutNorm/query",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        id: n.id
+                    },
+                }).then((res) => {
+                    res.data.attList.forEach(item => {
+                        this.fileInfo.fileList.push({
+                            name: item.fileName,
+                            url: '',
+                            id: item.id,
+                            fileCode: item.fileCode,
+                            fileName: item.fileName
+                        });
+                        this.attList.push({
+                            name: item.fileName,
+                            url: '',
+                            id: item.id,
+                            fileCode: item.fileCode,
+                            fileName: item.fileName
+                        });
+                    })
+                    this.datalist.attList = [];
+                    this.datalist.attList = res.data.attList;
+                    this.infolist.attList = [];
+                    this.infolist.attList = res.data.attList;
+                    this.uploadstatus = !this.uploadstatus;
+                });
+            },
+            //添加
+            dialogCliadd(v) {
+                if (v == 1 || this.titname == '查看') {
+                    this.infolist = {
+                        signTime:'',
+                    };
+                    this.infodata = [{}];
+                    this.infodatat = [{}];
+                    this.attList = [];
+                    this.fileInfo.fileList = [];
+                    this.dialogStatus = false;
+                    return
+                }
+                let _this = this;
+                let info = this.infolist;
+                info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD");
+                info.opNo = this.userInfo.loginNo;
+                info.opName = this.userInfo.loginName;
+                let attList = [];
+                for (let i = 0; i < this.attList.length; i++) {
+                    attList.push({
+                        id: this.attList[i].id,
+                        fileCode: this.attList[i].fileCode,
+                        fileName: this.attList[i].fileName,
+                    });
+                }
+                info.attList = attList;
+
+                if (this.titname == '修改') {
+                    this.submitInfo("/market/cStoreOutNorm/update", info);
+                } else {
+                    this.submitInfo("/market/cStoreOutNorm/add", info);
+                }
+            },
+
+            submitInfo(u, v) {
+                let _this = this;
+                this.$refs.infolist.validate(valid => {
+                    if (valid) {
+                        this.$http({
+                            url: u,
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: v,
+                        }).then((res) => {
+                            if (res.data.result === 1) {
+                                _this.$message({
+                                    message: res.data.desc,
+                                    type: 'error'
+                                });
+                            } else {
+                                _this.$message({
+                                    message: '成功',
+                                    type: 'success'
+                                });
+                                _this.closedia();
+                                _this.infolist = {
+                                    signTime:'',
+                                };
+                                _this.infodata = [{}];
+                                _this.infodatat = [{}];
+                                _this.getList(this.params, this.pageSize);
+                            }
+
+                        });
+                    }
+                })
+            },
+            closeMessage(v) {
+                this.centerDialogVisible = false;
+                let _this = this;
+                if (v === 1) {
+                    _this.$http({
+                        url: "/market/cStoreOutNorm/del",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        data: {
+                            id: this.delid
+                        },
+                    }).then((res) => {
+                        if (res.data.result === 1) {
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'error'
+                            });
+                        } else {
+                            _this.$message({
+                                message: '删除成功',
+                                type: 'success'
+                            });
+                            _this.getList(this.params, this.pageSize);
+                        }
+                    });
+                }
+            },
+            //删除
+            delLine(v) {
+                this.centerDialogVisible = true;
+                this.messTit = '即将删除此条数据, 是否删除?';
+                this.delid = v.id;
+            },
+            //功能栏
+            iconCli(v) {
+                if (v === 1) {
+                    this.getList(this.params, this.pageSize);
+                }
+                if (v === 2) {
+                    this.fullscreen = !this.fullscreen
+                }
+            },
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+                this.searchList[1].options = []
+                this.$http({
+                    url: "/sysmgr/csysdept/queryRegionDeptList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {},
+                }).then((res) => {
+                    this.searchList[1].options.push({
+                        dataName:'省公司',
+                        dataCode:'省公司'
+                    })
+                    res.data[0].children.forEach(item=>{
+                        this.searchList[1].options.push({
+                            dataName:item.ou,
+                            dataCode:item.ou
+                        })
+                    })
+                });
+            },
+        },
+        mounted() {
+            this.getList({}, 1);
+            this.getUser();
+        },
+        created() {
+
+        }
+    }
+</script>
+<style scoped lang="scss">
+    .onetab {
+        margin-bottom: 20px;
+        padding: 0 20px;
+    }
+
+    .titbox {
+        div {
+            float: right;
+
+            i {
+                font-size: 22px;
+                margin-left: 20px;
+                cursor: pointer;
+            }
+        }
+    }
+
+    .tabbox {
+        margin-top: 15px;
+    }
+
+    .pageBox {
+        text-align: right;
+        margin-top: 10px;
+    }
+
+    .info-line {
+        width: 100%;
+        display: block;
+        padding-left: 20px;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 100px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 120px);
+        }
+    }
+
+    .online {
+        width: 100%;
+
+        .el-select {
+            width: calc(100% - 100px);
+        }
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 120px);
+        }
+
+        .tree {
+            width: calc(50% - 60px);
+            display: inline-block;
+            margin-right: 20px;
+            height: 300px;
+            overflow-y: scroll;
+
+            .el-icon-error {
+                float: right;
+                font-size: 20px;
+                margin-top: 9px;
+                cursor: pointer;
+            }
+        }
+
+        .treeUser {
+            margin: 0;
+            border: 1px solid #ddd;
+
+            p {
+                background: #f4f4f4;
+                padding: 0 20px;
+                margin-bottom: 5px;
+            }
+        }
+
+        .treeUserb {
+            width: calc(100% - 100px);
+            border: 1px solid #ddd;
+            background: #f4f4f4;
+            border-radius: 3px;
+            height: auto;
+            overflow: hidden;
+
+            p {
+                display: inline-block;
+                padding: 0 20px;
+                margin-bottom: 5px;
+            }
+        }
+    }
+
+    .adv-type {
+        margin-top: 20px;
+        display: flex;
+        justify-content: space-between;
+        flex-wrap: wrap;
+        // border: 1px solid #ddd;
+        border-radius: 5px;
+        padding: 20px;
+        box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+
+        div {
+            width: 33%;
+            text-align: center;
+            height: 80px;
+            overflow: hidden;
+            min-width: 100px;
+            cursor: pointer;
+            padding-top: 10px;
+            margin: 10px 0;
+        }
+
+        div:hover {
+            background: #CFE8FC;
+            border-radius: 5px;
+        }
+
+        span {
+            width: 100%;
+            display: inline-block;
+            height: 40px;
+
+            // line-height: 40px;
+            i {
+                color: #0074D9;
+                font-size: 36px;
+            }
+        }
+    }
+</style>

+ 1 - 1
src/pages/main/competitor/addCompetitor.vue

@@ -474,7 +474,7 @@
                 }
                 }
                 this.$refs.infolist.validate(valid => {
                 this.$refs.infolist.validate(valid => {
                     if (valid) {
                     if (valid) {
-                        let nowdata = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+                        let nowdata = _this.$formatDate(new Date(), "YYYY-MM-DD");
                         this.infolist.opTime = nowdata;
                         this.infolist.opTime = nowdata;
                         this.infolist.sts = 0;
                         this.infolist.sts = 0;
                         this.infolist.stsDesc = '未审核';
                         this.infolist.stsDesc = '未审核';

+ 1 - 1
src/pages/main/competitor/changeCompet.vue

@@ -566,7 +566,7 @@
                 this.infolist.admFlag === '1' ? this.infolist.admFlagDesc = '否' : this.infolist.admFlagDesc = '是';
                 this.infolist.admFlag === '1' ? this.infolist.admFlagDesc = '否' : this.infolist.admFlagDesc = '是';
                 this.$refs.infolist.validate(valid => {
                 this.$refs.infolist.validate(valid => {
                     if (valid) {
                     if (valid) {
-                        let nowdata = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+                        let nowdata = _this.$formatDate(new Date(), "YYYY-MM-DD");
                         this.infolist.opTime = nowdata;
                         this.infolist.opTime = nowdata;
                         this.infolist.sts = 0;
                         this.infolist.sts = 0;
                         this.infolist.stsDesc = '未审核';
                         this.infolist.stsDesc = '未审核';

+ 2 - 2
src/pages/main/competitor/compete.vue

@@ -130,8 +130,8 @@
         methods: {
         methods: {
             searchInfo(v) {
             searchInfo(v) {
                 v[0] ? this.params.region = v[0] : this.params.region = '';
                 v[0] ? this.params.region = v[0] : this.params.region = '';
-                v[1] ? this.params.timefrom = this.$formatDate(v[1], "YYYY-MM-DD HH:mm:ss") : this.params.timefrom = '';
-                v[2] ? this.params.timeto = this.$formatDate(v[2], "YYYY-MM-DD HH:mm:ss") : this.params.timeto = '';
+                v[1] ? this.params.timefrom = this.$formatDate(v[1], "YYYY-MM-DD") : this.params.timefrom = '';
+                v[2] ? this.params.timeto = this.$formatDate(v[2], "YYYY-MM-DD") : this.params.timeto = '';
                 this.getCompet();
                 this.getCompet();
             },
             },
             //获取数据
             //获取数据

+ 2 - 2
src/pages/main/competitor/competeInfo.vue

@@ -77,8 +77,8 @@
             //搜索数据
             //搜索数据
             searchInfo(v) {
             searchInfo(v) {
                 this.params = {};
                 this.params = {};
-                v[0] ? this.params.opTimeFrom = this.$formatDate(v[0], "YYYY-MM-DD HH:mm:ss") : '';
-                v[1] ? this.params.opTimeTo = this.$formatDate(v[1], "YYYY-MM-DD HH:mm:ss") : '';
+                v[0] ? this.params.opTimeFrom = this.$formatDate(v[0], "YYYY-MM-DD") : '';
+                v[1] ? this.params.opTimeTo = this.$formatDate(v[1], "YYYY-MM-DD") : '';
                 this.getList(this.params, this.pageSize);
                 this.getList(this.params, this.pageSize);
             },
             },
             //获取列表
             //获取列表

+ 2 - 2
src/pages/main/compvis/compvisList.vue

@@ -255,11 +255,11 @@
                 v[2] ?
                 v[2] ?
                     (this.params.startTime = this.$formatDate(
                     (this.params.startTime = this.$formatDate(
                         v[2],
                         v[2],
-                        "yyyy-MM-DD hh:mm:ss"
+                        "YYYY-MM-DD"
                     )) :
                     )) :
                     "";
                     "";
                 v[3] ?
                 v[3] ?
-                    (this.params.endTime = this.$formatDate(v[3], "yyyy-MM-DD hh:mm:ss")) :
+                    (this.params.endTime = this.$formatDate(v[3], "YYYY-MM-DD")) :
                     "";
                     "";
                 this.getList(this.params, this.pageSize);
                 this.getList(this.params, this.pageSize);
             },
             },

+ 110 - 14
src/pages/main/cooOperation/index.vue

@@ -135,21 +135,48 @@
 				</el-form>
 				</el-form>
 
 
 				<div slot="footer" class="dialog-footer myfooter">
 				<div slot="footer" class="dialog-footer myfooter">
-					<el-button v-if="titname != '查看' && vision == '流程发起'" type="primary" @click="dialogCli(2)">确 定
+					<el-button v-if="titname != '查看' && vision == '流程发起'" type="primary" @click="checkexa = true">确 定
 					</el-button>
 					</el-button>
 					<el-button v-if="titname != '查看' && vision == '填报信息'" type="primary" @click="dialogCli(2)">确 定
 					<el-button v-if="titname != '查看' && vision == '填报信息'" type="primary" @click="dialogCli(2)">确 定
 					</el-button>
 					</el-button>
-					<el-button v-if="titname != '查看' && vision == '审批'" type="primary" @click="dialogCli(2)">通 过
+					<el-button v-if="titname != '查看' && vision == '审批'" type="primary" @click="checkexa = true">通 过
 					</el-button>
 					</el-button>
 					<el-button v-if="titname != '查看' && vision == '审批'" type="primary" @click="dialogCli(1)">打 回
 					<el-button v-if="titname != '查看' && vision == '审批'" type="primary" @click="dialogCli(1)">打 回
 					</el-button>
 					</el-button>
-					<el-button v-if="titname == '添加'" type="primary" @click="dialogCliadd">确 定</el-button>
+					<el-button v-if="titname == '添加'" type="primary" @click="checkexa = true">确 定</el-button>
 					<el-button v-if="titname == '查看'" @click="dialogCli(3)">确 定</el-button>
 					<el-button v-if="titname == '查看'" @click="dialogCli(3)">确 定</el-button>
 					<el-button @click="dialogCli(3)">取 消</el-button>
 					<el-button @click="dialogCli(3)">取 消</el-button>
 				</div>
 				</div>
 			</div>
 			</div>
 		</el-dialog>
 		</el-dialog>
 
 
+        <el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
+        	:modal-append-to-body="false" :close-on-click-modal="false">
+        	<div>
+
+        		<el-form :model="infolist" ref="infolist" :rules="rules">
+        			<el-form-item prop="visiblec" class="info-line online">
+        				<span>审批人员</span>
+        				<deptTreeOnly class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
+        					:type="depttype" :closeList="closeList"></deptTreeOnly>
+        				<div class="tree treeUser">
+        					<p>{{treeListonly.leaderAuditName}}
+        						<i v-if="treeListonly.leaderAuditName" @click="deletes()"
+        							class="el-icon-error"></i>
+        					</p>
+        				</div>
+        			</el-form-item>
+        		</el-form>
+
+        		<div slot="footer" style="text-align: right;padding-bottom: 20px;">
+        			<el-button type="primary" @click="dialogCliadd" v-if="!visionchonly">确 定</el-button>
+        			<el-button type="primary" @click="dialogCli(2)" v-if="visionchonly">确 定</el-button>
+        			<el-button @click="checkexa = false">取 消</el-button>
+        		</div>
+        	</div>
+        </el-dialog>
+
+
 		<myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
 		<myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
 			v-if="centerDialogVisible"></myMessage>
 			v-if="centerDialogVisible"></myMessage>
 	</fullscreen>
 	</fullscreen>
@@ -161,6 +188,7 @@
 	import toolList from '../../../components/toolList'
 	import toolList from '../../../components/toolList'
 	import myUpload from '../../../components/upload'
 	import myUpload from '../../../components/upload'
 	import uploadDown from '../../../components/uploadDown.vue'
 	import uploadDown from '../../../components/uploadDown.vue'
+    import deptTreeOnly from "../../../components/deptTreeOnly.vue"
 
 
 	export default {
 	export default {
 		components: {
 		components: {
@@ -168,7 +196,8 @@
 			myMessage,
 			myMessage,
 			toolList,
 			toolList,
 			myUpload,
 			myUpload,
-			uploadDown
+			uploadDown,
+            deptTreeOnly
 		},
 		},
 		data() {
 		data() {
 			const woName = (rule, value, callback) => {
 			const woName = (rule, value, callback) => {
@@ -207,7 +236,7 @@
 				disableStatus: false,
 				disableStatus: false,
 				titname: '',
 				titname: '',
 				infolist: {
 				infolist: {
-			
+
 				},
 				},
 				userInfo: {},
 				userInfo: {},
 				params: {},
 				params: {},
@@ -244,10 +273,24 @@
 					id: 0,
 					id: 0,
 					name: '否'
 					name: '否'
 				}],
 				}],
-				infodatas: [{}, {}, {}, {}, {}]
+				infodatas: [{}, {}, {}, {}, {}],
+                checkexa: false,
+                treeListonly: {},
+                defaultList: [],
+                closeList: false,
+                visionchonly: false,
+                depttype: 0,
 			}
 			}
 		},
 		},
 		methods: {
 		methods: {
+            deletes() {
+            	this.treeListonly = {};
+            	this.closeList = !this.closeList;
+            },
+            treeCheckonly(v) {
+            	this.treeListonly = v;
+            },
+
 			choline(v, n) {
 			choline(v, n) {
 				if (v == 1) {
 				if (v == 1) {
 					this.infodatas.push({})
 					this.infodatas.push({})
@@ -260,6 +303,7 @@
 				this.attList = [];
 				this.attList = [];
 				this.fileInfo.fileList = [];
 				this.fileInfo.fileList = [];
 				this.dialogStatus = false;
 				this.dialogStatus = false;
+				this.checkexa = false;
 			},
 			},
 			//获取列表
 			//获取列表
 			getList(v, n) {
 			getList(v, n) {
@@ -330,16 +374,20 @@
 					this.infolist.opNo = infolist.opNo;
 					this.infolist.opNo = infolist.opNo;
 					this.infolist.opTime = infolist.opTime;
 					this.infolist.opTime = infolist.opTime;
 					this.infolist.woNo = infolist.woNo;
 					this.infolist.woNo = infolist.woNo;
+                    this.visionchonly = false;
 					if (res.data.taskList[res.data.taskList.length - 1].taskName == '流程发起') {
 					if (res.data.taskList[res.data.taskList.length - 1].taskName == '流程发起') {
 						this.vision = '流程发起';
 						this.vision = '流程发起';
 						if(this.titname == '审批'){
 						if(this.titname == '审批'){
 							this.disableStatus = false;
 							this.disableStatus = false;
 						}
 						}
+                        this.visionchonly = true;
 					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '科室主任审批') {
 					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '科室主任审批') {
 						this.vision = '审批';
 						this.vision = '审批';
+                        this.visionchonly = true;
 					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '主管副总审批') {
 					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '主管副总审批') {
 						this.vision = '审批';
 						this.vision = '审批';
 						this.visionsts = '2';
 						this.visionsts = '2';
+                        this.visionchonly = true;
 					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '填报信息') {
 					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '填报信息') {
 						this.vision = '填报信息';
 						this.vision = '填报信息';
 					}
 					}
@@ -374,10 +422,11 @@
 					this.infolist = {};
 					this.infolist = {};
 					this.attList = [];
 					this.attList = [];
 					this.fileInfo.fileList = [];
 					this.fileInfo.fileList = [];
+                    this.checkexa = false;
 					return
 					return
 				}
 				}
 				let _this = this;
 				let _this = this;
-				this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss")
+				this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD")
 				if (v === 1) {
 				if (v === 1) {
 					let params = {
 					let params = {
 						dealType: '1',
 						dealType: '1',
@@ -422,10 +471,12 @@
 						woNo: this.infolist.woNo,
 						woNo: this.infolist.woNo,
 
 
 					}
 					}
-					if(this.vision == '审批'&&this.visionsts == '2'){
-						param.params.assigneeNo=this.opno;
-						param.params.assigneeName=this.opname;
-					}
+					// if(this.vision == '审批'&&this.visionsts == '2'){
+					// 	param.params.assigneeNo=this.opno;
+					// 	param.params.assigneeName=this.opname;
+					// }
+                    param.params.assigneeNo = this.treeListonly.leaderAuditNo;
+                    param.params.assigneeName = this.treeListonly.leaderAuditName;
 					if (this.vision == '流程发起') {
 					if (this.vision == '流程发起') {
 						let attList = [];
 						let attList = [];
 						for (let i = 0; i < this.attList.length; i++) {
 						for (let i = 0; i < this.attList.length; i++) {
@@ -449,7 +500,7 @@
 			dialogCliadd(v) {
 			dialogCliadd(v) {
 				let _this = this;
 				let _this = this;
 				let info = {};
 				let info = {};
-				info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+				info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD");
 				info.opNo = this.userInfo.loginNo;
 				info.opNo = this.userInfo.loginNo;
 				info.opName = this.userInfo.loginName;
 				info.opName = this.userInfo.loginName;
 				info.woTitle = this.infolist.woName;
 				info.woTitle = this.infolist.woName;
@@ -458,7 +509,7 @@
 				let infodatas = [];
 				let infodatas = [];
 				for (let i = 0; i < this.infodatas.length; i++) {
 				for (let i = 0; i < this.infodatas.length; i++) {
 					if (this.infodatas[i].factoryName || this.infodatas[i].assessTime || this.infodatas[i].assessScore || this.infodatas[i].followAction) {
 					if (this.infodatas[i].factoryName || this.infodatas[i].assessTime || this.infodatas[i].assessScore || this.infodatas[i].followAction) {
-						this.infodatas[i].assessTime = this.infodatas[i].assessTime?this.$formatDate(this.infodatas[i].assessTime, "YYYY-MM-DD HH:mm:ss"):'';
+						this.infodatas[i].assessTime = this.infodatas[i].assessTime?this.$formatDate(this.infodatas[i].assessTime, "YYYY-MM-DD"):'';
 						infodatas.push(this.infodatas[i])
 						infodatas.push(this.infodatas[i])
 					}
 					}
 				}
 				}
@@ -483,9 +534,12 @@
 						attchFileId: this.attList[i].attchFileId,
 						attchFileId: this.attList[i].attchFileId,
 					});
 					});
 				}
 				}
+                info.params.assigneeNo = this.treeListonly.leaderAuditNo;
+                info.params.assigneeName = this.treeListonly.leaderAuditName;
 				info.params.attList = JSON.stringify(attList)
 				info.params.attList = JSON.stringify(attList)
 				info.params.terminalRes = JSON.stringify(info.params.terminalRes);
 				info.params.terminalRes = JSON.stringify(info.params.terminalRes);
 				info.params.factoryList = JSON.stringify(info.params.factoryList);
 				info.params.factoryList = JSON.stringify(info.params.factoryList);
+
 				this.submitInfo("/bpm/api/startProc", info);
 				this.submitInfo("/bpm/api/startProc", info);
 			},
 			},
 
 
@@ -515,6 +569,7 @@
 								_this.infolist = {};
 								_this.infolist = {};
 								_this.attList = [];
 								_this.attList = [];
 								_this.fileInfo.fileList = [];
 								_this.fileInfo.fileList = [];
+                                _this.checkexa = false;
 								_this.getList(this.params, this.pageSize);
 								_this.getList(this.params, this.pageSize);
 							}
 							}
 
 
@@ -681,7 +736,7 @@
 		width: 100%;
 		width: 100%;
 
 
 		.el-select {
 		.el-select {
-			width: calc(100% - 120px);
+			width: calc(100% - 100px);
 		}
 		}
 
 
 		span {
 		span {
@@ -691,6 +746,47 @@
 		.el-textarea {
 		.el-textarea {
 			width: calc(100% - 120px);
 			width: calc(100% - 120px);
 		}
 		}
+
+		.tree {
+			width: calc(50% - 60px);
+			display: inline-block;
+			margin-right: 20px;
+			height: 300px;
+			overflow-y: scroll;
+
+			.el-icon-error {
+				float: right;
+				font-size: 20px;
+				margin-top: 9px;
+				cursor: pointer;
+			}
+		}
+
+		.treeUser {
+			margin: 0;
+			border: 1px solid #ddd;
+
+			p {
+				background: #f4f4f4;
+				padding: 0 20px;
+				margin-bottom: 5px;
+			}
+		}
+
+		.treeUserb {
+		    width: calc(100% - 100px);
+		    border: 1px solid #ddd;
+		    background: #f4f4f4;
+		    border-radius: 3px;
+		    height: auto;
+		    overflow: hidden;
+
+		    p {
+		        display: inline-block;
+		        padding: 0 20px;
+		        margin-bottom: 5px;
+		    }
+		}
 	}
 	}
 
 
 	.adv-type {
 	.adv-type {

+ 1 - 1
src/pages/main/cooOperation/yStanding.vue

@@ -80,7 +80,7 @@
 				this.params = {};
 				this.params = {};
 				v[0] ? this.params.factoryName = v[0] : '';
 				v[0] ? this.params.factoryName = v[0] : '';
 				v[1] ? this.params.opTimeTo = v[1] : '';
 				v[1] ? this.params.opTimeTo = v[1] : '';
-				v[2] ? this.params.opTimeFrom =  this.$formatDate(v[2] , "YYYY-MM-DD HH:mm:ss") : '';
+				v[2] ? this.params.opTimeFrom =  this.$formatDate(v[2] , "YYYY-MM-DD") : '';
 				this.getList(this.params, this.pageSize);
 				this.getList(this.params, this.pageSize);
 			},
 			},
             //获取列表
             //获取列表

ファイルの差分が大きいため隠しています
+ 1124 - 0
src/pages/main/demandCollection/index.vue


+ 86 - 57
src/pages/main/demandDevelop/index.vue

@@ -49,17 +49,17 @@
 						</el-form-item>
 						</el-form-item>
 						<el-form-item>
 						<el-form-item>
 							<span>需求编号</span>
 							<span>需求编号</span>
-							<el-input v-model="infolist.demandNo" placeholder="需求编号" :disabled="disableStatus">
+							<el-input v-model="infolist.demandNo" placeholder="需求编号" disabled>
 							</el-input>
 							</el-input>
 						</el-form-item>
 						</el-form-item>
-						<el-form-item prop="terminal">
+						<!-- <el-form-item prop="terminal">
 							<span>申请流程</span>
 							<span>申请流程</span>
 							<el-select clearable v-model="terminal" placeholder="申请流程" :disabled="disableStatus">
 							<el-select clearable v-model="terminal" placeholder="申请流程" :disabled="disableStatus">
 								<el-option v-for="items in options" :key="items.procId" :label="items.procName"
 								<el-option v-for="items in options" :key="items.procId" :label="items.procName"
 									:value="items.procId">
 									:value="items.procId">
 								</el-option>
 								</el-option>
 							</el-select>
 							</el-select>
-						</el-form-item>
+						</el-form-item> -->
 						<el-form-item>
 						<el-form-item>
 							<span>紧急程度</span>
 							<span>紧急程度</span>
 							<el-select clearable v-model="infolist.urgDegree" placeholder="紧急程度" :disabled="disableStatus">
 							<el-select clearable v-model="infolist.urgDegree" placeholder="紧急程度" :disabled="disableStatus">
@@ -83,7 +83,8 @@
 						</el-form-item>
 						</el-form-item>
 						<el-form-item>
 						<el-form-item>
 							<span>承载渠道</span>
 							<span>承载渠道</span>
-							<el-select clearable v-model="infolist.carryChannelCode" placeholder="承载渠道" :disabled="disableStatus">
+                            <!-- //multiple -->
+							<el-select clearable multiple v-model="infolist.carryChannelCode" placeholder="承载渠道" :disabled="disableStatus">
 								<el-option v-for="items in carryChannelopt" :key="items.dataCode" :label="items.dataName"
 								<el-option v-for="items in carryChannelopt" :key="items.dataCode" :label="items.dataName"
 									:value="items.dataCode">
 									:value="items.dataCode">
 								</el-option>
 								</el-option>
@@ -111,8 +112,9 @@
 					<div style="padding:0 20px 0 120px;margin-bottom: 20px;" v-if="disableStatus">
 					<div style="padding:0 20px 0 120px;margin-bottom: 20px;" v-if="disableStatus">
 						<uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
 						<uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
 					</div>
 					</div>
-					<div style="padding-left: 100px" v-if="!disableStatus">
-						<myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList">
+					<div v-if="!disableStatus"  class="info-line online">
+                        <span style="width: 80px;">附件</span>
+						<myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList" style="width: calc(100% - 80px);">
 						</myUpload>
 						</myUpload>
 					</div>
 					</div>
 
 
@@ -167,11 +169,13 @@
 				</el-form>
 				</el-form>
 
 
 				<div slot="footer" class="dialog-footer myfooter">
 				<div slot="footer" class="dialog-footer myfooter">
-					<el-button v-if="titname != '查看' && vision == '流程发起'" type="primary" @click="dialogCli(2)">确 定
+					<el-button v-if="titname != '查看' && vision == '流程发起'" type="primary" @click="checkexa = true">确 定
+					</el-button>
+					<el-button v-if="titname != '查看' && visionsts == '3'" type="primary" @click="checkexa = true">确 定
 					</el-button>
 					</el-button>
-					<el-button v-if="titname != '查看' && visionsts == '3'" type="primary" @click="dialogCli(2)">确 定
+                    <el-button v-if="titname != '查看' && visionsts == '4'" type="primary" @click="dialogCli(2)">确 定
 					</el-button>
 					</el-button>
-					<el-button v-if="titname != '查看' && visionsts == '2'" type="primary" @click="dialogCli(2)">通 过
+                    <el-button v-if="titname != '查看' && visionsts == '2'" type="primary" @click="checkexa = true">通 过
 					</el-button>
 					</el-button>
 					<el-button v-if="titname != '查看' && visionsts == '2'" type="primary" @click="dialogCli(1)">打 回
 					<el-button v-if="titname != '查看' && visionsts == '2'" type="primary" @click="dialogCli(1)">打 回
 					</el-button>
 					</el-button>
@@ -184,7 +188,7 @@
 		<el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
 		<el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
 			:modal-append-to-body="false" :close-on-click-modal="false">
 			:modal-append-to-body="false" :close-on-click-modal="false">
 			<div>
 			<div>
-		
+
 				<el-form :model="infolist" ref="infolist" :rules="rules">
 				<el-form :model="infolist" ref="infolist" :rules="rules">
 					<el-form-item prop="visiblec" class="info-line online">
 					<el-form-item prop="visiblec" class="info-line online">
 						<span>审批人员</span>
 						<span>审批人员</span>
@@ -198,9 +202,10 @@
 						</div>
 						</div>
 					</el-form-item>
 					</el-form-item>
 				</el-form>
 				</el-form>
-		
+
 				<div slot="footer" style="text-align: right;padding-bottom: 20px;">
 				<div slot="footer" style="text-align: right;padding-bottom: 20px;">
-					<el-button type="primary" @click="dialogCliadd">确 定</el-button>
+					<el-button type="primary" @click="dialogCliadd" v-if="!visionchonly">确 定</el-button>
+					<el-button type="primary" @click="dialogCli(2)" v-if="visionchonly">确 定</el-button>
 					<el-button @click="checkexa = false">取 消</el-button>
 					<el-button @click="checkexa = false">取 消</el-button>
 				</div>
 				</div>
 			</div>
 			</div>
@@ -265,7 +270,7 @@
 				disableStatus: false,
 				disableStatus: false,
 				titname: '',
 				titname: '',
 				infolist: {
 				infolist: {
-			
+
 				},
 				},
 				userInfo: {},
 				userInfo: {},
 				params: {},
 				params: {},
@@ -291,9 +296,11 @@
 				opno: '',
 				opno: '',
 				attList: [],
 				attList: [],
 				options: [],
 				options: [],
-				terminal: '',
+				terminal: '729289304205336576',
+				// terminal: '722743473704595456',//722743473704595456省722748981018685440
 				remark: '',
 				remark: '',
 				visionsts: '1',
 				visionsts: '1',
+				visionchonly: false,
 				ifopt: [{
 				ifopt: [{
 					id: 1,
 					id: 1,
 					name: '是'
 					name: '是'
@@ -352,6 +359,7 @@
 				this.attList = [];
 				this.attList = [];
 				this.fileInfo.fileList = [];
 				this.fileInfo.fileList = [];
 				this.dialogStatus = false;
 				this.dialogStatus = false;
+                this.checkexa = false;
 			},
 			},
 			//获取列表
 			//获取列表
 			getList(v, n) {
 			getList(v, n) {
@@ -393,6 +401,7 @@
 					this.disableStatus = true;
 					this.disableStatus = true;
 				} else if (v === 3) {
 				} else if (v === 3) {
 					this.titname = '添加';
 					this.titname = '添加';
+					this.visionchonly = false;
 					this.disableStatus = false;
 					this.disableStatus = false;
 					return
 					return
 				}
 				}
@@ -425,44 +434,56 @@
 					this.busiTime = [];
 					this.busiTime = [];
 					this.busiTime[0] = this.infolist.busiStartTime;
 					this.busiTime[0] = this.infolist.busiStartTime;
 					this.busiTime[1] = this.infolist.busiEndTime;
 					this.busiTime[1] = this.infolist.busiEndTime;
+                    this.visionchonly = false;
 					if (res.data.taskList[res.data.taskList.length - 1].taskName == '流程发起') {
 					if (res.data.taskList[res.data.taskList.length - 1].taskName == '流程发起') {
 						this.vision = '流程发起';
 						this.vision = '流程发起';
 						if(this.titname == '审批'){
 						if(this.titname == '审批'){
 							this.disableStatus = false;
 							this.disableStatus = false;
 						}
 						}
+                        this.visionchonly = true;
 					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '科室主任初审') {
 					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '科室主任初审') {
 						this.vision = '科室主任初审';
 						this.vision = '科室主任初审';
 						this.visionsts = '2';
 						this.visionsts = '2';
+                        this.visionchonly = true;
 					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '部门副主任复审') {
 					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '部门副主任复审') {
 						this.vision = '部门副主任复审';
 						this.vision = '部门副主任复审';
 						this.visionsts = '2';
 						this.visionsts = '2';
+                        this.visionchonly = true;
 					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '主管副总终审'||res.data.taskList[res.data.taskList.length - 1].taskName == '部门副主任终审') {
 					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '主管副总终审'||res.data.taskList[res.data.taskList.length - 1].taskName == '部门副主任终审') {
 						this.vision = '主管副总终审';
 						this.vision = '主管副总终审';
 						this.visionsts = '2';
 						this.visionsts = '2';
+                        this.visionchonly = true;
 					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '需求预评估') {
 					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '需求预评估') {
 						this.vision = '需求预评估';
 						this.vision = '需求预评估';
 						this.visionsts = '2';
 						this.visionsts = '2';
+                        this.visionchonly = true;
 					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '需求预评估初审') {
 					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '需求预评估初审') {
 						this.vision = '需求预评估初审';
 						this.vision = '需求预评估初审';
 						this.visionsts = '2';
 						this.visionsts = '2';
+                        this.visionchonly = true;
 					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '需求预评估复审') {
 					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '需求预评估复审') {
 						this.vision = '需求预评估复审';
 						this.vision = '需求预评估复审';
 						this.visionsts = '2';
 						this.visionsts = '2';
+                        this.visionchonly = true;
 					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '渠道经理会签') {
 					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '渠道经理会签') {
 						this.vision = '渠道经理会签';
 						this.vision = '渠道经理会签';
 						this.visionsts = '2';
 						this.visionsts = '2';
+                        this.visionchonly = true;
 					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '需求确认') {
 					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '需求确认') {
 						this.vision = '需求确认';
 						this.vision = '需求确认';
 						this.visionsts = '3';
 						this.visionsts = '3';
+                        this.visionchonly = true;
 					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '上线管理') {
 					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '上线管理') {
 						this.vision = '上线管理';
 						this.vision = '上线管理';
 						this.visionsts = '3';
 						this.visionsts = '3';
+                        this.visionchonly = true;
 					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '上线验证') {
 					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '上线验证') {
 						this.vision = '上线验证';
 						this.vision = '上线验证';
 						this.visionsts = '3';
 						this.visionsts = '3';
+                        this.visionchonly = true;
 					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '信息补填') {
 					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '信息补填') {
 						this.vision = '信息补填';
 						this.vision = '信息补填';
-						this.visionsts = '3';
+						this.visionsts = '4';
 					}
 					}
 					this.datalist.attList = JSON.parse(res.data.params.attList);
 					this.datalist.attList = JSON.parse(res.data.params.attList);
 					this.attList = [];
 					this.attList = [];
@@ -495,10 +516,11 @@
 					this.infolist = {};
 					this.infolist = {};
 					this.attList = [];
 					this.attList = [];
 					this.fileInfo.fileList = [];
 					this.fileInfo.fileList = [];
+                    this.checkexa = false;
 					return
 					return
 				}
 				}
 				let _this = this;
 				let _this = this;
-				this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss")
+				this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD")
 				if (v === 1) {
 				if (v === 1) {
 					let params = {
 					let params = {
 						dealType: '1',
 						dealType: '1',
@@ -541,34 +563,39 @@
 						woNo: this.infolist.woNo,
 						woNo: this.infolist.woNo,
 
 
 					}
 					}
-					if(this.vision == '科室主任初审'||this.vision == '部门副主任复审'){
-						this.$http({
-							url: "/sysmgr/csysuserinfo/queryUserListByLoginNoAndDuty",
-							method: "post",
-							headers: {
-								"Content-Type": "application/json",
-								"page": '{"pageNo":"' + 1 + '","pageSize":"100"}'
-							},
-							data: {"duty":"7,12"},
-						}).then((res) => {
-							if(res.data.length == 0){
-								this.$message({
-									message: '暂无领导审批,发起失败!',
-									type: 'error'
-								});
-								return
-							}else{
-								param.params.assigneeNo=res.data[0].loginNoStr;
-								param.params.assigneeName=res.data[0].loginNameStr;
-								_this.submitInfo("/bpm/api/submitTask", param);
-								return
-							}
-						});
-					}else if(this.vision == '渠道经理会签'||this.vision == '上线管理'){
-						param.params.assigneeNo= this.opno;
-						param.params.assigneeName= this.opname;
-						this.submitInfo("/bpm/api/submitTask", param);
-					}else if(this.vision == '信息补填'){
+                    if(this.visionchonly){
+                        param.params.assigneeNo = this.treeListonly.leaderAuditNo;
+                        param.params.assigneeName = this.treeListonly.leaderAuditName;
+                    }
+					// if(this.vision == '科室主任初审'||this.vision == '部门副主任复审'){
+					// 	this.$http({
+					// 		url: "/sysmgr/csysuserinfo/queryUserListByLoginNoAndDuty",
+					// 		method: "post",
+					// 		headers: {
+					// 			"Content-Type": "application/json",
+					// 			"page": '{"pageNo":"' + 1 + '","pageSize":"100"}'
+					// 		},
+					// 		data: {"duty":"7,12"},
+					// 	}).then((res) => {
+					// 		if(res.data.length == 0){
+					// 			this.$message({
+					// 				message: '暂无领导审批,发起失败!',
+					// 				type: 'error'
+					// 			});
+					// 			return
+					// 		}else{
+					// 			param.params.assigneeNo=res.data[0].loginNoStr;
+					// 			param.params.assigneeName=res.data[0].loginNameStr;
+					// 			_this.submitInfo("/bpm/api/submitTask", param);
+					// 			return
+					// 		}
+					// 	});
+					// }else if(this.vision == '渠道经理会签'||this.vision == '上线管理'){
+					// 	param.params.assigneeNo= this.opno;
+					// 	param.params.assigneeName= this.opname;
+					// 	this.submitInfo("/bpm/api/submitTask", param);
+					// }
+                    if(this.vision == '信息补填'){
 						param.params.fillList = JSON.stringify(this.infodatas);
 						param.params.fillList = JSON.stringify(this.infodatas);
 						this.submitInfo("/bpm/api/submitTask", param);
 						this.submitInfo("/bpm/api/submitTask", param);
 					}else{
 					}else{
@@ -591,19 +618,20 @@
 						this.submitInfo("/bpm/api/submitTask", param);
 						this.submitInfo("/bpm/api/submitTask", param);
 					}
 					}
 				}
 				}
+                this.checkexa = false;
 			},
 			},
 			//添加
 			//添加
 			dialogCliadd(v) {
 			dialogCliadd(v) {
 				let _this = this;
 				let _this = this;
 				let info = {};
 				let info = {};
 				info.params = {};
 				info.params = {};
-				info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+				info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD");
 				info.opNo = this.userInfo.loginNo;
 				info.opNo = this.userInfo.loginNo;
 				info.opName = this.userInfo.loginName;
 				info.opName = this.userInfo.loginName;
 				info.woTitle = this.infolist.demandName;
 				info.woTitle = this.infolist.demandName;
 				info.params.terminalRes = this.infolist;
 				info.params.terminalRes = this.infolist;
-				info.params.terminalRes.busiStartTime = _this.$formatDate(this.busiTime[0], "YYYY-MM-DD HH:mm:ss");
-				info.params.terminalRes.busiEndTime = _this.$formatDate(this.busiTime[1], "YYYY-MM-DD HH:mm:ss");
+				info.params.terminalRes.busiStartTime = this.busiTime[0]?_this.$formatDate(this.busiTime[0], "YYYY-MM-DD"):'';
+				info.params.terminalRes.busiEndTime = this.busiTime[1]?_this.$formatDate(this.busiTime[1], "YYYY-MM-DD"):'';
 				info.procId = this.terminal;
 				info.procId = this.terminal;
 				info.params.assigneeNo = this.treeListonly.leaderAuditNo;
 				info.params.assigneeNo = this.treeListonly.leaderAuditNo;
 				info.params.assigneeName = this.treeListonly.leaderAuditName;
 				info.params.assigneeName = this.treeListonly.leaderAuditName;
@@ -631,6 +659,7 @@
 				info.params.attList = JSON.stringify(attList);
 				info.params.attList = JSON.stringify(attList);
 				info.params.terminalRes = JSON.stringify(info.params.terminalRes);
 				info.params.terminalRes = JSON.stringify(info.params.terminalRes);
 				this.checkexa = false;
 				this.checkexa = false;
+				this.visionchonly = false;
 				this.submitInfo("/bpm/api/startProc", info);
 				this.submitInfo("/bpm/api/startProc", info);
 			},
 			},
 
 
@@ -863,26 +892,26 @@
 
 
 	.online {
 	.online {
 		width: 100%;
 		width: 100%;
-	
+
 		.el-select {
 		.el-select {
 			width: calc(100% - 100px);
 			width: calc(100% - 100px);
 		}
 		}
-	
+
 		span {
 		span {
 			vertical-align: top;
 			vertical-align: top;
 		}
 		}
-	
+
 		.el-textarea {
 		.el-textarea {
-			width: calc(100% - 100px);
+			width: calc(100% - 120px);
 		}
 		}
-	
+
 		.tree {
 		.tree {
 			width: calc(50% - 60px);
 			width: calc(50% - 60px);
 			display: inline-block;
 			display: inline-block;
 			margin-right: 20px;
 			margin-right: 20px;
 			height: 300px;
 			height: 300px;
 			overflow-y: scroll;
 			overflow-y: scroll;
-	
+
 			.el-icon-error {
 			.el-icon-error {
 				float: right;
 				float: right;
 				font-size: 20px;
 				font-size: 20px;
@@ -890,18 +919,18 @@
 				cursor: pointer;
 				cursor: pointer;
 			}
 			}
 		}
 		}
-	
+
 		.treeUser {
 		.treeUser {
 			margin: 0;
 			margin: 0;
 			border: 1px solid #ddd;
 			border: 1px solid #ddd;
-	
+
 			p {
 			p {
 				background: #f4f4f4;
 				background: #f4f4f4;
 				padding: 0 20px;
 				padding: 0 20px;
 				margin-bottom: 5px;
 				margin-bottom: 5px;
 			}
 			}
 		}
 		}
-		
+
 		.treeUserb {
 		.treeUserb {
 		    width: calc(100% - 100px);
 		    width: calc(100% - 100px);
 		    border: 1px solid #ddd;
 		    border: 1px solid #ddd;
@@ -909,7 +938,7 @@
 		    border-radius: 3px;
 		    border-radius: 3px;
 		    height: auto;
 		    height: auto;
 		    overflow: hidden;
 		    overflow: hidden;
-		
+
 		    p {
 		    p {
 		        display: inline-block;
 		        display: inline-block;
 		        padding: 0 20px;
 		        padding: 0 20px;

+ 1 - 1
src/pages/main/development/dStanding.vue

@@ -82,7 +82,7 @@
 				this.params = {};
 				this.params = {};
 				v[0] ? this.params.factoryName = v[0] : '';
 				v[0] ? this.params.factoryName = v[0] : '';
 				v[1] ? this.params.opTimeTo = v[1] : '';
 				v[1] ? this.params.opTimeTo = v[1] : '';
-				v[2] ? this.params.opTimeFrom =  this.$formatDate(v[2] , "YYYY-MM-DD HH:mm:ss") : '';
+				v[2] ? this.params.opTimeFrom =  this.$formatDate(v[2] , "YYYY-MM-DD") : '';
 				this.getList(this.params, this.pageSize);
 				this.getList(this.params, this.pageSize);
 			},
 			},
             //获取列表
             //获取列表

+ 101 - 10
src/pages/main/development/index.vue

@@ -149,12 +149,37 @@
 				<div slot="footer" class="dialog-footer myfooter">
 				<div slot="footer" class="dialog-footer myfooter">
 					<el-button v-if="titname != '查看' && vision == '记录开发信息'" type="primary" @click="dialogCli(2)">确 定
 					<el-button v-if="titname != '查看' && vision == '记录开发信息'" type="primary" @click="dialogCli(2)">确 定
 					</el-button>
 					</el-button>
-					<el-button v-if="titname == '添加'" type="primary" @click="dialogCliadd">确 定</el-button>
+					<el-button v-if="titname == '添加'" type="primary" @click="checkexa = true">确 定</el-button>
 					<el-button v-if="vision == '结束'||titname == '查看'" @click="dialogCli(3)">确 定</el-button>
 					<el-button v-if="vision == '结束'||titname == '查看'" @click="dialogCli(3)">确 定</el-button>
 					<el-button @click="dialogCli(3)">取 消</el-button>
 					<el-button @click="dialogCli(3)">取 消</el-button>
 				</div>
 				</div>
 			</div>
 			</div>
 		</el-dialog>
 		</el-dialog>
+        <el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
+        	:modal-append-to-body="false" :close-on-click-modal="false">
+        	<div>
+
+        		<el-form :model="infolist" ref="infolist" :rules="rules">
+        			<el-form-item prop="visiblec" class="info-line online">
+        				<span>审批人员</span>
+        				<deptTreeOnly class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
+        					:type="depttype" :closeList="closeList"></deptTreeOnly>
+        				<div class="tree treeUser">
+        					<p>{{treeListonly.leaderAuditName}}
+        						<i v-if="treeListonly.leaderAuditName" @click="deletes()"
+        							class="el-icon-error"></i>
+        					</p>
+        				</div>
+        			</el-form-item>
+        		</el-form>
+
+        		<div slot="footer" style="text-align: right;padding-bottom: 20px;">
+        			<el-button type="primary" @click="dialogCliadd" v-if="!visionchonly">确 定</el-button>
+        			<el-button type="primary" @click="dialogCli(2)" v-if="visionchonly">确 定</el-button>
+        			<el-button @click="checkexa = false">取 消</el-button>
+        		</div>
+        	</div>
+        </el-dialog>
 
 
 		<myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
 		<myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
 			v-if="centerDialogVisible"></myMessage>
 			v-if="centerDialogVisible"></myMessage>
@@ -167,6 +192,7 @@
 	import toolList from '../../../components/toolList'
 	import toolList from '../../../components/toolList'
 	import myUpload from '../../../components/upload'
 	import myUpload from '../../../components/upload'
 	import uploadDown from '../../../components/uploadDown.vue'
 	import uploadDown from '../../../components/uploadDown.vue'
+    import deptTreeOnly from "../../../components/deptTreeOnly.vue"
 
 
 	export default {
 	export default {
 		components: {
 		components: {
@@ -174,7 +200,8 @@
 			myMessage,
 			myMessage,
 			toolList,
 			toolList,
 			myUpload,
 			myUpload,
-			uploadDown
+			uploadDown,
+            deptTreeOnly
 		},
 		},
 		data() {
 		data() {
 			const woName = (rule, value, callback) => {
 			const woName = (rule, value, callback) => {
@@ -253,15 +280,29 @@
 						id:0,
 						id:0,
 						name:'否'
 						name:'否'
 					}
 					}
-				]
+				],
+                checkexa: false,
+                treeListonly: {},
+                defaultList: [],
+                closeList: false,
+                visionchonly: false,
+                depttype: 0,
 			}
 			}
 		},
 		},
 		methods: {
 		methods: {
+            deletes() {
+            	this.treeListonly = {};
+            	this.closeList = !this.closeList;
+            },
+            treeCheckonly(v) {
+            	this.treeListonly = v;
+            },
 			closedia() {
 			closedia() {
 				this.infolist = {};
 				this.infolist = {};
 				this.attList = [];
 				this.attList = [];
 				this.fileInfo.fileList = [];
 				this.fileInfo.fileList = [];
 				this.dialogStatus = false;
 				this.dialogStatus = false;
+                this.checkexa = false;
 			},
 			},
 			//获取列表
 			//获取列表
 			getList(v, n) {
 			getList(v, n) {
@@ -332,9 +373,11 @@
 					this.infolist.opNo=infolist.opNo;
 					this.infolist.opNo=infolist.opNo;
 					this.infolist.opTime=infolist.opTime;
 					this.infolist.opTime=infolist.opTime;
 					this.infolist.woNo=infolist.woNo;
 					this.infolist.woNo=infolist.woNo;
+                    this.visionchonly = false;
 					if (res.data.taskList[res.data.taskList.length - 1].taskName == '流程发起') {
 					if (res.data.taskList[res.data.taskList.length - 1].taskName == '流程发起') {
 						this.disableStatus = false;
 						this.disableStatus = false;
 						this.vision = '流程发起';
 						this.vision = '流程发起';
+                        this.visionchonly = true;
 					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '记录开发信息') {
 					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '记录开发信息') {
 						this.vision = '记录开发信息';
 						this.vision = '记录开发信息';
 					}
 					}
@@ -369,12 +412,13 @@
 					this.infolist = {};
 					this.infolist = {};
 					this.attList = [];
 					this.attList = [];
 					this.fileInfo.fileList = [];
 					this.fileInfo.fileList = [];
+                    this.checkexa = false;
 					return
 					return
 				}
 				}
 				let _this = this;
 				let _this = this;
-				this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss")
-				this.infolist.itSubTime?this.infolist.itSubTime = _this.$formatDate(this.infolist.itSubTime, "YYYY-MM-DD HH:mm:ss"):'';
-				this.infolist.elecSubTime?this.infolist.elecSubTime = _this.$formatDate(this.infolist.elecSubTime, "YYYY-MM-DD HH:mm:ss"):'';
+				this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD")
+				this.infolist.itSubTime?this.infolist.itSubTime = _this.$formatDate(this.infolist.itSubTime, "YYYY-MM-DD"):'';
+				this.infolist.elecSubTime?this.infolist.elecSubTime = _this.$formatDate(this.infolist.elecSubTime, "YYYY-MM-DD"):'';
 				if (v === 1) {
 				if (v === 1) {
 					// let params = {
 					// let params = {
 					// 	dealType: '1',
 					// 	dealType: '1',
@@ -415,9 +459,12 @@
 							terminalRes: JSON.stringify(this.infolist)
 							terminalRes: JSON.stringify(this.infolist)
 						},
 						},
 						woNo: this.infolist.woNo,
 						woNo: this.infolist.woNo,
-						
+
 					}
 					}
-				
+                    if(this.vision != '记录开发信息'){
+                    	param.params.assigneeNo = this.treeListonly.leaderAuditNo;
+                    	param.params.assigneeName = this.treeListonly.leaderAuditName;
+                    }
 					if(this.vision == '流程发起'){
 					if(this.vision == '流程发起'){
 						let attList = [];
 						let attList = [];
 						for (let i = 0; i < this.attList.length; i++) {
 						for (let i = 0; i < this.attList.length; i++) {
@@ -441,12 +488,14 @@
 			dialogCliadd(v) {
 			dialogCliadd(v) {
 				let _this = this;
 				let _this = this;
 				let info = {};
 				let info = {};
-				info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+				info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD");
 				info.opNo = this.userInfo.loginNo;
 				info.opNo = this.userInfo.loginNo;
 				info.opName = this.userInfo.loginName;
 				info.opName = this.userInfo.loginName;
 				info.woTitle = this.infolist.woName;
 				info.woTitle = this.infolist.woName;
 				info.params = {};
 				info.params = {};
 				info.params.terminalRes = this.infolist;
 				info.params.terminalRes = this.infolist;
+                info.params.assigneeNo = this.treeListonly.leaderAuditNo;
+                info.params.assigneeName = this.treeListonly.leaderAuditName;
 				info.procId = this.terminal;
 				info.procId = this.terminal;
 				for (let i = 0; i < this.options.length; i++) {
 				for (let i = 0; i < this.options.length; i++) {
 					if (this.terminal == this.options[i].procId) {
 					if (this.terminal == this.options[i].procId) {
@@ -498,6 +547,7 @@
 								_this.infolist = {};
 								_this.infolist = {};
 								_this.attList = [];
 								_this.attList = [];
 								_this.fileInfo.fileList = [];
 								_this.fileInfo.fileList = [];
+                                _this.checkexa = false;
 								_this.getList(this.params, this.pageSize);
 								_this.getList(this.params, this.pageSize);
 							}
 							}
 
 
@@ -664,7 +714,7 @@
 		width: 100%;
 		width: 100%;
 
 
 		.el-select {
 		.el-select {
-			width: calc(100% - 120px);
+			width: calc(100% - 100px);
 		}
 		}
 
 
 		span {
 		span {
@@ -674,6 +724,47 @@
 		.el-textarea {
 		.el-textarea {
 			width: calc(100% - 120px);
 			width: calc(100% - 120px);
 		}
 		}
+
+		.tree {
+			width: calc(50% - 60px);
+			display: inline-block;
+			margin-right: 20px;
+			height: 300px;
+			overflow-y: scroll;
+
+			.el-icon-error {
+				float: right;
+				font-size: 20px;
+				margin-top: 9px;
+				cursor: pointer;
+			}
+		}
+
+		.treeUser {
+			margin: 0;
+			border: 1px solid #ddd;
+
+			p {
+				background: #f4f4f4;
+				padding: 0 20px;
+				margin-bottom: 5px;
+			}
+		}
+
+		.treeUserb {
+		    width: calc(100% - 100px);
+		    border: 1px solid #ddd;
+		    background: #f4f4f4;
+		    border-radius: 3px;
+		    height: auto;
+		    overflow: hidden;
+
+		    p {
+		        display: inline-block;
+		        padding: 0 20px;
+		        margin-bottom: 5px;
+		    }
+		}
 	}
 	}
 
 
 	.adv-type {
 	.adv-type {

+ 623 - 0
src/pages/main/emergingMarket/index.vue

@@ -0,0 +1,623 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <div class="search">
+                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <el-button type="primary" @click="dialogCheck(3)" size="medium">添加</el-button>
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                    <el-table-column prop="docName" label="文档名称">
+                    </el-table-column>
+                    <el-table-column prop="docTypeName" label="文档类型">
+                    </el-table-column>
+                    <el-table-column prop="contentTypeName" label="文档内容分类">
+                    </el-table-column>
+                    <el-table-column label="文档有效期">
+                        <template slot-scope="scope">
+                            {{scope.row.startTime +'~'+ scope.row.endTime}}
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="操作" width="220px" align="center">
+                        <template slot-scope="scope">
+                            <el-button size="mini" type="primary" @click="dialogCheck(1,scope.row)">查看</el-button>
+                            <el-button size="mini" type="primary" @click="dialogCheck(2,scope.row)">修改</el-button>
+                            <el-button size="mini" type="danger" @click="delLine(scope.row)">删除</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+        </div>
+
+        <el-dialog :title="titname" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
+            :modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia" :fullscreen="true">
+            <div v-loading="loadinged">
+                <el-form :model="infolist" ref="infolist" :rules="rules"
+                    style="height: calc(100vh - 180px);overflow-y: scroll;">
+                    <div class="info-line">
+                        <el-form-item prop="docName">
+                            <span>文档名称</span>
+                            <el-input v-model="infolist.docName" placeholder="文档名称" :disabled="disableStatus">
+                            </el-input>
+                        </el-form-item>
+                        <el-form-item>
+                            <span>文档类型</span>
+                            <el-select :popper-append-to-body="false" v-model="infolist.docTypeName" placeholder="文档类型" :disabled="disableStatus">
+                                <el-option v-for="item in docType" :key="item.dataName" :label="item.dataName"
+                                    :value="item.dataName">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item>
+                            <span>内容分类</span>
+                            <el-select :popper-append-to-body="false" v-model="infolist.contentTypeName" placeholder="文档内容分类" :disabled="disableStatus">
+                                <el-option v-for="item in contentType" :key="item.dataName" :label="item.dataName"
+                                    :value="item.dataName">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item>
+                            <span>重要内容摘要</span>
+                            <el-input v-model="infolist.contentAbstract" placeholder="重要内容摘要"
+                                :disabled="disableStatus">
+                            </el-input>
+                        </el-form-item>
+                        <el-form-item prop="startTime">
+                            <span>有效期(开始)</span>
+                            <el-date-picker v-model="infolist.startTime" type="date" placeholder="文档有效期(开始)"
+                                :disabled="disableStatus">
+                            </el-date-picker>
+                        </el-form-item>
+                        <el-form-item prop="endTime">
+                            <span>有效期(结束)</span>
+                            <el-date-picker v-model="infolist.endTime" type="date" placeholder="文档有效期(结束)"
+                                :disabled="disableStatus">
+                            </el-date-picker>
+                        </el-form-item>
+                        <el-form-item>
+                            <span>文档提醒事项</span>
+                            <el-input v-model="infolist.docNotice" placeholder="文档提醒事项"
+                                :disabled="disableStatus">
+                            </el-input>
+                        </el-form-item>
+                        <el-form-item prop="validDay">
+                            <span>提醒时间范围</span>
+                            <el-input v-model="infolist.validDay" type="number" placeholder="文档有效期前 x 天"
+                                :disabled="disableStatus">
+                            </el-input>
+                        </el-form-item>
+                    </div>
+                    <span style="margin-bottom: 20px;padding-left: 20px;font-size: 16px;">重点数据周期展示</span>
+                    <div style="margin: 5px 0 20px 0;padding: 0 20px;">
+                    	<el-table class="com-table" ref="multipleTable" :data="infodata" tooltip-effect="dark"
+                    		size="small" border style="width: 100%">
+
+                    		<el-table-column label="开始时间" width="250px">
+                    			<template slot-scope="scope">
+                                    <el-date-picker v-model="scope.row.startTime" type="date" :disabled="disableStatus">
+                                    </el-date-picker>
+                    			</template>
+                    		</el-table-column>
+                            <el-table-column label="结束时间"  width="250px">
+                    			<template slot-scope="scope">
+                                    <el-date-picker v-model="scope.row.endTime" type="date" :disabled="disableStatus">
+                                    </el-date-picker>
+                    			</template>
+                    		</el-table-column>
+                            <el-table-column label="事项">
+                    			<template slot-scope="scope">
+                    				<el-input v-model="scope.row.remark" :disabled="disableStatus"></el-input>
+                    			</template>
+                    		</el-table-column>
+
+                    		<el-table-column label="操作" width="120px" align="center" v-if="titname != '查看'">
+                    			<template slot-scope="scope">
+                    				<el-button size="mini" type="primary" @click="choline(1,scope)">添加</el-button>
+                    				<el-button size="mini" type="danger" @click="choline(2,scope)">删除</el-button>
+                    			</template>
+                    		</el-table-column>
+                    	</el-table>
+                    </div>
+                </el-form>
+                <div slot="footer" style="float: right;margin-top: 20px;">
+                    <el-button type="primary" @click="dialogCliadd(2)">确 定</el-button>
+                    <el-button @click="dialogCliadd(1)">取 消</el-button>
+                </div>
+            </div>
+        </el-dialog>
+        <myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
+            v-if="centerDialogVisible"></myMessage>
+    </fullscreen>
+
+</template>
+<script>
+    import mySearch from "../../../components/search.vue";
+    import myMessage from "../../../components/myMessage.vue"
+    import toolList from '../../../components/toolList'
+    import myUpload from '../../../components/upload'
+    import uploadDown from '../../../components/uploadDown.vue'
+    import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+
+    export default {
+        components: {
+            mySearch,
+            myMessage,
+            toolList,
+            myUpload,
+            uploadDown,
+            deptTreeOnly
+        },
+        data() {
+            const docName = (rule, value, callback) => {
+                if (!this.infolist.docName) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+             const validDay = (rule, value, callback) => {
+                if (!this.infolist.validDay) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            const startTime = (rule, value, callback) => {
+                if (!this.infolist.startTime) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+             const endTime = (rule, value, callback) => {
+                if (!this.infolist.endTime) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            return {
+                rules: {
+                    docName: [{
+                        required: true,
+                        trigger: 'blur',
+                        validator: docName
+                    }],
+                    validDay: [{
+                        required: true,
+                        trigger: 'blur',
+                        validator: validDay
+                    }],
+                    startTime: [{
+                        required: true,
+                        trigger: 'change',
+                        validator: startTime
+                    }],
+                    endTime: [{
+                        required: true,
+                        trigger: 'change',
+                        validator: endTime
+                    }],
+                },
+                searchList: [{
+                        type: 'input',
+                        tit: '文档名称',
+                        value: '',
+                        width: '32%'
+                    },
+                    {
+                        type: 'date',
+                        tit: '开始时间',
+                        value: '',
+                        width: '32%',
+                    },
+                    {
+                        type: 'date',
+                        tit: '结束时间',
+                        value: '',
+                        width: '32%',
+                    },
+                ],
+                tooltit: '新兴市场产品文档管理',
+                fullscreen: false,
+                total: 0,
+                pageSize: 1,
+                tableData: [{}],
+                dialogStatus: false,
+                disableStatus: false,
+                titname: '',
+                infolist: {
+                    startTime:'',
+                    endTime:''
+                },
+                userInfo: {},
+                params: {},
+                centerDialogVisible: false,
+                messTit: '',
+                delid: '',
+                loading: false,
+                loadinged: false,
+                docType:[],
+                contentType:[],
+                infodata:[{}],
+            }
+        },
+        methods: {
+            //搜索数据
+            searchInfo(v) {
+                this.params = {};
+                v[0] ? this.params.docName = v[0] : '';
+                v[1] ? this.params.startTime = this.$formatDate(v[1], "YYYY-MM-DD") : '';
+                v[2] ? this.params.endTime = this.$formatDate(v[2], "YYYY-MM-DD") : '';
+                this.getList(this.params, this.pageSize);
+            },
+            choline(v, n) {
+            	if (v == 1) {
+            		this.infodata.push({})
+            	} else {
+            		this.infodata.splice(n.$index, 1)
+            	}
+            },
+            closedia() {
+                this.infolist = {
+                    startTime:'',
+                    endTime:''
+                };
+                this.infodata = [{}];
+                this.dialogStatus = false;
+            },
+            //获取列表
+            getList(v, n) {
+                this.pageSize = n;
+                let _this = this;
+                this.loading = true;
+                this.$http({
+                    url: "/market/cNewlyDoc/queryPage",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                        "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                    },
+                    data: v,
+                }).then((res) => {
+                    this.tableData = res.data.data;
+                    this.total = res.data.totalRecord;
+                    this.loading = false;
+                });
+            },
+            // 分页
+            currchange(v) {
+                this.pageSize = v;
+                this.getList(this.params, this.pageSize);
+            },
+            //申请
+            dialogCheck(v, n) {
+                this.dialogStatus = true;
+                let infolist = Object.assign({}, n);
+                if (v === 1) {
+                    this.titname = '查看';
+                    this.disableStatus = true;
+                } else if (v === 2) {
+                    this.titname = '修改';
+                    this.disableStatus = false;
+                } else if (v === 3) {
+                    this.titname = '添加';
+                    this.disableStatus = false;
+                    return
+                }
+                this.infolist = infolist;
+                this.$http({
+                    url: "/market/cNewlyDoc/query",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        id: n.id
+                    },
+                }).then((res) => {
+                    this.infodata = res.data.detailList;
+                });
+            },
+            //添加
+            dialogCliadd(v) {
+                if (v == 1 || this.titname == '查看') {
+                    this.infolist = {
+                        startTime:'',
+                        endTime:''
+                    };
+                    this.infodata = [{}];
+                    this.dialogStatus = false;
+                    return
+                }
+                let _this = this;
+                let info = this.infolist;
+                info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD");
+                info.opNo = this.userInfo.loginNo;
+                info.opName = this.userInfo.loginName;
+                info.startTime = info.startTime ? _this.$formatDate(info.startTime, "YYYY-MM-DD") : '';
+                info.endTime = info.endTime ? _this.$formatDate(info.endTime, "YYYY-MM-DD") : '';
+                info.detailList = this.infodata;
+                if(info.detailList.length == 0){
+                    this.infodata.push({})
+                }
+
+                if (this.titname == '修改') {
+                    this.submitInfo("/market/cNewlyDoc/update", info);
+                } else {
+                    this.submitInfo("/market/cNewlyDoc/add", info);
+                }
+            },
+
+            submitInfo(u, v) {
+                let _this = this;
+                this.$refs.infolist.validate(valid => {
+                    if (valid) {
+                        this.$http({
+                            url: u,
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: v,
+                        }).then((res) => {
+                            if (res.data.result === 1) {
+                                _this.$message({
+                                    message: res.data.desc,
+                                    type: 'error'
+                                });
+                            } else {
+                                _this.$message({
+                                    message: '成功',
+                                    type: 'success'
+                                });
+                                _this.closedia();
+                                _this.infolist = {
+                                    startTime:'',
+                                    endTime:''
+                                };
+                                _this.infodata = [{}];
+                                _this.getList(this.params, this.pageSize);
+                            }
+
+                        });
+                    }
+                })
+            },
+            closeMessage(v) {
+                this.centerDialogVisible = false;
+                let _this = this;
+                if (v === 1) {
+                    _this.$http({
+                        url: "/market/cNewlyDoc/del",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        data: {
+                            id: this.delid
+                        },
+                    }).then((res) => {
+                        if (res.data.result === 1) {
+                            _this.$message({
+                                message: res.data.desc,
+                                type: 'error'
+                            });
+                        } else {
+                            _this.$message({
+                                message: '删除成功',
+                                type: 'success'
+                            });
+                            _this.getList(this.params, this.pageSize);
+                        }
+                    });
+                }
+            },
+            //删除
+            delLine(v) {
+                this.centerDialogVisible = true;
+                this.messTit = '即将删除此条数据, 是否删除?';
+                this.delid = v.id;
+            },
+            //功能栏
+            iconCli(v) {
+                if (v === 1) {
+                    this.getList(this.params, this.pageSize);
+                }
+                if (v === 2) {
+                    this.fullscreen = !this.fullscreen
+                }
+            },
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+                this.$http({
+                    url: "/market/cfgDataDict/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        dictCode: 'docType'
+                    },
+                }).then((res) => {
+                    this.docType = res.data;
+                });
+                this.$http({
+                    url: "/market/cfgDataDict/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        dictCode: 'contentType'
+                    },
+                }).then((res) => {
+                    this.contentType = res.data;
+                });
+            },
+        },
+        mounted() {
+            this.getList({}, 1);
+            this.getUser();
+        },
+        created() {
+
+        }
+    }
+</script>
+<style scoped lang="scss">
+    .onetab {
+        margin-bottom: 20px;
+        padding: 0 20px;
+    }
+
+    .titbox {
+        div {
+            float: right;
+
+            i {
+                font-size: 22px;
+                margin-left: 20px;
+                cursor: pointer;
+            }
+        }
+    }
+
+    .tabbox {
+        margin-top: 15px;
+    }
+
+    .pageBox {
+        text-align: right;
+        margin-top: 10px;
+    }
+
+    .info-line {
+        width: 100%;
+        display: block;
+        padding-left: 20px;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 100px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 120px);
+        }
+    }
+
+    .online {
+        width: 100%;
+
+        .el-select {
+            width: calc(100% - 100px);
+        }
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 120px);
+        }
+
+        .tree {
+            width: calc(50% - 60px);
+            display: inline-block;
+            margin-right: 20px;
+            height: 300px;
+            overflow-y: scroll;
+
+            .el-icon-error {
+                float: right;
+                font-size: 20px;
+                margin-top: 9px;
+                cursor: pointer;
+            }
+        }
+
+        .treeUser {
+            margin: 0;
+            border: 1px solid #ddd;
+
+            p {
+                background: #f4f4f4;
+                padding: 0 20px;
+                margin-bottom: 5px;
+            }
+        }
+
+        .treeUserb {
+            width: calc(100% - 100px);
+            border: 1px solid #ddd;
+            background: #f4f4f4;
+            border-radius: 3px;
+            height: auto;
+            overflow: hidden;
+
+            p {
+                display: inline-block;
+                padding: 0 20px;
+                margin-bottom: 5px;
+            }
+        }
+    }
+
+    .adv-type {
+        margin-top: 20px;
+        display: flex;
+        justify-content: space-between;
+        flex-wrap: wrap;
+        // border: 1px solid #ddd;
+        border-radius: 5px;
+        padding: 20px;
+        box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+
+        div {
+            width: 33%;
+            text-align: center;
+            height: 80px;
+            overflow: hidden;
+            min-width: 100px;
+            cursor: pointer;
+            padding-top: 10px;
+            margin: 10px 0;
+        }
+
+        div:hover {
+            background: #CFE8FC;
+            border-radius: 5px;
+        }
+
+        span {
+            width: 100%;
+            display: inline-block;
+            height: 40px;
+
+            // line-height: 40px;
+            i {
+                color: #0074D9;
+                font-size: 36px;
+            }
+        }
+    }
+</style>

ファイルの差分が大きいため隠しています
+ 1022 - 0
src/pages/main/endToEnd/index.vue


+ 6 - 2
src/pages/main/funcInit/manageLnit.vue

@@ -124,6 +124,10 @@
                         <el-input v-model="infolist.sortNum" placeholder="排序" :disabled="disableStatus"></el-input>
                         <el-input v-model="infolist.sortNum" placeholder="排序" :disabled="disableStatus"></el-input>
                     </el-form-item>
                     </el-form-item>
                 </div>
                 </div>
+                <el-form-item class="info-line online">
+                    <span>图标</span>
+                    <el-input v-model="infolist.icon" placeholder="图标" :disabled="disableStatus" type="textarea"></el-input>
+                </el-form-item>
             </el-form>
             </el-form>
 
 
             <div slot="footer" class="dialog-footer">
             <div slot="footer" class="dialog-footer">
@@ -409,7 +413,7 @@
                     method: "post",
                     method: "post",
                     headers: {
                     headers: {
                         "Content-Type": "application/json",
                         "Content-Type": "application/json",
-                        "page": '{"pageNo":"' + n + '","pageSize":"50"}'
+                        "page": '{"pageNo":"' + n + '","pageSize":"100"}'
                     },
                     },
                     data: {},
                     data: {},
                 }).then((res) => {
                 }).then((res) => {
@@ -461,7 +465,7 @@
                     this.dialogStatus = false;
                     this.dialogStatus = false;
                     return
                     return
                 } else {
                 } else {
-                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD");
                     this.infolist.opNo = this.userInfo.loginNo;
                     this.infolist.opNo = this.userInfo.loginNo;
                     this.infolist.opName = this.userInfo.loginName;
                     this.infolist.opName = this.userInfo.loginName;
                     this.infolist.lineId = this.lineId;
                     this.infolist.lineId = this.lineId;

+ 1 - 1
src/pages/main/funcInit/plugInunit.vue

@@ -217,7 +217,7 @@
                     this.dialogStatus = false;
                     this.dialogStatus = false;
                     return
                     return
                 } else {
                 } else {
-                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD");
                     if (this.titname === '添加') {
                     if (this.titname === '添加') {
                         this.submitInfo("/bpm/api/addBpmPrePlugin");
                         this.submitInfo("/bpm/api/addBpmPrePlugin");
                     } else if (this.titname === '修改') {
                     } else if (this.titname === '修改') {

+ 1 - 1
src/pages/main/groupMSsend/groupAdd.vue

@@ -136,7 +136,7 @@
 					}
 					}
 					this.infolist.secNo = res.data[0].loginNoStr;
 					this.infolist.secNo = res.data[0].loginNoStr;
 					this.infolist.secName = res.data[0].loginNameStr;
 					this.infolist.secName = res.data[0].loginNameStr;
-					info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+					info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD");
 					info.opNo = this.userInfo.loginNo;
 					info.opNo = this.userInfo.loginNo;
 					info.opName = this.userInfo.loginName;
 					info.opName = this.userInfo.loginName;
 					info.woTitle = this.infolist.tit;
 					info.woTitle = this.infolist.tit;

+ 1 - 1
src/pages/main/groupMSsend/index.vue

@@ -293,7 +293,7 @@
 					return
 					return
 				}
 				}
 				let _this = this;
 				let _this = this;
-				this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss")
+				this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD")
 				this.infolist.opNo = this.userInfo.loginNo;
 				this.infolist.opNo = this.userInfo.loginNo;
 				this.infolist.opName = this.userInfo.loginName;
 				this.infolist.opName = this.userInfo.loginName;
 				if (v === 1) {
 				if (v === 1) {

+ 525 - 0
src/pages/main/homeMarket/magicboxAudit/audit.vue

@@ -0,0 +1,525 @@
+<template>
+    <div>
+        <div style="height: 50vh;overflow-y: scroll;">
+            <el-form :model="infoApply" ref="infoApply">
+                <el-form-item class="info-line online">
+                    <span>工单标题</span>
+                    <el-input disabled v-model="infoApply.tit" placeholder="工单标题"></el-input>
+                </el-form-item>
+                <el-form-item class="info-line online">
+                    <span>需求类型</span>
+                    <el-radio-group disabled v-model="infoApply.mbhxqlx">
+                        <el-radio v-for="items in mbhxqlxopt" :key="items.dataCode" :label="items.dataName"
+                            :value="items.dataCode"></el-radio>
+                      </el-radio-group>
+                </el-form-item>
+                <el-form-item class="info-line online">
+                    <span>投放位置</span>
+                    <el-checkbox-group disabled v-model="infoApply.mbhtfwz">
+                        <el-checkbox v-for="items in mbhtfwzopt" :key="items.dataCode" :label="items.dataName"
+                            :value="items.dataCode"></el-checkbox>
+                      </el-checkbox-group>
+                </el-form-item>
+                <div class="info-line">
+                    <el-form-item>
+                        <span>开始时间</span>
+                        <el-date-picker disabled v-model="infoApply.mbhkssj" type="date" format="yyyy-MM-dd" placeholder="开始时间">
+                        </el-date-picker>
+                    </el-form-item>
+                </div>
+                <div class="info-line">
+                    <el-form-item>
+                        <span>结束时间</span>
+                        <el-date-picker disabled v-model="infoApply.mbhjssj" type="date" format="yyyy-MM-dd" placeholder="结束时间">
+                        </el-date-picker>
+                    </el-form-item>
+                </div>
+                <el-form-item class="info-line online">
+                    <span>投放区域</span>
+                    <el-input disabled v-model="infoApply.mbhtfqy" placeholder="省-市-县"></el-input>
+                </el-form-item>
+                <el-form-item class="info-line online">
+                    <span>投放定向(提供附件必须一致)</span>
+                    <el-checkbox-group disabled v-model="infoApply.mbhtfdx">
+                        <el-checkbox v-for="items in mbhtfdxopt" :key="items.dataCode" :label="items.dataName"
+                            :value="items.dataCode"></el-checkbox>
+                      </el-checkbox-group>
+                </el-form-item>
+                <el-form-item class="info-line online">
+                    <span>素材名称</span>
+                    <el-input disabled v-model="infoApply.mbhscmc" placeholder="素材名称"></el-input>
+                </el-form-item>
+                <div class="info-line">
+                    <el-form-item>
+                        <span>素材时长(提供附件必须一致)</span>
+                        <el-input disabled v-model="infoApply.mbhscsc" placeholder="5秒/10秒/15秒"></el-input>
+                    </el-form-item>
+                </div>
+                <el-form-item class="info-line online">
+                    <span>素材类型(提供附件必须一致)</span>
+                    <el-radio-group disabled v-model="infoApply.mbhsclx">
+                        <el-radio v-for="items in mbhsclxopt" :key="items.dataCode" :label="items.dataName"
+                            :value="items.dataCode"></el-radio>
+                      </el-radio-group>
+                </el-form-item>
+                <el-form-item class="info-line online">
+                    <span>播测要求(基地)</span>
+                    <el-checkbox-group disabled v-model="infoApply.mbhbcyq">
+                        <el-checkbox v-for="items in mbhbcyqopt" :key="items.dataCode" :label="items.dataName"
+                            :value="items.dataCode"></el-checkbox>
+                      </el-checkbox-group>
+                </el-form-item>
+                <div style="padding:0 20px 0 220px;margin-bottom: 20px;">
+                    <uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
+                </div>
+                <el-form-item class="info-line online" v-if="changeinfo">
+                    <span>审批意见</span>
+                    <el-input v-model="infolist.remark" placeholder="审批意见"></el-input>
+                </el-form-item>
+                <el-form-item class="info-line online" v-if="changeinfo && changeinfo1">
+                    <span>下一步审批人</span>
+                    <el-select clearable v-model="infoApply.approver" placeholder="下一步审批人" ref="nextDealMan" @change="testchange">
+                        <el-option 
+                            v-for="items in approveropt" 
+                            :key="items.loginNoStr" 
+                            :label="items.loginNameStr"
+                            :value="items.loginNoStr">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+            </el-form>
+
+            <div style="margin-bottom: 20px;padding: 0 20px;">
+                <el-table class="com-table" ref="multipleTable" :data="rovaList" tooltip-effect="dark" size="small"
+                    border style="width: 100%">
+                    <el-table-column prop="procId" label="编号">
+                    </el-table-column>
+                    <el-table-column prop="taskName" label="环节">
+                    </el-table-column>
+                    <el-table-column prop="opName" label="处理人">
+                    </el-table-column>
+                    <el-table-column prop="opNo" label="处理人工号">
+                    </el-table-column>
+                    <el-table-column prop="createTime" label="处理时间">
+                    </el-table-column>
+                    <el-table-column prop="remark" label="审批意见">
+                    </el-table-column>
+                </el-table>
+            </div>
+        </div>
+        <div slot="footer" class="dialog-footer">
+            <el-button v-if="changeinfo" type="primary" @click="dialogCli(2)">同 意</el-button>
+            <el-button v-if="changeinfo" type="primary" @click="dialogCli(1)">不同意</el-button>
+            <el-button v-if="!changeinfo" @click="dialogCli(3)">确 定</el-button>
+            <el-button @click="dialogCli(3)">取 消</el-button>
+        </div>
+    </div>
+</template>
+
+<script>
+    import uploadDown from '../../../../components/uploadDown.vue'
+    export default {
+        props: ["componentInfo", "componentStatus", "changeinfo"],
+        components: {
+            uploadDown
+        },
+        data() {
+            return {
+                infolist: {},
+                rovaList: [],
+                infoApply: {
+                    tit: '',
+                    terminal: '',
+                    opName: '',
+                    time: '',
+                    phone: '',
+                    mbhkssj: '',
+                    mbhjssj: '',
+                    mbhtfqy: '',
+                    mbhscmc: '',
+                    mbhscsc: '',
+                    mbhxqlx: [],
+                    mbhtfwz: [],
+                    mbhtfdx: [],
+                    mbhsclx: [],
+                    mbhbcyq: [],
+                    approver: [],
+                },
+                userInfo: {},
+                terminalopt: [],
+                datalist: {
+                    url: '/bpm/api/download',
+                    //url: '/market/compatt/downfile',
+                    type: 1
+                },
+                mbhxqlxopt: [],
+                mbhtfwzopt: [],
+                mbhtfdxopt: [],
+                mbhsclxopt: [],
+                mbhbcyqopt: [],
+                mbhfqrjsopt: [],
+                approveropt: [],
+                uploadstatus: false,
+                changeinfo1: false,
+                finishFlag: '',
+                selLoginNoStr:'',
+                selLoginNoName:''
+            }
+        },
+        methods: {
+            //处理申请
+            dialogCheck() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+                this.getinfolist();
+                this.getDepot();
+                this.$http({
+                    url: '/bpm/api/taskInit',
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        taskId: this.componentInfo.taskId,
+                        woNo: this.componentInfo.woNo
+                    },
+                }).then((res) => {
+                    this.rovaList = res.data.taskList;
+                    // let attlist = JSON.parse(res.data.params.attList);
+                    for (let i = 0; i < res.data.attachList.length; i++) {
+                        res.data.attachList[i].id = res.data.attachList[i].attchFileId;
+                    }
+                    this.datalist.attList = res.data.attachList;
+                    console.log(this.datalist.attList)
+                    this.infolist = Object.assign({}, res.data);
+                    this.infoApply = JSON.parse(this.infolist.params.terminalRes);
+                    this.uploadstatus = true;
+                });
+            },
+            testchange(val){
+                this.selLoginNoStr = val
+                //this.$nextTick(()=>{this.selLoginNoName = this.$refs.nextDealMan.selected.currentLabel})
+                //console.log(this.selLoginNoStr,this.selLoginNoName);
+            },
+            //添加
+            dialogCli(v) {
+                this.datalist.attList = [];
+                this.uploadstatus = false;
+                if (v === 3) {
+                    this.closeInfo();
+                    return;
+                }
+                let _this = this;
+                this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss")
+                // return
+                if (v === 1) {
+                    let params = {
+                        dealType: '1',
+                        dealTypeDesc: '打回',
+                        procId: this.infolist.procId,
+                        procVersion: this.infolist.procVersion,
+                        remark: this.infolist.remark,
+                        stepId: this.infolist.stepId,
+                        taskId: this.infolist.taskId,
+                        taskName: this.infolist.taskName,
+                        opName: this.infolist.opName,
+                        opNo: this.infolist.opNo,
+                        opTime: this.infolist.opTime,
+                        params: {
+                            procExeCondiVal: '不同意',
+                            terminalRes: JSON.stringify(this.infoApply)
+                        },
+                        woNo: this.infolist.woNo,
+                    }
+                    this.submitInfo("/bpm/api/submitTask", params);
+                } else if (v === 2) { //同意
+                    let paramsInfo = {}
+                    paramsInfo.terminalRes = JSON.stringify(this.infoApply);
+                    paramsInfo.finishFlag = this.finishFlag;
+
+                    //
+                    /*
+                    if ( this.changeinfo1 ) {
+                        paramsInfo.assigneeNo = this.infoApply.approver.loginNoStr;
+                        paramsInfo.assigneeName = this.infoApply.approver.loginNameStr;
+                        //alert(paramsInfo.assigneeNo + "," + paramsInfo.assigneeName);
+                    }
+                    */
+
+                    this.checkNextStep(paramsInfo);
+
+                    let param = {
+                        dealType: '0',
+                        dealTypeDesc: '提交',
+                        procId: this.infolist.procId,
+                        procVersion: this.infolist.procVersion,
+                        remark: this.infolist.remark,
+                        stepId: this.infolist.stepId,
+                        taskId: this.infolist.taskId,
+                        taskName: this.infolist.taskName,
+                        opName: this.infolist.opName,
+                        opNo: this.infolist.opNo,
+                        opTime: this.infolist.opTime,
+                        params: paramsInfo,
+                        woNo: this.infolist.woNo,
+                    }
+                    this.submitInfo("/bpm/api/submitTask", param);
+                }
+            },
+            submitInfo(u, v) {
+                let _this = this;
+                this.$http({
+                    url: u,
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: v,
+                }).then((res) => {
+                    if (res.data.result === 1) {
+                        _this.$message({
+                            message: res.data.desc,
+                            type: 'error'
+                        });
+                    } else {
+                        _this.$message({
+                            message: '成功',
+                            type: 'success'
+                        });
+                        _this.closeInfo();
+                    }
+
+                });
+            },
+            closeInfo() {
+                this.infolist = {};
+                this.rovaList = [];
+                this.infoApply = {
+                    tit: '',
+                    terminal: '',
+                    opName: '',
+                    time: '',
+                    phone: '',
+                    mbhkssj: '',
+                    mbhjssj: '',
+                    mbhtfqy: '',
+                    mbhscmc: '',
+                    mbhscsc: '',
+                    mbhxqlx: [],
+                    mbhtfwz: [],
+                    mbhtfdx: [],
+                    mbhsclx: [],
+                    mbhbcyq: [],
+                };
+                this.userInfo = {};
+                this.$emit("closeEdio")
+            },
+            getinfolist() {
+                this.$http({
+                    url: "/sysmgr/cfgDataDicts/queryMap",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                        "page": '{"pageNo":"' + 1 + '","pageSize":"100"}'
+                    },
+                    data: {
+                        dictCodePks: 'mbhfqrjs,mbhxqlx,mbhtfwz,mbhtfdx,mbhsclx,mbhbcyq'
+                    },
+                }).then((res) => {
+                    this.mbhfqrjsopt = res.data.body.mbhfqrjs;
+                    this.mbhxqlxopt = res.data.body.mbhxqlx;
+                    this.mbhtfwzopt = res.data.body.mbhtfwz;
+                    this.mbhtfdxopt = res.data.body.mbhtfdx;
+                    this.mbhsclxopt = res.data.body.mbhsclx;
+                    this.mbhbcyqopt = res.data.body.mbhbcyq;
+                });
+
+            },
+            //获取部门
+            getDepot() {
+                this.$http({
+                    url: "/sysmgr/sysdept/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {},
+                }).then((res) => {
+                    this.terminalopt = res.data;
+                });
+            },
+            uploadBack(v) {
+                this.attList = v;
+            },
+            getApprover() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+                this.$http({
+                    url: "/market/api/user/info/leader?loginNoStr=" + this.userInfo.loginNoStr + "&level=1&type=1",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json"
+                    },
+                    data: {
+                    },
+                }).then((res) => {
+                    this.approveropt = res.data.body;
+
+                    if ( this.approveropt.length > 0) {
+                        let params = {};
+                        params.loginNo = this.userInfo.loginNo;
+                        params.taskId = this.componentInfo.taskId;
+                        this.$http({
+                            url: "/market/mbAudit/queryBpmDispatchType",
+                            method: "post",
+                            headers: {
+                              "Content-Type": "application/json",
+                            },
+                            data: params,
+                        }).then((res) => {
+                            if ( res.data == '3') {
+                                //自选工号派单
+                                this.changeinfo1 = true;
+                            }
+                        });
+                    }
+                });
+            },
+            //查询需求审核会审并行完成标识
+            getFinishFlag() {
+              let params = {};
+              params.woNo = this.componentInfo.woNo;
+              this.$http({
+                url: "/market/mbAudit/queryAllFinishFlag",
+                method: "post",
+                headers: {
+                  "Content-Type": "application/json",
+                },
+                data: params,
+              }).then((res) => {
+                this.finishFlag = res.data;
+              });
+            },
+            //检查获取下一步处理人信息
+            checkNextStep(params){
+                let taskName = this.componentInfo.taskName;
+                if(taskName === "其他部门科室主任审批"){
+                        //Next Step
+                        //其他部门部门领导审批
+                        //todo 根据当前工号查找 部门领导
+                        params.assigneeNo ="admin";
+                        params.assigneeName="admin";
+
+                }else if (taskName==="地市公司科室主任审批"){
+                        //NextStep
+                        //地市公司部门领导审批
+                        //todo 根据当前工号,查找地市公司部门领导
+                        params.assigneeNo ="admin";
+                        params.assigneeName="admin";
+
+                }else if (taskName==="地市公司部门领导审批"){
+                        //NextStep
+                        //地市公司主管副总,
+                        //todo 根据当前工号,地市公司副总
+                        params.assigneeNo ="admin";
+                        params.assigneeName="admin";
+                }
+            }
+        },
+        mounted() {
+            this.getApprover();
+            this.getFinishFlag();
+        },
+        created() {
+            if (this.componentStatus) {
+                this.dialogCheck();
+            }
+        },
+        watch: {
+            componentStatus(v) {
+                if (v) {
+                    this.dialogCheck();
+                }
+            }
+        }
+    }
+</script>
+
+<style scoped lang="scss">
+    .onetab {
+        margin-bottom: 20px;
+        padding: 0 20px;
+    }
+
+    .info-line {
+        width: 100%;
+        display: block;
+        padding-left: 20px;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 200px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select {
+            width: calc(100% - 220px);
+        }
+
+        .el-input {
+            width: calc(100% - 220px);
+        }
+        .el-radio-group{
+            border: 1px solid #ddd;
+                padding-top: 12px;
+                padding-left: 20px;
+                height: 40px;
+                width: calc(100% - 220px);
+                border-radius: 5px;
+        }
+        .el-checkbox-group{
+            border: 1px solid #ddd;
+                padding-left: 20px;
+                height: 40px;
+                width: calc(100% - 220px);
+                border-radius: 5px;
+        }
+    }
+
+    .add {
+        .el-select {
+            width: calc(100% - 200px);
+            margin-right: 20px;
+        }
+    }
+
+    .online {
+        width: 100%;
+
+        .el-select {
+            width: calc(100% - 220px);
+        }
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 220px);
+        }
+    }
+
+    .dialog-footer {
+        text-align: right;
+        padding: 15px 20px;
+    }
+</style>

+ 162 - 0
src/pages/main/homeMarket/magicboxAudit/base.vue

@@ -0,0 +1,162 @@
+<template>
+    <div>
+        <table class="spfm-table" v-if="infoApply">
+            <tr>
+                <th>工单标题</th>
+                <td colspan="3">{{infoApply.tit}}</td>
+            </tr>
+
+            <tr>
+                <th>需求类型</th>
+                <td>{{infoApply.mbhxqlx}}</td>
+                <th>投放位置</th>
+                <td>{{parserWz(infoApply.mbhtfwz)}}</td>
+            </tr>
+
+            <tr>
+                <th>开始时间</th>
+                <td>{{infoApply.mbhkssj}}</td>
+                <th>结束时间</th>
+                <td>{{infoApply.mbhjssj}}</td>
+            </tr>
+
+            <tr>
+                <th>投放区域</th>
+                <td>{{(infoApply.mbhtfqy)}}</td>
+                <th>投放定向</th>
+                <td>{{parserTFDX(infoApply.mbhtfdx)}}</td>
+            </tr>           
+
+            <tr>
+                <th>素材名称</th>
+                <td>{{infoApply.mbhscmc}}</td>
+                <th>素材时长</th>
+                <td>{{infoApply.mbhscsc}}</td>
+            </tr>      
+
+
+            <tr>
+                <th>素材类型</th>
+                <td>{{infoApply.mbhsclx}}</td>
+                <th>拨测要求</th>
+                <td>{{parserBc(infoApply.mbhbcyq)}}</td>
+            </tr> 
+            
+            <tr>
+                <th>状态</th>
+                <td>{{parserStatus(infoApply.status)}}</td>
+                <th>是否上线</th>
+                <td>{{parserPublish(infoApply.publish)}}</td>
+            </tr> 
+
+            <tr>
+                <th>创建人</th>
+                <td>{{infoApply.createLoginName}}</td>
+                <th>创建时间</th>
+                <td>{{infoApply.createTime}}</td>
+            </tr> 
+
+            <tr>
+                <th>附件</th>
+                <td colspan="3">
+                    <uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
+                </td>
+            </tr>
+        </table>
+    </div>
+</template>
+
+<script>
+import uploadDown from '@/components/uploadDown.vue'
+export default {
+    components:{uploadDown},
+    props: {
+        woNo:   { required: false,type: String},
+        itemId: { required: false,type: String},
+        taskName:{ required: false, type: String}
+    },
+    data(){
+        return{
+            loading:false,
+            tableData:[],
+            infoApply:'',
+            labelPosition: 'right',
+            uploadstatus:false,
+            datalist: {
+                url: '/bpm/api/download',
+                type: 1
+            },
+
+        }
+    },
+    methods:{
+        handlePublishUpload(){
+
+        },
+        parserPublish(v){
+            if(v==="0"){
+                return "未上线";
+            }else if(v==="1"){
+                return "上线";
+            }
+        },
+        parserStatus(v){
+            if(v==="0"){
+                return "审批中";
+            }else if(v==="1"){
+                return "归档";
+            }else if(v==="2"){
+                return "结束";
+            }
+        },
+        parserBc(v){
+            return this.pp(v)        
+        },
+        parserWz(v){
+            return this.pp(v)        
+        },
+        parserTFDX(v){
+            return this.pp(v)
+        },
+        pp(v){
+            if(v!==undefined){
+                v = v.replace("[","").replace("]","").replace("\"","").replace("\"","").replace("\"","").replace("\"","").replace("\"","").replace("\"","").replace("\"","")
+                v = v.replace("\"","").replace("\"","").replace("\"","").replace("\"","").replace("\"","").replace("\"","").replace("\"","")
+            }
+            return v;
+        },
+        loadData(){
+            this.$http({
+                url: "/market/mbh/list",
+                method: "post",
+                headers: {"Content-Type": "application/json"},
+                data: {"itemId":this.itemId,"woNo":this.woNo}
+            }).then((res) => {
+                if(res.data.result==0){
+                    this.tableData = res.data.body
+                    this.infoApply = this.tableData[0]
+                    //
+                    //console.log(this.infoApply)
+                    let xFile = JSON.parse(this.infoApply.attrList);
+                    for(var i = 0 ;i<xFile.length ;i++){
+                        xFile[i].fileName = xFile[i].name;
+                    }
+                    this.datalist.attList = xFile;
+                    this.uploadstatus =true
+                }else{
+                this.$message({ showClose: true, message: '系统异常',type: 'error'});
+                }
+            });
+        }
+    },
+    created(){
+        this.loadData()
+    }
+}
+</script>
+
+<style scoped lang="scss">
+    .spfm-table{ width: 100%;border-collapse: collapse; }
+    .spfm-table th {border-width: 1px;padding: 8px;border-style: solid;border-color: #EBEEF5; width:100px;font-weight: 500;}
+    .spfm-table td {border-width: 1px;padding: 8px;border-style: solid;border-color: #EBEEF5;}
+</style>

+ 539 - 0
src/pages/main/homeMarket/magicboxAudit/dealAudit.vue

@@ -0,0 +1,539 @@
+<template>
+    <div>
+        <div class="tv-container">
+            <div class="container-box">
+                <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息</div>
+                <div class="el-line"></div>
+                <baseTable v-if="woNo" :itemId="itemId" :woNo="woNo" :taskName="taskName"/>
+
+                <div class="el-line"></div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>审批轨迹</div>
+                <div class="el-line"></div>
+                <el-table v-if="rovaList" class="com-table" ref="multipleTable" :data="rovaList" tooltip-effect="dark" size="small"
+                    border style="width: 100%">
+                    <el-table-column prop="procId" label="编号">
+                    </el-table-column>
+                    <el-table-column prop="taskName" label="环节">
+                    </el-table-column>
+                    <el-table-column prop="opName" label="处理人">
+                    </el-table-column>
+                    <el-table-column prop="opNo" label="处理人工号">
+                    </el-table-column>
+                    <el-table-column prop="createTime" label="处理时间">
+                    </el-table-column>
+                    <el-table-column prop="remark" label="审批意见">
+                    </el-table-column>
+                </el-table>
+
+                <div class="el-line"></div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>{{taskName}}</div>
+                <div class="el-line"></div>
+                <div>
+                  <el-row>
+                    <el-col :span="6">&nbsp;</el-col>
+                    <el-col :span="12">
+                        <el-form ref="form" :model="form" label-width="80px">
+                          <el-form-item label="审核结果" v-if="hasAuditResult==='Y'">
+                              <el-radio v-model="form.auditResult" label="Y">通过</el-radio>
+                              <el-radio v-model="form.auditResult" label="N">未通过</el-radio>
+                          </el-form-item>
+                          <el-form-item label="是否上线" v-if="showPublish==='Y'">
+                              <el-radio v-model="form.publish" label="1">上线</el-radio>
+                              <el-radio v-model="form.publish" label="0">未上线</el-radio>
+                          </el-form-item>
+
+                          <!--选择下步处理人-->
+                          <el-form-item label="审批人" v-if="showUserTreeDlg===true">
+                            <div style="display:none;">
+                            <el-input type="hidden" placeholder="请选择教师" v-model="assigneeNo"/>
+                            </div>
+                            <el-input type="input" placeholder="请选择审批人" v-model="assigneeName">
+                                <el-button slot="append" icon="el-icon-search" @click="handleShowUserTreeDlg"></el-button>
+                            </el-input>
+                          </el-form-item>
+                          
+                          <el-form-item label="备注信息">
+                            <el-input type="textarea" v-model="form.note"></el-input>
+                          </el-form-item>
+                        </el-form>
+                    </el-col>
+                    <el-col :span="6">&nbsp;</el-col>
+                  </el-row>
+                </div>
+                <div class="el-line"></div>
+                <div style="text-align:right">
+                  <el-button type="primary" @click="handleAudit">确定</el-button>
+                </div>
+            </div>
+        </div>
+
+
+        <el-dialog
+          title="请选择"
+          :visible.sync="userDlgVisual"
+          width="30%"
+          :modal-append-to-body="false"
+          :close-on-click-modal="false"
+          :before-close="handleClose">
+        <div>
+            <el-radio  v-for="user in userList " v-model="assigneeNo" :key="user.loginNoStr" :label="user.loginNoStr">{{user.loginNameStr}}</el-radio>
+        </div>
+        <span slot="footer" class="dialog-footer">
+            <el-button @click="userDlgVisual = false">取 消</el-button>
+            <el-button type="primary" @click="checkSelectUser">确 定</el-button>
+        </span>
+      </el-dialog>
+
+
+        <userDlg :visible="userTreeDlgVisual" @handleSelect="handleUserSelect" @close="closeUserSelect"/>
+
+    </div>
+</template>
+
+<script>
+import baseTable from  "./base.vue"
+import userDlg from "../userDlg"
+// 
+export default {
+    components:{ baseTable ,userDlg},
+    data(){
+        return{
+            itemId : "",
+            taskId:"",
+            woNo :"",
+            taskName:"",
+            stepId:"",
+            procId:"",
+            procVersion:"",
+            rovaList:"",
+            form:{
+                note:"",
+                auditResult:"Y",
+                publish:"1"
+            },
+            hasAuditResult:"N",
+            showPublish:"N",
+            userDlgVisual:false,
+            userList:[],
+
+            assigneeNo:"",
+            assigneeName:"",
+            infoApply:"",
+
+            showUserTreeDlg:false,
+            userTreeDlgVisual:false
+        }
+    },
+    methods:{
+        dialogCheck() {
+            this.$http({
+                url: '/bpm/api/taskInit',
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: {
+                    taskId: this.taskId,
+                    woNo: this.woNo
+                },
+            }).then((res) => {
+                this.rovaList = res.data.taskList;
+                this.uploadstatus = true;
+            });
+        },
+        submitInfo(u, v) {
+            let _this = this;
+            this.$http({
+                url: u,
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                data: v,
+            }).then((res) => {
+                if (res.data.result === 1) {
+                    _this.$message({
+                        message: res.data.desc,
+                        type: 'error'
+                    });
+                } else {
+                    _this.$message({
+                        message: '成功',
+                        type: 'success'
+                    });
+                    _this.$router.push({"path":"/magicboxAudit"})
+
+                }
+
+            });
+        },
+        getLeader(loginNoStr,type,level){
+            //
+            if(loginNoStr===""){
+                let userInfo = window.sessionStorage.userInfo;
+                if(null === userInfo){
+                    this.$message({ showClose: true, message: "数据异常",type: 'error'});
+                    return 
+                }
+                userInfo = JSON.parse(userInfo);
+                loginNoStr = userInfo.loginNoStr;
+            }
+            //
+            return new Promise((resolve, reject) => {
+            this.$http({
+                url: "/market/api/user/info/leader2",
+                method: "post",
+                headers: {"Content-Type": "application/json"},
+                data:{"loginNoStr":loginNoStr,"level":type,"type":level}                
+                }).then((res) => {
+                if(res.data.result==0){
+                    resolve(res.data.body)
+                }else{
+                    this.$message({ showClose: true, message: '系统异常',type: 'error'});
+                }
+                }); 
+            });
+        }
+        ,
+        completeTask(paramsInfo){
+            let remark = "";
+            if(this.form.auditResult==='Y'){
+                remark ="通过";
+            }else if(this.form.auditResult==='N'){
+                remark ="未通过";
+            }else{
+                remark = ""
+                if(this.form.publish==='1'){
+                    remark ="上线";
+                }else if(this.form.publish==='0'){
+                    remark ="未上线";
+                }else{
+                    remark = ""
+                }
+            }
+            //
+
+            //
+            //console.log({remark})
+            if(remark===""){
+                if(this.form.note!==""){
+                    remark = this.form.note
+                }
+            }else{
+                if(this.form.note!==""){
+                    remark = remark  + " , "+this.form.note;
+                } 
+            }
+            //
+            //console.log({remark})
+            let userInfo = JSON.parse(window.sessionStorage.userInfo);
+            let opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss")
+            let params = {
+                dealType: '0',
+                dealTypeDesc: '提交',
+                procId: this.procId,
+                procVersion: this.procVersion,
+                remark: remark,
+                stepId: this.stepId,
+                taskId: this.taskId,
+                taskName: this.taskName,
+                opName: userInfo.loginNoName,
+                opNo: userInfo.loginNoStr,
+                opTime: opTime,
+                params: paramsInfo,
+                woNo: this.woNo
+            }
+            this.submitInfo("/bpm/api/submitTask",params);
+        }
+        ,
+        handleAudit(){
+            let paramsInfo={}
+            if(this.taskName==="其他部门科室主任审批"){
+                //部门领导审批
+                paramsInfo = {"result":this.form.auditResult}
+                if(!this.checkSelectUserX()){
+                    return false
+                }
+                if(this.form.auditResult==='Y'){
+                    // 选领导
+                    paramsInfo.assigneeNo = this.assigneeNo
+                    paramsInfo.assigneeName =this.assigneeName
+                    this.form.publish ="";
+                    this.completeTask(paramsInfo)
+                    /*
+                    this.getLeader("","2","1").then(val => {
+                        if(val.length==1){
+                            paramsInfo.assigneeNo = val[0].loginNoStr
+                            paramsInfo.assigneeName =val[0].loginNameStr
+                            this.form.publish ="";
+                            this.completeTask(paramsInfo)
+                        }else{
+                            this.userList = val;
+                            this.userDlgVisual = true;
+                        }
+                    });
+                    */
+                }else if(this.form.auditResult==="N"){
+                    this.over()
+                }
+                
+            }else if(this.taskName==="其他部门部门领导审批"){
+                if(this.form.auditResult==="Y"){
+                    paramsInfo = {"result":this.form.auditResult}
+                    this.form.publish ="";
+                    this.completeTask(paramsInfo)
+                }else if(this.form.auditResult==="N"){
+                     this.over()
+                }
+            }else if(this.taskName==="自有业务素材审核" || this.taskName==="传播管理素材审核" || this.taskName==="法务部素材风险审核"){
+                this.form.auditResult = "";
+                this.form.publish ="";
+                this.getFinishFlag().then(val=>{
+                    paramsInfo.finishFlag = val;
+                    this.completeTask(paramsInfo)
+                });
+            }else if(this.taskName==="播控审核"){
+                this.form.auditResult = "";
+                this.form.publish ="";
+                this.completeTask(paramsInfo)
+            }else if(this.taskName==="科室主任审批"){
+                if(this.form.auditResult==="Y"){
+                    this.form.publish ="";
+                    paramsInfo = {"result":this.form.auditResult}
+                    this.completeTask(paramsInfo)
+                }else{
+                    this.over()
+                }
+            }else if(this.taskName==="主管副总终审"){
+                if(this.form.auditResult==="Y"){
+                    this.form.publish ="";
+                    paramsInfo = {"result":this.form.auditResult}
+                    this.completeTask(paramsInfo)
+                }else{
+                    this.over()
+                }
+            }else if(this.taskName==="录入是否执行"){
+                this.form.auditResult = "";
+                paramsInfo.publish = this.form.publish
+                paramsInfo.woNo = this.woNo
+                this.completeTask(paramsInfo)
+            }else if(this.taskName==="市场部科室主任审批"){
+                if(this.form.auditResult==="Y"){
+                    this.form.publish ="";
+                    paramsInfo = {"result":this.form.auditResult}
+                    this.completeTask(paramsInfo)
+                }else if(this.form.auditResult==="N"){
+                    this.over()
+                }
+            }else if(this.taskName==="地市公司科室主任审批"){
+                if(this.form.auditResult==="Y"){
+                    paramsInfo = {"result":this.form.auditResult}
+                    //
+                    if(!this.checkSelectUserX()){
+                        return false
+                    }                    
+                    paramsInfo.assigneeNo = this.assigneeNo
+                    paramsInfo.assigneeName =this.assigneeName
+                    this.form.publish ="";
+                    this.completeTask(paramsInfo)
+                    /*
+                    this.getLeader("","2","1").then(val => {
+                        if(val.length==1){
+                            paramsInfo.assigneeNo = val[0].loginNoStr
+                            paramsInfo.assigneeName =val[0].loginNameStr
+                            this.form.publish ="";
+                            this.completeTask(paramsInfo)
+                        }else{
+                            this.userList = val;
+                            this.userDlgVisual = true;
+                        }
+                    });*/
+                }else if(this.form.auditResult==="N"){
+                    this.over()
+                }
+            }else if(this.taskName==="地市公司部门领导审批"){
+                if(this.form.auditResult==="Y"){
+                    paramsInfo = {"result":this.form.auditResult}
+                    //
+                    if(!this.checkSelectUserX()){
+                        return false
+                    }   
+                    paramsInfo.assigneeNo = this.assigneeNo
+                    paramsInfo.assigneeName =this.assigneeName
+                    this.form.publish ="";
+                    this.completeTask(paramsInfo)
+                    /*
+                    this.getLeader("","3","2").then(val => {
+                        if(val.length==1){
+                            paramsInfo.assigneeNo = val[0].loginNoStr
+                            paramsInfo.assigneeName =val[0].loginNameStr
+                            this.form.publish ="";
+                            this.completeTask(paramsInfo)
+                        }else{
+                            if(this.form.auditResult==='Y'){
+                                this.userList = val;
+                                this.userDlgVisual = true;
+                            }else if(this.form.auditResult==='N'){
+                                this.over()
+                            }
+                        }
+                    });*/
+                }else if(this.form.auditResult==="N"){
+                    this.over()
+                }
+            }else if(this.taskName==="公司主管副总审批"){
+                if(this.form.auditResult==='Y'){
+                    paramsInfo = {"result":this.form.auditResult}
+                    this.form.publish ="";
+                    this.completeTask(paramsInfo)
+                }else if(this.form.auditResult==="N"){
+                    this.over()
+                }
+            }
+        },
+        auditResultShow(){
+            if(this.taskName==="其他部门科室主任审批"  || this.taskName==="其他部门部门领导审批"
+            || this.taskName==="市场部科室主任审批"
+            || this.taskName==="地市公司科室主任审批" || this.taskName==="地市公司部门领导审批" || this.taskName==="公司主管副总审批"
+            || this.taskName==="科室主任审批" || this.taskName==="主管副总终审"){
+                this.hasAuditResult="Y";
+            }else if( this.taskName==="录入是否执行"){
+                this.showPublish = "Y";
+            }
+
+            if(this.taskName==="其他部门科室主任审批"  || this.taskName==="地市公司科室主任审批" || this.taskName==="地市公司部门领导审批"){
+                this.showUserTreeDlg = true;
+            }
+
+            //
+        },
+        getFinishFlag() {
+            return new Promise((resolve, reject) => {
+                this.$http({
+                url: "/market/mbAudit/queryAllFinishFlag",
+                method: "post",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                    data: {"woNo":this.woNo},
+                }).then((res) => {
+                    resolve(res.data)
+                });
+            });
+        },
+        over(){
+            let paramsInfo = {"result":this.form.auditResult}
+            paramsInfo.assigneeNo = this.infoApply.createLogin
+            paramsInfo.assigneeName = this.infoApply.createLoginName
+            this.form.publish ="";
+            paramsInfo.result = this.form.auditResult;
+
+            this.$http({
+            url: "/market/mbh/over",
+            method: "post",
+            headers: {
+                "Content-Type": "application/json",
+            },
+                data: {"woNo":this.woNo},
+            }).then((res) => {
+                if(res.data.result==0){
+                    this.completeTask(paramsInfo)
+                }else{
+                    this.$message({ showClose: true, message: '系统异常',type: 'error'});
+                }
+            });
+        },
+        checkSelectUser(){
+            if(this.assigneeNo===''){
+                this.$message.error('请选择下一步处理人');
+                return
+            }
+            //
+            this.userList.forEach((e)=>{
+                if(e.loginNoStr === this.assigneeNo){
+                    this.assigneeName = e.loginNameStr
+                }
+            });
+            //
+            this.userDlgVisual = false
+            let paramsInfo = {"result":this.form.auditResult}
+            paramsInfo.assigneeNo = this.assigneeNo;
+            paramsInfo.assigneeName = this.assigneeNo;
+            this.form.publish ="";
+            this.completeTask(paramsInfo)
+        },
+        handleClose(){
+            this.userList = []
+            this.userDlgVisual = false;
+        },
+        loadItemData(){
+            this.$http({
+                url: "/market/mbh/list",
+                method: "post",
+                headers: {"Content-Type": "application/json"},
+                data: {"itemId":this.itemId,"woNo":this.woNo}
+            }).then((res) => {
+                if(res.data.result==0){
+                    this.infoApply = res.data.body[0]
+                }else{
+                    this.$message({ showClose: true, message: '系统异常',type: 'error'});
+                }
+            });
+        },
+   
+        handleUserSelect(v){
+            this.assigneeNo = v.leaderAuditNo
+            this.assigneeName = v.leaderAuditName
+            this.closeUserSelect()
+        },
+        checkSelectUserX(){
+            if(this.assigneeNo===''){
+                this.$message.error('请选择审批人');
+                return false
+            }
+            if(this.assigneeName===''){
+                this.$message.error('请选择审批人');
+                return false
+            }
+            return true;
+        },
+        handleShowUserTreeDlg(){
+            this.userTreeDlgVisual= true
+        },
+        closeUserSelect(){
+            this.userTreeDlgVisual = false;
+        }
+    },
+    mounted(){
+        this.itemId = this.$route.query.itemId
+        this.woNo = this.$route.query.woNo
+        this.taskName = this.$route.query.taskName
+        this.taskId = this.$route.query.taskId
+        //
+        this.stepId = this.$route.query.stepId
+        this.procId = this.$route.query.procId
+        this.procVersion = this.$route.query.procVersion
+        //
+        this.dialogCheck();
+        this.auditResultShow();
+        this.loadItemData();
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.tv-container{
+  background-color: white;
+  margin:15px 15px 15px 15px;
+  padding:20px ;
+
+}
+.el-label{
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 429 - 0
src/pages/main/homeMarket/magicboxAudit/homeTask.vue

@@ -0,0 +1,429 @@
+<template>
+  <div style="display: flex; justify-content: space-between">
+    <div class="taskbox">
+      <div class="tit">
+        <span style="font-weight: bold">待办任务</span>
+      </div>
+      <div style="background: #fff; padding: 20px; min-height: 400px">
+        <div class="tabbox">
+          <el-table
+            class="com-table"
+            ref="tableDataToDo"
+            :data="tableDataToDo"
+            tooltip-effect="dark"
+            size="small"
+            border
+            style="width: 100%"
+            height="350px"
+          >
+            <el-table-column prop="taskId" label="任务编码">
+              <template slot-scope="scope">
+                <span>{{ scope.row.taskId }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="sendTime" label="发起时间">
+              <template slot-scope="scope">
+                <span>{{ $formatDate(scope.row.createTime, "YYYY-MM-DD") }}</span>
+              </template>
+            </el-table-column>
+            <!-- <el-table-column prop="sendNo" label="发起工号">
+            </el-table-column> -->
+            <el-table-column prop="woNo" label="工单编号">
+              <template slot-scope="scope">
+                <!-- <span>{{ $desensitization(scope.row.woNo, 1) }}</span> -->
+                <span>{{ scope.row.woNo }}</span>
+              </template>
+            </el-table-column>
+
+            <el-table-column label="操作" align="center" width="120">
+              <template slot-scope="scope">
+                <el-button
+                  size="mini"
+                  type="primary"
+                  @click="viewItem(scope.row,1)"
+                  >查看</el-button
+                >
+                <el-button
+                  v-if="
+                    scope.row.sts == 0
+                  "
+                  size="mini"
+                  type="danger"
+                  @click="dialogCheck(scope.row,2)"
+                  >审批</el-button
+                >
+              </template>
+            </el-table-column>
+          </el-table>
+          <el-pagination class="pageBox" @current-change="currchangeToDo" layout="total, prev, pager, next" background
+            :total="totalToDo">
+          </el-pagination>
+        </div>
+      </div>
+    </div>
+    <div class="taskbox">
+      <div class="tit">
+        <span style="font-weight: bold">已办任务</span>
+      </div>
+      <div style="background: #fff; min-height: 400px; padding: 20px">
+        <div class="tabbox">
+          <el-table
+            class="com-table"
+            ref="tableDataDone"
+            :data="tableDataDone"
+            tooltip-effect="dark"
+            size="small"
+            border
+            style="width: 100%"
+            height="350px"
+          >
+            <el-table-column prop="taskId" label="任务编码"> </el-table-column>
+            <el-table-column prop="sendTime" label="发起时间">
+              <template slot-scope="scope">
+                <span>{{ $formatDate(scope.row.createTime, "YYYY-MM-DD") }}</span>
+              </template>
+            </el-table-column>
+            <!-- <el-table-column prop="sendNo" label="发起工号"> </el-table-column> -->
+            <el-table-column prop="woNo" label="工单编号">
+              <template slot-scope="scope">
+                <span>{{ scope.row.woNo }}</span>
+              </template>
+            </el-table-column>
+
+            <el-table-column label="操作" align="center">
+              <template slot-scope="scope">
+                <el-button
+                  size="mini"
+                  type="primary"
+                  @click="viewItem(scope.row,1)"
+                >
+                  查看</el-button
+                >
+              </template>
+            </el-table-column>
+          </el-table>
+          <el-pagination class="pageBox" @current-change="currchangeDone" layout="total, prev, pager, next" background
+            :total="totalDone">
+          </el-pagination>
+        </div>
+      </div>
+    </div>
+
+
+    <el-dialog title="工单审核" :visible.sync="dialogStatusAudit" width="70%" :destroy-on-close="true"
+        :modal-append-to-body="false" :close-on-click-modal="false">
+        <div>
+            <audit v-if="typestatsu === 2" @closeEdio="closeEdio" :componentInfo="componentInfo"
+                :componentStatus="componentStatus" :changeinfo="changeinfo"></audit>
+        </div>
+    </el-dialog>
+
+    <itemDlg v-if="selWoNo" :dialogVisible="dialogVisible" :woNo="selWoNo" :taskName="selTaskName" @closeWin="closeWin"></itemDlg>
+  </div>
+</template>
+<script>
+import audit from "./audit.vue";
+import itemDlg from "./itemDlg.vue";
+
+export default {
+  components: {
+    audit,itemDlg
+  },
+  data() {
+    const woTitle = (rule, value, callback) => {
+      if (!this.infolist.woTitle) {
+        callback(new Error("不能为空"));
+      } else {
+        callback();
+      }
+    };
+    const requireTime = (rule, value, callback) => {
+      if (!this.infolist.requireTime) {
+        callback(new Error("不能为空"));
+      } else {
+        callback();
+      }
+    };
+    return {
+      rules: {
+        woTitle: [
+          {
+            required: true,
+            trigger: "blur",
+            validator: woTitle,
+          },
+        ],
+        requireTime: [
+          {
+            required: true,
+            trigger: "change",
+            validator: requireTime,
+          },
+        ],
+      },
+      totalToDo: 0,
+      totalDone: 0,
+      pageSizeToDo: 1,
+      pageSizeDone: 1,
+      tableDataToDo: [],
+      tableDataDone: [],
+      params: {},
+      changeinfo: false,
+      typestatsu: 1,
+      dialogStatusAudit: false,
+      componentInfo: {},
+      componentStatus: false,
+      typelist: [],
+      userInfo: {},
+      pageSize:10,
+      pageNo:1,
+      //
+      dialogVisible:false,
+      selWoNo:"",
+      selTaskName:""
+    };
+  },
+  methods: {
+    //待办工单列表查询
+    getToDoList(v, n) {
+        this.pageSizeToDo = n;
+        this.loading = true;
+        v.procName = "魔百和大屏广告自有业务承载审批流程";
+        //v.procName = "广告申请";
+        this.$http({
+            url: "/bpm/api/queryToDoTaskList",
+            method: "post",
+            headers: {
+                "Content-Type": "application/json",
+                "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+            },
+            data: v,
+        }).then((res) => {
+            this.tableDataToDo = res.data.data;
+            this.totalToDo = res.data.totalRecord;
+            this.loading = false;
+        });
+    },
+    // 分页
+    currchangeToDo(v) {
+        this.pageSizeToDo = v;
+        this.getToDoList(this.params, this.pageSizeToDo);
+    },
+    //处理申请
+    dialogCheck(n, v) {
+        if (v == 1) {
+            this.changeinfo = false;
+            let params = { woNo: n.woNo, taskId: n.taskId,taskName:n.taskName}
+            this.typestatsu = 2;
+            this.componentInfo = params;
+            this.componentStatus = true;
+        } else {
+            this.$router.push({"path":"/dealAudit?woNo="+n.woNo+"&taskName="+n.taskName+"&taskId="+n.taskId+"&stepId="+n.stepId+"&procId="+n.procId+"&procVersion="+n.procVersion})
+        }
+    },
+    viewItem(n, v){
+        this.selWoNo = n.woNo;
+        this.selTaskName = n.taskName;
+        this.dialogVisible = true;
+    },
+    closeWin(){
+        this.selWoNo =""
+        this.taskName =""
+        this.dialogVisible = false;
+    },
+    //已办工单列表查询
+    getDoneList(v, n) {
+        this.pageSizeDone = n;
+        this.loading = true;
+        v.procName = "魔百和大屏广告自有业务承载审批流程";
+        //v.procName = "广告申请";
+        this.$http({
+            url: "/bpm/api/queryDoneTaskList",
+            method: "post",
+            headers: {
+                "Content-Type": "application/json",
+                "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+            },
+            data: v,
+        }).then((res) => {
+            this.tableDataDone = res.data.data;
+            this.totalDone = res.data.totalRecord;
+            this.loading = false;
+        });
+    },
+    // 分页
+    currchangeDone(v) {
+        this.pageSizeDone = v;
+        this.getDoneList(this.params, this.pageSizeDone);
+    },
+    closeEdio() {
+        this.getToDoList(this.params, this.pageNo);
+        this.getType();
+        this.getDoneList(this.params, this.pageNo);
+        this.dialogStatusAudit = false;
+        this.componentStatus = false;
+    },
+    getType() {
+      this.$http({
+        url: "/market/qatype/queryPage",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+          page: '{"pageNo":"' + 1 + '","pageSize":"100"}',
+        },
+        data: {sts: 0,},
+      }).then((res) => {
+        this.typelist = res.data.data;
+      });
+    },
+  },
+  mounted() {
+    this.getToDoList({}, 1);
+    this.getType();
+    this.getDoneList({}, 1);
+    this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+  },
+  created() {},
+};
+</script>
+
+<style lang="scss" scoped>
+.dialog-footer {
+  padding-right: 20px;
+  text-align: right;
+  margin-top: 20px;
+}
+
+.taskbox {
+  width: 49.5%;
+  display: inline-block;
+}
+
+.pageBox {
+    text-align: right;
+    margin-top: 10px;
+}
+
+.tit {
+  margin-top: 10px;
+  clear: both;
+  height: 47px;
+  background: #fff;
+  line-height: 47px;
+  padding: 0 20px;
+  display: flex;
+  justify-content: space-between;
+  border-bottom: 1px solid black;
+}
+
+.info-line {
+  width: 100%;
+  display: block;
+  padding-left: 20px;
+
+  div {
+    width: 50%;
+    display: inline-block;
+    overflow: hidden;
+  }
+
+  .mytxt {
+    height: 40px;
+    padding-left: 20px;
+    border: 1px solid #ddd;
+    border-radius: 5px;
+    width: calc(100% - 100px);
+    float: left;
+  }
+
+  .mytxtinfo {
+    line-height: 40px;
+    height: auto;
+    padding-left: 20px;
+    border: 1px solid #ddd;
+    border-radius: 5px;
+    width: calc(100% - 100px);
+  }
+
+  span {
+    width: 80px;
+    display: inline-block;
+    text-align: left;
+    float: left;
+
+    i {
+      color: red;
+      display: inline-block;
+      padding-right: 5px;
+    }
+  }
+
+  .el-select,
+  .el-input {
+    width: calc(100% - 100px);
+  }
+}
+
+.online {
+  width: 100%;
+
+  .el-select {
+    width: calc(100% - 100px);
+  }
+
+  span {
+    vertical-align: top;
+  }
+
+  .el-textarea {
+    width: calc(100% - 100px);
+  }
+
+  .tree {
+    width: calc(50% - 60px);
+    display: inline-block;
+    margin-right: 20px;
+    height: 300px;
+    overflow-y: scroll;
+  }
+
+  .treeUser {
+    margin: 0;
+    border: 1px solid #ddd;
+
+    p {
+      background: #f4f4f4;
+      padding: 0 20px;
+      margin-bottom: 5px;
+    }
+  }
+
+  .treeUserb {
+    width: calc(100% - 100px);
+    border: 1px solid #ddd;
+    background: #f4f4f4;
+    border-radius: 3px;
+    height: auto;
+    overflow: hidden;
+
+    p {
+      display: inline-block;
+      padding: 0 20px;
+      margin-bottom: 5px;
+    }
+  }
+  .treedept {
+    width: calc(100% - 100px);
+    // display: inline-block;
+    margin-right: 20px;
+    border: 1px solid #ddd;
+    border-radius: 3px;
+    padding: 0 20px;
+
+    p {
+      display: inline-block;
+      margin-right: 20px;
+    }
+  }
+}
+</style>

+ 547 - 0
src/pages/main/homeMarket/magicboxAudit/index.vue

@@ -0,0 +1,547 @@
+<template>
+  <div class="mc-wrap">
+    <div class="container-box">
+      <div class="mc-top">
+        <div class="mc-top-left">
+          <el-row>
+            <el-col :span="24">
+                <div class="car-line">
+                    <h2 style="margin-left: 20px;padding-top: 10px;">魔百和大屏广告自有业务承载审批流程</h2>
+                    <div class="adv-box">
+                        <div class="adv-tit" @click="jumpadv('0')">
+                            <i class="el-icon-time"></i>
+                            <span>待办 <em>{{totalToDo||0}}</em></span>
+                        </div>
+                        <div class="adv-tit" @click="jumpadv('1')">
+                            <i class="el-icon-finished"></i>
+                            <span>已办 <em>{{totalDone||0}}</em></span>
+                        </div>
+                        <div class="adv-tit" @click="jumpadv('2')">
+                            <i class="el-icon-notebook-1"></i>
+                            <span>已归档 <em>{{totalFinish||0}}</em></span>
+                        </div>
+                        <div class="adv-tit adv-add" @click="advadd">
+                            <i class="el-icon-plus"></i>
+                            <span>创建</span>
+                        </div>
+                    </div>
+                </div>
+            </el-col>
+
+            <el-col :span="24">
+              <hometask></hometask>
+            </el-col>
+          </el-row>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import hometask from "./homeTask.vue";
+
+export default {
+  components: {
+    hometask,
+  },
+  data() {
+    return {
+      totalToDo: 0,
+      totalDone: 0,
+      totalFinish: 0,
+    };
+  },
+  methods: {
+    advadd(){
+        this.$router.push({
+            path: "/mbAuditAdd",
+        });
+        this.setabList("发起需求", "/mbAuditAdd");
+    },
+
+    jumpadv(v){
+        if(v!=='2'){
+          this.$router.push({ path: "/mbAuditList", query:{ type:v}});
+          this.setabList("魔百和审批流程列表", "/mbAuditList?type="+v);
+        }else if(v==='2'){
+          this.$router.push({ path: "/magicBoxItem"});
+        }
+    },
+    setabList(n, p) {
+        let params = {
+            children: "",
+            name: n,
+            rountPath: p,
+            target: "_self",
+        };
+        for (let i = 0; i < this.$store.state.tabList.length; i++) {
+            if (this.$store.state.tabList[i].name === params.name) {
+                this.$store.state.tabList[i] = params;
+            }
+        }
+        let set = new Set([...this.$store.state.tabList, params]);
+        set.add(params);
+        this.$store.commit("setDefaultActive", params.rountPath);
+        this.$store.commit("setTabList", Array.from(set));
+    },
+    //待办工单列表查询
+    getToDoList(v, n) {
+        this.pageSizeToDo = n;
+        v.procName = "魔百和大屏广告自有业务承载审批流程";
+        //v.procName = "广告申请";
+        this.$http({
+            url: "/bpm/api/queryToDoTaskList",
+            method: "post",
+            headers: {
+                "Content-Type": "application/json",
+                "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+            },
+            data: v,
+        }).then((res) => {
+            this.totalToDo = res.data.totalRecord;
+        });
+    },
+    //已办工单列表查询
+    getDoneList(v, n) {
+        this.pageSizeDone = n;
+        v.procName = "魔百和大屏广告自有业务承载审批流程";
+        //v.procName = "广告申请";
+        this.$http({
+            url: "/bpm/api/queryDoneTaskList",
+            method: "post",
+            headers: {
+                "Content-Type": "application/json",
+                "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+            },
+            data: v,
+        }).then((res) => {
+            this.totalDone = res.data.totalRecord;
+        });
+    },
+    //已归档工单列表查询
+    getFinishList(v, n) {
+        this.pageSizeDone = n;
+        v.procName = "魔百和大屏广告自有业务承载审批流程";
+        //v.procName = "广告申请";
+        this.$http({
+            url: "/market/mbh/list",
+            method: "post",
+            headers: {
+                "Content-Type": "application/json"
+            },
+            data: {"status":"1"},
+        }).then((res) => {
+            this.totalFinish = res.data.body.length
+        });
+    },
+  },
+  mounted() {
+    this.getToDoList({}, 1);
+    this.getDoneList({}, 1);
+    this.getFinishList({}, 1);
+  },
+  created() {},
+};
+</script>
+
+<style lang="scss" scoped>
+.mc-wrap {
+  box-sizing: border-box !important;
+  margin: 0;
+  height: calc(100vh - 120px);
+  overflow: hidden;
+  width: 100%;
+  padding-right: 15px;
+
+  .container-box {
+    width: 100%;
+    height: calc(100% - 40px);
+    margin-top: 20px;
+    overflow-y: scroll;
+    padding: 0 0 0 15px;
+  }
+
+  .tit {
+    height: 30px;
+    background: #fff;
+    line-height: 35px;
+    padding: 0 20px;
+    display: flex;
+    justify-content: space-between;
+  }
+}
+
+.mc-top {
+  display: flex;
+  width: 100%;
+}
+
+.mc-wrap .mc-top-left {
+  width: 100%;
+  margin-right: 15px;
+}
+
+.car-line-knowledge {
+  min-height: 250px;
+  max-height: 250px;
+  background: #fff;
+  //   margin: 10px 0 0 0;
+  margin-left: 10px;
+  overflow-y: auto;
+
+  .car-box {
+    padding: 0 20px;
+    line-height: 44px;
+    height: 44px;
+    color: #333;
+    border-bottom: 1px solid #c1abfc;
+
+    span {
+      cursor: pointer;
+      margin-right: 20px;
+    }
+
+    span:first-child {
+      cursor: auto;
+    }
+
+    span:last-child {
+      float: right;
+      margin-right: 0;
+    }
+  }
+}
+
+.car-line {
+  height: 140px;
+  background: #fff;
+  //   margin: 10px 0 0 0;
+
+  .car-box {
+    padding: 0 20px;
+    line-height: 40px;
+    color: #333;
+
+    span {
+      cursor: pointer;
+      margin-right: 20px;
+    }
+
+    span:first-child {
+      cursor: auto;
+    }
+
+    span:last-child {
+      float: right;
+      margin-right: 0;
+    }
+  }
+
+  .adv-box {
+      margin-top: 20px;
+      margin-left: 20px;
+      margin-right: 20px;
+      display: flex;
+      flex-wrap: nowrap;
+      justify-content: space-between;
+
+      div {
+          display: inline-block;
+          cursor: pointer;
+          .el-card {
+              width: 100%;
+          }
+          i{
+              margin-right: 10px;
+          }
+      }
+
+      .adv-tit {
+          width: 28%;
+          border: 1px solid transparent;
+          border-radius: 5px;
+          height: 60px;
+          line-height: 60px;
+          padding-left: 20px;
+          box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
+          overflow: hidden;
+          em{
+              float: right;
+              margin-right: 20px;
+              font-style: normal;
+              color: #0074D9;
+          }
+      }
+      .adv-tit:hover{
+          border: 1px solid #CFE8FC;
+          background: #CFE8FC;
+      }
+
+      .adv-add {
+          width: 100px;
+      }
+
+  }
+}
+
+.mc-wrap .mc-top-right {
+  width: calc(20% - 15px);
+  background-color: white;
+  overflow: hidden;
+
+  .inner-box {
+    width: calc(100% + 20px);
+    background-color: white;
+    overflow-y: scroll;
+  }
+}
+
+.swiper-pagination {
+  position: absolute;
+  bottom: 0;
+}
+
+.main-box .item {
+  float: left;
+  width: 50%;
+}
+
+.main-box {
+  overflow: hidden;
+}
+
+#test-n2 #layui-laydate1 {
+  width: 100% !important;
+}
+
+.mc-wrap .laydate-theme-grid .layui-laydate-content td {
+  border: none !important;
+  border-radius: 50%;
+}
+
+.mc-wrap .layui-laydate-main {
+  width: 100% !important;
+}
+
+.mc-wrap .layui-laydate-content table {
+  width: 100%;
+}
+
+.mc-wrap .layui-laydate-static {
+  width: 100% !important;
+  border: none !important;
+  box-shadow: none !important;
+}
+
+.mc-wrap .laydate-day-mark::after {
+  bottom: 0 !important;
+  left: 45% !important;
+  top: 50px !important;
+}
+
+.mc-wrap .laydate-day-mark {
+  overflow: inherit !important;
+  overflow: none !important;
+}
+
+.mc-wrap .layui-laydate .layui-this {
+  background-color: #a3c1e5 !important;
+}
+
+#test-n2 {
+  width: initial !important;
+}
+
+.tasksituation {
+  border-bottom: 1px solid #f7f7f7;
+}
+
+.mc-wrap .tasksituation > .title {
+  font-size: 16px;
+  font-weight: 500;
+  padding-top: 20px;
+  padding-left: 20px;
+  color: #333;
+}
+
+.mc-wrap .main-box .point {
+  color: #ff6060;
+  font-size: 30px;
+  font-weight: 500;
+}
+
+.mc-wrap .main-box .item img {
+  width: 100%;
+}
+
+.mc-wrap .describe {
+  text-align: center;
+}
+
+.mc-wrap .describe .title {
+  color: #999;
+  font-size: 12px;
+  padding: 5px 0;
+}
+
+.mc-wrap .describe .day {
+  color: #0081cc;
+  font-size: 16px;
+}
+
+.mc-wrap .swiper-pagination-bullet {
+  width: 10% !important;
+  border-radius: 0;
+  height: 5px !important;
+}
+
+.mc-wrap .laydate-icon {
+  display: none;
+}
+
+.mc-wrap .laydate-set-ym {
+  text-align: left;
+}
+
+.mc-wrap .layui-laydate-header {
+  padding: 0;
+}
+
+.mc-wrap .layui-laydate-header i {
+  display: none !important;
+}
+
+.mc-wrap .data-box {
+  position: relative;
+}
+
+.datetimeBox {
+  .el-timeline {
+    padding-left: 20px;
+  }
+}
+
+.mc-wrap .operation {
+  padding-right: 20px;
+  cursor: pointer;
+  margin-top: 10px;
+  text-align: right;
+}
+
+.mc-wrap .layui-laydate-footer {
+  display: none;
+}
+
+.mc-wrap .layui-timeline-axis {
+  width: 50px !important;
+  height: 18px;
+  border-radius: 20px;
+  top: 3px;
+  color: white;
+  line-height: 18px;
+}
+
+.mc-wrap .layui-timeline-content {
+  margin-left: 35px;
+}
+
+.mc-wrap .layui-timeline {
+  width: 80%;
+  margin: 0 auto;
+}
+
+.mc-wrap .layui-timeline-item:before {
+  left: 9% !important;
+  width: 3px;
+  background-color: #daeaf2;
+  top: 3px;
+}
+
+.mc-wrap .layui-timeline-axis:hover {
+  color: white !important;
+}
+
+.mc-wrap .ztree li a.curSelectedNode {
+  border: none !important;
+  background-color: white !important;
+}
+
+.point-baifen {
+  font-size: 14px;
+  margin-left: -5%;
+}
+
+@keyframes spin {
+  0% {
+    transform: rotate(0deg);
+  }
+
+  to {
+    transform: rotate(1turn);
+  }
+}
+
+.info-line {
+  width: 100%;
+  display: block;
+  padding-left: 20px;
+
+  div {
+    width: 50%;
+    display: inline-block;
+    overflow: hidden;
+  }
+
+  .mytxt {
+    height: 40px;
+    padding-left: 20px;
+    border: 1px solid #ddd;
+    border-radius: 5px;
+    width: calc(100% - 100px);
+    float: left;
+  }
+
+  .mytxtinfo {
+    line-height: 40px;
+    height: auto;
+    padding-left: 20px;
+    border: 1px solid #ddd;
+    border-radius: 5px;
+    width: calc(100% - 100px);
+  }
+
+  span {
+    width: 80px;
+    display: inline-block;
+    text-align: left;
+    float: left;
+
+    i {
+      color: red;
+      display: inline-block;
+      padding-right: 5px;
+    }
+  }
+
+  .el-select,
+  .el-input {
+    width: calc(100% - 100px);
+  }
+}
+
+.online {
+  width: 100%;
+
+  .el-select {
+    width: calc(100% - 100px);
+  }
+
+  span {
+    vertical-align: top;
+  }
+
+  .el-textarea {
+    width: calc(100% - 100px);
+  }
+}
+</style>

+ 95 - 0
src/pages/main/homeMarket/magicboxAudit/itemDlg.vue

@@ -0,0 +1,95 @@
+<template>
+  <div>
+    <el-dialog
+      title="查看"
+      :visible.sync="dialogVisible"
+      width="60%"
+      :close-on-click-modal="false"
+      :modal-append-to-body="false"
+      :before-close="handleClose">
+      <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息</div>
+      <div class="el-line"></div>
+      <baseTable v-if="woNo" :itemId="itemId" :woNo="woNo" :taskName="taskName"/>
+      <div class="el-line"></div>
+      <div class="el-label"><i class="el-icon-collection-tag"></i>审批轨迹</div>
+      <div class="el-line"></div>
+      <el-table v-if="rovaList" class="com-table" ref="multipleTable" :data="rovaList" tooltip-effect="dark" size="small"
+          border style="width: 100%">
+          <el-table-column prop="procId" label="编号">
+          </el-table-column>
+          <el-table-column prop="taskName" label="环节">
+          </el-table-column>
+          <el-table-column prop="opName" label="处理人">
+          </el-table-column>
+          <el-table-column prop="opNo" label="处理人工号">
+          </el-table-column>
+          <el-table-column prop="createTime" label="处理时间">
+          </el-table-column>
+          <el-table-column prop="remark" label="审批意见">
+          </el-table-column>
+      </el-table>
+
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="handleClose">取 消</el-button>
+        <el-button type="primary" @click="handleClose">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import baseTable from  "./base.vue"
+export default {
+  props: {
+      woNo:   { required: false, type: String},
+      itemId: { required: false, type: String},
+      taskName: { required: false, type: String},
+      dialogVisible: {required: true,type: Boolean, default() {return false;}},
+  },
+  components:{ baseTable },
+  data(){
+    return{
+      rovaList:[]
+    }
+  },
+  methods:{
+    handleClose(){
+       this.$emit("closeWin")
+    },
+    rovaData(){
+      this.$http({
+          url: '/bpm/api/taskInit',
+          method: "post",
+          headers: {
+              "Content-Type": "application/json",
+          },
+          data: {
+              taskId: this.taskId,
+              woNo: this.woNo
+          },
+      }).then((res) => {
+          this.rovaList = res.data.taskList;
+      });
+    }
+  },
+  mounted(){
+    this.rovaData()
+  }
+}
+</script>
+<style lang="scss">
+.tv-container{
+  background-color: white;
+  margin:15px 15px 15px 15px;
+  padding:20px ;
+
+}
+.el-label{
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 214 - 0
src/pages/main/homeMarket/magicboxAudit/magicBoxItem.vue

@@ -0,0 +1,214 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <!--
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            -->
+            <div class="search">
+                <el-select v-model="advstatus" @change="advchange">
+                    <el-option v-for="items in advopt" :key="items.value" :label="items.label" :value="items.value"/>
+                </el-select>
+
+                <el-button type="primary" size="small" @click="impXls">导出Excel</el-button>
+            </div>
+            <div style="height:20px;"></div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                    <el-table-column prop="itemId" label="申请编号" align="center"></el-table-column>
+                    <el-table-column prop="tit" label="工单标题"></el-table-column>
+                    <el-table-column prop="status" label="状态"  align="center">
+                        <template slot-scope="scope">
+                            {{parserStatus(scope.row.status)}}
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="publish" label="是否上线"  align="center">
+                        <template slot-scope="scope">
+                            {{parserPublish(scope.row.publish)}}
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="createLoginName" label="申请人"  align="center"></el-table-column>
+                    <el-table-column prop="createTime" label="申请时间"  align="center"></el-table-column>
+                    <el-table-column prop="updateTime" label="完成时间"  align="center"> </el-table-column>
+
+                    <el-table-column label="操作" width="120px" align="center">
+                        <template slot-scope="scope">
+                            <el-button size="mini" type="primary" @click="view(scope.row)">查看</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="total, prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+        </div>
+
+        <itemDlg v-if="selWoNo" :dialogVisible="dialogVisible" :itemId="selItemId" :woNo="selWoNo" :taskName="selTaskName" @closeWin="closeWin"></itemDlg>
+
+    </fullscreen>
+</template>
+<script>
+    import itemDlg from "./itemDlg.vue";
+    export default {
+        components: {itemDlg},
+        data() {
+            return {
+                advstatus:"1",
+                advopt:[
+                    {"value":"1","label":"归档"},
+                    {"value":"0","label":"审批中"},
+                    {"value":"2","label":"结束"},
+                ],
+                params:{
+                    status:"1",
+                },
+                tableData:[],
+                total:1,
+                loading:false,
+                fullscreen:false,
+                //
+                dialogVisible:false,
+                selTaskName:"",
+                selWoNo:"",
+                selItemId:""
+            }
+        },
+        methods: {
+            loadData(params,pageNo){
+                this.$http({
+                    url: "/market/mbh/page",
+                    method: "post",
+                    headers: {"Content-Type": "application/json",
+                    page: '{"pageNo":"' +pageNo + '","pageSize":"10"}'},
+                    data: params
+                }).then((res) => {
+                    this.tableData = res.data.data
+                    this.total = res.data.totalRecord
+                    
+                });
+            },
+            advchange(val){
+                this.advstatus = val;
+                this.params.status = val;
+                this.loadData(this.params,1)
+            },
+            // 分页
+            currchange(v) {
+                this.loadData(this.params, v);
+            },
+            dialogCheck(v){
+
+            },
+            view(v){
+                this.selWoNo = v.woNo;
+                this.selItemId = v.itemId;
+                this.dialogVisible = true;
+            },
+            closeWin(){
+                this.selWoNo="";
+                this.selItemId="";
+                this.dialogVisible = false;
+            },
+            parserStatus(v){
+                if(v==="1"){
+                    return "归档";
+                }else if(v==="0"){
+                    return "审核中";
+                }else if(v==="2"){
+                    return "结束";
+                }
+            },
+            parserPublish(v){
+                if(v==="0"){
+                    return "未上线";
+                }else if(v==="1"){
+                    return "上线";
+                }
+            },
+            impXls(){
+                let iData = "";
+                this.$http({
+                    url: "/market/mbh/page",
+                    method: "post",
+                    headers: {"Content-Type": "application/json",
+                    page: '{"pageNo":"' +1 + '","pageSize":"'+this.total+'"}'},
+                    data: this.params
+                }).then((res) => {
+                    iData = res.data.data
+                    var that = this;
+                    require.ensure([], () => {
+                        const { export_json_to_excel } = require("@/pages/main/vendor/Export2Excel");
+                        const tHeader = [
+                            "序号","工单标题","需求类型","投放位置","开始时间","结束时间",
+                            "投放区域","投放定向","素材名称","素材时长","素材类型",
+                            "拨测要求","是否发布","状态","创建人","创建时间"     
+                        ];
+
+                        const filterVal = [
+                            "idx","tit", "mbhxqlx","mbhtfwz", "mbhkssj","mbhjssj", 
+                            "mbhtfqy","mbhtfdx", "mbhscmc","mbhscsc","mbhsclx",
+                            "mbhbcyq", "publish","status","createLoginName","createTime"
+                        ];
+
+                        let list = iData;
+                        const data = that.formatJson(filterVal, list);
+                        export_json_to_excel(tHeader, data, `魔百和大屏广告自有业务承载申请表`,false); // 导出的表格名称,根据需要自己命名
+                    });
+                });
+            },
+
+            formatJson(filterVal, jsonData) {
+                let tmpValue = "";
+                return jsonData.map((v,i) => filterVal.map((j) => {
+                    tmpValue = v[j];
+                    if(j==="idx"){
+                        tmpValue = i+1
+                    }else if(j==="mbhbcyq"){
+                        tmpValue = this.parserBc(tmpValue)
+                    }else if(j==="mbhtfdx"){
+                        tmpValue = this.parserTFDX(tmpValue)
+                    }else if(j==="mbhtfwz"){
+                        tmpValue = this.parserWz(tmpValue)
+                    }else if(j==="publish"){
+                        tmpValue = this.parserPublish(tmpValue)
+                    }else if(j==="status"){
+                        tmpValue = this.parserStatus(tmpValue)
+                    }
+                    if(undefined==tmpValue){
+                        tmpValue="" 
+                    }
+                    return tmpValue
+                }));
+            },
+
+        parserBc(v){
+            return this.pp(v)        
+        },
+        parserWz(v){
+            return this.pp(v)        
+        },
+        parserTFDX(v){
+            return this.pp(v)
+        },
+        pp(v){
+            if(v!==undefined){
+                v = v.replace("[","").replace("]","").replace("\"","").replace("\"","").replace("\"","").replace("\"","").replace("\"","").replace("\"","").replace("\"","")
+                v = v.replace("\"","").replace("\"","").replace("\"","").replace("\"","").replace("\"","").replace("\"","").replace("\"","")
+            }
+            return v;
+        },
+        },
+
+
+        mounted() {
+            this.loadData(this.params,1);
+        },
+        created() {
+            
+        }
+        
+    }
+</script>
+<style scoped lang="scss">
+     
+</style>

+ 531 - 0
src/pages/main/homeMarket/magicboxAudit/mbAuditAdd.vue

@@ -0,0 +1,531 @@
+<template>
+    <div>
+        <div class="container">
+            <el-form :model="infolist" ref="infolist" :rules="rules" class="container-box">
+                <h2 style="display: block;margin-bottom: 20px;">发起需求</h2>
+                <div style="height: calc(100% - 160px);overflow-y: scroll;">
+                    <el-form-item prop="tit" class="info-line online">
+                        <span>工单标题</span>
+                        <el-input v-model="infolist.tit" placeholder="工单标题"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="mbhxqlx" class="info-line online">
+                        <span>需求类型</span>
+                        <el-radio-group v-model="infolist.mbhxqlx">
+                            <el-radio v-for="items in mbhxqlxopt" :key="items.dataCode" :label="items.dataName"
+                                :value="items.dataCode"></el-radio>
+                          </el-radio-group>
+                    </el-form-item>
+                    <el-form-item class="info-line online" prop="mbhtfwz">
+                        <span>投放位置</span>
+                        <el-checkbox-group v-model="infolist.mbhtfwz">
+                            <el-checkbox v-for="items in mbhtfwzopt" :key="items.dataCode" :label="items.dataName"
+                                :value="items.dataCode"></el-checkbox>
+                          </el-checkbox-group>
+                    </el-form-item>
+                    <div class="info-line">
+                        <el-form-item prop="mbhkssj">
+                            <span>开始时间</span>
+                            <el-date-picker 
+                                v-model="infolist.mbhkssj" 
+                                type="date"
+                                placeholder="开始时间"
+                                format="yyyy 年 MM 月 dd 日" 
+                                value-format="yyyy-MM-dd" >
+                            </el-date-picker>
+                        </el-form-item>
+                    </div>
+                    <div class="info-line">
+                        <el-form-item  prop="mbhjssj">
+                            <span>结束时间</span>
+                            <el-date-picker 
+                                v-model="infolist.mbhjssj" 
+                                type="date" 
+                                placeholder="结束时间"
+                                format="yyyy 年 MM 月 dd 日" 
+                                value-format="yyyy-MM-dd" 
+                                >
+                            </el-date-picker>
+                        </el-form-item>
+                    </div>
+                    <el-form-item class="info-line online" prop="mbhtfqy">
+                        <span>投放区域</span>
+                        <el-input v-model="infolist.mbhtfqy" placeholder="省-市-县"></el-input>
+                    </el-form-item>
+                    <el-form-item class="info-line online" prop="mbhtfdx">
+                        <span>投放定向(提供附件必须一致)</span>
+                        <el-checkbox-group v-model="infolist.mbhtfdx">
+                            <el-checkbox v-for="items in mbhtfdxopt" :key="items.dataCode" :label="items.dataName"
+                                :value="items.dataCode"></el-checkbox>
+                          </el-checkbox-group>
+                    </el-form-item>
+                    <el-form-item class="info-line online" prop="mbhscmc">
+                        <span>素材名称</span>
+                        <el-input v-model="infolist.mbhscmc" placeholder="素材名称"></el-input>
+                    </el-form-item>
+                    <div class="info-line">
+                        <el-form-item prop="mbhscsc">
+                            <span>素材时长(提供附件必须一致)</span>
+                            <el-input v-model="infolist.mbhscsc" placeholder="5秒/10秒/15秒"></el-input>
+                        </el-form-item>
+                    </div>
+                    <el-form-item class="info-line online" prop="mbhsclx">
+                        <span>素材类型(提供附件必须一致)</span>
+                        <el-radio-group v-model="infolist.mbhsclx">
+                            <el-radio v-for="items in mbhsclxopt" :key="items.dataCode" :label="items.dataName"
+                                :value="items.dataCode"></el-radio>
+                          </el-radio-group>
+                    </el-form-item>
+                    <el-form-item class="info-line online" prop="mbhbcyq">
+                        <span>播测要求(基地)</span>
+                        <el-checkbox-group v-model="infolist.mbhbcyq">
+                            <el-checkbox v-for="items in mbhbcyqopt" :key="items.dataCode" :label="items.dataName"
+                                :value="items.dataCode"></el-checkbox>
+                          </el-checkbox-group>
+                    </el-form-item>
+                    
+                     <el-form-item class="info-line online">
+                        <span>审批人</span>
+                        <div>
+                            <el-input type="input" placeholder="请选择审批人" v-model="assigneeName"/>
+                              <el-button icon="el-icon-search" type="info" plain @click="showUserTreeDlg"></el-button>
+                            <el-input type="hidden" placeholder="请选择教师" v-model="assigneeNo"/>
+                        </div>
+                     </el-form-item>
+
+                    <div style="padding-left: 80px">
+                        <myUpload @handleResult="uploadBack" :fList="fileInfo.fileList"></myUpload>
+                    </div>
+
+                </div>
+                <div class="t-footer">
+                    <el-button type="primary" @click="dialogCli(2)">确 定</el-button>
+                    <el-button @click="dialogCli(1)">取 消</el-button>
+                </div>
+            </el-form>
+        </div>
+
+
+            <el-dialog
+                title="请选择"
+                :visible.sync="userDlgVisual"
+                width="30%"
+                :modal-append-to-body="false"
+                :close-on-click-modal="false"
+                :before-close="handleClose">
+            <div>
+                <el-radio  v-for="user in userList " v-model="assigneeNo" :key="user.loginNoStr" :label="user.loginNoStr">{{user.loginNameStr}}</el-radio>
+             </div>
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="userDlgVisual = false">取 消</el-button>
+                <el-button type="primary" @click="checkSelectUser">确 定</el-button>
+            </span>
+            </el-dialog>
+
+
+            <userDlg :visible="userTreeDlgVisual" @handleSelect="handleUserSelect" @close="closeUserSelect"/>
+    </div>
+</template>
+<script>
+    // import mySearch from "../../../../components/search.vue";
+    import myUpload from "../../../../components/uploadMbh.vue";
+    import userDlg from "../userDlg"
+
+    export default {
+        components: {myUpload,userDlg},
+        data() {
+            return {
+                userTreeDlgVisual:false,
+                treeListonly: [],
+                rules: {
+                    tit: [{required: true, message: '请输入工单标题', trigger: 'blur' }],
+                    mbhxqlx: [{ required: true, message: '请选择需求类型', trigger: 'change'}],
+                    mbhtfwz:[{ type: 'array', required: true, message: '请至少选择一个投放位置', trigger: 'change' }],
+                    mbhkssj:[{  required: true, message: '请选择开始时间', trigger: 'change' }],
+                    mbhjssj:[{  required: true, message: '请选择结束时间', trigger: 'change' }],
+                    mbhtfqy: [{ required: true, message: '请填写投放区域', trigger: 'blur'}],
+                    mbhscmc: [{ required: true, message: '请填写素材名称', trigger: 'blur'}],
+                    mbhtfdx:[{ type: 'array', required: true, message: '请至少选择一个投放定向', trigger: 'change' }],
+                    mbhscsc: [{ required: true, message: '请填写素材时长', trigger: 'blur'}],
+                    mbhsclx: [{ required: true, message: '请选择素材类型', trigger: 'change'}],
+                    mbhbcyq: [{ required: true, message: '请至少选择一个拨测要求', trigger: 'change'}],
+                },
+                fullscreen: false,
+                total: 0,
+                pageSize: 1,
+                tableData: [{}],
+                disableStatus: false,
+                infolist: {
+                    tit: '',
+                    dept: '',
+                    opName: '',
+                    time: '',
+                    phone: '',
+                    mbhkssj: '',
+                    mbhjssj: '',
+                    mbhtfqy: '',
+                    mbhscmc: '',
+                    mbhscsc: '',
+                    mbhxqlx: [],
+                    mbhtfwz: [],
+                    mbhtfdx: [],
+                    mbhsclx: [],
+                    mbhbcyq: [],
+                },
+                terminal:'739521990425317376',
+                userInfo: {},
+                params: {},
+                infoApply: [],
+                options: [],
+                mbhxqlxopt: [],
+                mbhtfwzopt: [],
+                mbhtfdxopt: [],
+                mbhsclxopt: [],
+                mbhbcyqopt: [],
+                mbhfqrjsopt: [],
+                attList: [],
+                fileInfo: {
+                    fileList: ""
+                },
+                deptType: '',
+                userList:[],
+
+                // 
+                userDlgVisual:false,
+                assigneeNo:'',
+                assigneeName:''
+            }
+        },
+        methods: {
+
+            saveData(v){
+                if (v === 1) {
+                    this.fileInfo.fileList = [];
+                    this.infolist = {
+                        mbhxqlx: [],
+                        mbhtfwz: [],
+                        mbhtfdx: [],
+                        mbhsclx: [],
+                        mbhbcyq: [],
+                    };
+                    return
+                }
+
+                let _this = this;
+                let info = {};
+                info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+                info.opNo = this.userInfo.loginNo;
+                info.opName = this.userInfo.loginName;
+                info.woTitle = this.infolist.tit;
+                this.infolist.dept = '1000';
+                this.infolist.time =  info.opTime;
+                this.infolist.phone = '15804612345';
+                info.params = {};
+                info.params.deptType = this.deptType;
+                info.params.terminalRes = this.infolist;
+                info.procId = this.terminal;
+                //info.attList = this.attList;
+                //
+                //					if (this.options[i].procName=="互联网电视引入流程") {
+
+                for (let i = 0; i < this.options.length; i++) {
+                    //if (this.terminal == this.options[i].procId) {
+                    if(this.options[i].procName=="魔百和大屏广告自有业务承载审批流程"){
+                        info.procName = this.options[i].procName;
+                        info.procVersion = this.options[i].procVersion;
+                    }
+                }
+                // let attList = [];
+                // for (let i = 0; i < this.attList.length; i++) {
+                //     attList.push({
+                //         id: this.attList[i].id,
+                //         fileCode: this.attList[i].fileCode,
+                //         fileName: this.attList[i].fileName,
+                //         opName: this.attList[i].opName,
+                //         opNo: this.attList[i].opNo,
+                //         opTime: this.attList[i].opTime,
+                //         woNo: this.infolist.woNo,
+                //         attchFileId: this.attList[i].attchFileId,
+                //     });
+                // }
+                info.params.attList = JSON.stringify(this.attList)
+                info.params.terminalRes = JSON.stringify(info.params.terminalRes)
+                return info;
+            },
+            //添加
+            dialogCli(v) {
+               
+                let info = {}
+                info = this.saveData(v)
+                if(this.assigneeNo===''){
+                    this.$message.error('请选择审批人');
+                    return
+                }
+                if(this.assigneeName===''){
+                    this.$message.error('请选择审批人');
+                    return
+                }
+                info.params.assigneeNo = this.assigneeNo
+                info.params.assigneeName = this.assigneeName
+                this.submitInfo("/bpm/api/startProc", info);
+
+                //科室领导审批
+                /*
+                let userInfo = window.sessionStorage.userInfo;
+                if(null === userInfo){
+                        this.$message({ showClose: true, message: "数据异常",type: 'error'});
+                        return 
+                }
+                userInfo = JSON.parse(userInfo);
+                let loginNoStr = userInfo.loginNoStr;
+                this.$http({
+                    url: "/market/api/user/info/leader2",
+                    method: "post",
+                    headers: {"Content-Type": "application/json"},
+                    data:{"loginNoStr":loginNoStr,"level":"1","type":"1"}//科室领导
+                }).then((res) => {
+                    if(res.data.result==0){
+                    let user = res.data.body
+                    if(null==user || user.length==0){
+                        this.$message({ showClose: true, message: "获取科室领导异常",type: 'error'});
+                    }else{
+                        if(user.length==1){
+                            info.params.assigneeNo = user[0].loginNoStr
+                            info.params.assigneeName = user[0].loginNameStr
+                            this.submitInfo("/bpm/api/startProc", info);
+                        }else{
+                            this.userList = user;
+                            this.userDlgVisual = true;
+                        }
+                    }
+                    }else{
+                        this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+                    }
+                });
+                */
+            },
+            submitInfo(u, v) {
+                let _this = this;
+                this.$refs.infolist.validate(valid => {
+                    if (valid) {
+                        this.$http({
+                            url: u,
+                            method: "post",
+                            headers: {
+                                "Content-Type": "application/json",
+                            },
+                            data: v,
+                        }).then((res) => {
+                            if (res.data.result === 1) {
+                                _this.$message({
+                                    message: res.data.desc,
+                                    type: 'error'
+                                });
+                            } else {
+                                _this.$message({
+                                    message: '成功',
+                                    type: 'success'
+                                });
+                                _this.infoApply = [];
+                                _this.getUser();
+                                _this.dialogCli(1);
+                                _this.$router.push({	path: '/magicboxAudit'});
+                            }
+
+                        });
+                    }
+                })
+            },
+            //流程
+            getTermianl() {
+                this.$http({
+                    url: "/bpm/api/queryBpmProcList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                        "page": '{"pageNo":"' + 1 + '","pageSize":"100"}'
+                    },
+                    data: {},
+                }).then((res) => {
+                    this.options = res.data.data;
+                });
+            },
+            getlist() {
+                this.$http({
+                    url: "/sysmgr/cfgDataDicts/queryMap",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        dictCodePks: 'mbhfqrjs,mbhxqlx,mbhtfwz,mbhtfdx,mbhsclx,mbhbcyq'
+                    },
+                }).then((res) => {
+                    this.mbhfqrjsopt = res.data.body.mbhfqrjs;
+                    this.mbhxqlxopt = res.data.body.mbhxqlx;
+                    this.mbhtfwzopt = res.data.body.mbhtfwz;
+                    this.mbhtfdxopt = res.data.body.mbhtfdx;
+                    this.mbhsclxopt = res.data.body.mbhsclx;
+                    this.mbhbcyqopt = res.data.body.mbhbcyq;
+                });
+            },
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+            },
+            uploadBack(v) {
+                this.attList = v.files
+            },
+            //根据工号查询组织机构归属信息
+            getDeptType() {
+              let params = {};
+              params.loginNo = this.userInfo.loginNo;
+              this.$http({
+                url: "/market/mbAudit/queryDeptInfoByLoginNo",
+                method: "post",
+                headers: {
+                  "Content-Type": "application/json",
+                },
+                data: params,
+              }).then((res) => {
+                this.deptType = res.data;
+              });
+            },
+            handleClose(){
+
+            },
+            
+            checkSelectUser(){
+                if(this.assigneeNo===''){
+                    this.$message.error('请选择下一步处理人');
+                    return
+                }
+                //
+                this.userList.forEach((e)=>{
+                    if(e.loginNoStr === this.assigneeNo){
+                        this.assigneeName = e.loginNameStr
+                    }
+                });
+                //
+                this.userDlgVisual = false
+                //
+                let info = this.saveData(2)
+                info.params.assigneeNo = this.assigneeNo
+                info.params.assigneeName = this.assigneeName
+                this.submitInfo("/bpm/api/startProc", info);
+
+            },
+            showUserTreeDlg(){
+                this.userTreeDlgVisual = true
+            },
+
+            handleUserSelect(v){
+                this.assigneeNo = v.leaderAuditNo
+                this.assigneeName = v.leaderAuditName
+                this.closeUserSelect()
+            },
+            closeUserSelect(){
+                this.userTreeDlgVisual = false
+            }
+        },
+        mounted() {
+            this.getTermianl();
+            this.getUser();
+            this.getlist();
+            this.getDeptType();
+        },
+        created() {
+
+        }
+    }
+</script>
+<style scoped lang="scss">
+    .t-footer {
+        text-align: right;
+        padding-right: 20px;
+        margin-top: 20px;
+    }
+
+    .onetab {
+        padding: 20px;
+        height: calc(100% - 180px);
+    }
+
+    .titbox {
+        div {
+            float: right;
+
+            i {
+                font-size: 22px;
+                margin-left: 20px;
+                cursor: pointer;
+            }
+        }
+    }
+
+    .tabbox {
+        margin-top: 15px;
+    }
+
+    .pageBox {
+        text-align: right;
+        margin-top: 10px;
+    }
+
+    .info-line {
+        width: 100%;
+        display: block;
+        padding-left: 20px;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 200px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 220px);
+        }
+        .el-radio-group{
+            border: 1px solid #ddd;
+                padding-top: 12px;
+                padding-left: 20px;
+                height: 40px;
+                width: calc(100% - 220px);
+                border-radius: 5px;
+        }
+        .el-checkbox-group{
+            border: 1px solid #ddd;
+                padding-left: 20px;
+                height: 40px;
+                width: calc(100% - 220px);
+                border-radius: 5px;
+        }
+    }
+
+    .online {
+        width: 100%;
+
+        .el-select {
+            width: calc(100% - 100px);
+        }
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 100px);
+        }
+    }
+</style>

+ 329 - 0
src/pages/main/homeMarket/magicboxAudit/mbAuditList.vue

@@ -0,0 +1,329 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <div class="search">
+                <el-select v-model="advstatus" @change="advchange">
+                    <el-option v-for="items in advopt" :key="items.id" :label="items.name" :value="items.id">
+                    </el-option>
+                </el-select>
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                    <el-table-column prop="taskId" label="任务编码">
+                    </el-table-column>
+                    <el-table-column prop="taskName" label="任务名称">
+                    </el-table-column>
+                    <el-table-column prop="opNo" label="审批人">
+                    </el-table-column>
+                    <el-table-column prop="opName" label="审批人姓名">
+                    </el-table-column>
+                    <el-table-column prop="opTime" label="审批时间">
+                    </el-table-column>
+                    <el-table-column prop="stsDesc" label="状态">
+                    </el-table-column>
+                    <el-table-column label="操作" width="120px" align="center">
+                        <template slot-scope="scope">
+                            <el-button size="mini" type="primary" @click="dialogCheck(scope.row,1)">查看</el-button>
+                            <el-button size="mini" v-if="advstatus == '0'" type="danger"
+                                @click="dialogCheck(scope.row,2)">审核</el-button>
+                            <el-button size="mini" v-if="advstatus == '2'" type="danger"
+                                @click="export2Excel(scope.row)">导出</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="total, prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+            <el-dialog title="工单审核" :visible.sync="dialogStatus" width="70%" :destroy-on-close="true"
+                :modal-append-to-body="false" :close-on-click-modal="false">
+                <div>
+                    <audit v-if="typestatsu === 2" @closeEdio="closeEdio" :componentInfo="componentInfo"
+                        :componentStatus="componentStatus" :changeinfo="changeinfo"></audit>
+                </div>
+            </el-dialog>
+        </div>
+    </fullscreen>
+</template>
+<script>
+    import toolList from "../../../../components/toolList.vue";
+    import audit from "./audit.vue"
+
+    export default {
+        components: {
+            toolList,
+            audit
+        },
+        data() {
+            return {
+                tooltit: '魔百和审批流程列表',
+                fullscreen: false,
+                total: 0,
+                pageSize: 1,
+                tableData: [{}],
+                dialogStatus: false,
+                userInfo: {},
+                params: {},
+                typestatsu: 1,
+                componentInfo: {},
+                componentStatus: false,
+                loading: false,
+                changeinfo: false,
+                advstatus: '',
+                advopt: [{
+                    id: '0',
+                    name: '待办',
+                }, {
+                    id: '1',
+                    name: '已办',
+                }, {
+                    id: '2',
+                    name: '已归档',
+                }, ],
+                btnctrlStatus: false,
+                advtype: '',
+                dgid:'',
+                excelList:[],
+                exportData: '',
+            }
+        },
+        methods: {
+            //获取列表
+            getList(v, n) {
+                this.pageSize = n;
+                this.tableData = [];
+                this.loading = true;
+                v.procName = "魔百和大屏广告自有业务承载审批流程";
+                if (this.advstatus == 0) {
+                    //待办工单列表查询
+                    this.$http({
+                        url: "/bpm/api/queryToDoTaskList",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                            "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                        },
+                        data: v,
+                    }).then((res) => {
+                        this.tableData = res.data.data;
+                        this.total = res.data.totalRecord;
+                        this.loading = false;
+                    });
+                } else if (this.advstatus == 1) {
+                    //已办工单列表查询
+                    this.$http({
+                        url: "/bpm/api/queryDoneTaskList",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                            "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                        },
+                        data: v,
+                    }).then((res) => {
+                        this.tableData = res.data.data;
+                        this.total = res.data.totalRecord;
+                        this.loading = false;
+                    });
+                } else {
+                    //已归档工单列表查询
+                    this.$http({
+                        url: "/market/mbAudit/queryFinishWoList",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                            "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                        },
+                        data: v,
+                    }).then((res) => {
+                        this.tableData = res.data.data;
+                        this.total = res.data.totalRecord;
+                        this.loading = false;
+                    });
+                }
+            },
+            // 分页
+            currchange(v) {
+                this.pageSize = v;
+                this.getList(this.params, this.pageSize);
+            },
+            advchange(){
+                this.getList(this.params, this.pageSize);
+            },
+            //处理申请
+            dialogCheck(n, v) {
+                if (v == 1) {
+                    this.changeinfo = false;
+                } else {
+                    this.changeinfo = true;
+                }
+                this.typestatsu = 2;
+                this.dialogStatus = true;
+                let params = {
+                    woNo: n.woNo,
+                    taskId: n.taskId
+                }
+                this.componentInfo = params;
+                this.componentStatus = true;
+            },
+            closeEdio() {
+                this.getList(this.params, this.pageSize);
+                this.dialogStatus = false;
+                this.componentStatus = false;
+            },
+            //功能栏
+            iconCli(v) {
+                if (v === 1) {
+                    this.getList(this.params, this.pageSize);
+                }
+                if (v === 2) {
+                    this.fullscreen = !this.fullscreen
+                }
+            },
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+            },
+            formatJson(filterVal, jsonData) {
+                return jsonData.map(v => filterVal.map(j => v[j]))
+            },
+            export2Excel(n) {
+              let params = {};
+              params.woNo = n.woNo;
+              this.$http({
+                url: "/market/mbAudit/queryExportParamVal",
+                method: "post",
+                headers: {
+                  "Content-Type": "application/json",
+                },
+                data: params,
+              }).then((res) => {
+                this.exportData = res.data;
+                //excel表格数据组装
+                this.excelList.push({ name: '需求类型', value: this.exportData.mbhxqlx });
+                this.excelList.push({ name: '投放位置', value: this.exportData.mbhtfwz });
+                this.excelList.push({ name: '开始时间', value: new Date(this.exportData.mbhkssj).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '') });
+                this.excelList.push({ name: '结束时间', value: new Date(this.exportData.mbhjssj).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '') });
+                this.excelList.push({ name: '投放区域', value: this.exportData.mbhtfqy });
+                this.excelList.push({ name: '投放定向(提供附件必须一致)', value: this.exportData.mbhtfdx });
+                this.excelList.push({ name: '素材名称', value: this.exportData.mbhscmc });
+                this.excelList.push({ name: '素材时长(提供附件必须一致)', value: this.exportData.mbhscsc });
+                this.excelList.push({ name: '素材类型(提供附件必须一致)', value: this.exportData.mbhsclx });
+                this.excelList.push({ name: '播测要求(基地)', value: this.exportData.mbhbcyq });
+
+                require.ensure([], () => {
+                    const { export_json_to_excel } = require('../../../../vendor/Export2Excel');
+                    const tHeader = ['工单标题', this.exportData.tit,];
+                    const filterVal = ['name', 'value', ];
+                    const list = this.excelList;
+                    const data = this.formatJson(filterVal, list);
+                    export_json_to_excel(tHeader, data, '魔百和大屏广告自有业务承载审批流程工单');
+                })
+              });
+            }
+        },
+        mounted() {
+            this.advstatus = this.$route.query.type;
+            this.getList({}, 1);
+        },
+        created() {
+
+        }
+    }
+</script>
+<style scoped lang="scss">
+    .approval {
+        .roval-box {
+            padding: 0 20px;
+            margin-top: 20px;
+            margin-bottom: 10px;
+
+            .el-input {
+                width: calc(100% - 200px);
+                display: inline-block;
+            }
+
+            span {
+                display: inline-block;
+                width: 80px;
+                font-size: 14px;
+                margin-right: 20px;
+
+                .el-input {
+                    width: 100%;
+                    display: inline-block;
+                }
+            }
+        }
+    }
+
+    .onetab {
+        margin-bottom: 20px;
+        padding: 0 20px;
+    }
+
+    .titbox {
+        div {
+            float: right;
+
+            i {
+                font-size: 22px;
+                margin-left: 20px;
+                cursor: pointer;
+            }
+        }
+    }
+
+    .tabbox {
+        margin-top: 15px;
+    }
+
+    .pageBox {
+        text-align: right;
+        margin-top: 10px;
+    }
+
+    .info-line {
+        width: 100%;
+        display: block;
+        padding-left: 20px;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 80px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 100px);
+        }
+    }
+
+    .online {
+        width: 100%;
+
+        .el-select {
+            width: calc(100% - 100px);
+        }
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 100px);
+        }
+    }
+</style>

+ 714 - 0
src/pages/main/homeMarket/tvAssess/initiateAssess.vue

@@ -0,0 +1,714 @@
+<template xmlns:text-align="">
+    <div>
+        <div class="container">
+            <el-form :model="infolist" ref="infolist" :rules="rules" class="container-box">
+                <h2 style="display: block;margin-bottom: 20px;">发起考核</h2>
+                <div style="height: calc(100% - 160px);overflow-y: scroll;">
+                    <el-form-item class="info-line">
+                        <span>考核主题</span>
+                        <el-input size="mini" v-model="infolist.tit"></el-input>
+                    </el-form-item>
+                    <el-form-item class="info-line">
+                        <span>请选择考核模板</span>
+                        <el-select :popper-append-to-body="false" clearable v-model="infolist.materType" placeholder="考核模板" @change="assObjSel">
+                            <el-option v-for="items in assObjs" :key="items.dataCode" :label="items.dataName"
+                                       :value="items.dataCode">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+
+                    <div class="tabbox" v-show="tableType" style="padding: 0 20px;">
+                        <el-table
+                            class="com-table"
+                            ref="multipleTable"
+                            :data="infolist.tableData"
+                            tooltip-effect="dark"
+                            size="mini"
+                            border
+                            style="width: 100%">
+                            <el-table-column prop="parentItem" label="考核大类" width="120px">
+                                <template slot-scope="scope">
+                                    <span v-if="scope.row.show">
+                                        <el-input size="mini" v-model="scope.row.parentItem"></el-input>
+                                    </span>
+                                <span v-else>{{scope.row.parentItem}}</span>
+                                </template>
+                            </el-table-column>
+
+                            <el-table-column prop="parentScore" label="大类总分" width="100px">
+                                <template slot-scope="scope">
+                                    <span v-if="scope.row.show">
+                                        <el-input size="mini" v-model="scope.row.parentScore"></el-input>
+                                    </span>
+                                    <span v-else>{{scope.row.parentScore}}</span>
+                                </template>
+                            </el-table-column>
+
+                            <el-table-column prop="assessItem" label="考核项目" >
+                                <template slot-scope="scope">
+                                    <span v-if="scope.row.show">
+                                        <el-input size="mini" v-model="scope.row.assessItem"></el-input>
+                                    </span>
+                                    <span v-else>{{scope.row.assessItem}}</span>
+                                </template>
+                            </el-table-column>
+
+                            <el-table-column prop="assessContent" width="300px" label="考核内容" >
+                                <template slot-scope="scope">
+                                    <span v-if="scope.row.show">
+                                        <el-input size="mini" v-model="scope.row.assessContent"></el-input>
+                                    </span>
+                                    <span v-else>{{scope.row.assessContent}}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column prop="assessCriteria" width="200px" label="考核标准" >
+                                <template slot-scope="scope">
+                                    <span v-if="scope.row.show">
+                                        <el-input size="mini" v-model="scope.row.assessCriteria"></el-input>
+                                    </span>
+                                    <span v-else>{{scope.row.assessCriteria}}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column prop="assessBasis" label="考核依据">
+
+                            </el-table-column>
+
+                            <el-table-column prop="assessScore" label="单项得分" width="80px">
+                                <template slot-scope="scope">
+                                    <span v-if="scope.row.show">
+                                        <el-input size="mini" v-model="scope.row.assessScore"></el-input>
+                                    </span>
+                                    <span v-else>{{scope.row.assessScore}}</span>
+                                </template>
+                            </el-table-column>
+
+                            <el-table-column label="操作">
+                                <template slot-scope="scope">
+                                    <el-button
+                                        icon="el-icon-edit" size="mini"
+                                        @click="edit(scope.row,scope.$index)">{{scope.row.show?'保存':"修改"}}
+                                    </el-button>
+                                    <el-button type="danger" size="mini" @click="delect(scope.$index,scope.row)">删除</el-button>
+                                </template>
+                            </el-table-column>
+
+                            <el-table-column prop="tableRow" label="序号" width="50px" v-if="false">
+                            </el-table-column>
+                        </el-table>
+                        <div style="text-align:center;margin-top: 30px" >
+                            <el-button type="success"  @click="addDetail">新增考核项</el-button>
+                        </div>
+
+                    </div>
+
+
+                    <div class="tabbox" v-show="!tableType" style="padding: 0 20px;">
+                        <el-table
+                            class="com-table"
+                            ref="multipleTable"
+                            :data="vtableData"
+                            tooltip-effect="dark"
+                            size="mini"
+                            border
+                            style="width: 100%">
+                            <el-table-column prop="vendorName" label="应用提供商名称" width="120px">
+                                <template slot-scope="scope">
+                                    <span v-if="scope.row.show">
+                                        <el-input size="mini" v-model="scope.row.vendorName"></el-input>
+                                    </span>
+                                    <span v-else>{{scope.row.vendorName}}</span>
+                                </template>
+                            </el-table-column>
+
+                            <el-table-column  label="分项考核得分" >
+                                <el-table-column  label="发展指标(20分)" ></el-table-column>
+                                <el-table-column  label="产品质量(15分)" ></el-table-column>
+                                <el-table-column  label="内容质量(15分)" ></el-table-column>
+                                <el-table-column  label="运营支撑(30分)" ></el-table-column>
+                                <el-table-column  label="投诉处理(20分)" ></el-table-column>
+                            </el-table-column>
+                            <el-table-column  label="否决加分项" >
+
+                            </el-table-column>
+                            <el-table-column  label="加分项" >
+
+                            </el-table-column>
+                            <el-table-column  label="月度得分" >
+
+                            </el-table-column>
+
+                            <el-table-column label="操作">
+                                <template slot-scope="scope">
+                                    <el-button
+                                        icon="el-icon-edit" size="mini"
+                                        @click="editv(scope.row,scope.$index)">{{scope.row.show?'保存':"修改"}}
+                                    </el-button>
+                                    <el-button type="danger" size="mini" @click="delectv(scope.$index,scope.row)">删除</el-button>
+                                </template>
+                            </el-table-column>
+
+                            <el-table-column prop="vendorId" label="序号" width="50px" v-if="false">
+                            </el-table-column>
+                        </el-table>
+                        <div style="text-align:center;margin-top: 30px" >
+                            <el-button type="success"  @click="addDetailv">新增供应商</el-button>
+                        </div>
+
+                    </div>
+
+
+                </div>
+                <div class="t-footer">
+                    <el-button type="primary" @click="dialogCli(2)">发起考核</el-button>
+                    <el-button @click="dialogCli(1)">取 消</el-button>
+                </div>
+            </el-form>
+        </div>
+    </div>
+</template>
+<script>
+
+    export default {
+        components: {
+            // mySearch,
+        },
+        data() {
+            const terminalTypeName = (rule, value, callback) => {
+                if (!this.infolist.tit) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            return {
+                rules: {
+                    terminalTypeName: [{
+                        required: true,
+                        trigger: 'blur',
+                        validator: terminalTypeName
+                    }],
+                },
+                tableType:true,
+                fullscreen: false,
+                total: 0,
+                pageSize: 1,
+                disableStatus: false,
+                titname: '终端',
+                infolist: {
+                    tit: '',
+                    terminal: '',
+                    dept: '',
+                    opName: '',
+                    time: '',
+                    phone: '',
+                    overtime: '',
+                    fire: '',
+                    type: '',
+                    info: '',
+                    tableData: []
+                },
+                vtableData:[],
+                terminal:{procId:'732791057158901760',procName:"互联网合作电视考核流程",procVersion:'5'},//流程信息
+                shRoleId:"736837834367438848",//打分人角色id
+                userInfo: {},
+                params: {},
+                infoApply: [],
+                options: [],
+                attList: [],
+                assObjs: [],
+                shUsers:[],
+                fileInfo: {
+                    type:'img',
+                    limit: 50,
+                    url: '/bpm/api/upload',
+                    fileList: []
+                },
+                objId: "",
+                tableData: [],
+                tableLine: {
+                    assObjId: '',
+                    assObjName: '',
+                    tableRow: '',
+                    parentItem: '',
+                    parentScore: '',
+                    assessItem: '',
+                    assessContent: '',
+                    assessCriteria: '',
+                    assessBasis: '',
+                    assessScore: ''
+                }
+            }
+        },
+        methods: {
+            //添加
+            dialogCli(v) {
+                if (v === 1) {
+                    this.fileInfo.fileList = [];
+                    this.infolist = {
+                        mbhxqlx: [],
+                        mbhtfwz: [],
+                        mbhtfdx: [],
+                        mbhsclx: [],
+                        mbhbcyq: [],
+                    };
+                    return
+                }else if(v===2){
+                    if(this.infolist.tit==null||this.infolist.tit==''){
+                        this.$message({ showClose: true, message:"请输入标题",type: 'error'});
+                        return;
+                    }
+                    if(this.objId==null||this.objId==''){
+                        this.$message({ showClose: true, message:"请选择考核模板",type: 'error'});
+                        return;
+                    }
+
+                    this.$confirm("确认发起考核?", "提示", {
+                        confirmButtonText: "确定",
+                        cancelButtonText: "取消",
+                        type: "warning",
+                    }).then(() => {
+                        this.doStartProc();
+                    });
+                }
+
+            },
+            doStartProc(){
+                let _this = this;
+
+                //用于关联工单  和  mk_kh_info。
+                let relKey=new Date().getTime();
+                console.info("relkey:"+relKey);
+
+                //记录考核工单信息
+                let mkkhs=[];
+                //this.shUsers
+                for(let i=0;i<this.shUsers.length;i++){
+                    let mkkh={};
+                    mkkh.modelKey=this.objId;
+                    if(this.objId=="100006"){
+                        mkkh.modelType="comm";
+                    }else{
+                        mkkh.modelType="vip";
+                    }
+                    mkkh.sts=0;
+                    mkkh.auditLogin=this.shUsers[i].loginNo;
+                    mkkh.auditName=this.shUsers[i].loginName;
+                    mkkh.createTime=_this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+                    mkkh.opTime=_this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+                    mkkh.relkey=relKey;
+                    mkkhs.push(mkkh);
+                }
+
+                this.$http({
+                    url: "/market/cmkTvAssessModule/addinfo",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: mkkhs,
+                }).then((res) => {
+                    console.info(res);
+                    if(res.data.result!='0'){
+                        _this.$message({
+                            message: res.data.desc,
+                            type: 'error'
+                        });
+                        return;
+                    }
+                    let info = {};
+                    info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+                    info.opNo = this.userInfo.loginNo;
+                    info.opName = this.userInfo.loginName;
+                    info.woTitle = this.infolist.tit;
+
+                    info.params = {};
+                    info.params.audit = 'Y';
+                    info.params.audit1 = 'Y';
+                    info.params.relkey=relKey;
+                    //审核意见
+                    info.params.shcontent=' '
+                    info.params.shcontent1=' '
+                    //结果意见
+                    info.params.finishcontent=' '
+                    //附件列表
+                    info.params.files=' '
+
+                    info.procId = this.terminal.procId;
+                    info.procName = this.terminal.procName;
+                    info.procVersion = this.terminal.procVersion;
+
+                    this.submitInfo("/bpm/api/startProc", info);
+                });
+            },
+            submitInfo(u, v) {
+                let _this = this;
+                this.$http({
+                    url: u,
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: v,
+                }).then((res) => {
+                    if (res.data.result === 1) {
+                        _this.$message({
+                            message: res.data.desc,
+                            type: 'error'
+                        });
+                    } else {
+                        _this.$message({
+                            message: '发起成功',
+                            type: 'success'
+                        });
+                        _this.infoApply = [];
+                        _this.getUser();
+                        _this.dialogCli(1);
+                    }
+
+                });
+            },
+            getlist() {
+                this.$http({
+                    url: "/sysmgr/cfgDataDicts/queryMap",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        dictCodePks: 'hlwdshzkhcj'//互联网电视合作考核厂家
+                    },
+                }).then((res) => {
+                    this.assObjs = res.data.body.hlwdshzkhcj
+                });
+            },
+            getKhRoleUsers() {
+                this.$http({
+                    url: "/sysmgr/sys/settings/sysLoginFunc/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        roleCode: this.shRoleId
+                    },
+                }).then((res) => {
+                    this.shUsers = res.data;
+                });
+            },
+            getMkTvHkModelCommList(){
+                this.vtableData = [];
+                this.loading = true;
+                this.$http({
+                    url: "/market/assessModel/queryList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        assObjId: this.objId
+                    },
+                }).then((res) => {
+                    console.info(res);
+                    this.vtableData = res.data
+                    this.loading = false;
+                    this.iseditor = false
+                });
+            },
+            getMkTvAssessModuleList() {
+                this.tableData = [];
+                this.loading = true;
+                this.$http({
+                    url: "/market/cmkTvAssessModule/queryMkTvAssessModuleList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        assObjId: this.objId
+                    },
+                }).then((res) => {
+                    this.infolist.tableData = res.data
+                    this.loading = false;
+                    this.iseditor = false
+                });
+            },
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+            },
+            uploadBack(v) {
+                this.attList = v;
+            },
+            //选择考核对象
+            assObjSel(val) {
+                this.objId = val
+                //综合考评模板
+                if(val=="100006"){
+                    this.tableType=false;
+                    this.getMkTvHkModelCommList();
+                }else{
+                    //正常模板
+                    this.tableType=true;
+                    this.getMkTvAssessModuleList();
+                }
+
+            },
+            editv(row, index) {
+                row.show = row.show ? false : true
+                this.$set(this.vtableData, index, row)
+                // 修改后保存
+                if (!row.show) {
+                    this.loading = true;
+                    let urlv="/market/assessModel/update";
+                    if(row.vendorId!=''&&row.vendorId&&row.vendorId!=null) {
+                        urlv = "/market/assessModel/update";
+                    }else{
+                        urlv = "/market/assessModel/add";
+                    }
+
+                    this.$http({
+                        url: urlv,
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        data: {
+                            vendorName:row.vendorName,
+                            vendorId:row.vendorId
+                        },
+                    }).then((res) => {
+                        console.info(res);
+                        if(res.data.result==0){
+                            this.getMkTvHkModelCommList();
+                        }
+                        this.loading = false;
+                        this.iseditor = false
+                    });
+                }
+            },
+            // 编辑表格中按钮所在行
+            edit(row, index) {
+                row.show = row.show ? false : true
+                this.$set(this.infolist.tableData, index, row)
+                // 修改后保存
+                if (!row.show) {
+                    this.loading = true;
+                    this.$http({
+                        url: "/market/cmkTvAssessModule/editTvAssModule",
+                        method: "post",
+                        headers: {
+                            "Content-Type": "application/json",
+                        },
+                        data: {
+                            //params: this.tableLine
+                            assObjId: this.objId,
+                            assObjName: row.assObjName,
+                            tableRow: row.tableRow,
+                            assessItem: row.assessItem,
+                            parentItem: row.parentItem,
+                            parentScore: row.parentScore,
+                            assessContent: row.assessContent,
+                            assessCriteria: row.assessCriteria,
+                            assessBasis: row.assessBasis,
+                            assessScore: row.assessScore
+                        },
+                    }).then((res) => {
+                        this.infolist.tableData = res.data
+                        this.loading = false;
+                        this.iseditor = false
+                    });
+                }
+
+            },
+            // 删除表格中按钮所在行
+            delectv(index,row) {
+                this.$confirm("即将删除此条数据, 是否删除?", "提示", {
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning",
+                })
+                    .then(() => {
+                        //如果后台有记录。则调用接口删除。
+                        if(row.vendorId){
+                            console.info("delete---->"+row);
+                            this.$http({
+                                url: "/market/assessModel/del",
+                                method: "post",
+                                headers: {
+                                    "Content-Type": "application/json",
+                                },
+                                data: row,
+                            }).then((res) => {
+                                if (res.data.result == 0) {
+                                    this.vtableData.splice(index, 1)
+                                }
+                            });
+                        }else{
+                            this.vtableData.splice(index, 1);
+                        }
+                        this.getMkTvHkModelCommList();
+                    })
+                    .catch(() => {});
+            },
+            delect(index,row) {
+                this.$confirm("即将删除此条数据, 是否删除?", "提示", {
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning",
+                })
+                    .then(() => {
+                        //如果后台有记录。则调用接口删除。
+                        if(row.tableRow){
+                            console.info("delete---->"+row);
+                            this.$http({
+                                url: "/market/cmkTvAssessModule/del",
+                                method: "post",
+                                headers: {
+                                    "Content-Type": "application/json",
+                                },
+                                data: row,
+                            }).then((res) => {
+                                if (res.data.result == 0) {
+                                    this.infolist.tableData.splice(index, 1)
+                                }
+                            });
+                        }else{
+                            this.infolist.tableData.splice(index, 1);
+                        }
+                    })
+                    .catch(() => {});
+            },
+            // 表格中新增一行
+            addDetailv(){
+                this.vtableData.push({
+                    vendorName:'',
+                    vendorId:''
+                });
+                this.$set(this.vtableData)
+            },
+            addDetail(){
+                this.infolist.tableData.push({
+                    assObjId: this.objId,
+                    parentItem:'',
+                    parentScore:'',
+                    assessItem: '',
+                    assessContent: '',
+                    assessCriteria: '',
+                    assessBasis: '',
+                    assessScore: ''
+                });
+                this.$set(this.infolist.tableData)
+            },
+            // 表格数据变化送入后台
+            editTableRowData(row,index){
+                alert('row='+row);
+                alert('index=' + index);
+            }
+        },
+        mounted() {
+            this.getKhRoleUsers();
+            this.getUser();
+            this.getlist();
+        },
+        created() {
+            this.infolist.tableData.map(i => {
+                i.show = false
+                return i
+            })
+        }
+    }
+</script>
+<style scoped lang="scss">
+    .t-footer {
+        text-align: right;
+        padding-right: 20px;
+        margin-top: 20px;
+    }
+
+    .onetab {
+        padding: 20px;
+        height: calc(100% - 180px);
+    }
+
+    .titbox {
+        div {
+            float: right;
+
+            i {
+                font-size: 22px;
+                margin-left: 20px;
+                cursor: pointer;
+            }
+        }
+    }
+
+    .tabbox {
+        margin-top: 15px;
+    }
+
+    .pageBox {
+        text-align: right;
+        margin-top: 10px;
+    }
+
+    .info-line {
+        width: 100%;
+        display: block;
+        padding-left: 20px;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 200px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 220px);
+        }
+        .el-radio-group{
+            border: 1px solid #ddd;
+            padding-top: 12px;
+            padding-left: 20px;
+            height: 40px;
+            width: calc(100% - 220px);
+            border-radius: 5px;
+        }
+        .el-checkbox-group{
+            border: 1px solid #ddd;
+            padding-left: 20px;
+            height: 40px;
+            width: calc(100% - 220px);
+            border-radius: 5px;
+        }
+    }
+
+    .online {
+        width: 100%;
+
+        .el-select {
+            width: calc(100% - 100px);
+        }
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 100px);
+        }
+    }
+    .el-table .cell {
+        white-space: pre-line;
+    }
+</style>

ファイルの差分が大きいため隠しています
+ 1865 - 0
src/pages/main/homeMarket/tvAssess/tvAssessIndex.vue


+ 465 - 0
src/pages/main/homeMarket/tvIntroduction/create.vue

@@ -0,0 +1,465 @@
+<template>
+  <div>
+  <fullscreen :fullscreen.sync="fullscreen" class="container">
+    <div class="container-box">
+        <div class="tabbox">
+     
+
+          <el-form  :inline="true" label-width="80px" :model="form">
+            <el-form-item label="工单名称">
+              <el-input v-model="itemName" size="small" style="width:800px"></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" size="small" @click="addRow">增加行</el-button>
+            </el-form-item>
+          </el-form>
+
+          <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                        tooltip-effect="dark" size="small" border style="width: 100%" v-loading="tableMask">
+
+            <el-table-column  prop="idx" label="序号" align="center" width="50px"/>
+
+            <el-table-column label="业务属性" align="center">
+              <el-table-column  prop="busiType"    label="业务类型" align="center"/>
+              <el-table-column  prop="productName" label="产品名称" align="center"/>
+              <el-table-column  prop="parterName"  label="企业名称" align="center"/>
+            </el-table-column>
+
+            <el-table-column label="介绍材料" align="center">
+              <el-table-column  prop="isBlack"         label="黑名单"          align="center" width="60px"/>
+              <el-table-column  prop="businessLicense" label="企业法人营业执照" align="center">
+                <template slot-scope="scope" v-if="scope.row.businessLicense">
+                    <down :files="scope.row.businessLicense"></down>
+                </template>
+              </el-table-column>
+              <el-table-column  prop="orgCode"         label="组织机构代码证"   align="center">
+                <template slot-scope="scope" v-if="scope.row.orgCode">
+                  <down :files="scope.row.orgCode"></down>
+                </template>
+              </el-table-column>
+              <el-table-column  prop="taxReg"          label="税务登记证"       align="center">
+                <template slot-scope="scope" v-if="scope.row.taxReg">
+                  <down :files="scope.row.taxReg"></down>
+                </template>                
+              </el-table-column>
+              <el-table-column  prop="bankAccount"     label="银行开户许可证"   align="center">
+                <template slot-scope="scope" v-if="scope.row.bankAccount">
+                    <down :files="scope.row.bankAccount"></down>
+                </template>                
+              </el-table-column>
+              <el-table-column  prop="addService"      label="增值业务许可证"   align="center">
+                <template slot-scope="scope" v-if="scope.row.addService">
+                    <down :files="scope.row.addService"></down>
+                </template>                
+              </el-table-column>
+              <el-table-column  prop="productInfo"     label="产品介绍"         align="center">
+                <template slot-scope="scope" v-if="scope.row.productInfo">
+                     <down :files="scope.row.productInfo"></down>
+                </template>               
+              </el-table-column>
+              <el-table-column  prop="otherInfo"       label="其他说明材料"     align="center">
+                <template slot-scope="scope" v-if="scope.row.otherInfo">
+                     <down :files="scope.row.otherInfo"></down>
+                </template>                
+              </el-table-column>
+            </el-table-column>
+
+            <el-table-column label="操作" align="center">
+                <template  slot-scope="scope">
+                      <el-button type="text" size="small" @click="editItem(scope.row.idx)">编辑</el-button>
+                      &nbsp;
+                      <template>
+                        <el-popconfirm title="确定清楚这条记录么?"  @confirm="clearItem(scope.row.idx)">
+                            <el-button type="text" size="small" slot="reference">清除</el-button>
+                        </el-popconfirm>
+                      </template>
+                </template>
+            </el-table-column>
+          </el-table>
+
+          <div style="margin-top:10px;text-align:right;">
+              <el-button>取 消</el-button>
+              <el-button type="primary" @click="submitInfo">确 定</el-button>
+          </div>
+        </div>
+    </div>
+
+
+  </fullscreen>
+    
+
+  <!--新建对话框-->
+    <el-dialog
+      :title="dlgTitle"
+      :visible.sync="showDlg"
+      width="50%"
+      :modal="true"
+      :modal-append-to-body="false"
+      :close-on-click-modal="false"
+      :before-close="handleClose"
+      >
+      
+      <el-form ref="form" :model="form" label-width="160px">
+        <!--业务属性-->
+        <el-row>
+          <el-form-item label="业务类型">
+            <el-input v-model="form.busiType"></el-input>
+          </el-form-item>
+        </el-row>
+
+        <el-row>
+          <el-form-item label="产品名称">
+            <el-input v-model="form.productName"></el-input>
+          </el-form-item>
+        </el-row>
+
+        <el-row>
+          <el-form-item label="企业名称">
+            <el-input v-model="form.parterName"></el-input>
+          </el-form-item>
+        </el-row>
+
+        <!--介绍材料-->
+        <el-row>
+          <el-form-item label="黑名单">
+              <el-radio v-model="form.isBlack" label="0">否</el-radio>
+              <el-radio v-model="form.isBlack" label="1">是</el-radio>
+              <el-tag type="info">是否列入中国移动不良信用名单和中国移动黑龙江公司不良信用名单</el-tag>
+          </el-form-item>
+        </el-row>
+
+      <el-row>
+          <el-col :span="12">
+            <el-form-item label="企业法人营业执照">
+                <myUpload ref="businessLicense" type="businessLicense" :itemId="itemId"  :idx="curIdx" @handleResult="uploadCallBack"></myUpload>
+            </el-form-item>   
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="组织机构代码证">
+              <myUpload ref="orgCode" type="orgCode" :itemId="itemId"  :idx="curIdx" @handleResult="uploadCallBack"></myUpload>
+          </el-form-item> 
+          </el-col>
+      </el-row>
+
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="税务登记证">
+            <myUpload ref="taxReg" type="taxReg" :itemId="itemId" :idx="curIdx" @handleResult="uploadCallBack"></myUpload>
+          </el-form-item> 
+        </el-col>
+
+        <el-col :span="12">
+            <el-form-item label="银行开户许可证">
+              <myUpload ref="bankAccount" type="bankAccount" :itemId="itemId"  :idx="curIdx"  @handleResult="uploadCallBack"></myUpload>
+            </el-form-item> 
+        </el-col>
+      </el-row>
+
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="增值业务许可证">
+            <myUpload ref="addService" type="addService" :itemId="itemId" :idx="curIdx"  @handleResult="uploadCallBack"></myUpload>
+          </el-form-item> 
+        </el-col>
+
+        <el-col :span="12">
+          <el-form-item label="产品介绍">
+            <myUpload ref="productInfo" type="productInfo" :itemId="itemId"  :idx="curIdx" @handleResult="uploadCallBack"></myUpload>
+          </el-form-item> 
+        </el-col>
+      </el-row>
+
+      <el-row>
+          <el-form-item label="其他说明材料">
+            <myUpload ref="otherInfo" type="otherInfo" :itemId="itemId" :idx="curIdx" @handleResult="uploadCallBack"></myUpload>
+          </el-form-item> 
+      </el-row>
+
+      </el-form>
+
+
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="closeDlg">取 消</el-button>
+        <el-button type="primary" @click="saveItem">确 定</el-button>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import myUpload from "../../../../components/uploadNew.vue";
+import {fileListToStr,strToFileList,strToHerf} from "@/utils/tv.js"
+import down from "@/components/uploadNewDown.vue";
+export default {
+  components: {myUpload,down},
+  data(){
+    return{
+      tableMask:false,
+      itemId:'',
+      itemName:'',
+      opType:'',
+      curIdx:"0",
+      tableData:[
+          {"idx":"1"},
+          {"idx":"2"},
+          {"idx":"3"},
+          {"idx":"4"},
+      ],
+      fullscreen:false,
+      showDlg:false,
+      dlgTitle:"编辑数据",
+      options:[],
+      form:{
+        busiType:'',
+        productName:'',
+        parterName:'',
+        isBlack:"0",
+
+        businessLicense:"",
+        orgCode:"",
+        taxReg:"",
+        bankAccount:"",
+        addService:"",
+        productInfo:"",
+        otherInfo:"",
+      },
+
+      //附件相关
+      attList: [],
+      fileInfo: {
+        type: "img",
+        limit: 50,
+        url: "/market/cmkAttachInfo/mkEmscnpl/upload",
+        fileList: [],
+      }
+    }
+  },
+  methods:{
+    closeDlg(){
+      this.handleClose();
+    },
+    submitData(){
+
+    },
+    filesToUrl(files){
+      return strToHerf(files)
+    },
+    loadIdxData(itemId,idx){
+      return new Promise((resolve, reject) => {
+      let params = {"itemId":itemId,"idx":idx}
+      this.$http({
+          url: "/market/tvImport/queryImport",
+          method: "post",
+          headers: {"Content-Type": "application/json"},
+          data: params
+        }).then((res) => {
+          if(res.data.result==0){
+              resolve(res.data.body)
+          }else{
+            this.$message({ showClose: true, message: '系统异常',type: 'error'});
+          }
+        }); 
+      });
+    },
+    clearForm(itemId,idx){
+      this.loadIdxData(itemId,idx).then(val => {
+          this.parserIdxData(val)
+      });
+    },
+
+    parserIdxData(data){
+      if(data.length>0){
+        let idxData = data[0]
+        this.form.busiType = idxData.busiType
+        this.form.productName = idxData.productName
+        this.form.parterName = idxData.parterName
+        this.form.isBlack = idxData.isBlack
+        this.form.busiType = idxData.busiType
+        //
+        this.$refs.businessLicense.resetFile(strToFileList(idxData.businessLicense));
+        this.$refs.orgCode.resetFile(strToFileList(idxData.orgCode));
+        this.$refs.taxReg.resetFile(strToFileList(idxData.taxReg));
+        this.$refs.bankAccount.resetFile(strToFileList(idxData.bankAccount));
+        this.$refs.addService.resetFile(strToFileList(idxData.addService));
+        this.$refs.productInfo.resetFile(strToFileList(idxData.productInfo));
+        this.$refs.otherInfo.resetFile(strToFileList(idxData.otherInfo));
+      }
+    },
+
+    editItem(idx){
+      this.clearForm(this.itemId,idx)
+      this.curIdx = idx.toString();
+      this.showDlg = true;
+    },
+    handleClose(){
+        this.showDlg = false;
+        this.form.busiType='';
+        this.form.productName='';
+        this.form.parterName='';
+        this.form.isBlack='0';
+        this.form.businessLicense='0';
+        this.form.orgCode='';
+        this.form.taxReg='';
+        this.form.bankAccount='';
+        this.form.addService='';
+        this.form.productInfo='';
+        this.form.otherInfo='';
+        //清空文件列表
+        this.$refs.businessLicense.resetFile([]);
+        this.$refs.orgCode.resetFile([]);
+        this.$refs.taxReg.resetFile([]);
+        this.$refs.bankAccount.resetFile([]);
+        this.$refs.addService.resetFile([]);
+        this.$refs.productInfo.resetFile([]);
+        this.$refs.otherInfo.resetFile([]);
+    },
+    uploadBack(v) {
+      this.attList = v;
+    },
+    uploadCallBack(v){
+      if(v.k===1){
+        //console.log('upload success')
+        //this.setFile(v.body)
+        //console.log(v)
+      }else{
+        console.log('upload fail')
+      }
+    },
+    setFile(f){
+     // let itemId = f.itemId
+      //let idx = f.idx
+      //
+    },
+    clearItem(idx){
+        let params = {"itemId":this.itemId,"idx":idx}
+        this.$http({
+          url: "/market/tvImport/deleteImport",
+          method: "post",
+          headers: {"Content-Type": "application/json"},
+          data: params
+        }).then((res) => {
+          if(res.data.result==0){
+              this.loadTableData()
+          }else{
+            this.$message({ showClose: true, message: '系统异常',type: 'error'});
+          }
+        }); 
+    },
+    loadTableData(){
+        let params = {"itemId":this.itemId}
+        this.$http({
+          url: "/market/tvImport/queryImport",
+          method: "post",
+          headers: {"Content-Type": "application/json"},
+          data: params
+        }).then((res) => {
+          if(res.data.result==0){
+              this.tableData=res.data.body
+              if(this.tableData.length<4){
+                 for(var i = this.tableData.length ;i<4;i++){
+                    this.tableData.push({"idx":i+1})
+                 }
+              }
+              if(this.showDlg===true){
+                  this.handleClose(); 
+              }
+          }else{
+            this.$message({ showClose: true, message: '系统异常',type: 'error'});
+          }
+        }); 
+    },
+    saveItem(){
+         // check
+        this.form.itemId = this.itemId
+        this.form.itemName = this.itemName
+        this.form.idx = this.curIdx
+
+        //saveItem
+        this.form.businessLicense = fileListToStr(this.$refs.businessLicense.getFileList());
+        this.form.orgCode = fileListToStr(this.$refs.orgCode.getFileList());
+        this.form.taxReg = fileListToStr(this.$refs.taxReg.getFileList());
+        this.form.bankAccount = fileListToStr(this.$refs.bankAccount.getFileList());
+        this.form.addService = fileListToStr(this.$refs.addService.getFileList());
+        this.form.productInfo = fileListToStr(this.$refs.productInfo.getFileList());
+        this.form.otherInfo = fileListToStr(this.$refs.otherInfo.getFileList());
+        //
+       
+        //
+        this.$http({
+          url: "/market/tvImport/collectRequirement",
+          method: "post",
+          headers: {"Content-Type": "application/json"},
+          data: this.form
+        }).then((res) => {
+          if(res.data.result==0){
+              this.loadTableData("")
+          }else{
+            this.$message({ showClose: true, message:res.data.desc ,type: 'error'});
+          }
+        });            
+    },
+    submitInfo(){
+        if(this.itemName===""){
+          this.$message.error('工单标题不能为空');
+          return 
+        }
+
+        let info = {}
+        //参数组装
+        info.params={"itemId":this.itemId,"itemName":this.itemName}
+        info.woTitle = this.itemName
+        info.procName = "互联网电视引入流程"
+        for (let i = 0; i < this.options.length; i++) {
+					if (this.options[i].procName=="互联网电视引入流程") {
+						info.procVersion = this.options[i].procVersion;
+            info.procId = this.options[i].procId;
+					}
+				}
+        //POST请求
+        this.$http({
+        url: "/bpm/api/startProc",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:info
+        }).then((res) => {
+         if(res.data.result==0){
+            this.$router.push({	path: '/tvIntroduction'});
+         }else{
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+         }
+
+        });
+    },
+    getTermianl() {
+        this.$http({
+            url: "/bpm/api/queryBpmProcList",
+            method: "post",
+            headers: {
+                "Content-Type": "application/json",
+                "page": '{"pageNo":"' + 1 + '","pageSize":"100"}'
+            },
+            data: {},
+        }).then((res) => {
+            this.options = res.data.data;
+        });
+    },
+    addRow(){
+      let row = {}
+      row.idx = this.tableData.length+1
+      this.tableData.push(row)
+    }
+  },
+  mounted(){
+    this.itemId = this.$route.query.itemId
+    this.getTermianl()
+    this.loadTableData()
+  }
+}
+</script>
+
+<style scoped lang="scss">
+    .tabbox {
+        margin-top: 15px;
+    }
+</style>

+ 175 - 0
src/pages/main/homeMarket/tvIntroduction/deal/assignExpert.vue

@@ -0,0 +1,175 @@
+<template>
+  <div class="tv-container">
+      
+        <div class="container-box">
+             <div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息</div>
+                <div class="el-line"></div>
+                <baseTable v-if="woNo" :woNo="woNo" step="3" @callBack="callBack"/>
+                <div class="el-line"></div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>指定评估专家</div>
+                <div class="el-line"></div>
+
+                <div>
+                  <el-row>
+                    <el-col :span="6">&nbsp;</el-col>
+                    <el-col :span="12">
+                        <el-form ref="form" :model="form" label-width="80px">
+                          <el-form-item label="评估专家">
+
+                              <el-select v-model="expertList" multiple placeholder="请选择" size="medium" style="width:547px">
+                                <el-option
+                                  v-for="item in expertOption"
+                                  :key="item.value"
+                                  :label="item.label"
+                                  :value="item.value">
+                                </el-option>
+                              </el-select>
+
+                          </el-form-item>
+                          <el-form-item label="备注信息">
+                            <el-input type="textarea" v-model="form.note"></el-input>
+                          </el-form-item>
+                        </el-form>
+                    </el-col>
+                    <el-col :span="6">&nbsp;</el-col>
+                  </el-row>
+
+                </div>
+
+                <div class="el-line"></div>
+                <div class="el-label"></div>
+                <div class="el-line"></div>
+                <div style="text-align:right">
+                  <el-button type="primary" @click="handleAudit">确定</el-button>
+                </div>
+             </div>
+        </div>
+        <!--<fullscreen :fullscreen.sync="fullscreen" class="container"></fullscreen>-->
+  </div>
+</template>
+
+<script>
+import baseTable from "./base"
+export default {
+  components:{ baseTable },
+  data(){
+    return{
+      woNo:'',
+      itemId:'',
+      fullscreen:true,
+      form:{note:""},
+      //expertList:"admin,yaolu,chensen,wangyong5,zhangbinqi",
+      expertList:[],
+      loginNoStr:'',
+      bpmInfo:{},
+      expertOption:[]
+    }
+  },
+  methods:{
+    callBack(itemId){
+      this.itemId = itemId
+    },
+    loadExperData(){
+        this.$http({
+        url: "/market/tvImport/expertList",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:{}
+        }).then((res) => {
+         if(res.data.result==0){
+            this.expertOption=[]
+            let ul = res.data.body
+            let tmp = {}
+            ul.forEach(element => {
+              tmp={}
+              tmp.value = element.loginNoStr
+              tmp.label = element.loginNameStr
+              this.expertOption.push(tmp)              
+            });
+         }else{
+            this.$message({ showClose: true, message: "逻辑异常",type: 'error'});
+         }
+      });
+    },
+    handleAudit(){
+        this.loginNoStr=''
+        if(this.itemId===""){
+          this.$message({ showClose: true, message: "数据异常",type: 'error'});
+          return
+        }
+        if(this.expertList.length===0 || this.expertList.length>5){
+          this.$message({ showClose: true, message: "请选择5人以内的专家",type: 'error'});
+          return
+        }else{
+          this.expertList.forEach((e)=>{
+            this.loginNoStr = this.loginNoStr+e +","
+          });
+        }
+        this.loginNoStr = this.loginNoStr.substring(0,this.loginNoStr.length-1)
+ 
+        //拼装参数
+        let info={}
+        info.params={"extendInfo":this.loginNoStr,"note":this.form.note,"itemId":this.itemId,"woNo":this.woNo},
+        info.taskId = this.bpmInfo.taskId
+        info.woNo = this.bpmInfo.woNo 
+        info.stepId = this.bpmInfo.stepId
+        info.procId = this.bpmInfo.procId
+        info.procVersion = this.bpmInfo.procVersion
+        //POST请求
+        this.$http({
+        url: "/bpm/api/submitTask",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:info
+        }).then((res) => {
+         if(res.data.result==0){
+           // afterAssignExpert
+            this.$http({
+            url: "/market/tvImport/afterAssignExpert",
+            method: "post",
+            headers: {"Content-Type": "application/json"},
+            data:info
+            }).then((res) => {
+                if(res.data.result==0){
+                    this.$router.push({	path: '/tvIntroduction'});
+                }else{
+                     this.$message({ showClose: true, message: "异常x",type: 'error'});
+                }
+            });
+
+         }else{
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+         }
+        });
+    }
+  },
+  mounted(){
+    this.loadExperData()
+    this.woNo = this.$route.query.woNo
+    this.bpmInfo.taskId = this.$route.query.taskId
+    this.bpmInfo.woNo = this.woNo
+    this.bpmInfo.stepId = this.$route.query.stepId
+    this.bpmInfo.procId = this.$route.query.procId
+    this.bpmInfo.procVersion = this.$route.query.procVersion
+  }
+}
+</script>
+<style lang="scss" scoped>
+.tv-container{
+  background-color: white;
+  margin:15px 15px 15px 15px;
+  padding:20px ;
+
+}
+.el-label{
+  /*border-left:5px solid #0b82ff;*/
+  /*padding-left:5px;*/
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 60 - 0
src/pages/main/homeMarket/tvIntroduction/deal/audit.vue

@@ -0,0 +1,60 @@
+<template>
+  <div>     <!-- height="calc(100% - 40px)"-->
+            <el-table class="com-table" ref="multipleTable" :data="tableData"
+                        tooltip-effect="dark" size="small" border style="width: 100%" 
+                         v-loading="loading" >
+            <el-table-column  prop="stepName"    label="任务名称" align="left" width="200px"/>
+            <el-table-column  prop="auditNote"  label="审批备注" align="left"/>
+            <el-table-column  prop="auditResultInfo"  label="审批意见" align="left"/>
+            <el-table-column  prop="opLoginName" label="操作工号" align="center" width="120px"/>
+            <el-table-column  prop="createTime"  label="操作时间" align="center" width="180px"/>
+
+          </el-table>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    itemId: { required: true,type: String}
+  },
+
+  data(){
+    return{
+      tableData:[],
+      loading:false,
+    }
+  },
+
+  methods:{
+    //
+    viewItem(itemId,idx){
+        console.log({itemId,idx})
+    },
+
+    //
+    loadData(){
+      this.$http({
+        url: "/market/tvImport/queryImportAudit",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data: {"itemId":this.itemId}
+      }).then((res) => {
+         if(res.data.result==0){
+            this.tableData = res.data.body 
+         }else{
+           this.$message({ showClose: true, message: '系统异常',type: 'error'});
+         }
+      });
+    }
+  },
+  watch:{
+    itemId(val,oldVal){
+      this.loadData()
+    }
+  },
+  mounted(){
+    this.loadData()
+  }
+}
+</script>

+ 140 - 0
src/pages/main/homeMarket/tvIntroduction/deal/auditQualification.vue

@@ -0,0 +1,140 @@
+<template>
+  <div class="tv-container">
+      
+        <div class="container-box">
+             <div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息</div>
+                <div class="el-line"></div>
+                <baseTable v-if="woNo" :woNo="woNo" step="2" @callBack="callBack"/>
+                <div class="el-line"></div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>资质审核</div>
+                <div class="el-line"></div>
+
+                <div>
+                  <el-row>
+                    <el-col :span="6">&nbsp;</el-col>
+                    <el-col :span="12">
+                        <el-form ref="form" :model="form" label-width="80px">
+                          <el-form-item label="备注信息">
+                            <el-input type="textarea" v-model="form.note"></el-input>
+                          </el-form-item>
+                        </el-form>                         
+                    </el-col>
+                    <el-col :span="6">&nbsp;</el-col>
+                  </el-row>
+
+                </div>
+
+                <div class="el-line"></div>
+                <div class="el-label"></div>
+                <div class="el-line"></div>
+                <div style="text-align:right">
+                  <el-button type="primary" @click="handleAudit">确定</el-button>
+                </div>
+             </div>
+        </div>
+        <!--<fullscreen :fullscreen.sync="fullscreen" class="container"></fullscreen>-->
+  </div>
+</template>
+
+<script>
+import baseTable from "./base"
+export default {
+  components:{ baseTable },
+  data(){
+    return{
+      woNo:'',
+      itemId:'',
+      form:{},
+      bpmInfo:{},
+    }
+  },
+  methods:{
+    callBack(itemId){
+      this.itemId = itemId
+    },
+    handleAudit(){
+        //查询结果
+        this.$http({
+          url: "/market/tvImport/qualification/audit/summary",
+          method: "post",
+          headers: {"Content-Type": "application/json"},
+          data:{"woNo":this.woNo}
+        }).then((res) => {
+         if(res.data.result==0){
+             if(res.data.body.code==1){
+                  //存在未审核的产品
+                  this.$message({ showClose: true, message: res.data.body.info+" , 请继续审核",type: 'error'});
+
+             }else if(res.data.body.code==2){
+              //全都是未通过
+              this.$confirm(res.data.body.info+",确认提交?", '提示', {
+                  confirmButtonText: '确认提交',
+                  cancelButtonText: '继续审核',
+                  type: 'warning'
+                }).then(() => {
+                    this.completeTask('N')
+                }).catch(() => {
+                    //关闭窗体,继续审核
+                });
+             }else if(res.data.body.code==0){
+               this.completeTask('Y')
+             }else{
+               this.$message({ showClose: true, message: res.data.body.info,type: 'error'});
+             }
+         }else{
+            this.$message({ showClose: true, message: "操作异常",type: 'error'});
+         }
+        });
+    },
+    completeTask(audit){
+        //拼装参数
+        let info={}
+        info.params={"note":this.form.note,"audit1":audit,"itemId":this.itemId}
+        info.taskId = this.bpmInfo.taskId
+        info.woNo = this.woNo 
+        info.stepId = this.bpmInfo.stepId
+        info.procId = this.bpmInfo.procId
+        info.procVersion = this.bpmInfo.procVersion
+        //POST请求
+        this.$http({
+        url: "/bpm/api/submitTask",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:info
+        }).then((res) => {
+         if(res.data.result==0){
+            this.$router.push({	path: '/tvIntroduction'});
+         }else{
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+         }
+        });
+    }
+  },
+  mounted(){
+    this.woNo = this.$route.query.woNo
+    this.bpmInfo.taskId = this.$route.query.taskId
+    this.bpmInfo.stepId = this.$route.query.stepId
+    this.bpmInfo.procId = this.$route.query.procId
+    this.bpmInfo.procVersion = this.$route.query.procVersion
+  }
+}
+</script>
+<style lang="scss" scoped>
+.tv-container{
+  background-color: white;
+  margin:15px 15px 15px 15px;
+  padding:20px ;
+
+}
+.el-label{
+  /*border-left:5px solid #0b82ff;*/
+  /*padding-left:5px;*/
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 301 - 0
src/pages/main/homeMarket/tvIntroduction/deal/base.vue

@@ -0,0 +1,301 @@
+<template>
+  <div>     <!-- height="calc(100% - 40px)"-->
+            <div v-if="itemName" style="padding-bottom:10px;text-align:center;color: #606266;">{{itemName}}</div>
+            <el-table class="com-table" ref="multipleTable" :data="tableData"
+                        tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+
+              <template v-if="step==3">
+                <el-table-column prop="idx"   label="序号" align="center" width="50px"/>
+              </template>
+              <template v-else>
+                <el-table-column prop="idx" type="index"  label="序号" align="center" width="50px"/>
+              </template>
+
+              <el-table-column label="业务属性" align="center">
+                <el-table-column  prop="busiType"    label="业务类型" align="center"/>
+                <el-table-column  prop="productName" label="产品名称" align="center"/>
+                <el-table-column  prop="parterName"  label="企业名称" align="center"/>
+              </el-table-column>
+
+              <!--
+              <el-table-column label="介绍材料" align="center">
+                <el-table-column  prop="isBlack"         label="黑名单"          align="center" width="60px">
+                    <template slot-scope="scope">
+                        <div v-if="scope.row.isBlack==0">否</div>
+                        <div v-if="scope.row.isBlack==1">是</div>
+                    </template>
+                </el-table-column>
+
+                <el-table-column  prop="businessLicense" label="企业法人营业执照" align="center">
+                  <template slot-scope="scope">
+                      <div v-html="filesToUrl(scope.row.businessLicense)" />
+                  </template>
+                </el-table-column>
+                <el-table-column  prop="orgCode"         label="组织机构代码证"   align="center">
+                  <template slot-scope="scope">
+                    <div v-html="filesToUrl(scope.row.orgCode)" />
+                  </template>
+                </el-table-column>
+                <el-table-column  prop="taxReg"          label="税务登记证"       align="center">
+                  <template slot-scope="scope">
+                    <div v-html="filesToUrl(scope.row.taxReg)" />
+                  </template>                
+                </el-table-column>
+                <el-table-column  prop="bankAccount"     label="银行开户许可证"   align="center">
+                  <template slot-scope="scope">
+                      <div v-html="filesToUrl(scope.row.bankAccount)" />
+                  </template>                
+                </el-table-column>
+                <el-table-column  prop="addService"      label="增值业务许可证"   align="center">
+                  <template slot-scope="scope">
+                      <div v-html="filesToUrl(scope.row.addService)" />
+                  </template>                
+                </el-table-column>
+                <el-table-column  prop="productInfo"     label="产品介绍"         align="center">
+                  <template slot-scope="scope">
+                      <div v-html="filesToUrl(scope.row.productInfo)" />
+                  </template>               
+                </el-table-column>
+                <el-table-column  prop="otherInfo"       label="其他说明材料"     align="center">
+                  <template slot-scope="scope">
+                      <div v-html="filesToUrl(scope.row.otherInfo)" />
+                  </template>                
+                </el-table-column>
+              </el-table-column>
+              -->
+                <template v-if="step=='2'">
+                  <el-table-column label="内部评估材料" align="center">
+                    <el-table-column  label="内容资源" align="center">
+                          <el-table-column   label="内容品质" align="center">
+                          <template slot-scope="scope">
+                            <myUpload ref="contentQuality" type="contentQuality" :fList="scope.row.contentQuality" :itemId="dataId"   :idx="scope.row.idx" @handleResult="uploadCallBack"></myUpload>
+                          </template>                        
+                          </el-table-column>
+                          <el-table-column   label="内容授权" align="center">
+                          <template slot-scope="scope">
+                            <myUpload ref="contentAuth" type="contentAuth"       :fList="scope.row.contentAuth"    :itemId="dataId" :idx="scope.row.idx" @handleResult="uploadCallBack"></myUpload>
+                          </template>
+                          </el-table-column>
+                          <el-table-column   label="用户认知" align="center">
+                          <template slot-scope="scope">
+                            <myUpload ref="userCognition" type="userCognition"   :fList="scope.row.userCognition" :itemId="dataId"  :idx="scope.row.idx" @handleResult="uploadCallBack"></myUpload>
+                          </template>                        
+                          </el-table-column>
+                    </el-table-column>
+
+                    <el-table-column  label="创新性" align="center">
+                          <template slot-scope="scope">
+                            <myUpload ref="innovation" type="innovation"         :fList="scope.row.innovation"    :itemId="dataId"  :idx="scope.row.idx" @handleResult="uploadCallBack"></myUpload>
+                          </template>
+                    </el-table-column>
+                    <el-table-column  label="用户体验" align="center">
+                          <template slot-scope="scope">
+                            <myUpload ref="userExperience" type="userExperience" :fList="scope.row.userExperience" :itemId="dataId"  :idx="scope.row.idx" @handleResult="uploadCallBack"></myUpload>
+                          </template>                  
+                    </el-table-column>
+                    <el-table-column  label="资费" align="center">
+                          <template slot-scope="scope">
+                            <myUpload ref="fee" type="fee" :itemId="dataId"      :fList="scope.row.fee" :idx="scope.row.idx" @handleResult="uploadCallBack"></myUpload>
+                          </template>                  
+                    </el-table-column>
+                    <el-table-column  label="信息安全" align="center">
+                        <template slot-scope="scope">
+                          <myUpload ref="infoSafety" type="infoSafety"  :fList="scope.row.infoSafety"  :itemId="dataId"  :idx="scope.row.idx" @handleResult="uploadCallBack"></myUpload>
+                        </template>
+                    </el-table-column>
+                  </el-table-column>
+
+            
+                  <el-table-column label="是否通过" align="center" width="130px">
+                    <template slot-scope="scope">
+                      <el-select v-model="scope.row.isPass" @change="(value)=>{setPassValue(value,scope.row.itemId,scope.row.idx)}" placeholder="请选择" size="small">
+                        <el-option
+                          v-for="item in options"
+                          :key="item.value" 
+                          :label="item.label"  
+                          :value="item.value">
+                        </el-option>
+                      </el-select>
+                    </template>
+                  </el-table-column>
+              </template> 
+
+                <template v-if="step=='3'">
+                  <el-table-column label="内部评估材料" align="center">
+                    <el-table-column  label="内容资源" align="center">
+                          <el-table-column   label="内容品质" align="center">
+                          <template slot-scope="scope">
+                            <down :files="scope.row.contentQuality"></down>
+                          </template>                        
+                          </el-table-column>
+                          <el-table-column   label="内容授权" align="center">
+                          <template slot-scope="scope">
+                            <down :files="scope.row.contentAuth"></down>
+                          </template>
+                          </el-table-column>
+                          <el-table-column   label="用户认知" align="center">
+                          <template slot-scope="scope">
+                            <down :files="scope.row.userCognition"></down>
+                          </template>                        
+                          </el-table-column>
+                    </el-table-column>
+
+                    <el-table-column  label="创新性" align="center">
+                          <template slot-scope="scope">
+                             <down :files="scope.row.innovation"></down>
+                          </template>
+                    </el-table-column>
+                    <el-table-column  label="用户体验" align="center">
+                          <template slot-scope="scope">
+                            <down :files="scope.row.userExperience"></down>                           
+                          </template>                  
+                    </el-table-column>
+                    <el-table-column  label="资费" align="center">
+                          <template slot-scope="scope">
+                            <down :files="scope.row.fee"></down>                           
+                          </template>                  
+                    </el-table-column>
+                    <el-table-column  label="信息安全" align="center">
+                        <template slot-scope="scope">
+                            <down :files="scope.row.infoSafety"></down>                           
+                        </template>
+                    </el-table-column>
+                  </el-table-column>
+
+            
+                  <el-table-column label="是否通过" align="center" width="50px">
+                    <template slot-scope="scope">
+                        <div v-if="scope.row.isPass==0">否</div>
+                        <div v-if="scope.row.isPass==1">是</div>
+                    </template>
+                  </el-table-column>
+                </template>
+ 
+ 
+              <el-table-column label="操作" align="center">
+                  <template slot-scope="scope">
+                    <el-button type="text" size="small" @click="viewItem(scope.row.itemId,scope.row.idx)">查看</el-button>
+                  </template>
+              </el-table-column>
+      
+          </el-table>
+
+
+            <div style="margin-top:20px;" v-if="dataId!==''">
+              <div class="el-label"><i class="el-icon-collection-tag"></i>审批轨迹</div>
+              <div class="el-line"></div>
+              <audit :itemId="dataId"></audit>
+            </div>
+
+
+            <idxDialog :dialogVisible="dialogVisible" :itemId="dataId" :idx="curIdx" @closeWin="closeWin"></idxDialog>
+
+  </div>
+
+
+</template>
+
+<script>
+import {strToHerf} from "@/utils/tv.js"
+import audit from "./audit.vue";
+import idxDialog from "./idxDialog.vue";
+import myUpload from "@/components/uploadNew.vue";
+import down from "@/components/uploadNewDown.vue";
+
+
+export default {
+  components:{audit,idxDialog,myUpload,down},
+  props: {
+    woNo:   { required: false,type: String},
+    itemId: { required: false,type: String},
+    step:{ required: true, type: String}
+  },
+
+  data(){
+    return{
+      tableData:[],
+      loading:false,
+      itemName:'',
+      dataId:'',
+      isPass:"1",
+      //
+      passValue:'1',
+      options: [{value: "1",label: "是"}, { value: "0",label: "否"}],
+      dialogVisible:false,
+      curIdx:''
+    }
+  },
+
+  methods:{
+    uploadCallBack(v){
+      console.log({v})
+      if(v.k===1){
+        this.$http({
+          url: "/market/tvImport/expert/set/quality",
+          method: "post",
+          headers: {"Content-Type": "application/json"},
+          data: {"itemId":v.body.itemId,"idx":v.body.idx,"v":JSON.stringify(v.files),"k":v.type}
+        }).then((res) => {
+          if(res.data.result!=0){
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+          }
+        });
+      }
+    },
+    closeWin(){
+      this.dialogVisible = false;
+    },
+    //
+    viewItem(itemId,idx){
+      this.curIdx = idx;
+      this.dialogVisible = true;
+    },
+    //
+    filesToUrl(files){
+      return strToHerf(files)
+    },
+    setPassValue(value,itemId,idx){
+      this.$http({
+        url: "/market/tvImport/setIsPass",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data: {"itemId":itemId,"idx":idx,"isPass":value}
+      }).then((res) => {
+         if(res.data.result!=0){
+           this.$message({ showClose: true, message: '系统异常',type: 'error'});
+         }
+      });
+    },
+    //
+    loadData(){
+      if(this.step==='2'){this.isPass=""}
+      if(this.step==='3'){this.isPass="1"}
+      this.$http({
+        url: "/market/tvImport/queryImport",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data: {"itemId":this.itemId,"woNo":this.woNo,"isPass":this.isPass}
+      }).then((res) => {
+         if(res.data.result==0){
+            this.tableData = res.data.body 
+            if(null!=this.tableData && this.tableData.length>0){
+              this.itemName = this.tableData[0].itemName;
+              this.dataId = this.tableData[0].itemId;
+              this.callBack(this.dataId)
+            }
+         }else{
+           this.$message({ showClose: true, message: '系统异常',type: 'error'});
+         }
+      });
+    },
+    callBack(dataId){
+        this.$emit("callBack",dataId);
+    }
+  },
+  mounted(){
+    this.itemId = this.$route.query.itemId
+    this.woNo = this.$route.query.woNo
+    this.loadData()
+  }
+}
+</script>

+ 608 - 0
src/pages/main/homeMarket/tvIntroduction/deal/basePeerReview.vue

@@ -0,0 +1,608 @@
+<template>
+  <div>     <!-- height="calc(100% - 40px)"-->
+            <div v-if="itemName" style="padding-bottom:10px;text-align:center;color: #606266;">{{itemName}}</div>
+
+ 
+            <el-table class="com-table" ref="multipleTable" :data="tableData"
+                        tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading"
+                        :span-method="rowSpanForInputFile">
+      
+
+            <!--
+            <el-table-column  type="index"  label="" align="center" width="50px"/>
+            -->
+            <el-table-column  prop="idx" label="序号" align="center" width="50px"/>
+
+            <el-table-column label="业务属性" align="center">
+              <el-table-column  prop="busiType"    label="业务类型" align="center"/>
+              <el-table-column  prop="productName" label="产品名称" align="center"/>
+              <el-table-column  prop="parterName"  label="企业名称" align="center"/>
+            </el-table-column>
+            <!--专家评审-->
+            <template v-if="step=='4'">
+                <el-table-column label="产品打分评审" align="center">
+                      <el-table-column label="内容资源" align="center">
+                        <el-table-column label="内容品质(15%)" align="center">
+                              <template slot-scope="scope">
+                                <el-input v-model="scope.row.s1"  size="small" max="20" @blur="setScore(scope.row.s1,'s1',scope.row)" class="expt_input"/>
+                              </template>
+                        </el-table-column>
+                        <el-table-column label="内容授权(5%)" align="center">
+                              <template slot-scope="scope">
+                                <el-select v-model="scope.row.s2" @change="(value)=>{setScore(value,'s2',scope.row)}" placeholder="请选择" size="small">
+                                  <el-option
+                                    v-for="item in options"
+                                    :key="item.value" 
+                                    :label="item.label"  
+                                    :value="item.value">
+                                  </el-option>
+                                </el-select>
+                              </template>
+                        </el-table-column>
+                        <el-table-column label="用户认知(20%)" align="center">
+                              <template slot-scope="scope">
+                                <el-input v-model="scope.row.s3"  size="small" @blur="setScore(scope.row.s3,'s3',scope.row)" class="expt_input"/>
+                              </template>
+                        </el-table-column>
+                      </el-table-column>
+                        
+                        <el-table-column label="创新性(20%)" align="center">
+                            <template slot-scope="scope">
+                              <el-input v-model="scope.row.s4"  size="small" @blur="setScore(scope.row.s4,'s4',scope.row)" class="expt_input"/>
+                            </template> 
+                        </el-table-column>
+                        <el-table-column label="用户体验(20%)" align="center">
+                            <template slot-scope="scope">
+                              <el-input v-model="scope.row.s5"  size="small" @blur="setScore(scope.row.s5,'s5',scope.row)" class="expt_input"/>
+                            </template> 
+                        </el-table-column>
+                        <el-table-column label="资费(10%)" align="center">
+                              <template slot-scope="scope">
+                                <el-select v-model="scope.row.s6" @change="(value)=>{setScore(value,'s6',scope.row)}" placeholder="请选择" size="small">
+                                  <el-option
+                                    v-for="item in options1"
+                                    :key="item.value" 
+                                    :label="item.label"  
+                                    :value="item.value">
+                                  </el-option>
+                                </el-select>
+                              </template>
+                        </el-table-column>
+                        <el-table-column label="信息安全(10%)" align="center">
+                            <template slot-scope="scope">
+                              <el-input v-model="scope.row.s7"  size="small" @blur="setScore(scope.row.s7,'s7',scope.row)" class="expt_input"/>
+                            </template>
+                        </el-table-column>
+                </el-table-column>
+
+                <el-table-column label="合计(100%)" align="center">
+                          <template slot-scope="scope">
+                            <el-input v-model="scope.row.s8"  :disabled="true" size="small" class="expt_input"/>
+                          </template> 
+                </el-table-column>
+                
+                <el-table-column label="备注" align="center" width="120px">
+                          <template slot-scope="scope">
+                            <el-input v-model="scope.row.note"  @blur="setScore(scope.row.note,'note',scope.row)" size="small" class="expt_input_note"/>
+                          </template> 
+                </el-table-column>
+            </template> 
+            <!--评审汇总,室主任初审,部门领导复审,会议结果录入-->
+            <template v-if="step=='5' || step=='6' || step=='7'">
+                <el-table-column label="产品打分评审" align="center">
+                      <el-table-column label="内容资源" align="center">
+                        <el-table-column label="内容品质(15%)" prop="s1" align="center"></el-table-column>
+                        <el-table-column label="内容授权(5%)"  prop="s2" align="center"></el-table-column>
+                        <el-table-column label="用户认知(20%)" prop="s3" align="center"></el-table-column>
+                      </el-table-column>
+                        
+                        <el-table-column label="创新性(20%)" prop="s4" align="center"></el-table-column>
+                        <el-table-column label="用户体验(20%)" prop="s5" align="center"></el-table-column>
+                        <el-table-column label="资费(10%)" prop="s6" align="center"></el-table-column>
+                        <el-table-column label="信息安全(10%)" prop="s7" align="center"></el-table-column>
+                </el-table-column>
+
+                <el-table-column label="合计(100%)" prop="s8" align="center">
+                </el-table-column>
+
+                
+                <el-table-column label="评审专家" prop="expertLoginName" align="center">
+                </el-table-column>
+
+                <el-table-column label="备注" prop="note" align="center" >
+                </el-table-column>
+
+                                
+                <el-table-column label="总平均分" prop="avgAllScore" align="center">
+                </el-table-column>
+            </template> 
+                
+            <!--会议结果录入-->
+            <template v-if="step=='8'">
+                <el-table-column label="合计(100%)"  prop="s8" align="center"/>
+                <el-table-column label="会议记录"  align="center" >
+                  <template slot-scope="scope">
+                      <div>
+                          
+                          <el-upload
+                            ref="inputFileUpload"
+                            class="avatar-uploader"
+                            action="string"
+                            :show-file-list="true"
+                            :on-success="handleAvatarSuccess"
+                            :before-upload="beforeAvatarUpload"
+                            :file-list="inputFielList"
+                            >
+                            <i class="el-icon-plus avatar-uploader-icon"></i>
+                          </el-upload>
+                      </div>
+                  </template>
+                </el-table-column>
+            </template>
+
+            <template v-if="step=='9' || step=='10' || step=='11' || step=='12' || step=='13'  || step=='14'  || step=='15'">
+                <el-table-column label="合计(100%)"  prop="s8" align="center"/>
+                <el-table-column label="会议记录"  align="center">
+                    <template slot-scope="scope">
+                      <down :files="scope.row.inputFile"></down>   
+                  </template>
+                </el-table-column>
+                <template v-if="step=='13'">
+                  <el-table-column label="附件"  align="center"  prop="">
+                      <template slot-scope="scope">
+                          <div>
+                              <myUpload ref="publish" type="publish" :itemId="dataId" :idx="scope.row.idx" :fList="scope.row.publishFile"   @handleResult="handlePublishUpload"></myUpload>
+                          </div>
+                      </template>
+                   </el-table-column>
+                   
+                   <el-table-column label="2月内上线"  align="center"  prop="">
+                        <template slot-scope="scope">
+                          <el-select v-model="scope.row.publishInRule" @change="(value)=>{setPublishInRule(value,'publishInRule',scope.row)}" placeholder="请选择" size="small">
+                            <el-option
+                              v-for="item in options2"
+                              :key="item.value" 
+                              :label="item.label"  
+                              :value="item.value">
+                            </el-option>
+                          </el-select>
+                        </template>>
+                   </el-table-column>
+
+                   <el-table-column label="是否已上线"  align="center"  prop="">
+                        <template slot-scope="scope">
+                          <el-select v-model="scope.row.isPublish" @change="(value)=>{setPublish(value,'isPublish',scope.row)}" placeholder="请选择" size="small">
+                            <el-option
+                              v-for="item in options2"
+                              :key="item.value" 
+                              :label="item.label"  
+                              :value="item.value">
+                            </el-option>
+                          </el-select>
+                        </template>
+                   </el-table-column>
+                </template>
+
+
+                 <template v-if="step=='14'">
+                   <!--
+                   <el-table-column label="附件"  align="center"  prop="">
+                        <template slot-scope="scope">
+                          <div v-html="filesToUrl(scope.row.publishFile)" />
+                        </template>
+                   </el-table-column>
+                   -->
+                   
+                   <el-table-column label="2月内上线"  align="center"  prop="">
+                        <template slot-scope="scope">
+                          {{parserYesNo(scope.row.publishInRule)}}
+                        </template>>
+                   </el-table-column>
+
+                   <el-table-column label="是否已上线"  align="center"  prop="">
+                        <template slot-scope="scope">
+                          {{parserYesNo(scope.row.isPublish)}}
+                        </template>
+                   </el-table-column>
+                 </template>
+
+                <!--publish2-->
+                <template v-if="step=='15'">
+                  <el-table-column label="附件"  align="center"  prop="">
+                        <template slot-scope="scope">
+                        <div>
+                            <myUpload ref="publish" type="publish" :itemId="dataId" :idx=scope.row.idx  @handleResult="handlePublishUpload"></myUpload>
+                        </div>
+                        </template>
+                  </el-table-column>
+                  
+                  <el-table-column label="2月内上线"  align="center"  prop="">
+                      <template slot-scope="scope">
+                        {{parserYesNo(scope.row.publishInRule)}}
+                      </template>>
+                  </el-table-column>
+
+                  <el-table-column label="是否已上线"  align="center"  prop="">
+                      <template slot-scope="scope">
+                          <el-select v-model="scope.row.isPublish" @change="(value)=>{setPublish(value,'isPublish',scope.row)}" placeholder="请选择" size="small">
+                            <el-option
+                              v-for="item in options2"
+                              :key="item.value" 
+                              :label="item.label"  
+                              :value="item.value">
+                            </el-option>
+                          </el-select>
+                      </template>
+                  </el-table-column>
+                </template>
+            </template>
+                <el-table-column label="操作" align="center">
+                    <template slot-scope="scope">
+                      <el-button type="text" size="small" @click="viewItem(scope.row.itemId,scope.row.idx)">查看</el-button>
+                    </template>
+                </el-table-column>
+          </el-table>
+                
+                
+
+          <div style="margin-top:20px;" v-if="extFiles.length>0" >
+            <div class="el-label"><i class="el-icon-paperclip"></i>附件列表</div>
+            <div class="el-line"></div>
+            <el-table class="com-table" :show-header="false" ref="multipleTable"  :data="extFiles"
+              tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                <el-table-column align="left" prop="l" width="180px"></el-table-column>
+                <el-table-column align="left" prop="n"></el-table-column>
+                <el-table-column align="center" prop="u" width="140px"></el-table-column>
+                <el-table-column align="left" width="300px">
+                      <template slot-scope="scope">
+                          <down :files="scope.row.f"></down>   
+                       </template>
+                </el-table-column>
+            </el-table>
+          </div>
+
+            <div style="margin-top:20px;" v-if="dataId!==''">
+              <div class="el-label"><i class="el-icon-collection-tag"></i>审批轨迹</div>
+              <div class="el-line"></div>
+              <audit :itemId="dataId"></audit>
+            </div>
+
+
+
+
+            <idxDialog :dialogVisible="dialogVisible" :itemId="dataId" :idx="curIdx" @closeWin="closeWin"></idxDialog>
+  </div>
+</template>
+
+<script>
+import {strToHerf} from "@/utils/tv.js"
+import myUpload from "@/components/uploadNew.vue";
+import audit from "./audit.vue";
+import idxDialog from "./idxDialog.vue";
+import down from "@/components/uploadNewDown.vue";
+
+export default {
+  components:{myUpload,audit,idxDialog,down},
+  props: {
+    woNo:   { required: false,type: String},
+    itemId: { required: false,type: String},
+    step:{ required: true, type: String},
+    expertLogin:{required: false, type: String}
+  },
+
+  data(){
+    return{
+      tableData:[],
+      loading:false,
+      itemName:'',
+      dataId:'',
+      options:[{value:'1',label:'1'},{value:'3',label:'3'},{value:'5',label:'5'}],
+      options1:[{value:'0',label:'0'},{value:'5',label:'5'},{value:'10',label:'10'}],
+      options2:[{value:'1',label:'是'},{value:'0',label:'否'}],
+      inputFielList:[],
+      publishFielList:[],
+      fileList:[],
+      extFiles:[],
+      dialogVisible:false,
+      curIdx:''
+    }
+  },
+
+  methods:{
+    closeWin(){
+      this.dialogVisible = false;
+    },
+    parserYesNo(v){
+      if(v==='0'){return "否"}
+      else if(v==='1'){return "是"}
+    },
+    handlePublishUpload(v){
+      //this.fileList = v.files
+      let info = {}
+      info.itemId = this.dataId
+      info.idx = v.body.idx
+      info.publishFile = JSON.stringify(v.files)
+      //POST请求
+      this.$http({
+      url: "/market/tvImport/editExpert",
+      method: "post",
+      headers: {"Content-Type": "application/json"},
+      data:info
+      }).then((res) => {
+        if(res.data.result!==0){
+          this.$message({ showClose: true, message: '操作异常',type: 'error'});
+        }
+      });
+    },
+    viewItem(itemId,idx){
+      this.curIdx = idx;
+      this.dialogVisible = true;
+    },
+    filesToUrl(files){
+      return strToHerf(files)
+    },
+    setScore(v,k,row){
+      if(null==v || v==='' || v ==='null'){
+        v = 0
+        if(k=='s1'){row.s1 = 0}
+        if(k=='s2'){row.s2 = 0}
+        if(k=='s3'){row.s3 = 0}
+        if(k=='s4'){row.s4 = 0}
+        if(k=='s5'){row.s5 = 0}
+        if(k=='s6'){row.s6 = 0}
+        if(k=='s7'){row.s7 = 0}
+      }else{
+        
+        if(k=='s1'){ if(v>15){this.$message({ message: '内容品质分数不能超过15分',type: 'warning' }); row.s1=15;  v=15;}}
+        if(k=='s3'){ if(v>20){this.$message({ message: '用户认知分数不能超过20分',type: 'warning' }); row.s3=20;  v=20;}}
+        if(k=='s4'){ if(v>20){this.$message({ message: '创新性分数不能超过20分',type: 'warning' }); row.s4=20;    v=20;}}
+        if(k=='s5'){ if(v>20){this.$message({ message: '用户体验分数不能超过20分',type: 'warning' }); row.s5=20;  v=20;}}
+        if(k=='s7'){ if(v>10){this.$message({ message: '用户体验分数不能超过10分',type: 'warning' }); row.s7=10;  v=10;}}
+        
+      }
+      this.resultScore(row)
+      this.setValue(v,k,row)
+    },
+
+    setValue(v,k,row){
+        let url = "/market/tvImport/expert/set/score";
+        if(k==="isPublish"){
+          url = "/market/tvImport/expert/set/publish";
+        }else if(k==='publishInRule'){
+          url = "/market/tvImport/expert/set/publishInRule";
+        }
+        this.$http({
+        url: url,
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data: {"itemId":row.itemId,"idx":row.idx,"v":v,"k":k}
+      }).then((res) => {
+        if(res.data.result!=0){
+          this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+        }
+      });
+    }
+    ,
+    resultScore(row){
+        row.s8 = this.pValue(row.s1) +this.pValue(row.s2) + this.pValue(row.s3) + 
+                 this.pValue(row.s4) +this.pValue(row.s5) + this.pValue(row.s6) + this.pValue(row.s7)
+    }
+    ,
+    pValue(v){
+      let result = 0
+      if(null==v || v==='' || v ==='null'){
+        return result
+      }else{
+        result = parseInt(v)
+      }
+      return result;
+    }
+    ,
+    setPublish(v,k,row){
+        this.setValue(v,k,row)
+    },
+    setPublishInRule(v,k,row){
+        this.setValue(v,k,row)
+    },
+    loadData(){
+      let params = {}
+      params.itemId = this.itemId
+      params.woNo = this.woNo
+      params.expertLogin = this.expertLogin
+
+      if(this.step==='2'){this.isPass=""}
+      let url = "/market/tvImport/queryExpert";
+
+      //url
+      if(this.step==='8' || this.step === '9'   || this.step === '10' 
+                         || this.step === '11'  || this.step === '12' 
+                         || this.step === '13'  || this.step === '14'  || this.step === '15'){
+        params.isPass='1'
+        url = "/market/tvImport/queryImport";
+        params.s8="85"
+      }
+
+
+
+      let orderBy = "";
+      if(this.step==='5' || this.step==='6' || this.step==='7'){
+        orderBy = "a.item_id,a.idx";
+        params.s8="85"
+        params.orderBy = orderBy
+      }
+
+      if(this.step==='14' || this.step==='15'){
+          params.publishInRule = "0"//未按时发布
+      }
+
+      this.$http({
+        url: url,
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data: params
+      }).then((res) => {
+         if(res.data.result==0){
+            this.tableData = res.data.body 
+            if(null!=this.tableData && this.tableData.length>0){
+              let iData = this.tableData[0]
+              this.itemName = iData.itemName;
+              this.dataId = iData.itemId;
+              this.callBack(this.dataId)
+
+              if(url=="/market/tvImport/queryImport"){
+                /*
+                if(iData.inputFile!=undefined){
+                  let extFile = {"f":iData.inputFile,'n':iData.inputNote,'l':"会议结果录入",'u':''}
+                  this.extFiles.push(extFile)
+                }*/
+                
+                if(iData.marketFile!=undefined){
+                   let extFile = {"f":iData.marketFile,'n':iData.marketNote,'l':'市场决策委员会审核','u':''}
+                   this.extFiles.push(extFile)
+                }
+                if(iData.sendFile!=undefined){
+                  //
+                  let units = JSON.parse(iData.receiveUnit);
+                  let unit = "";
+                  for(var i = 0 ;i <units.length;i++){
+                    unit = unit + units[i]+" ,";
+                  }
+                  unit = unit.substring(0,unit.length -1)
+                  unit = "收函单位 : "+unit;
+
+                  let extFile = {"f":iData.sendFile,'n':iData.sendNote,'l':'专业公司发函','u':unit}
+                  this.extFiles.push(extFile)
+                }
+                if(iData.provinceFile!=undefined){
+                  let extFile = {"f":iData.provinceFile,'n':iData.provinceNote,'l':'省内引入','u':''}
+                  this.extFiles.push(extFile)
+                }
+              }
+            }
+
+         }else{
+           this.$message({ showClose: true, message: '系统异常',type: 'error'});
+         }
+      });
+    },
+    callBack(dataId){
+        this.$emit("callBack",dataId);
+    },
+    beforeAvatarUpload(file){
+      let query = new FormData();
+      let type  = ""
+      query.append("file", file);
+      query.append("itemId", this.dataId);
+      //
+      if(this.step==='8'){
+        type = "inputFile";
+      }
+      if(this.step==='14'){
+          type = "publishFile";
+      }
+      query.append("type", type);
+      query.append("idx", "");
+
+    //
+      this.$http({
+          url: "/market/tvImport/upload",
+          method: "post",
+          headers: {"Content-Type": "application/json",},
+          data: query
+      }).then((res) => {
+          if(res.data.result===0){
+              let file = {"name":res.data.body.realName,"url":res.data.body.path + "/" + res.data.body.fileName}
+              if(this.step==='8'){
+                this.inputFielList.push(file)
+              }else if(this.step==='14'){
+                this.publishFielList.push(file)
+              }
+          }else{
+            this.$message({ message: res.data.desc,type: 'error'});
+          }
+      });
+    },
+    handleAvatarSuccess(){
+
+    }
+    ,
+    getInputFileUploadList(){
+      return this.inputFielList;
+    }
+    ,
+    getPuhlishFileList(){
+      console.log(this.$refs)
+      //return this.publishFielList;
+    },
+    rowSpanForInputFile({ row, column, rowIndex, columnIndex }) {  
+        //
+        if(this.step=='5' || this.step=='6' || this.step=='7'){
+              if (columnIndex === 14 || columnIndex === 15 || columnIndex === 0 || columnIndex===1 || columnIndex===2 || columnIndex===3) {
+                if ((rowIndex % row.expertCount) ===0) {
+                return {
+                  rowspan: row.expertCount,
+                  colspan: 1
+                };
+              }else {
+                return {
+                  rowspan: 0,
+                  colspan: 0
+                };
+              }
+            }
+        }
+        //
+        else if(this.step=='8' || this.step=='9'  || this.step=='10' 
+                          || this.step=='11' || this.step=='12' 
+                          ){
+          if (columnIndex === 6 || columnIndex == 5) {
+            if (rowIndex === 0) {
+            return {
+              rowspan: this.tableData.length,
+              colspan: 1
+            };
+          } else {
+            return {
+              rowspan: 0,
+              colspan: 0
+            };
+          }
+        }
+      }else if(this.step=='14' || this.step=='13'){
+        if (columnIndex == 5) {
+                if (rowIndex === 0) {
+                return {
+                  rowspan: this.tableData.length,
+                  colspan: 1
+                };
+            } else {
+              return {
+                rowspan: 0,
+                colspan: 0
+              };
+            }
+        }
+      }
+    },
+  },
+  mounted(){
+    this.itemId = this.$route.query.itemId
+    this.woNo = this.$route.query.woNo
+    this.loadData()
+  }
+}
+</script>
+
+<style>
+.expt_input{width:40px;text-align: center;padding:0px;}
+.expt_input_note{width:80px;text-align: center;padding:0px;}
+.el-input__inner{padding:0 0px;}
+.el-label{
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 150 - 0
src/pages/main/homeMarket/tvIntroduction/deal/extendCentralAudit.vue

@@ -0,0 +1,150 @@
+<template>
+  <div class="tv-container">
+      
+        <div class="container-box">
+             <div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息</div>
+                <div class="el-line"></div>
+                <baseTable v-if="woNo" :woNo="woNo" step="10"  @callBack="callBack"/>
+                <div class="el-line"></div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>中心主任复审</div>
+                <div class="el-line"></div>
+
+                <div>
+                  <el-row>
+                    <el-col :span="6">&nbsp;</el-col>
+                    <el-col :span="12">
+                        <el-form ref="form" :model="form" label-width="80px">
+                           <el-form-item label="审核结果">
+                              <el-radio v-model="audit6" label="Y">通过</el-radio>
+                              <el-radio v-model="audit6" label="N">未通过</el-radio>
+                          </el-form-item>
+
+                          <el-form-item label="备注信息">
+                            <el-input type="textarea" v-model="form.note"></el-input>
+                          </el-form-item>
+                        </el-form>
+                    </el-col>
+                    <el-col :span="6">&nbsp;</el-col>
+                  </el-row>
+
+                </div>
+
+                <div class="el-line"></div>
+                <div class="el-label"></div>
+                <div class="el-line"></div>
+                <div style="text-align:right">
+                  <el-button type="primary" @click="handleAudit">确定</el-button>
+                </div>
+             </div>
+        </div>
+        <!--<fullscreen :fullscreen.sync="fullscreen" class="container"></fullscreen>-->
+  </div>
+</template>
+
+<script>
+import baseTable from "./basePeerReview"
+export default {
+  components:{ baseTable },
+  data(){
+    return{
+      woNo:'',
+      itemId:'',
+      fullscreen:true,
+      form:{note:""},
+      audit6:"Y",
+      assigneeNo:'',
+      assigneeName:'',
+      bpmInfo:{},
+    }
+  },
+  methods:{
+    callBack(itemId){
+      this.itemId = itemId
+    },
+    completeTask(){
+        if(this.assigneeNo===""){
+           this.$message({ showClose: true, message:"数据异常",type: 'error'});
+          return 
+        }
+        //拼装参数
+        let info={}
+        info.params={
+          "note":this.form.note,
+          "itemId":this.itemId,
+          "woNo":this.woNo, 
+          "assigneeNo":this.assigneeNo,
+          "assigneeName":this.assigneeName,
+          "audit6":this.audit6
+        },
+        info.taskId = this.bpmInfo.taskId
+        info.woNo = this.bpmInfo.woNo 
+        info.stepId = this.bpmInfo.stepId
+        info.procId = this.bpmInfo.procId
+        info.procVersion = this.bpmInfo.procVersion
+        //POST请求
+        this.$http({
+        url: "/bpm/api/submitTask",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:info
+        }).then((res) => {
+         if(res.data.result==0){
+            this.$router.push({	path: '/tvIntroduction'});
+         }else{
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+         }
+        });
+    },
+
+    handleAudit(){
+          //通过 or 不通过 均给发起人
+      this.$http({
+        url: "/market/tvImport/basicInfo",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:{"itemId":this.itemId,"woNo":this.woNo}
+      }).then((res) => {
+        if(res.data.result==0){
+          let user = res.data.body.imp
+          if(null==user){
+              this.$message({ showClose: true, message: "数据异常",type: 'error'});
+          }else{
+                this.assigneeNo = user.createLogin
+                this.assigneeName = user.createLoginName
+                this.completeTask()
+          }
+        }else{
+          this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+        }
+      });
+    }
+  },
+  mounted(){
+    this.woNo = this.$route.query.woNo
+    this.bpmInfo.taskId = this.$route.query.taskId
+    this.bpmInfo.woNo = this.woNo
+    this.bpmInfo.stepId = this.$route.query.stepId
+    this.bpmInfo.procId = this.$route.query.procId
+    this.bpmInfo.procVersion = this.$route.query.procVersion
+  }
+}
+</script>
+<style lang="scss" scoped>
+.tv-container{
+  background-color: white;
+  margin:15px 15px 15px 15px;
+  padding:20px ;
+
+}
+.el-label{
+  /*border-left:5px solid #0b82ff;*/
+  /*padding-left:5px;*/
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 223 - 0
src/pages/main/homeMarket/tvIntroduction/deal/extendOfficerAudit.vue

@@ -0,0 +1,223 @@
+<template>
+  <div class="tv-container">
+      
+        <div class="container-box">
+             <div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息</div>
+                <div class="el-line"></div>
+                <baseTable v-if="woNo" :woNo="woNo" step="9"  @callBack="callBack"/>
+                <div class="el-line"></div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>室主任初审</div>
+                <div class="el-line"></div>
+
+                <div>
+                  <el-row>
+                    <el-col :span="6">&nbsp;</el-col>
+                    <el-col :span="12">
+                        <el-form ref="form" :model="form" label-width="80px">
+                           <el-form-item label="审核结果">
+                              <el-radio v-model="audit5" label="Y">通过</el-radio>
+                              <el-radio v-model="audit5" label="N">未通过</el-radio>
+                          </el-form-item>
+
+                          <el-form-item label="备注信息">
+                            <el-input type="textarea" v-model="form.note"></el-input>
+                          </el-form-item>
+                        </el-form>
+                    </el-col>
+                    <el-col :span="6">&nbsp;</el-col>
+                  </el-row>
+
+                </div>
+
+                <div class="el-line"></div>
+                <div class="el-label"></div>
+                <div class="el-line"></div>
+                <div style="text-align:right">
+                  <el-button type="primary" @click="handleAudit">确定</el-button>
+                </div>
+             </div>
+        </div>
+        <!--<fullscreen :fullscreen.sync="fullscreen" class="container"></fullscreen>-->
+              <el-dialog
+                title="请选择"
+                :visible.sync="userDlgVisual"
+                width="30%"
+                :modal-append-to-body="false"
+                :close-on-click-modal="false"
+                :before-close="handleClose">
+              <div>
+                  <el-radio  v-for="user in userList " v-model="assigneeNo" :key="user.loginNoStr" :label="user.loginNoStr">{{user.loginNameStr}}</el-radio>
+              </div>
+              <span slot="footer" class="dialog-footer">
+                  <el-button @click="userDlgVisual = false">取 消</el-button>
+                  <el-button type="primary" @click="checkSelectUser">确 定</el-button>
+              </span>
+            </el-dialog>
+  </div>
+</template>
+
+<script>
+import baseTable from "./basePeerReview"
+export default {
+  components:{ baseTable },
+  data(){
+    return{
+      woNo:'',
+      itemId:'',
+      fullscreen:true,
+      form:{note:""},
+      audit5:"Y",
+      assigneeNo:'',
+      assigneeName:'',
+      bpmInfo:{},
+      userDlgVisual:false,
+      userList:[]
+    }
+  },
+  methods:{
+    callBack(itemId){
+      this.itemId = itemId
+    },
+    completeTask(){
+        if(this.assigneeNo===""){
+           this.$message({ showClose: true, message:"数据异常",type: 'error'});
+          return 
+        }
+        //拼装参数
+        let info={}
+        info.params={
+          "note":this.form.note,
+          "itemId":this.itemId,
+          "woNo":this.woNo, 
+          "assigneeNo":this.assigneeNo,
+          "assigneeName":this.assigneeName,
+          "audit5":this.audit5
+        },
+        info.taskId = this.bpmInfo.taskId
+        info.woNo = this.bpmInfo.woNo 
+        info.stepId = this.bpmInfo.stepId
+        info.procId = this.bpmInfo.procId
+        info.procVersion = this.bpmInfo.procVersion
+        //POST请求
+        this.$http({
+        url: "/bpm/api/submitTask",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:info
+        }).then((res) => {
+         if(res.data.result==0){
+            this.$router.push({	path: '/tvIntroduction'});
+         }else{
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+         }
+        });
+    },
+
+    handleAudit(){
+      //部门领导审批
+      if(this.audit5==='Y'){
+          let userInfo = window.sessionStorage.userInfo;
+          if(null === userInfo){
+                this.$message({ showClose: true, message: "数据异常",type: 'error'});
+                return 
+          }
+          userInfo = JSON.parse(userInfo);
+          let loginNoStr = userInfo.loginNoStr;
+          this.$http({
+            url: "/market/api/user/info/leader2",
+            method: "post",
+            headers: {"Content-Type": "application/json"},
+            data:{"loginNoStr":loginNoStr,"level":"2","type":"1"}//部门领导复审
+          }).then((res) => {
+            if(res.data.result==0){
+              let user = res.data.body
+              if(null==user || user.length==0){
+                  this.$message({ showClose: true, message: "数据异常",type: 'error'});
+              }else{
+                if(user.length==1){
+                    this.assigneeNo = user[0].loginNoStr
+                    this.assigneeName = user[0].loginNameStr
+                    this.completeTask()
+                }else{
+                    this.userList = user;
+                    this.userDlgVisual = true;
+                }
+              }
+            }else{
+              this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+            }
+          });
+      }else if(this.audit5==='N'){
+      //发起人 会议结果录入
+          this.$http({
+              url: "/market/tvImport/basicInfo",
+              method: "post",
+              headers: {"Content-Type": "application/json"},
+              data:{"itemId":this.itemId,"woNo":this.woNo}
+            }).then((res) => {
+              if(res.data.result==0){
+                let user = res.data.body.imp
+                if(null==user){
+                    this.$message({ showClose: true, message: "数据异常",type: 'error'});
+                }else{
+                      this.assigneeNo = user.createLogin
+                      this.assigneeName = user.createLoginName
+                      this.completeTask()
+                }
+              }else{
+                this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+              }
+            });
+      }else{
+        this.$message({ showClose: true, message:'数据异常',type: 'error'});
+      }
+    },
+    checkSelectUser(){
+      if(this.assigneeNo===''){
+          this.$message.error('请选择下一步处理人');
+          return
+      }
+      //
+      this.userList.forEach((e)=>{
+          if(e.loginNoStr === this.assigneeNo){
+              this.assigneeName = e.loginNameStr
+          }
+      });
+      //
+      this.userDlgVisual = false
+      
+      this.completeTask()
+    },
+    handleClose(){
+      this.userDlgVisual = true
+    },
+  },
+  mounted(){
+    this.woNo = this.$route.query.woNo
+    this.bpmInfo.taskId = this.$route.query.taskId
+    this.bpmInfo.woNo = this.woNo
+    this.bpmInfo.stepId = this.$route.query.stepId
+    this.bpmInfo.procId = this.$route.query.procId
+    this.bpmInfo.procVersion = this.$route.query.procVersion
+  }
+}
+</script>
+<style lang="scss" scoped>
+.tv-container{
+  background-color: white;
+  margin:15px 15px 15px 15px;
+  padding:20px ;
+
+}
+.el-label{
+  /*border-left:5px solid #0b82ff;*/
+  /*padding-left:5px;*/
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 218 - 0
src/pages/main/homeMarket/tvIntroduction/deal/idxDialog.vue

@@ -0,0 +1,218 @@
+<template>
+  <div>
+
+      <el-dialog
+        title="查看产品"
+        :visible.sync="dialogVisible"
+        width="90%"
+        :close-on-click-modal="false"
+        :modal-append-to-body="false"
+        :before-close="handleClose">
+
+
+            <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息</div>
+            <div class="el-line"></div>
+            <el-table class="com-table" ref="multipleTable" :data="tableData"
+                        tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading"
+            >
+
+           <el-table-column prop="idx"   label="序号" align="center" width="50px"/>
+ 
+
+            <el-table-column label="业务属性" align="center">
+              <el-table-column  prop="busiType"    label="业务类型" align="center"/>
+              <el-table-column  prop="productName" label="产品名称" align="center"/>
+              <el-table-column  prop="parterName"  label="企业名称" align="center"/>
+            </el-table-column>
+
+            <el-table-column label="介绍材料" align="center">
+              <el-table-column  prop="isBlack"         label="黑名单"          align="center" width="60px">
+                  <template slot-scope="scope">
+                      <div v-if="scope.row.isBlack==0">否</div>
+                      <div v-if="scope.row.isBlack==1">是</div>
+                  </template>
+              </el-table-column>
+
+              <el-table-column  prop="businessLicense" label="企业法人营业执照" align="center">
+                <template slot-scope="scope">
+                  <down :files="scope.row.businessLicense"></down>
+                </template>
+              </el-table-column>
+              <el-table-column  prop="orgCode"         label="组织机构代码证"   align="center">
+                <template slot-scope="scope">
+                  <down :files="scope.row.orgCode"></down>
+                </template>
+              </el-table-column>
+              <el-table-column  prop="taxReg"          label="税务登记证"       align="center">
+                <template slot-scope="scope">
+                  <down :files="scope.row.taxReg"></down>
+                </template>                
+              </el-table-column>
+              <el-table-column  prop="bankAccount"     label="银行开户许可证"   align="center">
+                <template slot-scope="scope">
+                    <down :files="scope.row.bankAccount"></down>
+                </template>                
+              </el-table-column>
+              <el-table-column  prop="addService"      label="增值业务许可证"   align="center">
+                <template slot-scope="scope">
+                    <down :files="scope.row.addService"></down>
+                </template>                
+              </el-table-column>
+              <el-table-column  prop="productInfo"     label="产品介绍"         align="center">
+                <template slot-scope="scope">
+                    <down :files="scope.row.productInfo"></down>                  
+                </template>               
+              </el-table-column>
+              <el-table-column  prop="otherInfo"       label="其他说明材料"     align="center">
+                <template slot-scope="scope">
+                    <down :files="scope.row.otherInfo"></down> 
+                </template>                
+              </el-table-column>
+            </el-table-column>
+
+
+          
+            <el-table-column label="内部评估材料" align="center">
+                <el-table-column  label="内容资源" align="center">
+                      <el-table-column   label="内容品质" align="center">
+                      <template slot-scope="scope">
+                        <down :files="scope.row.contentQuality"></down> 
+                      </template>                        
+                      </el-table-column>
+                      <el-table-column   label="内容授权" align="center">
+                      <template slot-scope="scope">
+                        <down :files="scope.row.contentAuth"></down> 
+                      </template>
+                      </el-table-column>
+                      <el-table-column   label="用户认知" align="center">
+                      <template slot-scope="scope">
+                        <down :files="scope.row.userCognition"></down>                         
+                      </template>                        
+                      </el-table-column>
+                </el-table-column>
+
+                <el-table-column  label="创新性" align="center">
+                      <template slot-scope="scope">
+                        <down :files="scope.row.innovation"></down>
+                      </template>
+                </el-table-column>
+                <el-table-column  label="用户体验" align="center">
+                      <template slot-scope="scope">
+                        <down :files="scope.row.userExperience"></down>
+                      </template>                  
+                </el-table-column>
+                <el-table-column  label="资费" align="center">
+                      <template slot-scope="scope">
+                        <down :files="scope.row.fee"></down>
+                      </template>                  
+                </el-table-column>
+                <el-table-column  label="信息安全" align="center">
+                    <template slot-scope="scope">
+                        <down :files="scope.row.infoSafety"></down>
+                    </template>
+                </el-table-column>
+              </el-table-column>
+
+
+
+            <el-table-column label="审核信息" align="center">
+              <el-table-column  prop="isPass"          label="是否通过" align="center" width="50px">
+                   <template slot-scope="scope">
+                      <div v-if="scope.row.isPass==0">否</div>
+                      <div v-if="scope.row.isPass==1">是</div>
+                  </template>
+              </el-table-column>
+              <el-table-column  prop="s8"              label="总平均分"  align="center" width="60px"/>
+              <el-table-column  prop="publishInRule"   label="2月内上线" align="center" width="60px">
+                   <template slot-scope="scope">
+                      <div v-if="scope.row.publishInRule==0">否</div>
+                      <div v-if="scope.row.publishInRule==1">是</div>
+                  </template>
+              </el-table-column>
+              <el-table-column  label="上线文档"  align="center" >
+                  <template slot-scope="scope">
+                    <down :files="scope.row.publishFile"></down>
+                </template>       
+            </el-table-column>
+            </el-table-column>
+          </el-table>
+
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="handleClose">取 消</el-button>
+          <el-button type="primary" @click="handleClose">确 定</el-button>
+        </span>
+      </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import {strToHerf} from "@/utils/tv.js"
+import down from "@/components/uploadNewDown.vue";
+
+export default {
+  components:{down},
+  props:{
+    itemId: { required: true,type: String},
+    idx:{required: true,type: String},
+    dialogVisible: {required: true,type: Boolean, default() {return false;},
+    }
+  },
+  data(){
+    return{
+      loading:false,
+      tableData:[],
+      productName:""
+    }
+  },
+  methods:{
+    filesToUrl(files){
+      return strToHerf(files)
+    },
+    handleClose(){
+       this.$emit("closeWin")
+       this.tableData=[]
+    },
+  
+    loadData(){
+      this.loading = true;
+      this.$http({
+        url: "/market/tvImport/queryImport",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json"
+        },
+        data:{"itemId":this.itemId,"idx":this.idx}
+      }).then((res) => {
+        if(res.data.result===0){
+          this.tableData = res.data.body
+          this.loading = false;
+        }else{
+          this.$message({ showClose: true, message: '系统异常',type: 'error'});
+        }
+      });
+    },
+ 
+  },
+  watch:{
+    dialogVisible(val,oldVal){
+      if(val===true){
+          this.loadData()
+      }
+    }
+  },
+  mounted(){
+    //this.loadData()
+  }
+}
+</script>
+<style>
+.el-label{
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 162 - 0
src/pages/main/homeMarket/tvIntroduction/deal/importProvince.vue

@@ -0,0 +1,162 @@
+<template>
+  <div class="tv-container">
+      
+        <div class="container-box">
+             <div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息</div>
+                <div class="el-line"></div>
+                <baseTable v-if="woNo" :woNo="woNo" step="14"  @callBack="callBack"/>
+                <div class="el-line"></div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>省内引入</div>
+                <div class="el-line"></div>
+
+                <div>
+                  <el-row>
+                    <el-col :span="6">&nbsp;</el-col>
+                    <el-col :span="12">
+                        <el-form ref="form" :model="form" label-width="80px">
+                          <el-form-item>
+                              <myUpload ref="provinceFile" type="provinceFile" :itemId="itemId" btn="btn" @handleResult="uploadCallBack"></myUpload>
+                          </el-form-item>
+                          <el-form-item label="备注信息">
+                            <el-input type="textarea" v-model="form.note"></el-input>
+                          </el-form-item>
+                        </el-form>
+                    </el-col>
+                    <el-col :span="6">&nbsp;</el-col>
+                  </el-row>
+
+                </div>
+
+                <div class="el-line"></div>
+                <div class="el-label"></div>
+                <div class="el-line"></div>
+                <div style="text-align:right">
+                  <el-button type="primary" @click="handleAudit">确定</el-button>
+                </div>
+             </div>
+        </div>
+        <!--<fullscreen :fullscreen.sync="fullscreen" class="container"></fullscreen>-->
+  </div>
+</template>
+
+<script>
+import baseTable from "./basePeerReview"
+import myUpload from "@/components/uploadNew.vue";
+
+export default {
+  components:{ baseTable ,myUpload},
+  data(){
+    return{
+      woNo:'',
+      itemId:'',
+      fullscreen:true,
+      form:{note:""},
+      assigneeNo:'',
+      assigneeName:'',
+      bpmInfo:{},
+      provinceFile:[]
+
+    }
+  },
+  methods:{
+    callBack(itemId){
+      this.itemId = itemId
+    },
+    uploadCallBack(v){
+
+    },
+    completeTask(){
+        if(this.assigneeNo===""){
+           this.$message({ showClose: true, message:"数据异常",type: 'error'});
+          return 
+        }
+        //拼装参数
+        let info={}
+        info.params={
+          "note":this.form.note,
+          "itemId":this.itemId,
+          "woNo":this.woNo, 
+          "assigneeNo":this.assigneeNo,
+          "assigneeName":this.assigneeName,
+          "extendInfo":JSON.stringify(this.provinceFile)
+        },
+        info.taskId = this.bpmInfo.taskId
+        info.woNo = this.bpmInfo.woNo 
+        info.stepId = this.bpmInfo.stepId
+        info.procId = this.bpmInfo.procId
+        info.procVersion = this.bpmInfo.procVersion
+        //POST请求
+        this.$http({
+        url: "/bpm/api/submitTask",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:info
+        }).then((res) => {
+         if(res.data.result==0){
+            this.$router.push({	path: '/tvIntroduction'});
+         }else{
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+         }
+        });
+    },
+
+    handleAudit(){
+          //通过 or 不通过 均给发起人
+
+      let ipfs = this.$refs.provinceFile.getFileList();
+      if(ipfs.length==0){
+        this.$message({ showClose: true, message: "请上传附件",type: 'error'});
+        return false
+      }
+      this.provinceFile = ipfs;
+          //
+      this.$http({
+        url: "/market/tvImport/basicInfo",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:{"itemId":this.itemId,"woNo":this.woNo}
+      }).then((res) => {
+        if(res.data.result==0){
+          let user = res.data.body.imp
+          if(null==user){
+              this.$message({ showClose: true, message: "数据异常",type: 'error'});
+          }else{
+                this.assigneeNo = user.createLogin
+                this.assigneeName = user.createLoginName
+                this.completeTask()
+          }
+        }else{
+          this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+        }
+      });
+    }
+  },
+  mounted(){
+    this.woNo = this.$route.query.woNo
+    this.bpmInfo.taskId = this.$route.query.taskId
+    this.bpmInfo.woNo = this.woNo
+    this.bpmInfo.stepId = this.$route.query.stepId
+    this.bpmInfo.procId = this.$route.query.procId
+    this.bpmInfo.procVersion = this.$route.query.procVersion
+  }
+}
+</script>
+<style lang="scss" scoped>
+.tv-container{
+  background-color: white;
+  margin:15px 15px 15px 15px;
+  padding:20px ;
+
+}
+.el-label{
+  /*border-left:5px solid #0b82ff;*/
+  /*padding-left:5px;*/
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 150 - 0
src/pages/main/homeMarket/tvIntroduction/deal/innerCentralAudit.vue

@@ -0,0 +1,150 @@
+<template>
+  <div class="tv-container">
+      
+        <div class="container-box">
+             <div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息</div>
+                <div class="el-line"></div>
+                <baseTable v-if="woNo" :woNo="woNo" step="7"  @callBack="callBack"/>
+                <div class="el-line"></div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>中心主任复审(内部)</div>
+                <div class="el-line"></div>
+
+                <div>
+                  <el-row>
+                    <el-col :span="6">&nbsp;</el-col>
+                    <el-col :span="12">
+                        <el-form ref="form" :model="form" label-width="80px">
+                          <el-form-item label="审核结果">
+                              <el-radio v-model="audit4" label="Y">通过</el-radio>
+                              <el-radio v-model="audit4" label="N">未通过</el-radio>
+                          </el-form-item>
+                          <el-form-item label="备注信息">
+                            <el-input type="textarea" v-model="form.note"></el-input>
+                          </el-form-item>
+                        </el-form>
+                    </el-col>
+                    <el-col :span="6">&nbsp;</el-col>
+                  </el-row>
+
+                </div>
+
+                <div class="el-line"></div>
+                <div class="el-label"></div>
+                <div class="el-line"></div>
+                <div style="text-align:right">
+                  <el-button type="primary" @click="handleAudit">确定</el-button>
+                </div>
+             </div>
+        </div>
+        <!--<fullscreen :fullscreen.sync="fullscreen" class="container"></fullscreen>-->
+  </div>
+</template>
+
+<script>
+import baseTable from "./basePeerReview"
+export default {
+  components:{ baseTable },
+  data(){
+    return{
+      woNo:'',
+      itemId:'',
+      fullscreen:true,
+      form:{note:""},
+      audit4:'Y',
+      assigneeNo:'',
+      assigneeName:'',
+      bpmInfo:{},
+    }
+  },
+  methods:{
+    callBack(itemId){
+      this.itemId = itemId
+    },
+    completeTask(){
+        if(this.assigneeNo===""){
+           this.$message({ showClose: true, message:"数据异常",type: 'error'});
+          return 
+        }
+        //拼装参数
+        let info={}
+        info.params={
+          "note":this.form.note,
+          "itemId":this.itemId,
+          "woNo":this.woNo, 
+          "assigneeNo":this.assigneeNo,
+          "assigneeName":this.assigneeName,
+          "audit4":this.audit4,
+          "auditResult":this.audit4
+        },
+        info.taskId = this.bpmInfo.taskId
+        info.woNo = this.bpmInfo.woNo 
+        info.stepId = this.bpmInfo.stepId
+        info.procId = this.bpmInfo.procId
+        info.procVersion = this.bpmInfo.procVersion
+        //POST请求
+        this.$http({
+        url: "/bpm/api/submitTask",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:info
+        }).then((res) => {
+         if(res.data.result==0){
+            this.$router.push({	path: '/tvIntroduction'});
+         }else{
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+         }
+        });
+    },
+
+    handleAudit(){
+      //通过 or 不通过 均给发起人
+      this.$http({
+        url: "/market/tvImport/basicInfo",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:{"itemId":this.itemId,"woNo":this.woNo}
+      }).then((res) => {
+        if(res.data.result==0){
+          let user = res.data.body.imp
+          if(null==user){
+              this.$message({ showClose: true, message: "数据异常",type: 'error'});
+          }else{
+                this.assigneeNo = user.createLogin
+                this.assigneeName = user.createLoginName
+                this.completeTask()
+          }
+        }else{
+          this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+        }
+      });
+    }
+  },
+  mounted(){
+    this.woNo = this.$route.query.woNo
+    this.bpmInfo.taskId = this.$route.query.taskId
+    this.bpmInfo.woNo = this.woNo
+    this.bpmInfo.stepId = this.$route.query.stepId
+    this.bpmInfo.procId = this.$route.query.procId
+    this.bpmInfo.procVersion = this.$route.query.procVersion
+  }
+}
+</script>
+<style lang="scss" scoped>
+.tv-container{
+  background-color: white;
+  margin:15px 15px 15px 15px;
+  padding:20px ;
+
+}
+.el-label{
+  /*border-left:5px solid #0b82ff;*/
+  /*padding-left:5px;*/
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 225 - 0
src/pages/main/homeMarket/tvIntroduction/deal/innerOfficerAudit.vue

@@ -0,0 +1,225 @@
+<template>
+  <div class="tv-container">
+      
+        <div class="container-box">
+             <div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息</div>
+                <div class="el-line"></div>
+                <baseTable v-if="woNo" :woNo="woNo" step="6"  @callBack="callBack"/>
+                <div class="el-line"></div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>室主任初审(内部)</div>
+                <div class="el-line"></div>
+
+                <div>
+                  <el-row>
+                    <el-col :span="6">&nbsp;</el-col>
+                    <el-col :span="12">
+                        <el-form ref="form" :model="form" label-width="80px">
+                          <el-form-item label="审核结果">
+                              <el-radio v-model="audit3" label="Y">通过</el-radio>
+                              <el-radio v-model="audit3" label="N">未通过</el-radio>
+                          </el-form-item>
+                          <el-form-item label="备注信息">
+                            <el-input type="textarea" v-model="form.note"></el-input>
+                          </el-form-item>
+                        </el-form>
+                    </el-col>
+                    <el-col :span="6">&nbsp;</el-col>
+                  </el-row>
+
+                </div>
+
+                <div class="el-line"></div>
+                <div class="el-label"></div>
+                <div class="el-line"></div>
+                <div style="text-align:right">
+                  <el-button type="primary" @click="handleAudit">确定</el-button>
+                </div>
+             </div>
+        </div>
+        <!--<fullscreen :fullscreen.sync="fullscreen" class="container"></fullscreen>-->
+
+
+        <el-dialog
+          title="请选择"
+          :visible.sync="userDlgVisual"
+          width="30%"
+          :modal-append-to-body="false"
+          :close-on-click-modal="false"
+          :before-close="handleClose">
+        <div>
+            <el-radio  v-for="user in userList " v-model="assigneeNo" :key="user.loginNoStr" :label="user.loginNoStr">{{user.loginNameStr}}</el-radio>
+        </div>
+        <span slot="footer" class="dialog-footer">
+            <el-button @click="userDlgVisual = false">取 消</el-button>
+            <el-button type="primary" @click="checkSelectUser">确 定</el-button>
+        </span>
+      </el-dialog>
+  </div>
+</template>
+
+<script>
+import baseTable from "./basePeerReview"
+export default {
+  components:{ baseTable },
+  data(){
+    return{
+      woNo:'',
+      itemId:'',
+      fullscreen:true,
+      form:{note:""},
+      audit3:'Y',
+      assigneeNo:'',
+      assigneeName:'',
+      bpmInfo:{},
+      userDlgVisual:false,
+      userList:[]
+    }
+  },
+  methods:{
+    callBack(itemId){
+      this.itemId = itemId
+    },
+    completeTask(){
+        if(this.assigneeNo===""){
+           this.$message({ showClose: true, message:"数据异常",type: 'error'});
+          return 
+        }
+        //拼装参数
+        let info={}
+        info.params={
+          "note":this.form.note,
+          "itemId":this.itemId,
+          "woNo":this.woNo, 
+          "assigneeNo":this.assigneeNo,
+          "assigneeName":this.assigneeName,
+          "audit3":this.audit3
+        },
+        info.taskId = this.bpmInfo.taskId
+        info.woNo = this.bpmInfo.woNo 
+        info.stepId = this.bpmInfo.stepId
+        info.procId = this.bpmInfo.procId
+        info.procVersion = this.bpmInfo.procVersion
+        //POST请求
+        this.$http({
+        url: "/bpm/api/submitTask",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:info
+        }).then((res) => {
+         if(res.data.result==0){
+            this.$router.push({	path: '/tvIntroduction'});
+         }else{
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+         }
+        });
+    },
+
+    handleAudit(){
+      //通过,请部门领导审批
+      if(this.audit3==="Y"){
+            let userInfo = window.sessionStorage.userInfo;
+            if(null === userInfo){
+                  this.$message({ showClose: true, message: "数据异常",type: 'error'});
+                  return 
+            }
+            userInfo = JSON.parse(userInfo);
+            let loginNoStr = userInfo.loginNoStr;
+            this.$http({
+              url: "/market/api/user/info/leader2",
+              method: "post",
+              headers: {"Content-Type": "application/json"},
+              data:{"loginNoStr":loginNoStr,"level":"2","type":"1"}
+            }).then((res) => {
+              if(res.data.result==0){
+                let user = res.data.body
+                if(null==user || user.length==0){
+                    this.$message({ showClose: true, message: "数据异常",type: 'error'});
+                }else{
+                  if(user.length==1){
+                      this.assigneeNo = user[0].loginNoStr
+                      this.assigneeName = user[0].loginNameStr
+                      this.completeTask()
+                  }else{
+                      this.userList = user;
+                      this.userDlgVisual = true;
+                  }
+                }
+              }else{
+                this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+              }
+            });
+      }
+      // 未通过 ,打回发起人
+      else if(this.audit3==="N"){
+            this.$http({
+              url: "/market/tvImport/basicInfo",
+              method: "post",
+              headers: {"Content-Type": "application/json"},
+              data:{"itemId":this.itemId,"woNo":this.woNo}
+            }).then((res) => {
+              if(res.data.result==0){
+                let user = res.data.body.imp
+                if(null==user){
+                    this.$message({ showClose: true, message: "数据异常",type: 'error'});
+                }else{
+                      this.assigneeNo = user.createLogin
+                      this.assigneeName = user.createLoginName
+                      this.completeTask()
+                }
+              }else{
+                this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+              }
+            });
+      }else{
+        this.$message({ showClose: true, message: "数据异常",type: 'error'});
+      }
+    },
+    checkSelectUser(){
+      if(this.assigneeNo===''){
+          this.$message.error('请选择下一步处理人');
+          return
+      }
+      //
+      this.userList.forEach((e)=>{
+          if(e.loginNoStr === this.assigneeNo){
+              this.assigneeName = e.loginNameStr
+          }
+      });
+      //
+      this.userDlgVisual = false
+      
+      this.completeTask()
+    },
+    handleClose(){
+      this.userDlgVisual = false
+    }
+  },
+  mounted(){
+    this.woNo = this.$route.query.woNo
+    this.bpmInfo.taskId = this.$route.query.taskId
+    this.bpmInfo.woNo = this.woNo
+    this.bpmInfo.stepId = this.$route.query.stepId
+    this.bpmInfo.procId = this.$route.query.procId
+    this.bpmInfo.procVersion = this.$route.query.procVersion
+  }
+}
+</script>
+<style lang="scss" scoped>
+.tv-container{
+  background-color: white;
+  margin:15px 15px 15px 15px;
+  padding:20px ;
+
+}
+.el-label{
+  /*border-left:5px solid #0b82ff;*/
+  /*padding-left:5px;*/
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 203 - 0
src/pages/main/homeMarket/tvIntroduction/deal/inputMeetingReport.vue

@@ -0,0 +1,203 @@
+<template>
+  <div class="tv-container">
+      
+        <div class="container-box">
+             <div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息</div>
+                <div class="el-line"></div>
+                <baseTable v-if="woNo" :woNo="woNo" step="8"  @callBack="callBack" ref="uploadComponet"/>
+                <div class="el-line"></div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>会议结果录入</div>
+                <div class="el-line"></div>
+
+                <div>
+                  <el-row>
+                    <el-col :span="6">&nbsp;</el-col>
+                    <el-col :span="12">
+                        <el-form ref="form" :model="form" label-width="80px">
+                          <el-form-item label="备注信息">
+                            <el-input type="textarea" v-model="form.note"></el-input>
+                          </el-form-item>
+                        </el-form>
+                    </el-col>
+                    <el-col :span="6">&nbsp;</el-col>
+                  </el-row>
+
+                </div>
+
+                <div class="el-line"></div>
+                <div class="el-label"></div>
+                <div class="el-line"></div>
+                <div style="text-align:right">
+                  <el-button type="primary" @click="handleAudit">确定</el-button>
+                </div>
+             </div>
+        </div>
+        <!--<fullscreen :fullscreen.sync="fullscreen" class="container"></fullscreen>-->
+
+              <el-dialog
+                title="请选择"
+                :visible.sync="userDlgVisual"
+                width="30%"
+                :modal-append-to-body="false"
+                :close-on-click-modal="false"
+                :before-close="handleClose">
+              <div>
+                  <el-radio  v-for="user in userList " v-model="assigneeNo" :key="user.loginNoStr" :label="user.loginNoStr">{{user.loginNameStr}}</el-radio>
+              </div>
+              <span slot="footer" class="dialog-footer">
+                  <el-button @click="userDlgVisual = false">取 消</el-button>
+                  <el-button type="primary" @click="checkSelectUser">确 定</el-button>
+              </span>
+            </el-dialog>
+  </div>
+</template>
+
+<script>
+import baseTable from "./basePeerReview"
+export default {
+  components:{ baseTable },
+  data(){
+    return{
+      woNo:'',
+      itemId:'',
+      fullscreen:true,
+      form:{note:""},
+      assigneeNo:'',
+      assigneeName:'',
+      bpmInfo:{},
+      inputFiles:[],
+      userDlgVisual:false,
+      userList:[]
+    }
+  },
+  methods:{
+    callBack(itemId){
+      this.itemId = itemId
+    },
+    completeTask(){
+        if(this.assigneeNo===""){
+           this.$message({ showClose: true, message:"数据异常",type: 'error'});
+          return 
+        }
+        //拼装参数
+        let info={}
+        info.params={
+          "note":this.form.note,
+          "itemId":this.itemId,
+          "woNo":this.woNo, 
+          "assigneeNo":this.assigneeNo,
+          "assigneeName":this.assigneeName,
+          "extendInfo":JSON.stringify(this.inputFiles)
+        },
+        info.taskId = this.bpmInfo.taskId
+        info.woNo = this.bpmInfo.woNo 
+        info.stepId = this.bpmInfo.stepId
+        info.procId = this.bpmInfo.procId
+        info.procVersion = this.bpmInfo.procVersion
+        //POST请求
+        this.$http({
+        url: "/bpm/api/submitTask",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:info
+        }).then((res) => {
+         if(res.data.result==0){
+            this.$router.push({	path: '/tvIntroduction'});
+         }else{
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+         }
+        });
+    },
+
+    handleAudit(){
+      //
+      let fileList = this.$refs.uploadComponet.getInputFileUploadList()
+      if(fileList.length===0){
+          this.$message({ showClose: true, message: "请上传会议记录",type: 'error'});
+          return false  
+      }
+      this.inputFiles = fileList
+      // - 
+      let userInfo = window.sessionStorage.userInfo;
+      if(null === userInfo){
+            this.$message({ showClose: true, message: "数据异常",type: 'error'});
+            return 
+      }
+      // -
+      userInfo = JSON.parse(userInfo);
+      let loginNoStr = userInfo.loginNoStr;
+      this.$http({
+        url: "/market/api/user/info/leader2",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:{"loginNoStr":loginNoStr,"level":"1","type":"1"}//室主任审批
+      }).then((res) => {
+        if(res.data.result==0){
+          let user = res.data.body
+          if(null==user || user.length==0){
+              this.$message({ showClose: true, message: "数据异常",type: 'error'});
+          }else{
+            if(user.length==1){
+                this.assigneeNo = user[0].loginNoStr
+                this.assigneeName = user[0].loginNameStr
+                this.completeTask()
+            }else{
+                this.userList = user;
+                this.userDlgVisual = true;
+            }
+          }
+        }else{
+          this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+        }
+      });
+    },
+    handleClose(){
+        this.userList = [];
+        this.userDlgVisual = false;
+    },
+    checkSelectUser(){
+      if(this.assigneeNo===''){
+          this.$message.error('请选择下一步处理人');
+          return
+      }
+      //
+      this.userList.forEach((e)=>{
+          if(e.loginNoStr === this.assigneeNo){
+              this.assigneeName = e.loginNameStr
+          }
+      });
+      //
+      this.userDlgVisual = false
+      
+      this.completeTask()
+    },
+  },
+  mounted(){
+    this.woNo = this.$route.query.woNo
+    this.bpmInfo.taskId = this.$route.query.taskId
+    this.bpmInfo.woNo = this.woNo
+    this.bpmInfo.stepId = this.$route.query.stepId
+    this.bpmInfo.procId = this.$route.query.procId
+    this.bpmInfo.procVersion = this.$route.query.procVersion
+  }
+}
+</script>
+<style lang="scss" scoped>
+.tv-container{
+  background-color: white;
+  margin:15px 15px 15px 15px;
+  padding:20px ;
+
+}
+.el-label{
+  /*border-left:5px solid #0b82ff;*/
+  /*padding-left:5px;*/
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 342 - 0
src/pages/main/homeMarket/tvIntroduction/deal/itemDialog.vue

@@ -0,0 +1,342 @@
+<template>
+  <div>
+
+      <el-dialog
+        :title="itemName"
+        :visible.sync="dialogVisible"
+        width="90%"
+        :close-on-click-modal="false"
+        :modal-append-to-body="false"
+        :before-close="handleClose">
+
+
+            <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息1</div>
+            <div class="el-line"></div>
+            <el-table class="com-table" ref="multipleTable" :data="tableData"
+                        tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading"
+            >
+
+           <el-table-column prop="idx"   label="序号" align="center" width="50px"/>
+ 
+
+            <el-table-column label="业务属性" align="center">
+              <el-table-column  prop="busiType"    label="业务类型" align="center"/>
+              <el-table-column  prop="productName" label="产品名称" align="center"/>
+              <el-table-column  prop="parterName"  label="企业名称" align="center"/>
+            </el-table-column>
+
+            <el-table-column label="介绍材料" align="center">
+              <el-table-column  prop="isBlack"         label="黑名单"          align="center" width="60px">
+                  <template slot-scope="scope">
+                      <div v-if="scope.row.isBlack==0">否</div>
+                      <div v-if="scope.row.isBlack==1">是</div>
+                  </template>
+              </el-table-column>
+
+              <el-table-column  prop="businessLicense" label="企业法人营业执照" align="center">
+                <template slot-scope="scope">
+                    <down :files="scope.row.businessLicense"></down>
+                </template>
+              </el-table-column>
+              <el-table-column  prop="orgCode"         label="组织机构代码证"   align="center">
+                <template slot-scope="scope">
+                    <down :files="scope.row.orgCode"></down>
+                </template>
+              </el-table-column>
+              <el-table-column  prop="taxReg"          label="税务登记证"       align="center">
+                <template slot-scope="scope">
+                    <down :files="scope.row.taxReg"></down>
+                </template>                
+              </el-table-column>
+              <el-table-column  prop="bankAccount"     label="银行开户许可证"   align="center">
+                <template slot-scope="scope">
+                    <down :files="scope.row.bankAccount"></down>
+                </template>                
+              </el-table-column>
+              <el-table-column  prop="addService"      label="增值业务许可证"   align="center">
+                <template slot-scope="scope">
+                    <down :files="scope.row.addService"></down>
+                </template>                
+              </el-table-column>
+              <el-table-column  prop="productInfo"     label="产品介绍"         align="center">
+                <template slot-scope="scope">
+                    <down :files="scope.row.productInfo"></down>
+                </template>               
+              </el-table-column>
+              <el-table-column  prop="otherInfo"       label="其他说明材料"     align="center">
+                <template slot-scope="scope">
+                    <down :files="scope.row.otherInfo"></down>
+                </template>                
+              </el-table-column>
+            </el-table-column>
+
+
+            <el-table-column label="内部评估材料" align="center">
+                <el-table-column  label="内容资源" align="center">
+                      <el-table-column   label="内容品质" align="center">
+                      <template slot-scope="scope">
+                        <down :files="scope.row.contentQuality"></down>
+                      </template>                        
+                      </el-table-column>
+                      <el-table-column   label="内容授权" align="center">
+                      <template slot-scope="scope">
+                        <down :files="scope.row.contentAuth"></down>
+                      </template>
+                      </el-table-column>
+                      <el-table-column   label="用户认知" align="center">
+                      <template slot-scope="scope">
+                        <down :files="scope.row.userCognition"></down>
+                      </template>                        
+                      </el-table-column>
+                </el-table-column>
+
+                <el-table-column  label="创新性" align="center">
+                      <template slot-scope="scope">
+                        <down :files="scope.row.innovation"></down>
+                      </template>
+                </el-table-column>
+                <el-table-column  label="用户体验" align="center">
+                      <template slot-scope="scope">
+                        <down :files="scope.row.userExperience"></down>
+                      </template>                  
+                </el-table-column>
+                <el-table-column  label="资费" align="center">
+                      <template slot-scope="scope">
+                        <down :files="scope.row.fee"></down>
+                      </template>                  
+                </el-table-column>
+                <el-table-column  label="信息安全" align="center">
+                    <template slot-scope="scope">
+                        <down :files="scope.row.infoSafety"></down>
+                    </template>
+                </el-table-column>
+              </el-table-column>
+
+            <el-table-column label="审核信息" align="center">
+              <el-table-column  prop="isPass"          label="是否通过" align="center" width="50px">
+                   <template slot-scope="scope">
+                      <div v-if="scope.row.isPass==0">否</div>
+                      <div v-if="scope.row.isPass==1">是</div>
+                  </template>
+              </el-table-column>
+              <el-table-column  prop="s8"              label="总平均分"  align="center" width="60px"/>
+              <el-table-column  prop="publishInRule"   label="2月内上线" align="center" width="60px">
+                   <template slot-scope="scope">
+                      <div v-if="scope.row.publishInRule==0">否</div>
+                      <div v-if="scope.row.publishInRule==1">是</div>
+                  </template>
+              </el-table-column>
+              <el-table-column  label="上线文档"  align="center" >
+                  <template slot-scope="scope">
+                    <down :files="scope.row.publishFile"></down>
+                </template>       
+            </el-table-column>
+            </el-table-column>
+          </el-table>
+
+          <div style="margin-top:20px;" v-if="extFiles.length>0" >
+            <div class="el-label"><i class="el-icon-paperclip"></i>附件列表</div>
+            <div class="el-line"></div>
+            <el-table class="com-table" :show-header="false" ref="multipleTable"  :data="extFiles"
+              tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+                <el-table-column align="left" prop="l" width="180px"></el-table-column>
+                <el-table-column align="left" prop="n"></el-table-column>
+                <el-table-column align="center" prop="u" width="140px"></el-table-column>
+                <el-table-column align="left" width="300px">
+                      <template slot-scope="scope">
+                          <down :files="scope.row.f"></down>
+                       </template>
+                </el-table-column>
+            </el-table>
+          </div>
+
+
+          <div style="margin-top:20px;" v-if="expertData.length>0" >
+            <div class="el-label"><i class="el-icon-collection-tag"></i>专家评审</div>
+            <div class="el-line"></div>
+            <el-table class="com-table" ref="multipleTable"  :data="expertData"
+              tooltip-effect="dark" size="small" border style="width: 100%" :span-method="rowSpanForInputFile"> v-loading="loading">
+
+                <el-table-column prop="idx"   label="序号" align="center" width="50px"/>
+                <el-table-column label="业务属性" align="center">
+                  <el-table-column  prop="busiType"    label="业务类型" align="center"/>
+                  <el-table-column  prop="productName" label="产品名称" align="center"/>
+                  <el-table-column  prop="parterName"  label="企业名称" align="center"/>
+                </el-table-column>
+
+                <el-table-column label="产品打分评审" align="center">
+                      <el-table-column label="内容资源" align="center">
+                        <el-table-column label="内容品质(15%)" prop="s1" align="center"></el-table-column>
+                        <el-table-column label="内容授权(5%)"  prop="s2" align="center"></el-table-column>
+                        <el-table-column label="用户认知(20%)" prop="s3" align="center"></el-table-column>
+                      </el-table-column>
+                        
+                        <el-table-column label="创新性(20%)" prop="s4" align="center"></el-table-column>
+                        <el-table-column label="用户体验(20%)" prop="s5" align="center"></el-table-column>
+                        <el-table-column label="资费(10%)" prop="s6" align="center"></el-table-column>
+                        <el-table-column label="信息安全(10%)" prop="s7" align="center"></el-table-column>
+                </el-table-column>
+
+                <el-table-column label="合计(100%)" prop="s8" align="center">
+                </el-table-column>
+
+                
+                <el-table-column label="评审专家" prop="expertLoginName" align="center">
+                </el-table-column>
+
+                <el-table-column label="备注" prop="note" align="center" >
+                </el-table-column>
+
+                <el-table-column label="总平均分" prop="avgAllScore" align="center">
+                </el-table-column>
+            </el-table>
+          </div>
+ 
+
+        <div style="margin-top:20px;" v-if="itemId!==''">
+          <div class="el-label"><i class="el-icon-collection-tag"></i>审批轨迹</div>
+          <div class="el-line"></div>
+          <audit :itemId="itemId"></audit>
+        </div>
+
+
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="handleClose">取 消</el-button>
+          <el-button type="primary" @click="handleClose">确 定</el-button>
+        </span>
+      </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import {strToHerf} from "@/utils/tv.js"
+import audit from "./audit.vue";
+import down from "@/components/uploadNewDown.vue";
+export default {
+  components:{audit,down},
+  props:{
+    itemId: { required: true,type: String},
+    dialogVisible: {required: true,type: Boolean, default() {return false;},
+    },
+  },
+  data(){
+    return{
+      loading:false,
+      itemName:"",
+      tableData:[],
+      extFiles:[],
+      expertData:[]
+    }
+  },
+  methods:{
+    filesToUrl(files){
+      return strToHerf(files)
+    },
+    handleClose(){
+       this.$emit("closeWin")
+       this.tableData=[]
+       this.extFiles=[]
+       this.expertData=[]
+    },
+    loadExpert(){
+      this.loading = true;
+      this.$http({
+        url: "/market/tvImport/queryExpert",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json"
+        },
+        data:{"itemId":this.itemId,"orderBy":"a.item_id,a.idx"}
+      }).then((res) => {
+        if(res.data.result===0){
+            this.expertData = res.data.body
+        }
+        this.loading = false;
+      });
+    },
+    loadData(){
+      this.loading = true;
+      this.$http({
+        url: "/market/tvImport/queryImport",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json"
+        },
+        data:{"itemId":this.itemId}
+      }).then((res) => {
+        if(res.data.result===0){
+          this.tableData = res.data.body
+          if(null!==this.tableData){
+            return 
+          }
+          let iData = this.tableData[0]
+          this.itemName =iData.itemName
+          if(iData.marketFile!=undefined){
+              let extFile = {"f":iData.marketFile,'n':iData.marketNote,'l':'市场决策委员会审核','u':''}
+              this.extFiles.push(extFile)
+          }
+          if(iData.sendFile!=undefined){
+            //
+            let units = JSON.parse(iData.receiveUnit);
+            let unit = "";
+            for(var i = 0 ;i <units.length;i++){
+              unit = unit + units[i]+" ,";
+            }
+            unit = unit.substring(0,unit.length -1)
+            unit = "收函单位 : "+unit;
+
+            let extFile = {"f":iData.sendFile,'n':iData.sendNote,'l':'专业公司发函','u':unit}
+            this.extFiles.push(extFile)
+          }
+          if(iData.provinceFile!=undefined){
+            let extFile = {"f":iData.provinceFile,'n':iData.provinceNote,'l':'省内引入','u':''}
+            this.extFiles.push(extFile)
+          }
+
+          this.loading = false;
+        }else{
+          this.$message({ showClose: true, message: '系统异常',type: 'error'});
+        }
+      });
+    },
+    rowSpanForInputFile({ row, column, rowIndex, columnIndex }){
+        if (columnIndex === 0 || columnIndex === 1 || columnIndex === 2 || columnIndex===3  || columnIndex===14) {
+          if ((rowIndex % row.expertCount) ===0) {
+          return {
+            rowspan: row.expertCount,
+            colspan: 1
+          };
+        }else {
+          return {
+            rowspan: 0,
+            colspan: 0
+          };
+        }
+      }
+    }
+  },
+  watch:{
+    dialogVisible(val,oldVal){
+      if(val===true){
+          this.loadData()
+          this.loadExpert()
+      }
+    }
+  },
+  mounted(){
+    this.loadData()
+    this.loadExpert()
+  }
+}
+</script>
+<style>
+.el-label{
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 161 - 0
src/pages/main/homeMarket/tvIntroduction/deal/marketDecision.vue

@@ -0,0 +1,161 @@
+<template>
+  <div class="tv-container">
+      
+        <div class="container-box">
+             <div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息</div>
+                <div class="el-line"></div>
+                <baseTable v-if="woNo" :woNo="woNo" step="11"  @callBack="callBack"/>
+                <div class="el-line"></div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>市场决策委员会审核</div>
+                <div class="el-line"></div>
+
+                <div>
+                  <el-row>
+                    <el-col :span="6">&nbsp;</el-col>
+                    <el-col :span="12">
+                        <el-form ref="form" :model="form" label-width="80px">
+                          <el-form-item>
+                              <myUpload ref="marketFile" type="marketFile" :itemId="itemId" btn="btn" @handleResult="uploadCallBack"></myUpload>
+                          </el-form-item>
+                          <el-form-item label="备注信息">
+                            <el-input type="textarea" v-model="form.note"></el-input>
+                          </el-form-item>
+                        </el-form>
+                    </el-col>
+                    <el-col :span="6">&nbsp;</el-col>
+                  </el-row>
+
+                </div>
+
+                <div class="el-line"></div>
+                <div class="el-label"></div>
+                <div class="el-line"></div>
+                <div style="text-align:right">
+                  <el-button type="primary" @click="handleAudit">确定</el-button>
+                </div>
+             </div>
+        </div>
+        <!--<fullscreen :fullscreen.sync="fullscreen" class="container"></fullscreen>-->
+  </div>
+</template>
+
+<script>
+import baseTable from "./basePeerReview"
+import myUpload from "@/components/uploadNew.vue";
+
+export default {
+  components:{ baseTable,myUpload },
+  data(){
+    return{
+      woNo:'',
+      itemId:'',
+      fullscreen:true,
+      form:{note:""},
+      assigneeNo:'',
+      assigneeName:'',
+      bpmInfo:{},
+      marketFile:[]
+    }
+  },
+  methods:{
+    callBack(itemId){
+      this.itemId = itemId
+    },
+    uploadCallBack(v){
+
+    },
+    completeTask(){
+        if(this.assigneeNo===""){
+           this.$message({ showClose: true, message:"数据异常",type: 'error'});
+          return 
+        }
+        //拼装参数
+        let info={}
+        info.params={
+          "note":this.form.note,
+          "itemId":this.itemId,
+          "woNo":this.woNo, 
+          "assigneeNo":this.assigneeNo,
+          "assigneeName":this.assigneeName,
+          "extendInfo":JSON.stringify(this.marketFile)
+        },
+        info.taskId = this.bpmInfo.taskId
+        info.woNo = this.bpmInfo.woNo 
+        info.stepId = this.bpmInfo.stepId
+        info.procId = this.bpmInfo.procId
+        info.procVersion = this.bpmInfo.procVersion
+        //POST请求
+        this.$http({
+        url: "/bpm/api/submitTask",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:info
+        }).then((res) => {
+         if(res.data.result==0){
+            this.$router.push({	path: '/tvIntroduction'});
+         }else{
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+         }
+        });
+    },
+
+    handleAudit(){
+          //通过 or 不通过 均给发起人
+
+      let ufs = this.$refs.marketFile.getFileList();
+      if(ufs.length==0){
+        this.$message({ showClose: true, message: "请上传附件",type: 'error'});
+        return false
+      }
+      this.marketFile = ufs;
+
+      this.$http({
+        url: "/market/tvImport/basicInfo",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:{"itemId":this.itemId,"woNo":this.woNo}
+      }).then((res) => {
+        if(res.data.result==0){
+          let user = res.data.body.imp
+          if(null==user){
+              this.$message({ showClose: true, message: "数据异常",type: 'error'});
+          }else{
+                this.assigneeNo = user.createLogin
+                this.assigneeName = user.createLoginName
+                this.completeTask()
+          }
+        }else{
+          this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+        }
+      });
+    }
+  },
+  mounted(){
+    this.woNo = this.$route.query.woNo
+    this.bpmInfo.taskId = this.$route.query.taskId
+    this.bpmInfo.woNo = this.woNo
+    this.bpmInfo.stepId = this.$route.query.stepId
+    this.bpmInfo.procId = this.$route.query.procId
+    this.bpmInfo.procVersion = this.$route.query.procVersion
+  }
+}
+</script>
+<style lang="scss" scoped>
+.tv-container{
+  background-color: white;
+  margin:15px 15px 15px 15px;
+  padding:20px ;
+
+}
+.el-label{
+  /*border-left:5px solid #0b82ff;*/
+  /*padding-left:5px;*/
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 164 - 0
src/pages/main/homeMarket/tvIntroduction/deal/peerReview.vue

@@ -0,0 +1,164 @@
+<template>
+  <div class="tv-container">
+      
+        <div class="container-box">
+             <div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息</div>
+                <div class="el-line"></div>
+                <baseTable v-if="woNo" :woNo="woNo" step="4" expertLogin="c" @callBack="callBack"/>
+                <div class="el-line"></div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>专家登录评审</div>
+                <div class="el-line"></div>
+
+                <div>
+                  <el-row>
+                    <el-col :span="6">&nbsp;</el-col>
+                    <el-col :span="12">
+                        <el-form ref="form" :model="form" label-width="80px">
+                          <el-form-item label="备注信息">
+                            <el-input type="textarea" v-model="form.note"></el-input>
+                          </el-form-item>
+                        </el-form>
+                    </el-col>
+                    <el-col :span="6">&nbsp;</el-col>
+                  </el-row>
+
+                </div>
+
+                <div class="el-line"></div>
+                <div class="el-label"></div>
+                <div class="el-line"></div>
+                <div style="text-align:right">
+                  <el-button type="primary" @click="handleAudit">确定</el-button>
+                </div>
+             </div>
+        </div>
+        <!--<fullscreen :fullscreen.sync="fullscreen" class="container"></fullscreen>-->
+  </div>
+</template>
+
+<script>
+import baseTable from "./basePeerReview"
+export default {
+  components:{ baseTable },
+  data(){
+    return{
+      woNo:'',
+      itemId:'',
+      fullscreen:true,
+      form:{note:""},
+      assigneeNo:'',
+      assigneeName:'',
+      bpmInfo:{},
+      expertAudit:'N'
+    }
+  },
+  methods:{
+    callBack(itemId){
+      this.itemId = itemId
+    },
+    completeTask(){
+        if(this.assigneeNo===""){
+           this.$message({ showClose: true, message:"数据异常",type: 'error'});
+          return 
+        }
+        //拼装参数
+        let info={}
+        info.params={"note":this.form.note,"itemId":this.itemId,"woNo":this.woNo, "assigneeNo":this.assigneeNo,"assigneeName":this.assigneeName,"expertAudit":this.expertAudit},
+        info.taskId = this.bpmInfo.taskId
+        info.woNo = this.bpmInfo.woNo 
+        info.stepId = this.bpmInfo.stepId
+        info.procId = this.bpmInfo.procId
+        info.procVersion = this.bpmInfo.procVersion
+        //POST请求
+        this.$http({
+        url: "/bpm/api/submitTask",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:info
+        }).then((res) => {
+         if(res.data.result==0){
+            this.$router.push({	path: '/tvIntroduction'});
+         }else{
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+         }
+        });
+    },
+
+
+    handleAudit(){
+
+      //检查是否可以提交
+      this.$http({
+        url: "/market/tvImport/beforePeerReview",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:{"itemId":this.itemId}
+      }).then((res) => {
+        if(res.data.result==0){
+          let isComplete = res.data.body.isComplete
+          let isDown = res.data.body.isDown
+
+          if("0"===isDown){
+              this.$message({ showClose: true, message: '本人存在未完成的数据',type: 'error'});
+              return false;
+           }
+          if("0"===isComplete){
+              //this.$message({ showClose: true, message: '其他人未完成评审',type: 'error'});
+              //this.$router.push({	path: '/tvIntroduction'});
+              //return false;
+              this.expertAudit = "N"
+          }else if("1"===isComplete){
+              this.expertAudit = "Y"
+          }
+         //发起人 评审汇总
+          this.$http({
+                  url: "/market/tvImport/basicInfo",
+                  method: "post",
+                  headers: {"Content-Type": "application/json"},
+                  data:{"itemId":this.itemId,"woNo":this.woNo}
+                }).then((res) => {
+                  if(res.data.result==0){
+                    this.assigneeNo = res.data.body.imp.createLogin
+                    this.assigneeName = res.data.body.imp.createLoginName
+                    this.completeTask()
+                  }else{
+                    this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+                  }
+                });
+          }else{
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+          }
+      });    
+    
+
+    }
+  },
+  mounted(){
+    this.woNo = this.$route.query.woNo
+    this.bpmInfo.taskId = this.$route.query.taskId
+    this.bpmInfo.woNo = this.woNo
+    this.bpmInfo.stepId = this.$route.query.stepId
+    this.bpmInfo.procId = this.$route.query.procId
+    this.bpmInfo.procVersion = this.$route.query.procVersion
+  }
+}
+</script>
+<style lang="scss" scoped>
+.tv-container{
+  background-color: white;
+  margin:15px 15px 15px 15px;
+  padding:20px ;
+
+}
+.el-label{
+  /*border-left:5px solid #0b82ff;*/
+  /*padding-left:5px;*/
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 159 - 0
src/pages/main/homeMarket/tvIntroduction/deal/publish.vue

@@ -0,0 +1,159 @@
+<template>
+  <div class="tv-container">
+      
+        <div class="container-box">
+             <div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息</div>
+                <div class="el-line"></div>
+                <baseTable ref="bTable" v-if="woNo" :woNo="woNo" step="13"  @callBack="callBack"/>
+                <div class="el-line"></div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>产品上线</div>
+                <div class="el-line"></div>
+
+                <div>
+                  <el-row>
+                    <el-col :span="6">&nbsp;</el-col>
+                    <el-col :span="12">
+                        <el-form ref="form" :model="form" label-width="80px">
+                          <el-form-item label="备注信息">
+                            <el-input type="textarea" v-model="form.note"></el-input>
+                          </el-form-item>
+                        </el-form>
+                    </el-col>
+                    <el-col :span="6">&nbsp;</el-col>
+                  </el-row>
+
+                </div>
+
+                <div class="el-line"></div>
+                <div class="el-label"></div>
+                <div class="el-line"></div>
+                <div style="text-align:right">
+                  <el-button type="primary" @click="handleAudit">确定</el-button>
+                </div>
+             </div>
+        </div>
+        <!--<fullscreen :fullscreen.sync="fullscreen" class="container"></fullscreen>-->
+  </div>
+</template>
+
+<script>
+import baseTable from "./basePeerReview"
+export default {
+  components:{ baseTable },
+  data(){
+    return{
+      woNo:'',
+      itemId:'',
+      fullscreen:true,
+      form:{note:""},
+      assigneeNo:'',
+      assigneeName:'',
+      bpmInfo:{},
+      puhlishFileList:[],
+      audit7:'Y'
+    }
+  },
+  methods:{
+    callBack(itemId){
+      this.itemId = itemId
+    },
+    completeTask(){
+        if(this.assigneeNo===""){
+           this.$message({ showClose: true, message:"数据异常",type: 'error'});
+          return 
+        }
+        //拼装参数
+        let info={}
+        info.params={
+          "note":this.form.note,
+          "itemId":this.itemId,
+          "woNo":this.woNo, 
+          "assigneeNo":this.assigneeNo,
+          "assigneeName":this.assigneeName,
+          "audit7":this.audit7
+        },
+        info.taskId = this.bpmInfo.taskId
+        info.woNo = this.bpmInfo.woNo 
+        info.stepId = this.bpmInfo.stepId
+        info.procId = this.bpmInfo.procId
+        info.procVersion = this.bpmInfo.procVersion
+        //POST请求
+        this.$http({
+        url: "/bpm/api/submitTask",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:info
+        }).then((res) => {
+         if(res.data.result==0){
+            this.$router.push({	path: '/tvIntroduction'});
+         }else{
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+         }
+        });
+    },
+
+    handleAudit(){
+      //通过 or 不通过 均给发起人
+       //检查
+      this.$http({
+        url: "/market/tvImport/beforePublish",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:{"itemId":this.itemId,"woNo":this.woNo}
+      }).then((res) => {
+        if(res.data.result!==0){
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+        }else{
+            this.audit7 = res.data.body.audit7;
+            this.$http({
+              url: "/market/tvImport/basicInfo",
+              method: "post",
+              headers: {"Content-Type": "application/json"},
+              data:{"itemId":this.itemId,"woNo":this.woNo}
+            }).then((res) => {
+              if(res.data.result==0){
+                let user = res.data.body.imp
+                if(null==user){
+                    this.$message({ showClose: true, message: "数据异常",type: 'error'});
+                }else{
+                      this.assigneeNo = user.createLogin
+                      this.assigneeName = user.createLoginName
+                      this.completeTask()
+                }
+              }else{
+                this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+              }
+            });
+        }
+      });
+    }
+  },
+  mounted(){
+    this.woNo = this.$route.query.woNo
+    this.bpmInfo.taskId = this.$route.query.taskId
+    this.bpmInfo.woNo = this.woNo
+    this.bpmInfo.stepId = this.$route.query.stepId
+    this.bpmInfo.procId = this.$route.query.procId
+    this.bpmInfo.procVersion = this.$route.query.procVersion
+  }
+}
+</script>
+<style lang="scss" scoped>
+.tv-container{
+  background-color: white;
+  margin:15px 15px 15px 15px;
+  padding:20px ;
+
+}
+.el-label{
+  /*border-left:5px solid #0b82ff;*/
+  /*padding-left:5px;*/
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 155 - 0
src/pages/main/homeMarket/tvIntroduction/deal/publish2.vue

@@ -0,0 +1,155 @@
+<template>
+  <div class="tv-container">
+      
+        <div class="container-box">
+             <div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息</div>
+                <div class="el-line"></div>
+                <baseTable ref="bTable" v-if="woNo" :woNo="woNo" step="15"  @callBack="callBack"/>
+                <div class="el-line"></div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>上线</div>
+                <div class="el-line"></div>
+
+                <div>
+                  <el-row>
+                    <el-col :span="6">&nbsp;</el-col>
+                    <el-col :span="12">
+                        <el-form ref="form" :model="form" label-width="80px">
+                          <el-form-item label="备注信息">
+                            <el-input type="textarea" v-model="form.note"></el-input>
+                          </el-form-item>
+                        </el-form>
+                    </el-col>
+                    <el-col :span="6">&nbsp;</el-col>
+                  </el-row>
+
+                </div>
+
+                <div class="el-line"></div>
+                <div class="el-label"></div>
+                <div class="el-line"></div>
+                <div style="text-align:right">
+                  <el-button type="primary" @click="handleAudit">确定</el-button>
+                </div>
+             </div>
+        </div>
+        <!--<fullscreen :fullscreen.sync="fullscreen" class="container"></fullscreen>-->
+  </div>
+</template>
+
+<script>
+import baseTable from "./basePeerReview"
+export default {
+  components:{ baseTable },
+  data(){
+    return{
+      woNo:'',
+      itemId:'',
+      fullscreen:true,
+      form:{note:""},
+      assigneeNo:'',
+      assigneeName:'',
+      bpmInfo:{},
+      puhlishFileList:[]
+    }
+  },
+  methods:{
+    callBack(itemId){
+      this.itemId = itemId
+    },
+    completeTask(){
+        if(this.assigneeNo===""){
+           this.$message({ showClose: true, message:"数据异常",type: 'error'});
+          return 
+        }
+        //拼装参数
+        let info={}
+        info.params={
+          "note":this.form.note,
+          "itemId":this.itemId,
+          "woNo":this.woNo, 
+          "assigneeNo":this.assigneeNo,
+          "assigneeName":this.assigneeName,
+        },
+        info.taskId = this.bpmInfo.taskId
+        info.woNo = this.bpmInfo.woNo 
+        info.stepId = this.bpmInfo.stepId
+        info.procId = this.bpmInfo.procId
+        info.procVersion = this.bpmInfo.procVersion
+        //POST请求
+        this.$http({
+        url: "/bpm/api/submitTask",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:info
+        }).then((res) => {
+         if(res.data.result==0){
+            this.$router.push({	path: '/tvIntroduction'});
+         }else{
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+         }
+        });
+    },
+
+    handleAudit(){
+      //均给发起人
+      this.$http({
+        url: "/market/tvImport/beforePublish2",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:{"itemId":this.itemId,"woNo":this.woNo}
+      }).then((res) => {
+        if(res.data.result!==0){
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+        }else{
+            this.$http({
+              url: "/market/tvImport/basicInfo",
+              method: "post",
+              headers: {"Content-Type": "application/json"},
+              data:{"itemId":this.itemId,"woNo":this.woNo}
+            }).then((res) => {
+              if(res.data.result==0){
+                let user = res.data.body.imp
+                if(null==user){
+                    this.$message({ showClose: true, message: "数据异常",type: 'error'});
+                }else{
+                      this.assigneeNo = user.createLogin
+                      this.assigneeName = user.createLoginName
+                      this.completeTask()
+                }
+              }else{
+                this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+              }
+            });
+        }
+      });
+    }
+  },
+  mounted(){
+    this.woNo = this.$route.query.woNo
+    this.bpmInfo.taskId = this.$route.query.taskId
+    this.bpmInfo.woNo = this.woNo
+    this.bpmInfo.stepId = this.$route.query.stepId
+    this.bpmInfo.procId = this.$route.query.procId
+    this.bpmInfo.procVersion = this.$route.query.procVersion
+  }
+}
+</script>
+<style lang="scss" scoped>
+.tv-container{
+  background-color: white;
+  margin:15px 15px 15px 15px;
+  padding:20px ;
+
+}
+.el-label{
+  /*border-left:5px solid #0b82ff;*/
+  /*padding-left:5px;*/
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 200 - 0
src/pages/main/homeMarket/tvIntroduction/deal/reviewSummary.vue

@@ -0,0 +1,200 @@
+<template>
+  <div class="tv-container">
+      
+        <div class="container-box">
+             <div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息</div>
+                <div class="el-line"></div>
+                <baseTable v-if="woNo" :woNo="woNo" step="5"  @callBack="callBack"/>
+                <div class="el-line"></div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>评审汇总</div>
+                <div class="el-line"></div>
+
+                <div>
+                  <el-row>
+                    <el-col :span="6">&nbsp;</el-col>
+                    <el-col :span="12">
+                        <el-form ref="form" :model="form" label-width="80px">
+
+                          <el-form-item label="审核结果">
+                              <el-radio v-model="audit2" label="Y">通过</el-radio>
+                              <el-radio v-model="audit2" label="N">结束</el-radio>
+                          </el-form-item>
+
+                          <el-form-item label="备注信息">
+                            <el-input type="textarea" v-model="form.note"></el-input>
+                          </el-form-item>
+                        </el-form>
+                    </el-col>
+                    <el-col :span="6">&nbsp;</el-col>
+                  </el-row>
+
+                </div>
+
+                <div class="el-line"></div>
+                <div class="el-label"></div>
+                <div class="el-line"></div>
+                <div style="text-align:right">
+                  <el-button type="primary" @click="handleAudit">确定</el-button>
+                </div>
+             </div>
+        </div>
+        <!--<fullscreen :fullscreen.sync="fullscreen" class="container"></fullscreen>-->
+
+
+             <el-dialog
+                title="请选择"
+                :visible.sync="userDlgVisual"
+                width="30%"
+                :modal-append-to-body="false"
+                :close-on-click-modal="false"
+                :before-close="handleClose">
+              <div>
+                  <el-radio  v-for="user in userList " v-model="assigneeNo" :key="user.loginNoStr" :label="user.loginNoStr">{{user.loginNameStr}}</el-radio>
+              </div>
+              <span slot="footer" class="dialog-footer">
+                  <el-button @click="userDlgVisual = false">取 消</el-button>
+                  <el-button type="primary" @click="checkSelectUser">确 定</el-button>
+              </span>
+            </el-dialog>
+  </div>
+</template>
+
+<script>
+import baseTable from "./basePeerReview"
+export default {
+  components:{ baseTable },
+  data(){
+    return{
+      woNo:'',
+      itemId:'',
+      fullscreen:true,
+      form:{note:""},
+      audit2:'Y',
+      extendInfo:'',
+      assigneeNo:'',
+      assigneeName:'',
+      bpmInfo:{},
+      userList:[],
+      userDlgVisual:false
+    }
+  },
+  methods:{
+    callBack(itemId){
+      this.itemId = itemId
+    },
+    completeTask(){
+        if(this.assigneeNo===""){
+           this.$message({ showClose: true, message:"数据异常",type: 'error'});
+          return 
+        }
+        //拼装参数
+        let info={}
+        info.params={
+          "note":this.form.note,
+          "itemId":this.itemId,
+          "woNo":this.woNo, 
+          "assigneeNo":this.assigneeNo,
+          "assigneeName":this.assigneeName,
+          "audit2":this.audit2,
+          "extendInfo":this.extendInfo
+        },
+        info.taskId = this.bpmInfo.taskId
+        info.woNo = this.bpmInfo.woNo 
+        info.stepId = this.bpmInfo.stepId
+        info.procId = this.bpmInfo.procId
+        info.procVersion = this.bpmInfo.procVersion
+        //POST请求
+        this.$http({
+        url: "/bpm/api/submitTask",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:info
+        }).then((res) => {
+         if(res.data.result==0){
+            this.$router.push({	path: '/tvIntroduction'});
+         }else{
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+         }
+        });
+    },
+
+    handleAudit(){
+      this.$http({
+        url: "/market/tvImport/beforeReviewSummary",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:{"itemId":this.itemId,"woNo":this.woNo}
+      }).then((res) => {
+        if(res.data.result==0){
+          let has85 = res.data.body.has85;
+          if(has85==='N'){
+              this.audit2 = 'N';
+              this.extendInfo = '无超过85分的记录'
+          }
+          let user = res.data.body.user
+          if(null==user || user.length==0){
+              this.$message({ showClose: true, message: "数据异常",type: 'error'});
+          }else{
+            if(user.length==1){
+                this.assigneeNo = user[0].loginNoStr
+                this.assigneeName = user[0].loginNameStr
+                this.completeTask()
+            }else{
+                this.userList = user;
+                this.userDlgVisual = true;
+            }
+          }
+        }else{
+          this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+        }
+      });
+    },
+    checkSelectUser(){
+      if(this.assigneeNo===''){
+          this.$message.error('请选择下一步处理人');
+          return
+      }
+      //
+      this.userList.forEach((e)=>{
+          if(e.loginNoStr === this.assigneeNo){
+              this.assigneeName = e.loginNameStr
+          }
+      });
+      //
+      this.userDlgVisual = false
+      
+      this.completeTask()
+    },
+    handleClose(){
+      this.userDlgVisual = false
+    }
+  },
+  mounted(){
+    this.woNo = this.$route.query.woNo
+    this.bpmInfo.taskId = this.$route.query.taskId
+    this.bpmInfo.woNo = this.woNo
+    this.bpmInfo.stepId = this.$route.query.stepId
+    this.bpmInfo.procId = this.$route.query.procId
+    this.bpmInfo.procVersion = this.$route.query.procVersion
+  }
+}
+</script>
+<style lang="scss" scoped>
+.tv-container{
+  background-color: white;
+  margin:15px 15px 15px 15px;
+  padding:20px ;
+
+}
+.el-label{
+  /*border-left:5px solid #0b82ff;*/
+  /*padding-left:5px;*/
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 179 - 0
src/pages/main/homeMarket/tvIntroduction/deal/sendLetter.vue

@@ -0,0 +1,179 @@
+<template>
+  <div class="tv-container">
+      
+        <div class="container-box">
+             <div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>基本信息</div>
+                <div class="el-line"></div>
+                <baseTable v-if="woNo" :woNo="woNo" step="12"  @callBack="callBack"/>
+                <div class="el-line"></div>
+                <div class="el-label"><i class="el-icon-collection-tag"></i>专业公司发函</div>
+                <div class="el-line"></div>
+
+                <div>
+                  <el-row>
+                    <el-col :span="6">&nbsp;</el-col>
+                    <el-col :span="12">
+                        <el-form ref="form" :model="form" label-width="80px">
+                          <el-form-item>
+                              <myUpload ref="sendFile" type="sendFile" :itemId="itemId" btn="btn" @handleResult="uploadCallBack"></myUpload>
+                          </el-form-item >
+                          <el-form-item label="收函单位">
+                              <el-checkbox-group v-model="checkList">
+                                  <el-checkbox label="咪咕"></el-checkbox>
+                                  <el-checkbox label="杭研"></el-checkbox>
+                              </el-checkbox-group>
+                          </el-form-item>
+                          <el-form-item label="备注信息">
+                            <el-input type="textarea" v-model="form.note"></el-input>
+                          </el-form-item>
+                        </el-form>
+                    </el-col>
+                    <el-col :span="6">&nbsp;</el-col>
+                  </el-row>
+
+                </div>
+
+                <div class="el-line"></div>
+                <div class="el-label"></div>
+                <div class="el-line"></div>
+                <div style="text-align:right">
+                  <el-button type="primary" @click="handleAudit">确定</el-button>
+                </div>
+             </div>
+        </div>
+        <!--<fullscreen :fullscreen.sync="fullscreen" class="container"></fullscreen>-->
+  </div>
+</template>
+
+<script>
+import baseTable from "./basePeerReview"
+import myUpload from "@/components/uploadNew.vue";
+export default {
+  components:{ baseTable ,myUpload},
+  data(){
+    return{
+      woNo:'',
+      itemId:'',
+      fullscreen:true,
+      form:{note:""},
+      //audit7:"Y",
+      assigneeNo:'',
+      assigneeName:'',
+      bpmInfo:{},
+      checkList:[],
+      sendFile:[]
+    }
+  },
+  methods:{
+    callBack(itemId){
+      this.itemId = itemId
+    },
+    uploadCallBack(v){
+
+    },
+    completeTask(){
+        if(this.assigneeNo===""){
+           this.$message({ showClose: true, message:"数据异常",type: 'error'});
+          return 
+        }
+        //拼装参数
+        let info={}
+        info.params={
+          "note":this.form.note,
+          "itemId":this.itemId,
+          "woNo":this.woNo, 
+          "assigneeNo":this.assigneeNo,
+          "assigneeName":this.assigneeName,
+          //"audit7":this.audit7,
+          "extendInfo":JSON.stringify(this.sendFile),
+          "receiveUnit":JSON.stringify(this.checkList)
+        },
+        info.taskId = this.bpmInfo.taskId
+        info.woNo = this.bpmInfo.woNo 
+        info.stepId = this.bpmInfo.stepId
+        info.procId = this.bpmInfo.procId
+        info.procVersion = this.bpmInfo.procVersion
+        //POST请求
+        this.$http({
+        url: "/bpm/api/submitTask",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:info
+        }).then((res) => {
+         if(res.data.result==0){
+            this.$router.push({	path: '/tvIntroduction'});
+         }else{
+            this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+         }
+        });
+    },
+
+    handleAudit(){
+
+      if(this.checkList.length===0){
+        this.$message({ showClose: true, message:"请选择收函单位",type: 'error'});
+        return false;
+      }
+
+
+      let sfs = this.$refs.sendFile.getFileList();
+      if(sfs.length==0){
+        this.$message({ showClose: true, message: "请上传附件",type: 'error'});
+        return false
+      }
+      this.sendFile = sfs;
+
+
+      //检查
+
+
+      this.$http({
+        url: "/market/tvImport/basicInfo",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:{"itemId":this.itemId,"woNo":this.woNo}
+      }).then((res) => {
+        if(res.data.result==0){
+          let user = res.data.body.imp
+          if(null==user){
+              this.$message({ showClose: true, message: "数据异常",type: 'error'});
+          }else{
+                this.assigneeNo = user.createLogin
+                this.assigneeName = user.createLoginName
+                this.completeTask()
+          }
+        }else{
+          this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+        }
+      });
+    }
+  },
+  mounted(){
+    this.woNo = this.$route.query.woNo
+    this.bpmInfo.taskId = this.$route.query.taskId
+    this.bpmInfo.woNo = this.woNo
+    this.bpmInfo.stepId = this.$route.query.stepId
+    this.bpmInfo.procId = this.$route.query.procId
+    this.bpmInfo.procVersion = this.$route.query.procVersion
+  }
+}
+</script>
+<style lang="scss" scoped>
+.tv-container{
+  background-color: white;
+  margin:15px 15px 15px 15px;
+  padding:20px ;
+
+}
+.el-label{
+  /*border-left:5px solid #0b82ff;*/
+  /*padding-left:5px;*/
+  color: #606266;
+  border-bottom:1px dotted #bfc1c5;
+  padding-bottom:5px;
+}
+.el-line{
+  margin: 0px 0px 20px 0px;
+}
+</style>

+ 458 - 0
src/pages/main/homeMarket/tvIntroduction/homeTask.vue

@@ -0,0 +1,458 @@
+<template>
+  <div style="display: flex; justify-content: space-between">
+    <div class="taskbox">
+      <div class="tit">
+        <span style="font-weight: bold">待办任务</span>
+      </div>
+      <div style="background: #fff; padding: 20px; min-height: 400px">
+        <div class="tabbox">
+          <el-table
+            class="com-table"
+            ref="tableDataToDo"
+            :data="tableDataToDo"
+            tooltip-effect="dark"
+            size="small"
+            border
+            style="width: 100%"
+            height="350px"
+          >
+            <el-table-column prop="taskId" label="任务编码">
+              <template slot-scope="scope">
+                <span>{{ scope.row.taskId }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="sendTime" label="发起时间">
+              <template slot-scope="scope">
+                <span>{{ $formatDate(scope.row.createTime, "YYYY-MM-DD") }}</span>
+              </template>
+            </el-table-column>
+            <!-- <el-table-column prop="sendNo" label="发起工号">
+            </el-table-column> -->
+            <el-table-column prop="woNo" label="工单编号">
+              <template slot-scope="scope">
+                <!-- <span>{{ $desensitization(scope.row.woNo, 1) }}</span> -->
+                <span>{{ scope.row.woNo }}</span>
+              </template>
+            </el-table-column>
+
+            <el-table-column label="操作" align="center" width="120">
+              <template slot-scope="scope">
+                <el-button
+                  size="mini"
+                  type="primary"
+                  @click="viewItem(scope.row.woNo)"
+                  >查看</el-button
+                >
+                <el-button
+                  v-if="
+                    scope.row.sts == 0
+                  "
+                  size="mini"
+                  type="danger"
+                  @click="dealItem(scope.row)"
+                  >审批</el-button
+                >
+              </template>
+            </el-table-column>
+          </el-table>
+          <el-pagination class="pageBox" @current-change="currchangeToDo" layout="total, prev, pager, next" background
+            :total="totalToDo">
+          </el-pagination>
+        </div>
+      </div>
+    </div>
+    <div class="taskbox">
+      <div class="tit">
+        <span style="font-weight: bold">已办任务</span>
+      </div>
+      <div style="background: #fff; min-height: 400px; padding: 20px">
+        <div class="tabbox">
+          <el-table
+            class="com-table"
+            ref="tableDataDone"
+            :data="tableDataDone"
+            tooltip-effect="dark"
+            size="small"
+            border
+            style="width: 100%"
+            height="350px"
+          >
+            <el-table-column prop="taskId" label="任务编码"> </el-table-column>
+            <el-table-column prop="sendTime" label="发起时间">
+              <template slot-scope="scope">
+                <span>{{ $formatDate(scope.row.createTime, "YYYY-MM-DD") }}</span>
+              </template>
+            </el-table-column>
+            <!-- <el-table-column prop="sendNo" label="发起工号"> </el-table-column> -->
+            <el-table-column prop="woNo" label="工单编号">
+              <template slot-scope="scope">
+                <span>{{ scope.row.woNo }}</span>
+              </template>
+            </el-table-column>
+
+            <el-table-column label="操作" align="center">
+              <template slot-scope="scope">
+                <el-button
+                  size="mini"
+                  type="primary"
+                  @click="viewItem(scope.row.woNo)"
+                >
+                  查看</el-button
+                >
+              </template>
+            </el-table-column>
+          </el-table>
+          <el-pagination class="pageBox" @current-change="currchangeDone" layout="total, prev, pager, next" background
+            :total="totalDone">
+          </el-pagination>
+        </div>
+      </div>
+    </div>
+
+
+    <itemDialog :dialogVisible="dialogVisible" :itemId="curItemId" @closeWin="closeWin"></itemDialog>
+    <!--
+    <el-dialog title="工单审核" :visible.sync="dialogStatusAudit" width="70%" :destroy-on-close="true"
+        :modal-append-to-body="false" :close-on-click-modal="false">
+        <div>
+            <audit v-if="typestatsu === 2" @closeEdio="closeEdio" :componentInfo="componentInfo"
+                :componentStatus="componentStatus" :changeinfo="changeinfo"></audit>
+        </div>
+    </el-dialog>
+    -->
+  </div>
+</template>
+<script>
+import itemDialog from "./deal/itemDialog";
+export default {
+  components: {
+    itemDialog
+  },
+  data() {
+    const woTitle = (rule, value, callback) => {
+      if (!this.infolist.woTitle) {
+        callback(new Error("不能为空"));
+      } else {
+        callback();
+      }
+    };
+    const requireTime = (rule, value, callback) => {
+      if (!this.infolist.requireTime) {
+        callback(new Error("不能为空"));
+      } else {
+        callback();
+      }
+    };
+    return {
+      rules: {
+        woTitle: [
+          {
+            required: true,
+            trigger: "blur",
+            validator: woTitle,
+          },
+        ],
+        requireTime: [
+          {
+            required: true,
+            trigger: "change",
+            validator: requireTime,
+          },
+        ],
+      },
+      totalToDo: 0,
+      totalDone: 0,
+      pageSizeToDo: 1,
+      pageSizeDone: 1,
+      tableDataToDo: [],
+      tableDataDone: [],
+      params: {},
+      
+      pageSize:10,
+      pageNo:1,
+      dialogVisible:false,
+      curItemId:'',
+
+    };
+  },
+  methods: {
+    //待办工单列表查询
+    getToDoList(v, n) {
+        this.pageSizeToDo = n;
+        this.loading = true;
+        v.procName = "互联网电视引入流程";
+        //v.procName = "广告申请";
+        this.$http({
+            url: "/bpm/api/queryToDoTaskList",
+            method: "post",
+            headers: {
+                "Content-Type": "application/json",
+                "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+            },
+            data: v,
+        }).then((res) => {
+            this.tableDataToDo = res.data.data;
+            this.totalToDo = res.data.totalRecord;
+            this.loading = false;
+        });
+    },
+    // 分页
+    currchangeToDo(v) {
+        this.pageSizeToDo = v;
+        this.getToDoList(this.params, this.pageSizeToDo);
+    },
+    //处理申请
+    dialogCheck(n, v) {
+        if (v == 1) {
+            this.changeinfo = false;
+        } else {
+            this.changeinfo = true;
+        }
+        this.typestatsu = 2;
+        this.dialogStatusAudit = true;
+        let params = {
+            woNo: n.woNo,
+            taskId: n.taskId
+        }
+        this.componentInfo = params;
+        this.componentStatus = true;
+    },
+    //已办工单列表查询
+    getDoneList(v, n) {
+        this.pageSizeDone = n;
+        this.loading = true;
+        v.procName = "互联网电视引入流程";
+        //v.procName = "广告申请";
+        this.$http({
+            url: "/bpm/api/queryDoneTaskList",
+            method: "post",
+            headers: {
+                "Content-Type": "application/json",
+                "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+            },
+            data: v,
+        }).then((res) => {
+            this.tableDataDone = res.data.data;
+            this.totalDone = res.data.totalRecord;
+            this.loading = false;
+        });
+    },
+    // 分页
+    currchangeDone(v) {
+        this.pageSizeDone = v;
+        this.getDoneList(this.params, this.pageSizeDone);
+    },
+    viewItem(woNo){
+      //
+      this.$http({
+        url: "/market/tvImport/basicInfo",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+        data:{"woNo":woNo}
+      }).then((res) => {
+        if(res.data.result==0){
+          this.curItemId = res.data.body.imp.itemId
+          this.dialogVisible = true
+          console.log(res.data.body.imp.itemId)
+        }else{
+          this.$message({ showClose: true, message: res.data.desc,type: 'error'});
+        }
+      });
+    },
+    closeWin(){
+      this.curItemId = ''
+      this.dialogVisible = false
+    },
+
+    dealItem(row){
+      let woNo = row.woNo
+      let taskId = row.taskId
+      let stepId = row.stepId
+      let procId = row.procId
+      let procVersion = row.procVersion
+      let params = "&woNo="+woNo+"&taskId="+taskId+"&stepId="+stepId+"&procId="+procId+"&procVersion="+procVersion;
+      let taskName = row.taskName;
+      let path = ""
+      if(taskName==="资质审核"){
+          path="/auditQualification"
+      }else if(taskName==="指定评估专家"){
+          path = "/assignExpert"
+      }else if(taskName==="专家登录评审"){
+          path = "/peerReview"
+      }else if(taskName==="评审汇总"){
+          path = "/reviewSummary"
+      }else if(taskName==="室主任初审(内部)"){
+          path = "/innerOfficerAudit"
+      }else if(taskName==="中心主任复审(内部)"){
+          path = "/innerCentralAudit"
+      }else if(taskName==="会议结果录入"){
+          path = "/inputMeetingReport"
+      }else if(taskName==="室主任初审"){
+          path = "/extendOfficerAudit"
+      }else if(taskName==="中心主任终审"){
+          path = "/extendCentralAudit"
+      }else if(taskName==="市场决策委员会审核"){
+          path = "/marketDecision"
+      }else if(taskName==="专业公司发函"){
+          path = "/sendLetter"
+      }else if(taskName==="省内引入"){
+          path = "/importProvince"
+      }else if(taskName==="产品上线"){
+          path = "/publish"
+      }else if(taskName==="上线"){
+          path = "/publish2"
+      }
+      //
+      path = path + "?"+params;
+      this.$router.push({"path":path})
+    },
+  },
+  mounted() {
+    this.getToDoList({}, 1);
+    this.getDoneList({"sts":"1"}, 1);
+    this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+  },
+  created() {},
+};
+</script>
+
+<style lang="scss" scoped>
+.dialog-footer {
+  padding-right: 20px;
+  text-align: right;
+  margin-top: 20px;
+}
+
+.taskbox {
+  width: 49.5%;
+  display: inline-block;
+}
+
+.pageBox {
+    text-align: right;
+    margin-top: 10px;
+}
+
+.tit {
+  margin-top: 10px;
+  clear: both;
+  height: 47px;
+  background: #fff;
+  line-height: 47px;
+  padding: 0 20px;
+  display: flex;
+  justify-content: space-between;
+  border-bottom: 1px solid black;
+}
+
+.info-line {
+  width: 100%;
+  display: block;
+  padding-left: 20px;
+
+  div {
+    width: 50%;
+    display: inline-block;
+    overflow: hidden;
+  }
+
+  .mytxt {
+    height: 40px;
+    padding-left: 20px;
+    border: 1px solid #ddd;
+    border-radius: 5px;
+    width: calc(100% - 100px);
+    float: left;
+  }
+
+  .mytxtinfo {
+    line-height: 40px;
+    height: auto;
+    padding-left: 20px;
+    border: 1px solid #ddd;
+    border-radius: 5px;
+    width: calc(100% - 100px);
+  }
+
+  span {
+    width: 80px;
+    display: inline-block;
+    text-align: left;
+    float: left;
+
+    i {
+      color: red;
+      display: inline-block;
+      padding-right: 5px;
+    }
+  }
+
+  .el-select,
+  .el-input {
+    width: calc(100% - 100px);
+  }
+}
+
+.online {
+  width: 100%;
+
+  .el-select {
+    width: calc(100% - 100px);
+  }
+
+  span {
+    vertical-align: top;
+  }
+
+  .el-textarea {
+    width: calc(100% - 100px);
+  }
+
+  .tree {
+    width: calc(50% - 60px);
+    display: inline-block;
+    margin-right: 20px;
+    height: 300px;
+    overflow-y: scroll;
+  }
+
+  .treeUser {
+    margin: 0;
+    border: 1px solid #ddd;
+
+    p {
+      background: #f4f4f4;
+      padding: 0 20px;
+      margin-bottom: 5px;
+    }
+  }
+
+  .treeUserb {
+    width: calc(100% - 100px);
+    border: 1px solid #ddd;
+    background: #f4f4f4;
+    border-radius: 3px;
+    height: auto;
+    overflow: hidden;
+
+    p {
+      display: inline-block;
+      padding: 0 20px;
+      margin-bottom: 5px;
+    }
+  }
+  .treedept {
+    width: calc(100% - 100px);
+    // display: inline-block;
+    margin-right: 20px;
+    border: 1px solid #ddd;
+    border-radius: 3px;
+    padding: 0 20px;
+
+    p {
+      display: inline-block;
+      margin-right: 20px;
+    }
+  }
+}
+</style>

+ 584 - 0
src/pages/main/homeMarket/tvIntroduction/index.vue

@@ -0,0 +1,584 @@
+<template>
+  <div class="mc-wrap">
+    <div class="container-box">
+      <div class="mc-top">
+        <div class="mc-top-left">
+            <div class="car-line">
+                <h2 style="margin-left: 20px;padding-top: 10px;">互联网电视合作引入流程</h2>
+                <div class="adv-box">
+                    <div class="adv-tit" @click="jNotice('1')">
+                        <i class="el-icon-time"></i>
+                        <span>待办 <em>{{tdNumber}}</em></span>
+                    </div>
+                    <div class="adv-tit" @click="jNotice('2')">
+                        <i class="el-icon-finished"></i>
+                        <span>已办 <em>{{downNumber}}</em></span>
+                    </div>
+                    <div class="adv-tit" @click="jNotice('3')">
+                        <i class="el-icon-notebook-1"></i>
+                        <span>已归档 <em>{{successNumber}}</em></span>
+                    </div>
+                    <div class="adv-tit adv-add" @click="advadd">
+                        <i class="el-icon-plus"></i>
+                        <span>创建</span>
+                    </div>
+                </div>
+             </div>
+
+            <hometask></hometask>
+        </div>
+      </div>
+    </div>
+
+    <!--itemDialog-->
+    <itemDialog :dialogVisible="dialogVisible" :itemId="curItemId" @closeWin="closeWin"></itemDialog>
+  </div>
+</template>
+<script>
+import mySearch from "@/components/search";
+import itemDialog from "./deal/itemDialog";
+import hometask from "./homeTask.vue";
+
+export default {
+  components: {mySearch,itemDialog,hometask},
+  data() {
+    return {
+      activeTab: "first",
+      info:{},
+      bannerData: [
+        {src: require("../../../../static/img/bannar-1.png"),id: "1",},
+        {src: require("../../../../static/img/bannar-1.png"),id: "2",},
+        {src: require("../../../../static/img/bannar-1.png"),id: "3",},
+      ],
+      toDoList:[],
+      itemList:[],
+      searchList: [
+        {type: "input",	tit: "工单名称",	value: "",	width: "15%"},
+        {type: "input",	tit: "产品名称",	value: "",	width: "15%"},
+        {type: "input",	tit: "业务类型",	value: "",	width: "15%"},
+        {type: "input",	tit: "企业名称",	value: "",	width: "15%"},
+        //{type: "input",	tit: "创建人",	value: "",	width: "15%"},
+        {
+          type: "sel",
+          tit: "工单状态",
+          value: "",
+          width: "10%",
+          options: [
+            { dataCode: "2", dataName: "办理中" },
+            { dataCode: "1", dataName: "已归档" },
+          ],
+        },
+      ],
+      toDoLoading:false,
+      params:[],
+      curItemId:'',
+      dialogVisible:false,
+      tdNumber:0,
+      downNumber:0,
+      successNumber:0
+    };
+  },
+  methods: {
+    handleClick(){
+
+    },
+    
+    advadd(){
+      this.$http({
+        url: "/market/tvImport/init",
+        method: "post",
+        headers: {"Content-Type": "application/json"},
+      }).then((res) => {
+        let itemId = res.data.body;
+        //this.setabList("发起需求", "/create");
+        this.$router.push({path: "/create?itemId="+itemId,});
+      });
+    },
+    
+    todoNumber(){
+      this.$http({
+        url: "/bpm/api/queryToDoNumByProcName",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json"
+        },
+        data:{"procName":"互联网电视引入流程"}
+      }).then((res) => {
+          this.tdNumber = res.data.body
+       });
+    },
+    queryDownTaskNumber(){
+      this.$http({
+        url: "/bpm/api/queryDoneTaskList",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+          page: '{"pageNo":"' + 1 + '","pageSize":"10"}'
+        },
+        data:{"procName":"互联网电视引入流程","sts":"1"}
+      }).then((res) => {
+          this.downNumber = res.data.totalRecord
+       });
+    },
+ 
+    viewItem(itemId){
+      this.curItemId = itemId
+      this.dialogVisible = true
+    },
+    closeWin(){
+      this.dialogVisible = false
+    },
+    //跳转
+    jNotice(v) {
+      if(v=='3'){
+        this.$router.push({"path":"/tvImportItemList"});
+      }else if(v==='1'){
+        this.$router.push({"path":"/tvImportTaskList?type=1"});
+      }else if(v==='2'){
+        this.$router.push({"path":"/tvImportTaskList?type=2"});
+      }
+    },
+  
+   
+    loadSuccessData(){
+      let userInfo = window.sessionStorage.userInfo;
+      if(null === userInfo){
+            this.$message({ showClose: true, message: "数据异常",type: 'error'});
+            return 
+      }
+      userInfo = JSON.parse(userInfo);
+      let loginNoStr = userInfo.loginNoStr;      
+      this.$http({
+        url: "/market/tvImport/queryImportItem",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json",
+          page: '{"pageNo":"' + 1 + '","pageSize":"10"}'
+        },
+        data:{"itemStatus":"1","createLogin":loginNoStr}
+      }).then((res) => {
+        this.successNumber = res.data.totalRecord
+      });
+    },
+  },
+  mounted() {
+    //this.loadToDoData()
+    this.todoNumber()
+    this.queryDownTaskNumber()
+    this.loadSuccessData()
+  },
+  created() {
+
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.mc-wrap {
+  box-sizing: border-box !important;
+  margin: 0;
+  height: calc(100vh - 120px);
+  overflow: hidden;
+  width: 100%;
+  padding-right: 15px;
+
+  .container-box {
+    width: 100%;
+    height: calc(100% - 40px);
+    margin-top: 20px;
+    overflow-y: scroll;
+    padding: 0 0 0 15px;
+  }
+
+  .tit {
+    height: 30px;
+    background: #fff;
+    line-height: 35px;
+    padding: 0 20px;
+    display: flex;
+    justify-content: space-between;
+  }
+}
+
+.mc-top {
+  display: flex;
+  width: 100%;
+}
+
+.mc-wrap .mc-top-left {
+  width: 100%;
+  margin-right: 15px;
+}
+
+.car-line-knowledge {
+  min-height: 250px;
+  max-height: 250px;
+  background: #fff;
+  //   margin: 10px 0 0 0;
+  margin-left: 10px;
+  overflow-y: auto;
+
+  .car-box {
+    padding: 0 20px;
+    line-height: 44px;
+    height: 44px;
+    color: #333;
+    border-bottom: 1px solid #c1abfc;
+
+    span {
+      cursor: pointer;
+      margin-right: 20px;
+    }
+
+    span:first-child {
+      cursor: auto;
+    }
+
+    span:last-child {
+      float: right;
+      margin-right: 0;
+    }
+  }
+}
+
+.car-line {
+  height: 140px;
+  background: #fff;
+  //   margin: 10px 0 0 0;
+
+  .car-box {
+    padding: 0 20px;
+    line-height: 40px;
+    color: #333;
+
+    span {
+      cursor: pointer;
+      margin-right: 20px;
+    }
+
+    span:first-child {
+      cursor: auto;
+    }
+
+    span:last-child {
+      float: right;
+      margin-right: 0;
+    }
+  }
+
+  .adv-box {
+      margin-top: 20px;
+      margin-left: 20px;
+      margin-right: 20px;
+      display: flex;
+      flex-wrap: nowrap;
+      justify-content: space-between;
+
+      div {
+          display: inline-block;
+          cursor: pointer;
+          .el-card {
+              width: 100%;
+          }
+          i{
+              margin-right: 10px;
+          }
+      }
+
+      .adv-tit {
+          width: 28%;
+          border: 1px solid transparent;
+          border-radius: 5px;
+          height: 60px;
+          line-height: 60px;
+          padding-left: 20px;
+          box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
+          overflow: hidden;
+          em{
+              float: right;
+              margin-right: 20px;
+              font-style: normal;
+              color: #0074D9;
+          }
+      }
+      .adv-tit:hover{
+          border: 1px solid #CFE8FC;
+          background: #CFE8FC;
+      }
+
+      .adv-add {
+          width: 100px;
+      }
+
+  }
+}
+
+.mc-wrap .mc-top-right {
+  width: calc(20% - 15px);
+  background-color: white;
+  overflow: hidden;
+
+  .inner-box {
+    width: calc(100% + 20px);
+    background-color: white;
+    overflow-y: scroll;
+  }
+}
+
+.swiper-pagination {
+  position: absolute;
+  bottom: 0;
+}
+
+.main-box .item {
+  float: left;
+  width: 50%;
+}
+
+.main-box {
+  overflow: hidden;
+}
+
+#test-n2 #layui-laydate1 {
+  width: 100% !important;
+}
+
+.mc-wrap .laydate-theme-grid .layui-laydate-content td {
+  border: none !important;
+  border-radius: 50%;
+}
+
+.mc-wrap .layui-laydate-main {
+  width: 100% !important;
+}
+
+.mc-wrap .layui-laydate-content table {
+  width: 100%;
+}
+
+.mc-wrap .layui-laydate-static {
+  width: 100% !important;
+  border: none !important;
+  box-shadow: none !important;
+}
+
+.mc-wrap .laydate-day-mark::after {
+  bottom: 0 !important;
+  left: 45% !important;
+  top: 50px !important;
+}
+
+.mc-wrap .laydate-day-mark {
+  overflow: inherit !important;
+  overflow: none !important;
+}
+
+.mc-wrap .layui-laydate .layui-this {
+  background-color: #a3c1e5 !important;
+}
+
+#test-n2 {
+  width: initial !important;
+}
+
+.tasksituation {
+  border-bottom: 1px solid #f7f7f7;
+}
+
+.mc-wrap .tasksituation > .title {
+  font-size: 16px;
+  font-weight: 500;
+  padding-top: 20px;
+  padding-left: 20px;
+  color: #333;
+}
+
+.mc-wrap .main-box .point {
+  color: #ff6060;
+  font-size: 30px;
+  font-weight: 500;
+}
+
+.mc-wrap .main-box .item img {
+  width: 100%;
+}
+
+.mc-wrap .describe {
+  text-align: center;
+}
+
+.mc-wrap .describe .title {
+  color: #999;
+  font-size: 12px;
+  padding: 5px 0;
+}
+
+.mc-wrap .describe .day {
+  color: #0081cc;
+  font-size: 16px;
+}
+
+.mc-wrap .swiper-pagination-bullet {
+  width: 10% !important;
+  border-radius: 0;
+  height: 5px !important;
+}
+
+.mc-wrap .laydate-icon {
+  display: none;
+}
+
+.mc-wrap .laydate-set-ym {
+  text-align: left;
+}
+
+.mc-wrap .layui-laydate-header {
+  padding: 0;
+}
+
+.mc-wrap .layui-laydate-header i {
+  display: none !important;
+}
+
+.mc-wrap .data-box {
+  position: relative;
+}
+
+.datetimeBox {
+  .el-timeline {
+    padding-left: 20px;
+  }
+}
+
+.mc-wrap .operation {
+  padding-right: 20px;
+  cursor: pointer;
+  margin-top: 10px;
+  text-align: right;
+}
+
+.mc-wrap .layui-laydate-footer {
+  display: none;
+}
+
+.mc-wrap .layui-timeline-axis {
+  width: 50px !important;
+  height: 18px;
+  border-radius: 20px;
+  top: 3px;
+  color: white;
+  line-height: 18px;
+}
+
+.mc-wrap .layui-timeline-content {
+  margin-left: 35px;
+}
+
+.mc-wrap .layui-timeline {
+  width: 80%;
+  margin: 0 auto;
+}
+
+.mc-wrap .layui-timeline-item:before {
+  left: 9% !important;
+  width: 3px;
+  background-color: #daeaf2;
+  top: 3px;
+}
+
+.mc-wrap .layui-timeline-axis:hover {
+  color: white !important;
+}
+
+.mc-wrap .ztree li a.curSelectedNode {
+  border: none !important;
+  background-color: white !important;
+}
+
+.point-baifen {
+  font-size: 14px;
+  margin-left: -5%;
+}
+
+@keyframes spin {
+  0% {
+    transform: rotate(0deg);
+  }
+
+  to {
+    transform: rotate(1turn);
+  }
+}
+
+.info-line {
+  width: 100%;
+  display: block;
+  padding-left: 20px;
+
+  div {
+    width: 50%;
+    display: inline-block;
+    overflow: hidden;
+  }
+
+  .mytxt {
+    height: 40px;
+    padding-left: 20px;
+    border: 1px solid #ddd;
+    border-radius: 5px;
+    width: calc(100% - 100px);
+    float: left;
+  }
+
+  .mytxtinfo {
+    line-height: 40px;
+    height: auto;
+    padding-left: 20px;
+    border: 1px solid #ddd;
+    border-radius: 5px;
+    width: calc(100% - 100px);
+  }
+
+  span {
+    width: 80px;
+    display: inline-block;
+    text-align: left;
+    float: left;
+
+    i {
+      color: red;
+      display: inline-block;
+      padding-right: 5px;
+    }
+  }
+
+  .el-select,
+  .el-input {
+    width: calc(100% - 100px);
+  }
+}
+
+.online {
+  width: 100%;
+
+  .el-select {
+    width: calc(100% - 100px);
+  }
+
+  span {
+    vertical-align: top;
+  }
+
+  .el-textarea {
+    width: calc(100% - 100px);
+  }
+}
+
+.task_list{
+  background-color: white;
+  padding:0px 20px 20px 20px;
+  display: flex;
+  flex-wrap: nowrap;
+  justify-content: space-between;
+}
+</style>

+ 0 - 0
src/pages/main/homeMarket/tvIntroduction/itemList.vue


この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません