index.vue 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756
  1. <template>
  2. <fullscreen :fullscreen.sync="fullscreen" class="container">
  3. <div class="container-box">
  4. <toolList @iconCli="iconCli" :tooltit="tooltit"></toolList>
  5. <div style="overflow: hidden">
  6. <el-button
  7. style="float: right; margin-top: 10px"
  8. type="primary"
  9. @click="dialogCheck(3)"
  10. >添加</el-button
  11. >
  12. <el-button
  13. style="float: right; margin-top: 10px; margin-right: 20px"
  14. type="primary"
  15. @click="getStanding"
  16. >台账</el-button
  17. >
  18. </div>
  19. <div class="tabbox">
  20. <el-table
  21. height="calc(100% - 40px)"
  22. class="com-table"
  23. ref="multipleTable"
  24. :data="tableData"
  25. tooltip-effect="dark"
  26. size="small"
  27. border
  28. style="width: 100%"
  29. v-loading="loading"
  30. >
  31. <el-table-column prop="busiSubject" label="业务名称">
  32. </el-table-column>
  33. <el-table-column prop="createName" label="申请姓名">
  34. </el-table-column>
  35. <el-table-column prop="createTimeStr" label="申请时间">
  36. </el-table-column>
  37. <el-table-column prop="stsDesc" label="状态">
  38. <template slot-scope="scope">
  39. {{
  40. scope.row.taskName == "信息补填" && scope.row.stsDesc == "待办"
  41. ? "未办结"
  42. : scope.row.stsDesc
  43. }}
  44. </template>
  45. </el-table-column>
  46. <el-table-column label="操作" width="120px" align="center">
  47. <template slot-scope="scope">
  48. <el-button
  49. size="mini"
  50. type="primary"
  51. @click="dialogCheck(1, scope.row)"
  52. >查看</el-button
  53. >
  54. <el-button
  55. size="mini"
  56. type="danger"
  57. v-if="scope.row.sts != 1"
  58. @click="dialogCheck(2, scope.row)"
  59. >处理</el-button
  60. >
  61. <!-- <el-button size="mini" type="danger" @click="delLine(scope.row)">删除</el-button> -->
  62. </template>
  63. </el-table-column>
  64. </el-table>
  65. <el-pagination
  66. class="pageBox"
  67. @current-change="currchange"
  68. layout="prev, pager, next"
  69. background
  70. :total="total"
  71. >
  72. </el-pagination>
  73. </div>
  74. </div>
  75. <el-dialog
  76. :title="titname"
  77. :visible.sync="dialogStatus"
  78. width="50%"
  79. :destroy-on-close="true"
  80. :modal-append-to-body="false"
  81. :close-on-click-modal="false"
  82. :before-close="closedia"
  83. :fullscreen="true"
  84. :key="number"
  85. >
  86. <div v-loading="loadinged" class="simple-dialog">
  87. <el-form :model="infolist" ref="infolist" :rules="rules">
  88. <div class="info-line">
  89. <el-form-item prop="demandName">
  90. <span>需求名称</span>
  91. <el-input
  92. v-model="infolist.demandName"
  93. placeholder="需求名称"
  94. :disabled="disableStatus"
  95. >
  96. </el-input>
  97. </el-form-item>
  98. <el-form-item>
  99. <span>需求编号</span>
  100. <el-input v-model="infolist.woNo" placeholder="需求编号" disabled>
  101. </el-input>
  102. </el-form-item>
  103. <!-- <el-form-item prop="terminal">
  104. <span>申请流程</span>
  105. <el-select clearable v-model="terminal" placeholder="申请流程" :disabled="disableStatus">
  106. <el-option v-for="items in options" :key="items.procId" :label="items.procName"
  107. :value="items.procId">
  108. </el-option>
  109. </el-select>
  110. </el-form-item> -->
  111. <el-form-item>
  112. <span>紧急程度</span>
  113. <el-select
  114. clearable
  115. v-model="infolist.urgDegree"
  116. placeholder="紧急程度"
  117. :disabled="disableStatus"
  118. >
  119. <el-option
  120. v-for="items in urgDegreeopt"
  121. :key="items.id"
  122. :label="items.name"
  123. :value="items.name"
  124. >
  125. </el-option>
  126. </el-select>
  127. </el-form-item>
  128. <el-form-item>
  129. <span>业务主题</span>
  130. <el-input
  131. v-model="infolist.busiSubject"
  132. placeholder="业务主题"
  133. :disabled="disableStatus"
  134. >
  135. </el-input>
  136. </el-form-item>
  137. <el-form-item>
  138. <span>需求类别</span>
  139. <el-select
  140. clearable
  141. v-model="infolist.demandTypeCode"
  142. placeholder="需求类别"
  143. :disabled="disableStatus"
  144. >
  145. <el-option
  146. v-for="items in demandTypeopt"
  147. :key="items.dataCode"
  148. :label="items.dataName"
  149. :value="items.dataCode"
  150. >
  151. </el-option>
  152. </el-select>
  153. </el-form-item>
  154. <el-form-item>
  155. <span>承载渠道</span>
  156. <!-- //multiple -->
  157. <el-select
  158. clearable
  159. multiple
  160. v-model="infolist.carryChannelCode"
  161. placeholder="承载渠道"
  162. :disabled="disableStatus"
  163. >
  164. <el-option
  165. v-for="items in carryChannelopt"
  166. :key="items.dataCode"
  167. :label="items.dataName"
  168. :value="items.dataCode"
  169. >
  170. </el-option>
  171. </el-select>
  172. </el-form-item>
  173. <el-form-item>
  174. <span>加载周期</span>
  175. <el-date-picker
  176. :disabled="disableStatus"
  177. v-model="busiTime"
  178. type="daterange"
  179. placeholder="加载周期"
  180. style="display: inline-flex; width: calc(100% - 120px)"
  181. >
  182. </el-date-picker>
  183. </el-form-item>
  184. </div>
  185. <el-form-item class="info-line online">
  186. <span>需求背景</span>
  187. <el-input
  188. v-model="infolist.demandBackground"
  189. placeholder="需求背景"
  190. type="textarea"
  191. :autosize="{ minRows: 3, maxRows: 10 }"
  192. :disabled="disableStatus"
  193. >
  194. </el-input>
  195. </el-form-item>
  196. <el-form-item class="info-line online">
  197. <span>需求描述</span>
  198. <el-input
  199. v-model="infolist.demandDesc"
  200. placeholder="需求描述"
  201. type="textarea"
  202. :autosize="{ minRows: 3, maxRows: 10 }"
  203. :disabled="disableStatus"
  204. >
  205. </el-input>
  206. </el-form-item>
  207. <!-- 附件展示 -->
  208. <div
  209. style="padding: 0 20px 0 120px; margin-bottom: 20px"
  210. v-if="disableStatus"
  211. >
  212. <uploadDown
  213. :datalist="datalist"
  214. :dialogStatus="uploadstatus"
  215. ></uploadDown>
  216. </div>
  217. <!-- 附件上传 -->
  218. <div v-if="!disableStatus" class="info-line online">
  219. <span style="width: 80px">附件</span>
  220. <el-upload
  221. class="info-upload"
  222. :limit="3"
  223. action=""
  224. :on-preview="handlePreview"
  225. :on-remove="handleRemove"
  226. :http-request="handleSuccess"
  227. :file-list="file"
  228. drag
  229. multiple
  230. >
  231. <div class="upload">
  232. <i class="el-icon-upload"></i>
  233. <p class="el-upload__text">
  234. 将文件拖到此处,或<em>点击上传</em>
  235. </p>
  236. </div>
  237. </el-upload>
  238. </div>
  239. <!-- 信息补填的情况 -->
  240. <myUpload
  241. v-if="vision == '信息补填'"
  242. style="float: right; margin-bottom: 20px"
  243. @uploadBack="uploadBackin"
  244. :fileInfo="fileInfoin"
  245. :fileList="fileInfoin.fileList"
  246. ></myUpload>
  247. <div
  248. style="margin: 20px 0; padding: 0 20px"
  249. v-if="vision == '信息补填'"
  250. >
  251. <el-table
  252. class="com-table"
  253. ref="multipleTable"
  254. :data="infodatas"
  255. tooltip-effect="dark"
  256. size="small"
  257. border
  258. style="width: 100%"
  259. >
  260. <el-table-column prop="infoName" label="需求承接支撑方">
  261. <template slot-scope="scope">
  262. <el-input
  263. v-model="scope.row.factoryName"
  264. :disabled="titname != '审批'"
  265. ></el-input>
  266. </template>
  267. </el-table-column>
  268. <el-table-column prop="infoName" label="涉及发生工作量">
  269. <template slot-scope="scope">
  270. <el-input
  271. v-model="scope.row.workLoad"
  272. :disabled="titname != '审批'"
  273. ></el-input>
  274. </template>
  275. </el-table-column>
  276. <el-table-column
  277. label="操作"
  278. width="120px"
  279. align="center"
  280. v-if="titname == '审批'"
  281. >
  282. <template slot-scope="scope">
  283. <el-button
  284. size="mini"
  285. type="primary"
  286. @click="choline(1, scope)"
  287. >添加</el-button
  288. >
  289. <el-button
  290. size="mini"
  291. type="danger"
  292. @click="choline(2, scope)"
  293. >删除</el-button
  294. >
  295. </template>
  296. </el-table-column>
  297. </el-table>
  298. </div>
  299. <el-form-item class="info-line online" v-if="visionsts == '2'">
  300. <span>审批说明</span>
  301. <el-input
  302. v-model="remark"
  303. placeholder="审批说明"
  304. type="textarea"
  305. :rows="3"
  306. :disabled="titname == '查看'"
  307. >
  308. </el-input>
  309. </el-form-item>
  310. <div
  311. style="margin-bottom: 20px; padding: 0 20px"
  312. v-if="titname !== '添加'"
  313. >
  314. <el-table
  315. class="com-table"
  316. :data="rovaList"
  317. tooltip-effect="dark"
  318. size="small"
  319. border
  320. style="width: 100%"
  321. >
  322. <el-table-column prop="logNo" label="编号"> </el-table-column>
  323. <el-table-column prop="stepName" label="环节"> </el-table-column>
  324. <el-table-column prop="processName" label="处理人">
  325. </el-table-column>
  326. <el-table-column prop="processWorkNo" label="处理人工号">
  327. </el-table-column>
  328. <el-table-column prop="updateTimeStr" label="处理时间">
  329. </el-table-column>
  330. <el-table-column prop="remark" label="备注"> </el-table-column>
  331. </el-table>
  332. </div>
  333. </el-form>
  334. <div slot="footer" class="info-footer">
  335. <div v-if="titname === '添加' || step === '0'">
  336. <el-button type="primary" @click="handleApprove('送部门人员审核')"
  337. >送部门人员审核</el-button
  338. >
  339. <el-button type="primary" @click="handleApprove('送领导审核')"
  340. >送领导审核</el-button
  341. >
  342. <el-button @click="handleApprove('取消')">取消</el-button>
  343. </div>
  344. <div v-else>
  345. <el-button
  346. v-for="(item, index) in buttonList"
  347. :key="index"
  348. type="primary"
  349. @click="handleApprove(item)"
  350. >{{ item }}</el-button
  351. >
  352. </div>
  353. </div>
  354. </div>
  355. </el-dialog>
  356. <el-dialog
  357. title="选择审批领导"
  358. :visible.sync="checkLaeder"
  359. width="500px"
  360. :destroy-on-close="true"
  361. :modal-append-to-body="false"
  362. :close-on-click-modal="false"
  363. >
  364. <div>
  365. <el-form>
  366. <el-form-item
  367. label="审批领导"
  368. :rules="{
  369. required: true,
  370. message: '请选择审批领导',
  371. trigger: 'change',
  372. }"
  373. >
  374. <el-select v-model="leader">
  375. <el-option
  376. v-for="(item, index) in leaderList"
  377. :key="index"
  378. :label="item.label"
  379. :value="item.value"
  380. >
  381. </el-option>
  382. </el-select> </el-form-item
  383. ></el-form>
  384. </div>
  385. <div slot="footer">
  386. <el-button type="primary" size="small" @click="formSubmit(2)"
  387. >确 定</el-button
  388. >
  389. <el-button @click="checkLaeder = false" size="small">取 消</el-button>
  390. </div>
  391. </el-dialog>
  392. <el-dialog
  393. title="选择审批人"
  394. :visible.sync="checkexa"
  395. width="50%"
  396. :destroy-on-close="true"
  397. :modal-append-to-body="false"
  398. :close-on-click-modal="false"
  399. >
  400. <div>
  401. <el-form :model="infolist" ref="infolist" :rules="rules">
  402. <el-form-item prop="visiblec" class="info-line online">
  403. <span>审批人员</span>
  404. <deptTreeOnly
  405. class="tree"
  406. @treeCheck="treeCheckonly"
  407. :defaultList="defaultList"
  408. :type="depttype"
  409. :closeList="closeList"
  410. :reset-list="treeList"
  411. ></deptTreeOnly>
  412. <div class="tree treeUser">
  413. <p v-for="(item, index) in treeList" :key="index">
  414. {{ item.label }}
  415. <i
  416. v-if="item.label"
  417. @click="deletes(item)"
  418. class="el-icon-error"
  419. ></i>
  420. </p>
  421. </div>
  422. </el-form-item>
  423. </el-form>
  424. <div slot="footer" style="text-align: right; padding-bottom: 20px">
  425. <el-button type="primary" @click="formSubmit(1)">确 定</el-button>
  426. <el-button @click="checkexa = false">取 消</el-button>
  427. </div>
  428. </div>
  429. </el-dialog>
  430. <myMessage
  431. :messTit="messTit"
  432. @closeMessage="closeMessage"
  433. :centerDialogVisible="centerDialogVisible"
  434. v-if="centerDialogVisible"
  435. ></myMessage>
  436. </fullscreen>
  437. </template>
  438. <script>
  439. import myMessage from "../../../components/myMessage.vue";
  440. import toolList from "../../../components/toolList";
  441. import myUpload from "../../../components/upload";
  442. import uploadDown from "../../../components/uploadDown.vue";
  443. import deptTreeOnly from "../performance/components/deptTreeOnly.vue";
  444. export default {
  445. components: {
  446. // mySearch,
  447. myMessage,
  448. toolList,
  449. myUpload,
  450. uploadDown,
  451. deptTreeOnly,
  452. },
  453. data() {
  454. return {
  455. rules: {
  456. demandName: [
  457. {
  458. required: true,
  459. trigger: "blur",
  460. message: "不能为空",
  461. },
  462. ],
  463. },
  464. // 操作名称
  465. operateName: "",
  466. woNo: "",
  467. // 当前进行到的步骤计数
  468. step: "",
  469. tooltit: "线上渠道业务需求",
  470. fullscreen: false,
  471. total: 0,
  472. // pageSize: 1,
  473. tableData: [],
  474. disableStatus: true,
  475. // 查看 审批 添加 弹出层 状态
  476. page: 1,
  477. pageSize: 10,
  478. file: [], // 附件数组
  479. titname: "",
  480. dialogStatus: false,
  481. number: 0,
  482. // 按钮标识
  483. type: "",
  484. // 联系人
  485. checkLaeder: false,
  486. checkexa: false,
  487. // 信息回显
  488. infolist: {},
  489. // 用户信息
  490. userInfo: {},
  491. buttonList: [
  492. "送部门人员审核",
  493. "送领导审核",
  494. "送申请人编号发送",
  495. "确认编号",
  496. "确认需求",
  497. "电商接口人阅办",
  498. "项目组送电商接口人阅办",
  499. "送其他人办理",
  500. "打回",
  501. "取消",
  502. ],
  503. params: {},
  504. centerDialogVisible: false,
  505. messTit: "",
  506. delid: "",
  507. loading: false,
  508. loadinged: false,
  509. fileInfo: {
  510. limit: 5,
  511. url: "/bpm/api/upload",
  512. fileList: [],
  513. },
  514. rovaList: [],
  515. vision: "",
  516. datalist: {
  517. url: "/bpm/api/download",
  518. type: 1,
  519. },
  520. uploadstatus: false,
  521. mydisable: 1,
  522. opname: "",
  523. opno: "",
  524. attList: [],
  525. options: [],
  526. terminal: "729289304205336576",
  527. // terminal: '722743473704595456',//722743473704595456省722748981018685440
  528. remark: "",
  529. visionsts: "1",
  530. visionchonly: false,
  531. ifopt: [
  532. {
  533. id: 1,
  534. name: "是",
  535. },
  536. {
  537. id: 0,
  538. name: "否",
  539. },
  540. ],
  541. infodatas: [{}, {}],
  542. busiTime: [],
  543. urgDegreeopt: [
  544. {
  545. id: 1,
  546. name: "正常",
  547. },
  548. {
  549. id: 2,
  550. name: "紧急",
  551. },
  552. {
  553. id: 3,
  554. name: "非常紧急",
  555. },
  556. ],
  557. demandTypeopt: [],
  558. carryChannelopt: [],
  559. treeList: [],
  560. treeListonly: {},
  561. defaultList: [],
  562. closeList: false,
  563. depttype: 0,
  564. fileInfoin: {
  565. type: "btn",
  566. typename: "导入",
  567. btntype: "primary",
  568. limit: 1,
  569. url: "/market/cChannelDemand/demandCarryImport",
  570. fileList: [],
  571. },
  572. tempSave: false,
  573. };
  574. },
  575. watch: {
  576. "datalist.attList"() {
  577. this.number++;
  578. },
  579. // tempSave(value) {
  580. // if (value) {
  581. // // 监听编辑状态,每20秒请求一次,注意函数不加()
  582. // this.timer = window.setInterval(this.temp, 20000);
  583. // } else {
  584. // // 停止监听
  585. // clearInterval(this.timer);
  586. // }
  587. // },
  588. },
  589. methods: {
  590. // 新的处理方法
  591. handlePreview(file) {
  592. console.log(file, "Preview");
  593. },
  594. handleRemove(file) {
  595. this.file = this.file.filter((el) => el.uid !== file.uid);
  596. },
  597. handleSuccess({ file }) {
  598. this.file.push(file);
  599. },
  600. handleApprove(type) {
  601. if (type === "取消") {
  602. this.dialogStatus = false;
  603. this.disableStatus = false;
  604. this.number++;
  605. this.infolist = {};
  606. return;
  607. }
  608. this.$refs.infolist.validate((val) => {
  609. if (val) {
  610. switch (type) {
  611. case "送部门人员审核":
  612. this.checkexa = true;
  613. this.type = "0";
  614. console.log("送部门人员审核");
  615. break;
  616. case "送领导审核":
  617. this.type = "1";
  618. // this.formSubmit()
  619. this.checkLaeder = true;
  620. console.log("送领导审核");
  621. break;
  622. case "送申请人编号发送":
  623. this.handleSendNo();
  624. break;
  625. case "确认编号":
  626. this.handleComfirmNo();
  627. break;
  628. case "打回":
  629. this.handleBackRecord();
  630. break;
  631. case "确认需求":
  632. this.checkexa = true;
  633. this.type = "0";
  634. this.operateName = "确认需求";
  635. break;
  636. case "电商接口人阅办":
  637. this.checkexa = true;
  638. this.type = "0";
  639. this.operateName = "电商接口人阅办";
  640. break;
  641. case "项目组送电商接口人阅办":
  642. this.checkexa = true;
  643. this.type = "0";
  644. this.operateName = "项目组送电商接口人阅办";
  645. break;
  646. case "送其他人办理":
  647. this.operateName = "送其他人办理";
  648. this.handleDeliverReadOfficeOrOtherDo(2)
  649. break;
  650. }
  651. }
  652. });
  653. },
  654. // 项目组送电商接口人阅办
  655. handleDeliverReadOfficeOrOtherDo(type){
  656. console.log(this.operateName,type);
  657. },
  658. // 电商接口人阅办---管理项目组会签
  659. handleCountersigned(){
  660. let receiveId = [];
  661. let receiveName = [];
  662. // console.log(this.treeList);
  663. this.treeList.forEach((item) => {
  664. receiveId.push(item.id);
  665. receiveName.push(item.loginNoStr);
  666. });
  667. let reqdata = {
  668. operateName: this.operateName,
  669. receiveId: receiveId.join(","),
  670. receiveName: receiveName.join(","),
  671. reviewOpinion: this.operateName + "," + this.remark,
  672. woNo: this.woNo + "",
  673. };
  674. console.log(reqdata);
  675. this.$http({
  676. url: "/market/mkOnlineChannel/countersigned",
  677. method: "post",
  678. headers: {
  679. "Content-Type": "application/json",
  680. },
  681. data: reqdata,
  682. }).then(({ data: { desc } }) => {
  683. console.log(desc);
  684. if (desc === "操作成功") {
  685. this.$message.success("操作成功");
  686. this.checkexa = false
  687. this.dialogStatus = false;
  688. this.handleInit();
  689. } else {
  690. this.$message.error("操作失败");
  691. }
  692. });
  693. },
  694. // 确认需求
  695. handleNeedyComfirm() {
  696. let receiveId = [];
  697. let receiveName = [];
  698. // console.log(this.treeList);
  699. this.treeList.forEach((item) => {
  700. receiveId.push(item.id);
  701. receiveName.push(item.loginNoStr);
  702. });
  703. let reqdata = {
  704. operateName: this.operateName,
  705. receiveId: receiveId.join(","),
  706. receiveName: receiveName.join(","),
  707. reviewOpinion: this.operateName + "," + this.remark,
  708. woNo: this.woNo + "",
  709. };
  710. console.log(reqdata);
  711. this.$http({
  712. url: "/market/mkOnlineChannel/confirmDemand",
  713. method: "post",
  714. headers: {
  715. "Content-Type": "application/json",
  716. },
  717. data: reqdata,
  718. }).then(({ data: { desc } }) => {
  719. console.log(desc);
  720. if (desc === "操作成功") {
  721. this.$message.success("操作成功");
  722. this.checkexa = false
  723. this.dialogStatus = false;
  724. this.handleInit();
  725. } else {
  726. this.$message.error("操作失败");
  727. }
  728. });
  729. },
  730. // 打回方法
  731. handleBackRecord() {
  732. this.$http({
  733. url: "/market/mkOnlineChannel/backRecord",
  734. method: "get",
  735. headers: {
  736. "Content-Type": "application/json",
  737. },
  738. params: {
  739. woNo: this.woNo,
  740. remark: this.remark,
  741. },
  742. }).then(({ data: { desc } }) => {
  743. console.log(desc);
  744. if (desc === "操作成功") {
  745. this.$message.success("操作成功");
  746. this.dialogStatus = false;
  747. this.handleInit();
  748. } else {
  749. this.$message.error("操作失败");
  750. }
  751. });
  752. },
  753. // 表单提交
  754. formSubmit(type) {
  755. if (type === 1) {
  756. if (!this.treeList.length) {
  757. this.$message.error("请选择审核人员");
  758. return;
  759. }
  760. } else {
  761. if (!this.leader) {
  762. this.$message.error("请选择审核领导");
  763. return;
  764. }
  765. }
  766. let request = 0;
  767. let formData = new FormData();
  768. let origin_params = {};
  769. if (this.infolist.woNo) {
  770. origin_params = {
  771. // 需求编号
  772. woNo: this.infolist.woNo,
  773. createId: this.infolist.createId,
  774. createName: this.infolist.createName,
  775. };
  776. }
  777. let params = {
  778. ...origin_params,
  779. // 需求名称
  780. demandName: this.infolist.demandName,
  781. // 紧急程度
  782. urgDegree: this.infolist.urgDegree,
  783. // 业务主题
  784. busiSubject: this.infolist.busiSubject,
  785. // 需求类别
  786. demandTypeCode: this.infolist.busiSubject,
  787. //承载渠道
  788. carryChannelCode: this.infolist.carryChannelCode.join(","),
  789. // 加载周期 起止
  790. busiStartTime: this.busiTime[0]
  791. ? this.$formatDate(this.busiTime[0], "YYYY-MM-DD HH:mm:ss")
  792. : "",
  793. busiEndTime: this.busiTime[1]
  794. ? this.$formatDate(this.busiTime[1], "YYYY-MM-DD HH:mm:ss")
  795. : "",
  796. // 需求背景
  797. demandBackground: this.infolist.demandBackground,
  798. // 需求描述
  799. demandDesc: this.infolist.demandDesc,
  800. // 审批说明
  801. remark: this.remark,
  802. // 审核人员
  803. loginNameList: this.treeList.length
  804. ? this.treeList.map((el) => {
  805. return el.label;
  806. })
  807. : [this.leader],
  808. loginNoList: this.treeList.length
  809. ? this.treeList.map((el) => {
  810. return el.loginNoStr;
  811. })
  812. : [this.leader],
  813. type: this.type,
  814. // fileList: this.file,
  815. };
  816. // 处理其他参数
  817. for (let key in params) {
  818. formData.append(key, params[key]);
  819. }
  820. // 这是处理文件的参数
  821. if (this.file.length) {
  822. this.file.forEach((el, index) => {
  823. if (el.constructor.name === "File") {
  824. formData.append(`file${index + 1}`, el);
  825. }
  826. });
  827. }
  828. request = 1;
  829. if (this.operateName === "确认需求") {
  830. this.handleNeedyComfirm();
  831. return;
  832. }
  833. if(this.operateName === '电商接口人阅办'){
  834. this.handleCountersigned()
  835. return;
  836. }
  837. if (request) {
  838. this.$http({
  839. url: "/market/mkOnlineChannel/saveOrUpdate",
  840. method: "post",
  841. headers: {
  842. "Content-Type": "multipart/form-data",
  843. },
  844. data: formData,
  845. }).then(({ data }) => {
  846. if (data && data.desc === "操作成功") {
  847. this.$message({
  848. type: "success",
  849. message: data.desc,
  850. });
  851. this.dialogStatus = false;
  852. this.disableStatus = false;
  853. this.checkexa = false;
  854. this.checkLaeder = false;
  855. this.leader = "";
  856. this.infolist = {};
  857. this.handleInit();
  858. }
  859. });
  860. }
  861. },
  862. // 送申请人编号发送
  863. handleSendNo() {
  864. this.$http({
  865. url: "/market/mkOnlineChannel/createDemandNo",
  866. method: "get",
  867. headers: {
  868. "Content-Type": "application/json",
  869. },
  870. params: {
  871. woNo: this.woNo,
  872. },
  873. }).then(({ data: { desc } }) => {
  874. console.log(desc);
  875. if (desc === "操作成功") {
  876. this.$message.success("操作成功");
  877. this.dialogStatus = false;
  878. this.handleInit();
  879. } else {
  880. this.$message.error("操作失败");
  881. }
  882. });
  883. },
  884. // 确认编号
  885. handleComfirmNo() {
  886. this.$http({
  887. url: "/market/mkOnlineChannel/confirmNumber",
  888. method: "post",
  889. headers: {
  890. "Content-Type": "application/json",
  891. },
  892. data: {woNo:this.woNo + ''},
  893. }).then(({ data: { desc } }) => {
  894. console.log(desc);
  895. if (desc === "操作成功") {
  896. this.$message.success("操作成功");
  897. this.dialogStatus = false;
  898. this.handleInit();
  899. } else {
  900. this.$message.error("操作失败");
  901. }
  902. });
  903. },
  904. // 初始化列表接口
  905. handleInit() {
  906. this.$http({
  907. url: "/market/mkOnlineChannel/queryPage",
  908. method: "post",
  909. headers: {
  910. "Content-Type": "application/json",
  911. },
  912. data: {
  913. page: this.page,
  914. pageSize: this.pageSize,
  915. },
  916. }).then(
  917. ({
  918. data: {
  919. body: { data },
  920. },
  921. }) => {
  922. this.tableData = data;
  923. }
  924. );
  925. },
  926. // 查看详情接口封装
  927. queryDetails(id) {
  928. this.$http({
  929. url: "/market/mkOnlineChannel/getMkOnlineChannelById",
  930. method: "post",
  931. headers: {
  932. "Content-Type": "application/json",
  933. },
  934. data: id,
  935. }).then(
  936. ({
  937. data: {
  938. body: { mkOnlineChannel },
  939. },
  940. }) => {
  941. this.infolist = {
  942. ...mkOnlineChannel,
  943. carryChannelCode: mkOnlineChannel.carryChannelCode.split(","),
  944. };
  945. this.busiTime = [
  946. mkOnlineChannel.busiStartTime,
  947. mkOnlineChannel.busiEndTime,
  948. ];
  949. // this.rovaList = mkOnlineChannel.logList;
  950. this.datalist = {
  951. ...this.datalist,
  952. attList: mkOnlineChannel.attList,
  953. };
  954. //表单编号
  955. this.woNo = mkOnlineChannel.woNo;
  956. // 步骤
  957. this.step = mkOnlineChannel.step;
  958. // 数组回显
  959. this.infodatas = mkOnlineChannel.logList;
  960. this.dialogStatus = true;
  961. if (this.titname === "添加") {
  962. // 审批说明
  963. this.visionsts = "";
  964. this.disableStatus = false;
  965. } else {
  966. // this.disableStatus = true;
  967. this.disableStatus = true;
  968. if (this.titname === "查看") {
  969. this.visionsts = "";
  970. } else {
  971. this.visionsts = "2";
  972. }
  973. }
  974. }
  975. );
  976. },
  977. // 老方法
  978. temp() {
  979. if (JSON.stringify(this.infolist) == "{}") {
  980. return;
  981. }
  982. let params = {};
  983. params.infolist = this.infolist;
  984. params.fileList = [];
  985. params.attList = [];
  986. this.attList.forEach((item) => {
  987. let file = {
  988. id: item.fileCode,
  989. fileCode: item.fileCode,
  990. fileName: item.fileName,
  991. name: item.fileName,
  992. };
  993. params.fileList.push(file);
  994. params.attList.push(file);
  995. });
  996. this.$http({
  997. url: "/market/bpmTemp/temp",
  998. method: "post",
  999. headers: {
  1000. "Content-Type": "application/json",
  1001. },
  1002. data: {
  1003. bpmType: "1",
  1004. content: JSON.stringify(params),
  1005. },
  1006. }).then((res) => {
  1007. //console.log(res)
  1008. });
  1009. },
  1010. deletes(v) {
  1011. // this.treeListonly = {};
  1012. this.treeList = this.treeList.filter(
  1013. (el) => el.loginNoStr !== v.loginNoStr
  1014. );
  1015. this.closeList = !this.closeList;
  1016. },
  1017. treeCheckonly(v) {
  1018. this.treeList = v;
  1019. // this.treeListonly = v;
  1020. },
  1021. choline(v, n) {
  1022. if (v == 1) {
  1023. this.infodatas.push({});
  1024. } else {
  1025. this.infodatas.splice(n.$index, 1);
  1026. }
  1027. },
  1028. closedia() {
  1029. this.infolist = {};
  1030. this.attList = [];
  1031. this.file = [];
  1032. delete this.datalist.attList;
  1033. this.fileInfo.fileList = [];
  1034. this.dialogStatus = false;
  1035. this.checkexa = false;
  1036. this.busiTime = [];
  1037. },
  1038. //获取列表
  1039. getList(v, n) {
  1040. this.pageSize = n;
  1041. let _this = this;
  1042. this.loading = true;
  1043. v.procName = "业务需求申请(地市公司),业务需求申请(省公司)";
  1044. this.$http({
  1045. url: "/bpm/api/queryToDoAndFinishTaskList",
  1046. method: "post",
  1047. headers: {
  1048. "Content-Type": "application/json",
  1049. page: '{"pageNo":"' + n + '","pageSize":"10"}',
  1050. },
  1051. data: v,
  1052. }).then((res) => {
  1053. this.tableData = res.data.data;
  1054. this.total = res.data.totalRecord;
  1055. this.loading = false;
  1056. });
  1057. },
  1058. // 分页
  1059. currchange(v) {
  1060. this.pageSize = v;
  1061. this.getList(this.params, this.pageSize);
  1062. },
  1063. //申请 // 打开弹出层
  1064. dialogCheck(type, data) {
  1065. // let infolist = Object.assign({}, n);
  1066. this.vision = "";
  1067. this.visionsts = "";
  1068. this.infodatas = [{}, {}];
  1069. if (type === 1) {
  1070. this.titname = "查看";
  1071. this.visionsts = "2";
  1072. this.queryDetails(data.woNo);
  1073. } else if (type === 2) {
  1074. this.titname = "审批";
  1075. this.visionsts = "2";
  1076. this.queryDetails(data.woNo);
  1077. } else if (type === 3) {
  1078. this.titname = "添加";
  1079. this.dialogStatus = true;
  1080. this.visionchonly = false;
  1081. this.disableStatus = false;
  1082. // this.$http({
  1083. // url: "/market/bpmTemp/query",
  1084. // method: "post",
  1085. // headers: { "Content-Type": "application/json" },
  1086. // data: { bpmType: "1" },
  1087. // }).then((res) => {
  1088. // if (res.data) {
  1089. // let content = JSON.parse(res.data.content);
  1090. // this.infolist = content.infolist;
  1091. // this.attList = content.attList;
  1092. // this.fileInfo.fileList = content.fileList;
  1093. // }
  1094. // // this.tempSave = true;
  1095. // });
  1096. // return;
  1097. }
  1098. // this.$http({
  1099. // url: "/bpm/api/taskInit",
  1100. // method: "post",
  1101. // headers: {
  1102. // "Content-Type": "application/json",
  1103. // },
  1104. // data: {
  1105. // woNo: n.woNo,
  1106. // },
  1107. // }).then((res) => {
  1108. // // this.infolist = Object.assign({}, res.data);
  1109. // this.terminal = infolist.procId;
  1110. // this.opname = res.data.opName;
  1111. // this.opno = res.data.opNo;
  1112. // this.infolist = JSON.parse(res.data.params.terminalRes);
  1113. // res.data.params.fillList
  1114. // ? (this.infodatas = JSON.parse(res.data.params.fillList))
  1115. // : "";
  1116. // this.infolist.procId = infolist.procId;
  1117. // this.infolist.procVersion = infolist.procVersion;
  1118. // this.remark = infolist.remark;
  1119. // this.infolist.stepId = infolist.stepId;
  1120. // this.infolist.taskId = infolist.taskId;
  1121. // this.infolist.taskName = infolist.taskName;
  1122. // this.infolist.opName = infolist.opName;
  1123. // this.infolist.opNo = infolist.opNo;
  1124. // this.infolist.opTime = infolist.opTime;
  1125. // this.infolist.woNo = infolist.woNo;
  1126. // this.busiTime = [];
  1127. // this.busiTime[0] = this.infolist.busiStartTime;
  1128. // this.busiTime[1] = this.infolist.busiEndTime;
  1129. // this.visionchonly = false;
  1130. // if (
  1131. // res.data.taskList[res.data.taskList.length - 1].taskName == "流程发起"
  1132. // ) {
  1133. // this.vision = "流程发起";
  1134. // if (this.titname == "审批") {
  1135. // this.disableStatus = false;
  1136. // }
  1137. // this.visionchonly = true;
  1138. // } else if (
  1139. // res.data.taskList[res.data.taskList.length - 1].taskName ==
  1140. // "科室主任初审"
  1141. // ) {
  1142. // this.vision = "科室主任初审";
  1143. // this.visionsts = "2";
  1144. // this.visionchonly = true;
  1145. // } else if (
  1146. // res.data.taskList[res.data.taskList.length - 1].taskName ==
  1147. // "部门副主任复审"
  1148. // ) {
  1149. // this.vision = "部门副主任复审";
  1150. // this.visionsts = "2";
  1151. // this.visionchonly = true;
  1152. // } else if (
  1153. // res.data.taskList[res.data.taskList.length - 1].taskName ==
  1154. // "主管副总终审" ||
  1155. // res.data.taskList[res.data.taskList.length - 1].taskName ==
  1156. // "部门副主任终审"
  1157. // ) {
  1158. // this.vision = "主管副总终审";
  1159. // this.visionsts = "2";
  1160. // this.visionchonly = true;
  1161. // } else if (
  1162. // res.data.taskList[res.data.taskList.length - 1].taskName ==
  1163. // "需求预评估"
  1164. // ) {
  1165. // this.vision = "需求预评估";
  1166. // this.visionsts = "2";
  1167. // this.visionchonly = true;
  1168. // } else if (
  1169. // res.data.taskList[res.data.taskList.length - 1].taskName ==
  1170. // "需求预评估初审"
  1171. // ) {
  1172. // this.vision = "需求预评估初审";
  1173. // this.visionsts = "2";
  1174. // this.visionchonly = true;
  1175. // } else if (
  1176. // res.data.taskList[res.data.taskList.length - 1].taskName ==
  1177. // "需求预评估复审"
  1178. // ) {
  1179. // this.vision = "需求预评估复审";
  1180. // this.visionsts = "2";
  1181. // this.visionchonly = true;
  1182. // } else if (
  1183. // res.data.taskList[res.data.taskList.length - 1].taskName ==
  1184. // "渠道经理会签"
  1185. // ) {
  1186. // this.vision = "渠道经理会签";
  1187. // this.visionsts = "2";
  1188. // this.visionchonly = true;
  1189. // } else if (
  1190. // res.data.taskList[res.data.taskList.length - 1].taskName == "需求确认"
  1191. // ) {
  1192. // this.vision = "需求确认";
  1193. // this.visionsts = "3";
  1194. // this.visionchonly = true;
  1195. // } else if (
  1196. // res.data.taskList[res.data.taskList.length - 1].taskName == "上线管理"
  1197. // ) {
  1198. // this.vision = "上线管理";
  1199. // this.visionsts = "3";
  1200. // this.visionchonly = true;
  1201. // } else if (
  1202. // res.data.taskList[res.data.taskList.length - 1].taskName == "上线验证"
  1203. // ) {
  1204. // this.vision = "上线验证";
  1205. // this.visionsts = "3";
  1206. // this.visionchonly = true;
  1207. // } else if (
  1208. // res.data.taskList[res.data.taskList.length - 1].taskName == "信息补填"
  1209. // ) {
  1210. // this.vision = "信息补填";
  1211. // this.visionsts = "4";
  1212. // }
  1213. // this.datalist.attList = JSON.parse(res.data.params.attList);
  1214. // this.attList = [];
  1215. // this.fileInfo.fileList = [];
  1216. // this.datalist.attList.forEach((item) => {
  1217. // item.id = item.attchFileId;
  1218. // this.fileInfo.fileList.push({
  1219. // name: item.fileName,
  1220. // url: "",
  1221. // id: item.id,
  1222. // attchFileId: item.attchFileId,
  1223. // fileName: item.fileName,
  1224. // });
  1225. // this.attList.push({
  1226. // name: item.fileName,
  1227. // url: "",
  1228. // id: item.id,
  1229. // attchFileId: item.attchFileId,
  1230. // fileName: item.fileName,
  1231. // });
  1232. // });
  1233. // this.rovaList = res.data.taskList;
  1234. // this.uploadstatus = true;
  1235. // });
  1236. },
  1237. //审批
  1238. dialogCli(v) {
  1239. this.dialogStatus = false;
  1240. if (v === 3) {
  1241. this.infolist = {};
  1242. this.attList = [];
  1243. this.fileInfo.fileList = [];
  1244. this.checkexa = false;
  1245. this.tempSave = false;
  1246. return;
  1247. }
  1248. let _this = this;
  1249. this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD");
  1250. if (v === 1) {
  1251. let params = {
  1252. dealType: "1",
  1253. dealTypeDesc: "打回",
  1254. procId: this.infolist.procId,
  1255. procVersion: this.infolist.procVersion,
  1256. remark: this.remark,
  1257. stepId: this.infolist.stepId,
  1258. taskId: this.infolist.taskId,
  1259. taskName: this.infolist.taskName,
  1260. opName: this.infolist.opName,
  1261. opNo: this.opno,
  1262. opTime: this.infolist.opTime,
  1263. params: {
  1264. procExeCondiVal: "不同意",
  1265. terminalRes: JSON.stringify(this.infolist),
  1266. assigneeNo: this.opno,
  1267. assigneeName: this.opname,
  1268. },
  1269. woNo: this.infolist.woNo,
  1270. };
  1271. this.submitInfo("/bpm/api/submitTask", params);
  1272. } else if (v === 2) {
  1273. let param = {
  1274. dealType: "0",
  1275. dealTypeDesc: "提交",
  1276. procId: this.infolist.procId,
  1277. procVersion: this.infolist.procVersion,
  1278. remark: this.remark,
  1279. stepId: this.infolist.stepId,
  1280. taskId: this.infolist.taskId,
  1281. taskName: this.infolist.taskName,
  1282. opName: this.infolist.opName,
  1283. opNo: this.opno,
  1284. opTime: this.infolist.opTime,
  1285. params: {
  1286. woType: this.infolist.woType,
  1287. terminalRes: JSON.stringify(this.infolist),
  1288. },
  1289. woNo: this.infolist.woNo,
  1290. };
  1291. if (this.visionchonly) {
  1292. param.params.assigneeNo = this.treeListonly.leaderAuditNo;
  1293. param.params.assigneeName = this.treeListonly.leaderAuditName;
  1294. }
  1295. // if(this.vision == '科室主任初审'||this.vision == '部门副主任复审'){
  1296. // this.$http({
  1297. // url: "/sysmgr/csysuserinfo/queryUserListByLoginNoAndDuty",
  1298. // method: "post",
  1299. // headers: {
  1300. // "Content-Type": "application/json",
  1301. // "page": '{"pageNo":"' + 1 + '","pageSize":"100"}'
  1302. // },
  1303. // data: {"duty":"7,12"},
  1304. // }).then((res) => {
  1305. // if(res.data.length == 0){
  1306. // this.$message({
  1307. // message: '暂无领导审批,发起失败!',
  1308. // type: 'error'
  1309. // });
  1310. // return
  1311. // }else{
  1312. // param.params.assigneeNo=res.data[0].loginNoStr;
  1313. // param.params.assigneeName=res.data[0].loginNameStr;
  1314. // _this.submitInfo("/bpm/api/submitTask", param);
  1315. // return
  1316. // }
  1317. // });
  1318. // }else if(this.vision == '渠道经理会签'||this.vision == '上线管理'){
  1319. // param.params.assigneeNo= this.opno;
  1320. // param.params.assigneeName= this.opname;
  1321. // this.submitInfo("/bpm/api/submitTask", param);
  1322. // }
  1323. if (this.vision == "信息补填") {
  1324. param.params.fillList = JSON.stringify(this.infodatas);
  1325. this.submitInfo("/bpm/api/submitTask", param);
  1326. } else {
  1327. if (this.vision == "流程发起") {
  1328. let attList = [];
  1329. for (let i = 0; i < this.attList.length; i++) {
  1330. attList.push({
  1331. id: this.attList[i].id,
  1332. fileCode: this.attList[i].fileCode,
  1333. fileName: this.attList[i].fileName,
  1334. opName: this.attList[i].opName,
  1335. opNo: this.attList[i].opNo,
  1336. opTime: this.attList[i].opTime,
  1337. woNo: this.infolist.woNo,
  1338. attchFileId: this.attList[i].attchFileId,
  1339. });
  1340. }
  1341. param.params.attList = JSON.stringify(attList);
  1342. this.$http({
  1343. url: "/market/bpmTemp/del",
  1344. method: "post",
  1345. headers: {
  1346. "Content-Type": "application/json",
  1347. },
  1348. data: {
  1349. bpmType: "1",
  1350. },
  1351. }).then((res) => {
  1352. //console.log(res)
  1353. });
  1354. }
  1355. this.submitInfo("/bpm/api/submitTask", param);
  1356. }
  1357. }
  1358. this.checkexa = false;
  1359. },
  1360. //添加
  1361. dialogCliadd(v) {
  1362. let _this = this;
  1363. let info = {};
  1364. info.params = {};
  1365. info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD");
  1366. info.opNo = this.userInfo.loginNo;
  1367. info.opName = this.userInfo.loginName;
  1368. info.woTitle = this.infolist.demandName;
  1369. info.params.terminalRes = this.infolist;
  1370. info.params.terminalRes.busiStartTime = this.busiTime[0]
  1371. ? _this.$formatDate(this.busiTime[0], "YYYY-MM-DD")
  1372. : "";
  1373. info.params.terminalRes.busiEndTime = this.busiTime[1]
  1374. ? _this.$formatDate(this.busiTime[1], "YYYY-MM-DD")
  1375. : "";
  1376. info.procId = this.terminal;
  1377. info.params.assigneeNo = this.treeListonly.leaderAuditNo;
  1378. info.params.assigneeName = this.treeListonly.leaderAuditName;
  1379. for (let i = 0; i < this.options.length; i++) {
  1380. if (this.terminal == this.options[i].procId) {
  1381. info.procName = this.options[i].procName;
  1382. info.procVersion = this.options[i].procVersion;
  1383. }
  1384. }
  1385. let attList = [];
  1386. for (let i = 0; i < this.attList.length; i++) {
  1387. attList.push({
  1388. id: this.attList[i].id,
  1389. fileCode: this.attList[i].fileCode,
  1390. fileName: this.attList[i].fileName,
  1391. opName: this.attList[i].opName,
  1392. opNo: this.attList[i].opNo,
  1393. opTime: this.attList[i].opTime,
  1394. woNo: this.infolist.woNo,
  1395. attchFileId: this.attList[i].attchFileId,
  1396. });
  1397. }
  1398. let fillList = [{}, {}];
  1399. info.params.fillList = JSON.stringify(fillList);
  1400. info.params.attList = JSON.stringify(attList);
  1401. info.params.terminalRes = JSON.stringify(info.params.terminalRes);
  1402. this.checkexa = false;
  1403. this.visionchonly = false;
  1404. this.submitInfo("/bpm/api/startProc", info);
  1405. },
  1406. submitInfo(u, v) {
  1407. let _this = this;
  1408. this.$refs.infolist.validate((valid) => {
  1409. if (valid) {
  1410. this.$http({
  1411. url: u,
  1412. method: "post",
  1413. headers: {
  1414. "Content-Type": "application/json",
  1415. },
  1416. data: v,
  1417. }).then((res) => {
  1418. if (res.data.result === 1) {
  1419. _this.$message({
  1420. message: res.data.desc,
  1421. type: "error",
  1422. });
  1423. } else {
  1424. _this.$message({
  1425. message: "成功",
  1426. type: "success",
  1427. });
  1428. _this.closedia();
  1429. _this.infolist = {};
  1430. _this.attList = [];
  1431. _this.fileInfo.fileList = [];
  1432. _this.getList(this.params, this.pageSize);
  1433. }
  1434. });
  1435. }
  1436. });
  1437. },
  1438. getStanding() {
  1439. this.$router.push({
  1440. path: "/ywStanding",
  1441. });
  1442. this.setabList("线上业务需求台账", "/ywStanding");
  1443. },
  1444. setabList(n, p) {
  1445. let params = {
  1446. children: "",
  1447. name: n,
  1448. rountPath: p,
  1449. target: "_self",
  1450. };
  1451. for (let i = 0; i < this.$store.state.tabList.length; i++) {
  1452. if (this.$store.state.tabList[i].name === params.name) {
  1453. this.$store.state.tabList[i] = params;
  1454. }
  1455. }
  1456. let set = new Set([...this.$store.state.tabList, params]);
  1457. set.add(params);
  1458. this.$store.commit("setDefaultActive", params.rountPath);
  1459. this.$store.commit("setTabList", Array.from(set));
  1460. },
  1461. //流程
  1462. getTermianl() {
  1463. this.$http({
  1464. url: "/bpm/api/queryBpmProcList",
  1465. method: "post",
  1466. headers: {
  1467. "Content-Type": "application/json",
  1468. page: '{"pageNo":"' + 1 + '","pageSize":"100"}',
  1469. },
  1470. data: {},
  1471. }).then((res) => {
  1472. this.options = res.data.data;
  1473. });
  1474. },
  1475. closeMessage(v) {
  1476. this.centerDialogVisible = false;
  1477. let _this = this;
  1478. if (v === 1) {
  1479. _this
  1480. .$http({
  1481. url: "/bpm/api/deleteBpmPrePlugin",
  1482. method: "post",
  1483. headers: {
  1484. "Content-Type": "application/json",
  1485. },
  1486. data: {
  1487. id: this.delid,
  1488. },
  1489. })
  1490. .then((res) => {
  1491. if (res.data.result === 1) {
  1492. _this.$message({
  1493. message: res.data.desc,
  1494. type: "error",
  1495. });
  1496. } else {
  1497. _this.$message({
  1498. message: "删除成功",
  1499. type: "success",
  1500. });
  1501. _this.getList(this.params, this.pageSize);
  1502. }
  1503. });
  1504. }
  1505. },
  1506. //删除
  1507. delLine(v) {
  1508. this.centerDialogVisible = true;
  1509. this.messTit = "即将删除此条数据, 是否删除?";
  1510. this.delid = v.id;
  1511. },
  1512. //文件返回值
  1513. uploadBack(v) {
  1514. this.attList = v;
  1515. },
  1516. uploadBackin(v) {
  1517. let x = [];
  1518. for (let i = 1; i < v.data.body.length; i++) {
  1519. x.push({
  1520. factoryName: v.data.body[i].factoryName,
  1521. workLoad: v.data.body[i].workLoad,
  1522. });
  1523. }
  1524. this.infodatas = x;
  1525. },
  1526. //功能栏
  1527. iconCli(v) {
  1528. if (v === 1) {
  1529. this.getList(this.params, this.pageSize);
  1530. }
  1531. if (v === 2) {
  1532. this.fullscreen = !this.fullscreen;
  1533. }
  1534. },
  1535. getUser() {
  1536. this.userInfo = JSON.parse(window.sessionStorage.userInfo);
  1537. },
  1538. // 字典
  1539. // 需求类别 demandType
  1540. // 承载渠道 demandChnl
  1541. getsaleChnl() {
  1542. this.$http({
  1543. url: "/market/cfgDataDict/queryList",
  1544. method: "post",
  1545. headers: {
  1546. "Content-Type": "application/json",
  1547. },
  1548. data: {
  1549. dictCode: "demandType",
  1550. },
  1551. }).then((res) => {
  1552. this.demandTypeopt = res.data;
  1553. });
  1554. this.$http({
  1555. url: "/market/cfgDataDict/queryList",
  1556. method: "post",
  1557. headers: {
  1558. "Content-Type": "application/json",
  1559. },
  1560. data: {
  1561. dictCode: "demandChnl",
  1562. },
  1563. }).then((res) => {
  1564. this.carryChannelopt = res.data;
  1565. });
  1566. },
  1567. },
  1568. mounted() {
  1569. // 调用初始化接口
  1570. this.handleInit();
  1571. // this.getList({}, 1);
  1572. this.getUser();
  1573. this.getTermianl();
  1574. this.getsaleChnl();
  1575. },
  1576. created() {},
  1577. };
  1578. </script>
  1579. <style scoped lang="scss">
  1580. .onetab {
  1581. margin-bottom: 20px;
  1582. padding: 0 20px;
  1583. }
  1584. .simple-dialog {
  1585. position: relative;
  1586. min-height: 90vh;
  1587. }
  1588. .info {
  1589. &-footer {
  1590. display: flex;
  1591. margin-top: 50px;
  1592. justify-content: flex-end;
  1593. margin-bottom: 50px;
  1594. }
  1595. &-upload {
  1596. width: 500px !important;
  1597. }
  1598. }
  1599. .titbox {
  1600. div {
  1601. float: right;
  1602. i {
  1603. font-size: 22px;
  1604. margin-left: 20px;
  1605. cursor: pointer;
  1606. }
  1607. }
  1608. }
  1609. .upload {
  1610. position: relative;
  1611. left: calc(50% - 229px / 2);
  1612. vertical-align: middle;
  1613. display: flex !important;
  1614. flex-direction: column;
  1615. }
  1616. .tabbox {
  1617. margin-top: 15px;
  1618. }
  1619. .pageBox {
  1620. text-align: right;
  1621. margin-top: 10px;
  1622. }
  1623. .info-line {
  1624. width: 100%;
  1625. display: block;
  1626. padding-left: 20px;
  1627. div {
  1628. width: 50%;
  1629. display: inline-block;
  1630. }
  1631. span {
  1632. width: 100px;
  1633. display: inline-block;
  1634. text-align: left;
  1635. i {
  1636. color: red;
  1637. display: inline-block;
  1638. padding-right: 5px;
  1639. }
  1640. }
  1641. .el-select,
  1642. .el-input {
  1643. width: calc(100% - 120px);
  1644. }
  1645. }
  1646. .online {
  1647. width: 100%;
  1648. .el-select {
  1649. width: calc(100% - 100px);
  1650. }
  1651. span {
  1652. vertical-align: top;
  1653. }
  1654. .el-textarea {
  1655. width: calc(100% - 120px);
  1656. }
  1657. .tree {
  1658. width: calc(50% - 60px);
  1659. display: inline-block;
  1660. margin-right: 20px;
  1661. height: 300px;
  1662. overflow-y: scroll;
  1663. .el-icon-error {
  1664. float: right;
  1665. font-size: 20px;
  1666. margin-top: 9px;
  1667. cursor: pointer;
  1668. }
  1669. }
  1670. .treeUser {
  1671. margin: 0;
  1672. border: 1px solid #ddd;
  1673. p {
  1674. background: #f4f4f4;
  1675. padding: 0 20px;
  1676. border-bottom: 1px solid #fff;
  1677. }
  1678. }
  1679. .treeUserb {
  1680. width: calc(100% - 100px);
  1681. border: 1px solid #ddd;
  1682. background: #f4f4f4;
  1683. border-radius: 3px;
  1684. height: auto;
  1685. overflow: hidden;
  1686. p {
  1687. display: inline-block;
  1688. padding: 0 20px;
  1689. // margin-bottom: 5px;
  1690. }
  1691. }
  1692. }
  1693. .adv-type {
  1694. margin-top: 20px;
  1695. display: flex;
  1696. justify-content: space-between;
  1697. flex-wrap: wrap;
  1698. // border: 1px solid #ddd;
  1699. border-radius: 5px;
  1700. padding: 20px;
  1701. box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
  1702. div {
  1703. width: 33%;
  1704. text-align: center;
  1705. height: 80px;
  1706. overflow: hidden;
  1707. min-width: 100px;
  1708. cursor: pointer;
  1709. padding-top: 10px;
  1710. margin: 10px 0;
  1711. }
  1712. div:hover {
  1713. background: #cfe8fc;
  1714. border-radius: 5px;
  1715. }
  1716. span {
  1717. width: 100%;
  1718. display: inline-block;
  1719. height: 40px;
  1720. // line-height: 40px;
  1721. i {
  1722. color: #0074d9;
  1723. font-size: 36px;
  1724. }
  1725. }
  1726. }
  1727. </style>