marketDecisionMeeting.vue 38 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108
  1. <template>
  2. <fullscreen :fullscreen.sync="fullscreen" class="container">
  3. <div class="container-box">
  4. <toolList @iconCli="iconCli" :tooltit="tooltit"></toolList>
  5. <div class="search">
  6. <div class="search-item">
  7. <label>年份</label>
  8. <el-date-picker
  9. v-model="year"
  10. type="year"
  11. placeholder="年份"
  12. value-format="yyyy"
  13. >
  14. </el-date-picker>
  15. </div>
  16. <div class="search-item">
  17. <label>月份</label>
  18. <el-select clearable v-model="month" placeholder="月份">
  19. <el-option
  20. v-for="i in monthOpt"
  21. :key="i"
  22. :label="`${i}月`"
  23. :value="`${i}`"
  24. >
  25. </el-option>
  26. </el-select>
  27. </div>
  28. <el-button
  29. class="btn-check"
  30. size="medium"
  31. type="primary"
  32. plain
  33. icon="el-icon-search"
  34. @click="searchInfo"
  35. >搜索
  36. </el-button>
  37. </div>
  38. <div class="tabbox">
  39. <el-table
  40. height="calc(100% - 40px)"
  41. class="com-table"
  42. ref="multipleTable"
  43. :data="tableData"
  44. tooltip-effect="dark"
  45. size="small"
  46. border
  47. style="width: 100%"
  48. v-loading="loading"
  49. >
  50. <el-table-column label="会议时间" align="center" width="300px" :formatter="dateFormat">
  51. <!-- <template slot-scope="scope">
  52. <span>{{
  53. $formatDate(scope.row.meetingTime, "YYYY-MM-DD")
  54. }}</span>
  55. </template> -->
  56. </el-table-column>
  57. <el-table-column prop="meetingName" label="会议名称" align="center">
  58. </el-table-column>
  59. <el-table-column label="操作" align="center">
  60. <template slot-scope="scope">
  61. <el-button
  62. size="mini"
  63. type="primary"
  64. @click="jump(2, scope.row)"
  65. >上传</el-button
  66. >
  67. <el-button
  68. size="mini"
  69. type="primary"
  70. @click="jump(1, scope.row)"
  71. >查看及导出</el-button
  72. >
  73. </template>
  74. </el-table-column>
  75. </el-table>
  76. <el-pagination
  77. class="pageBox"
  78. @current-change="currchange"
  79. layout="prev, pager, next"
  80. background
  81. :total="total"
  82. >
  83. </el-pagination>
  84. </div>
  85. </div>
  86. <el-dialog
  87. :title="titname"
  88. :visible.sync="dialogStatus"
  89. width="70%"
  90. :destroy-on-close="true"
  91. :modal-append-to-body="false"
  92. :close-on-click-modal="false"
  93. :before-close="closedia"
  94. :fullscreen="false"
  95. >
  96. <div v-loading="loadinged">
  97. <el-table
  98. :data="infoTableData"
  99. border
  100. size="mini"
  101. style="margin: 20px 0;"
  102. height="50vh"
  103. >
  104. <el-table-column prop="serialNumber" label="序号">
  105. </el-table-column>
  106. <el-table-column label="线条">
  107. <template slot-scope="scope">
  108. <span>{{
  109. billOpt[scope.row.topicsType].billName
  110. }}</span>
  111. </template>
  112. </el-table-column>
  113. <el-table-column prop="topicsName" label="议题名称">
  114. </el-table-column>
  115. <el-table-column prop="remark" label="概要">
  116. </el-table-column>
  117. <el-table-column prop="declarantApply" label="需参加部门">
  118. </el-table-column>
  119. <el-table-column prop="dept" label="申报人部门">
  120. </el-table-column>
  121. <el-table-column prop="department" label="申报科室">
  122. </el-table-column>
  123. <el-table-column prop="declarant" label="申报人姓名">
  124. </el-table-column>
  125. <el-table-column prop="reporting" label="汇报时长(小时)">
  126. </el-table-column>
  127. <el-table-column
  128. label="操作"
  129. width="150px"
  130. align="center"
  131. >
  132. <template slot-scope="scope">
  133. <el-button
  134. size="mini"
  135. type="primary"
  136. @click="jump(3, scope.row)"
  137. v-if="scope.row.opNo == loginNoStr"
  138. >编辑</el-button
  139. >
  140. <el-button
  141. size="mini"
  142. type="primary"
  143. @click="jump(4, scope.row)"
  144. v-if="scope.row.opNo == loginNoStr"
  145. >删除</el-button
  146. >
  147. </template>
  148. </el-table-column>
  149. </el-table>
  150. <div slot="footer" class="dialog-footer myfooter">
  151. <el-button type="primary" @click="dialogCli(1)" v-if="isAllExport"
  152. >全量导出</el-button
  153. >
  154. <el-button type="primary" @click="closedia">确定</el-button>
  155. <el-button @click="closedia">取消</el-button>
  156. </div>
  157. </div>
  158. </el-dialog>
  159. <el-dialog
  160. :title="titname"
  161. :visible.sync="uploadDialogStatus"
  162. width="50%"
  163. :destroy-on-close="true"
  164. :modal-append-to-body="false"
  165. :close-on-click-modal="false"
  166. :before-close="closedia"
  167. :fullscreen="false"
  168. >
  169. <div v-loading="loadinged">
  170. <el-form :model="infolist" ref="infolist" :rules="rules">
  171. <div class="info-line">
  172. <el-form-item>
  173. <span>序号</span>
  174. <el-input
  175. v-model="infolist.serialNumber"
  176. disabled
  177. ></el-input>
  178. </el-form-item>
  179. <el-form-item prop="dept">
  180. <span>申报部门</span>
  181. <el-input v-model="infolist.dept"></el-input>
  182. </el-form-item>
  183. <el-form-item prop="topicsName">
  184. <span>议题名称</span>
  185. <el-input v-model="infolist.topicsName"></el-input>
  186. </el-form-item>
  187. <el-form-item prop="department">
  188. <span>申报科室</span>
  189. <el-input v-model="infolist.department"></el-input>
  190. </el-form-item>
  191. <el-form-item prop="topicsType">
  192. <span>线条</span>
  193. <el-select
  194. clearable
  195. v-model="infolist.topicsType"
  196. placeholder="线条"
  197. >
  198. <el-option
  199. v-for="(items, index) in billOpt"
  200. :key="index"
  201. :label="items.billName"
  202. :value="items.billId"
  203. >
  204. </el-option>
  205. </el-select>
  206. </el-form-item>
  207. <el-form-item prop="declarant">
  208. <span>申报姓名</span>
  209. <el-input v-model="infolist.declarant"></el-input>
  210. </el-form-item>
  211. <el-form-item prop="declarantApply">
  212. <span>需参加部门</span>
  213. <el-input
  214. v-model="infolist.declarantApply"
  215. ></el-input>
  216. </el-form-item>
  217. <el-form-item prop="reporting">
  218. <span>汇报时长(小时)</span>
  219. <el-input
  220. v-model="infolist.reporting"
  221. oninput="value=value.replace(/[^0-9.]/g,'')"
  222. ></el-input>
  223. </el-form-item>
  224. </div>
  225. <div class="info-line2">
  226. <el-form-item prop="remark">
  227. <span>概要</span>
  228. <div class="remark-box">
  229. <div style="padding-left: 20px">
  230. <el-input
  231. type="textarea"
  232. v-model="infolist.remark"
  233. maxlength="300"
  234. show-word-limit
  235. ></el-input>
  236. </div>
  237. </div>
  238. </el-form-item>
  239. <el-form-item>
  240. <span>附件</span>
  241. <div class="upload-box">
  242. <div>
  243. <myMeetingUpload
  244. @uploadBack="uploadBack"
  245. :fileInfo="fileInfo"
  246. :fileList="fileInfo.fileList"
  247. >
  248. </myMeetingUpload>
  249. </div>
  250. </div>
  251. </el-form-item>
  252. </div>
  253. </el-form>
  254. <div slot="footer" class="dialog-footer myfooter">
  255. <el-button type="primary" @click="dialogCli(3)"
  256. >保存</el-button
  257. >
  258. <el-button @click="closedia">取消</el-button>
  259. </div>
  260. </div>
  261. </el-dialog>
  262. <el-dialog
  263. :title="titname"
  264. :visible.sync="editDialogStatus"
  265. width="50%"
  266. :destroy-on-close="true"
  267. :modal-append-to-body="false"
  268. :close-on-click-modal="false"
  269. :before-close="editClosedia"
  270. :fullscreen="false"
  271. >
  272. <div v-loading="loadinged">
  273. <el-form
  274. :model="editInfolist"
  275. ref="editInfolist"
  276. :rules="rules"
  277. >
  278. <div class="info-line">
  279. <el-form-item>
  280. <span>序号</span>
  281. <el-input
  282. v-model="editInfolist.serialNumber"
  283. disabled
  284. ></el-input>
  285. </el-form-item>
  286. <el-form-item prop="dept">
  287. <span>申报部门</span>
  288. <el-input v-model="editInfolist.dept"></el-input>
  289. </el-form-item>
  290. <el-form-item prop="topicsName">
  291. <span>议题名称</span>
  292. <el-input
  293. v-model="editInfolist.topicsName"
  294. ></el-input>
  295. </el-form-item>
  296. <el-form-item prop="department">
  297. <span>申报科室</span>
  298. <el-input
  299. v-model="editInfolist.department"
  300. ></el-input>
  301. </el-form-item>
  302. <el-form-item prop="topicsType">
  303. <span>线条</span>
  304. <el-select
  305. clearable
  306. v-model="editInfolist.topicsType"
  307. placeholder="线条"
  308. >
  309. <el-option
  310. v-for="(items, index) in billOpt"
  311. :key="index"
  312. :label="items.billName"
  313. :value="items.billId"
  314. >
  315. </el-option>
  316. </el-select>
  317. </el-form-item>
  318. <el-form-item prop="declarant">
  319. <span>申报姓名</span>
  320. <el-input
  321. v-model="editInfolist.declarant"
  322. ></el-input>
  323. </el-form-item>
  324. <el-form-item prop="declarantApply">
  325. <span>需参加部门</span>
  326. <el-input
  327. v-model="editInfolist.declarantApply"
  328. ></el-input>
  329. </el-form-item>
  330. <el-form-item prop="reporting">
  331. <span>汇报时长(小时)</span>
  332. <el-input
  333. v-model="editInfolist.reporting"
  334. oninput="value=value.replace(/[^0-9.]/g,'')"
  335. ></el-input>
  336. </el-form-item>
  337. </div>
  338. <div class="info-line2">
  339. <el-form-item prop="remark">
  340. <span>概要</span>
  341. <div class="remark-box">
  342. <div style="padding-left: 20px">
  343. <el-input
  344. type="textarea"
  345. v-model="editInfolist.remark"
  346. maxlength="300"
  347. show-word-limit
  348. ></el-input>
  349. </div>
  350. </div>
  351. </el-form-item>
  352. <el-form-item>
  353. <span>附件</span>
  354. <div class="upload-box">
  355. <div>
  356. <myMeetingUpload
  357. @uploadBack="uploadBack"
  358. :fileInfo="fileInfo"
  359. :fileList="fileInfo.fileList"
  360. >
  361. </myMeetingUpload>
  362. </div>
  363. </div>
  364. </el-form-item>
  365. </div>
  366. </el-form>
  367. <div slot="footer" class="dialog-footer myfooter">
  368. <el-button type="primary" @click="dialogCli(4)"
  369. >保存</el-button
  370. >
  371. <el-button @click="editClosedia">取消</el-button>
  372. </div>
  373. </div>
  374. </el-dialog>
  375. <myMessage
  376. :messTit="messTit"
  377. @closeMessage="closeMessage"
  378. :centerDialogVisible="centerDialogVisible"
  379. v-if="centerDialogVisible"
  380. ></myMessage>
  381. </fullscreen>
  382. </template>
  383. <script>
  384. // import mySearch from "../../../components/search.vue";
  385. import myMessage from "../../../components/myMessage.vue";
  386. import toolList from "../../../components/toolList";
  387. // import myUpload from "../../../components/upload";
  388. import myMeetingUpload from "../../../components/meetingDeclarationUpload";
  389. export default {
  390. components: {
  391. // mySearch,
  392. myMessage,
  393. toolList,
  394. // myUpload,
  395. myMeetingUpload
  396. },
  397. data() {
  398. const reporting = (rule, value, callback) => {
  399. if (!value) {
  400. callback(new Error("不能为空"));
  401. } else if (
  402. value.indexOf(".") != -1 &&
  403. value.split(".").length > 2
  404. ) {
  405. callback(new Error("请输入正确格式数字")); //防止输入多个小数点
  406. } else if (
  407. value.indexOf(".") != -1 &&
  408. value.split(".")[1].length > 1
  409. ) {
  410. callback(new Error("小数点后一位")); //小数点后两位
  411. } else {
  412. callback();
  413. }
  414. };
  415. return {
  416. rules: {
  417. topicsType: [
  418. {
  419. required: true,
  420. trigger: "change",
  421. message: "不能为空"
  422. }
  423. ],
  424. topicsName: [
  425. {
  426. required: true,
  427. trigger: "blur",
  428. message: "不能为空"
  429. }
  430. ],
  431. department: [
  432. {
  433. required: true,
  434. trigger: "change",
  435. message: "不能为空"
  436. }
  437. ],
  438. dept: [
  439. {
  440. required: true,
  441. trigger: "change",
  442. message: "不能为空"
  443. }
  444. ],
  445. declarant: [
  446. {
  447. required: true,
  448. trigger: "blur",
  449. message: "不能为空"
  450. }
  451. ],
  452. reporting: [
  453. {
  454. required: true,
  455. trigger: "blur",
  456. validator: reporting
  457. }
  458. ],
  459. declarantApply: [
  460. {
  461. required: true,
  462. trigger: "blur",
  463. message: "不能为空"
  464. }
  465. ],
  466. remark: [
  467. {
  468. required: true,
  469. trigger: "blur",
  470. message: "不能为空"
  471. }
  472. ]
  473. },
  474. tooltit: "",
  475. fullscreen: false,
  476. total: 0,
  477. pageSize: 1,
  478. tableData: [],
  479. //点击查看后,table
  480. infoTableData: [],
  481. dialogStatus: false,
  482. disableStatus: false,
  483. uploadDialogStatus: false,
  484. editDialogStatus: false,
  485. titname: "",
  486. infolist: {},
  487. editInfolist: {},
  488. userInfo: {},
  489. params: {},
  490. centerDialogVisible: false,
  491. messTit: "",
  492. delid: "",
  493. loading: false,
  494. loadinged: false,
  495. fileInfo: {
  496. limit: 50,
  497. url: "/market/cMeetingDeclaration/upload",
  498. fileList: []
  499. },
  500. fileList: [], // 回显附件数据源
  501. attList: [],
  502. //线条下拉
  503. billOpt: [
  504. {
  505. billName: "C",
  506. billId: "0"
  507. },
  508. {
  509. billName: "H",
  510. billId: "1"
  511. },
  512. {
  513. billName: "N+线上",
  514. billId: "2"
  515. },
  516. {
  517. billName: "渠道",
  518. billId: "3"
  519. },
  520. {
  521. billName: "业务综合",
  522. billId: "4"
  523. }
  524. ],
  525. year: this.$formatDate(new Date().getTime(), "YYYY"),
  526. month: "",
  527. mId: "",
  528. mName:"",
  529. personInfo: [],
  530. monthOpt: [
  531. "01",
  532. "02",
  533. "03",
  534. "04",
  535. "05",
  536. "06",
  537. "07",
  538. "08",
  539. "09",
  540. "10",
  541. "11",
  542. "12"
  543. ],
  544. menus: JSON.parse(window.sessionStorage.childrenMenus),
  545. isAllExport: false
  546. };
  547. },
  548. methods: {
  549. dateFormat(row,column){
  550. const daterc = row[column.property]
  551. return daterc.split(' ')[0];
  552. },
  553. jump(v, n) {
  554. //1 查看 2上传 3编辑修改 4删除一条
  555. if (v === 1) {
  556. this.titname = "查看";
  557. this.dialogStatus = true;
  558. this.getInfo(n.id);
  559. this.mId = n.id;
  560. this.mName = n.meetingName;
  561. } else if (v === 2) {
  562. this.titname = "上传";
  563. this.uploadDialogStatus = true;
  564. this.attList = [];
  565. this.fileInfo.fileList = [];
  566. this.infolist.serialNumber = this.$formatDate(
  567. new Date().getTime(),
  568. "YYYYMMDDHHmmss"
  569. );
  570. if (this.personInfo.length === 2) {
  571. this.$set(this.infolist, "dept", this.personInfo[1]);
  572. } else if (this.personInfo.length === 3) {
  573. this.$set(this.infolist, "dept", this.personInfo[1]);
  574. this.$set(this.infolist, "department", this.personInfo[2]);
  575. }
  576. this.$set(this.infolist, "declarant", this.userInfo.loginName);
  577. this.infolist.meetingId = n.id;
  578. } else if (v === 3) {
  579. this.titname = "编辑";
  580. this.editDialogStatus = true;
  581. this.editInfolist = n;
  582. // this.editInfolist.attList = [
  583. // {
  584. // "id": "202202180519593136",
  585. // "fileName": "2021年广告宣传费台账-全省汇总.xlsx",
  586. // "fileCode": "202202180519593136",
  587. // "opName": "admin",
  588. // "opNo": "admin",
  589. // "opTime": "2022-02-18 17:19:59"
  590. // }
  591. // ]
  592. this.attList = [];
  593. this.editInfolist.attList.forEach(item => {
  594. this.fileInfo.fileList.push({
  595. name: item.fileName,
  596. url: "",
  597. id: item.id,
  598. fileName: item.fileName,
  599. fileCode: item.fileCode,
  600. opName: item.opName,
  601. opNo: item.opNo,
  602. opTime: item.opTime,
  603. });
  604. this.attList.push({
  605. name: item.fileName,
  606. url: "",
  607. id: item.id,
  608. fileName: item.fileName,
  609. fileCode: item.fileCode,
  610. opName: item.opName,
  611. opNo: item.opNo,
  612. opTime: item.opTime,
  613. });
  614. });
  615. } else if (v === 4) {
  616. this.loadinged = true;
  617. this.$http({
  618. url: "/market/cMeetingDeclaration/delInfo",
  619. method: "post",
  620. headers: {
  621. "Content-Type": "application/json"
  622. },
  623. data: { id: n.id }
  624. }).then(res => {
  625. this.loadinged = false;
  626. if (res.data.result === 0) {
  627. this.getInfo(n.meetingId);
  628. } else {
  629. this.$message({
  630. message: res.data.desc,
  631. type: "error"
  632. });
  633. }
  634. });
  635. }
  636. },
  637. //获取信息,查看
  638. getInfo(n) {
  639. this.$http({
  640. url:
  641. "/market/cMeetingDeclaration/queryMkMeetingDeclarationInfoList",
  642. method: "post",
  643. headers: {
  644. "Content-Type": "application/json"
  645. },
  646. data: { meetingId: n }
  647. }).then(res => {
  648. this.infoTableData = res.data;
  649. });
  650. },
  651. closedia() {
  652. this.infolist = {};
  653. this.dialogStatus = false;
  654. this.uploadDialogStatus = false;
  655. },
  656. editClosedia() {
  657. this.editDialogStatus = false;
  658. this.fileInfo.fileList = []
  659. },
  660. //搜索数据
  661. searchInfo() {
  662. this.params = {};
  663. this.year ? (this.params.creatTime = this.year) : "";
  664. this.month
  665. ? (this.params.creatTime =
  666. (this.year == null
  667. ? (this.year = this.$formatDate(
  668. new Date().getTime(),
  669. "YYYY"
  670. ))
  671. : this.year) +
  672. "-" +
  673. this.month)
  674. : "";
  675. this.getList(this.params, 1);
  676. },
  677. //获取列表
  678. getList(v, n) {
  679. this.pageSize = n;
  680. // let _this = this;
  681. this.loading = true;
  682. this.tableData = [];
  683. this.$http({
  684. url:
  685. "/market/cMeetingDeclaration/queryMkMeetingDeclarationPageForType2",
  686. method: "post",
  687. headers: {
  688. "Content-Type": "application/json",
  689. page: '{"pageNo":"' + n + '","pageSize":"10"}'
  690. },
  691. data: v
  692. }).then(res => {
  693. this.tableData = res.data.data;
  694. this.total = res.data.totalRecord;
  695. this.loading = false;
  696. });
  697. },
  698. // 分页
  699. currchange(v) {
  700. this.pageSize = v;
  701. this.getList(this.params, this.pageSize);
  702. },
  703. //添加
  704. dialogCli(v) {
  705. //1全量导出 2确定 3上传提交(新增) 4修改提交
  706. if (v === 1) {
  707. this.$http({
  708. url: "/market/cMeetingDeclaration/downfile",
  709. method: "post",
  710. headers: {
  711. "Content-Type": "application/json"
  712. },
  713. responseType: "blob",
  714. data: { meetingId: this.mId }
  715. }).then(res => {
  716. if (window.navigator && window.navigator.msSaveOrOpenBlob) {
  717. let blob = new Blob([res.data], {
  718. type: "application/x-msdownload"
  719. });
  720. window.navigator.msSaveOrOpenBlob(
  721. blob,
  722. // this.wo.bizName + ".xlsx"
  723. this.mName + ".zip"
  724. );
  725. } else {
  726. /* 火狐谷歌的文件下载方式 */
  727. var blob = new Blob([res.data]);
  728. var downloadElement = document.createElement("a");
  729. var href = window.URL.createObjectURL(blob);
  730. downloadElement.href = href;
  731. downloadElement.download = this.mName + ".zip";
  732. document.body.appendChild(downloadElement);
  733. downloadElement.click();
  734. document.body.removeChild(downloadElement);
  735. window.URL.revokeObjectURL(href);
  736. }
  737. });
  738. }
  739. // else if (v === 2) {
  740. // }
  741. else if (v === 3) {
  742. this.$refs.infolist.validate(valid => {
  743. if (valid) {
  744. //上传提交
  745. this.attList.forEach(item => {
  746. this.fileList.push({
  747. id: item.fileCode,
  748. fileCode: item.fileCode,
  749. fileName: item.fileName
  750. });
  751. });
  752. this.infolist.attList = this.fileList;
  753. this.submitInfo(
  754. "/market/cMeetingDeclaration/addInfo",
  755. this.infolist
  756. );
  757. }
  758. });
  759. } else if (v === 4) {
  760. this.$refs.editInfolist.validate(valid => {
  761. if (valid) {
  762. this.attList.forEach(item => {
  763. this.fileList.push({
  764. id: item.fileCode,
  765. fileCode: item.fileCode,
  766. fileName: item.fileName
  767. });
  768. });
  769. this.editInfolist.attList = this.fileList;
  770. this.editInfolist.meetingId = this.mId;
  771. this.submitInfo(
  772. "/market/cMeetingDeclaration/updateInfo",
  773. this.editInfolist
  774. );
  775. }
  776. });
  777. }
  778. },
  779. submitInfo(u, param) {
  780. let _this = this;
  781. this.loadinged = true;
  782. this.$http({
  783. url: u,
  784. method: "post",
  785. headers: {
  786. "Content-Type": "application/json"
  787. },
  788. data: param
  789. }).then(res => {
  790. this.loadinged = false;
  791. if (res.data.result === 0) {
  792. _this.$message({
  793. message: "成功",
  794. type: "success"
  795. });
  796. _this.infolist = {};
  797. _this.dialogStatus = false;
  798. _this.getList(_this.params, _this.pageSize);
  799. _this.uploadDialogStatus = false;
  800. _this.editDialogStatus = false;
  801. _this.attList = [];
  802. _this.fileInfo.fileList = [];
  803. _this.fileList = [];
  804. } else {
  805. _this.$message({
  806. message: res.data.desc,
  807. type: "error"
  808. });
  809. }
  810. });
  811. },
  812. closeMessage(v) {
  813. this.centerDialogVisible = false;
  814. let _this = this;
  815. if (v === 1) {
  816. _this
  817. .$http({
  818. url: "/market/cadvBusiMetirialWo/del",
  819. method: "post",
  820. headers: {
  821. "Content-Type": "application/json"
  822. },
  823. data: {
  824. woId: this.delid
  825. }
  826. })
  827. .then(res => {
  828. if (res.data.result === 1) {
  829. _this.$message({
  830. message: res.data.desc,
  831. type: "error"
  832. });
  833. } else {
  834. _this.$message({
  835. message: "删除成功",
  836. type: "success"
  837. });
  838. _this.getList(this.params, this.pageSize);
  839. }
  840. });
  841. }
  842. },
  843. //删除
  844. delLine(v) {
  845. this.centerDialogVisible = true;
  846. this.messTit = "即将删除此条数据, 是否删除?";
  847. this.delid = v.id;
  848. },
  849. //文件返回值
  850. uploadBack(v) {
  851. this.attList = v;
  852. },
  853. //功能栏
  854. iconCli(v) {
  855. if (v === 1) {
  856. this.getList(this.params, this.pageSize);
  857. }
  858. if (v === 2) {
  859. this.fullscreen = !this.fullscreen;
  860. }
  861. },
  862. getUser() {
  863. this.userInfo = JSON.parse(window.sessionStorage.userInfo);
  864. this.loginNoStr = this.userInfo.loginNoStr;
  865. this.personInfo = this.userInfo.groupName.split("/");
  866. }
  867. },
  868. mounted() {
  869. this.getList({}, 1);
  870. this.getUser();
  871. this.menus.forEach(item=>{
  872. if(item.jspUrl == '/allExport'){
  873. this.isAllExport = true
  874. }else{
  875. this.isAllExport = false
  876. }
  877. })
  878. },
  879. created() {}
  880. };
  881. </script>
  882. <style scoped lang="scss">
  883. .onetab {
  884. margin-bottom: 20px;
  885. padding: 0 20px;
  886. }
  887. .titbox {
  888. div {
  889. float: right;
  890. i {
  891. font-size: 22px;
  892. margin-left: 20px;
  893. cursor: pointer;
  894. }
  895. }
  896. }
  897. .tabbox {
  898. margin-top: 15px;
  899. }
  900. .pageBox {
  901. text-align: right;
  902. margin-top: 10px;
  903. }
  904. .info-line {
  905. width: 100%;
  906. display: block;
  907. padding-left: 20px;
  908. div {
  909. width: 50%;
  910. display: inline-block;
  911. }
  912. span {
  913. width: 100px;
  914. display: inline-block;
  915. text-align: left;
  916. i {
  917. color: red;
  918. display: inline-block;
  919. padding-right: 5px;
  920. }
  921. }
  922. .el-select,
  923. .el-input {
  924. width: calc(100% - 120px);
  925. }
  926. }
  927. .info-line2 {
  928. width: 100%;
  929. padding-left: 20px;
  930. .upload-box {
  931. width: calc(100% - 80px);
  932. display: inline-block;
  933. padding-left: 20px;
  934. }
  935. span {
  936. width: 60px;
  937. display: inline-block;
  938. text-align: left;
  939. vertical-align: top;
  940. i {
  941. color: red;
  942. display: inline-block;
  943. padding-right: 5px;
  944. }
  945. }
  946. .remark-box::v-deep {
  947. width: calc(100% - 80px);
  948. display: inline-block;
  949. padding-left: 20px;
  950. div {
  951. padding-bottom: 10px;
  952. }
  953. .el-textarea__inner {
  954. // resize: none !important;
  955. height: 10vh;
  956. }
  957. .el-textarea .el-input__count {
  958. right: 0px;
  959. bottom: -20px;
  960. background: rgba(0, 0, 0, 0);
  961. }
  962. }
  963. }
  964. .online {
  965. width: 100%;
  966. .el-select {
  967. width: calc(100% - 100px);
  968. }
  969. span {
  970. vertical-align: top;
  971. }
  972. .el-textarea {
  973. width: calc(100% - 100px);
  974. }
  975. }
  976. .adv-type {
  977. margin-top: 20px;
  978. display: flex;
  979. justify-content: space-between;
  980. flex-wrap: wrap;
  981. // border: 1px solid #ddd;
  982. border-radius: 5px;
  983. padding: 20px;
  984. box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
  985. div {
  986. width: 33%;
  987. text-align: center;
  988. height: 80px;
  989. overflow: hidden;
  990. min-width: 100px;
  991. cursor: pointer;
  992. padding-top: 10px;
  993. margin: 10px 0;
  994. }
  995. div:hover {
  996. background: #cfe8fc;
  997. border-radius: 5px;
  998. }
  999. span {
  1000. width: 100%;
  1001. display: inline-block;
  1002. height: 40px;
  1003. // line-height: 40px;
  1004. i {
  1005. color: #0074d9;
  1006. font-size: 36px;
  1007. }
  1008. }
  1009. }
  1010. .container::v-deep .el-upload-dragger {
  1011. width: auto !important;
  1012. height: 120px !important;
  1013. }
  1014. .container::v-deep .el-upload {
  1015. padding-left: 20px;
  1016. padding-right: 0;
  1017. }
  1018. .boximgc {
  1019. display: flex;
  1020. flex-wrap: wrap;
  1021. width: 100% !important;
  1022. margin-top: 20px;
  1023. div {
  1024. display: inline-block;
  1025. width: 18% !important;
  1026. margin-right: 2%;
  1027. margin-bottom: 20px;
  1028. overflow: hidden;
  1029. border: 1px solid #ddd;
  1030. border-radius: 3px;
  1031. background: #fff;
  1032. position: relative;
  1033. height: 100px;
  1034. img {
  1035. width: 100%;
  1036. position: absolute;
  1037. top: 0;
  1038. bottom: 0;
  1039. margin: auto;
  1040. // height: 100%;
  1041. }
  1042. }
  1043. }
  1044. .search {
  1045. margin-top: 20px;
  1046. display: -webkit-box;
  1047. display: -ms-flexbox;
  1048. display: flex;
  1049. -webkit-box-pack: start;
  1050. -ms-flex-pack: start;
  1051. justify-content: flex-start;
  1052. .search-item {
  1053. margin-right: 20px;
  1054. label {
  1055. margin-right: 20px;
  1056. }
  1057. }
  1058. }
  1059. .el-table{
  1060. overflow: auto;
  1061. }
  1062. .el-table__header-wrapper,.el-table__body-wrapper,.el-table__footer-wrapper{overflow:visible;}
  1063. .el-table__body-wrapper{
  1064. overflow-x:visible !important;
  1065. }
  1066. /* 这个是为了解决前面样式覆盖之后伪类带出来的竖线 */
  1067. .el-table::after{
  1068. position: relative;
  1069. }
  1070. </style>