amendsDetails.vue 62 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369
  1. <template>
  2. <div class="borderless" v-loading="pageLoading">
  3. <div class="customer-head">
  4. <div class="customer-back">
  5. <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
  6. @click="backToList">返回列表
  7. </el-button>
  8. </div>
  9. <div class="add-customer-btn">
  10. <el-button size="small" style="margin-right: 8px"
  11. :loading="saveLoading" :disabled="!form.id" @click="DesignreportDialog = true" >报表设计
  12. </el-button>
  13. <el-button size="small" type="success" style="margin-right: 8px" v-if="form.status == 0 || form.status == 4" :disabled="!form.id"
  14. :loading="saveLoading" @click="submitforApproval">提交请核
  15. </el-button>
  16. <el-button size="small" type="warning" plain
  17. v-if="form.status == 1" :disabled="!form.id"
  18. :loading="saveLoading" @click="revokepleaseReview">撤销请核
  19. </el-button>
  20. <span v-if="form.status == 2" style="font-size: 14px;margin-right: 10px;" >审核中</span>
  21. <span v-if="form.status == 3" style="font-size: 12px;margin-right: 10px;" >审核通过</span>
  22. <el-button size="small" type="primary" style="margin-right: 8px" :disabled="buttonDisable"
  23. :loading="saveLoading" @click="amendsSubmitfun">保 存
  24. </el-button>
  25. </div>
  26. </div>
  27. <div style="margin: 55px 5px 0px 5px;'">
  28. <el-card class="box-card">
  29. <el-form :model="form" ref="form" label-width="90px" class="demo-ruleForm">
  30. <el-row>
  31. <el-col :span="5">
  32. <el-form-item label="原M B/L NO:" prop="mblno">
  33. <el-input style="width: 100%;" v-model="form.mblno" :disabled="buttonDisable"
  34. size="small" autocomplete="off"
  35. clearable placeholder="请输入原M B/L NO">
  36. </el-input>
  37. </el-form-item>
  38. </el-col>
  39. <el-col :span="5">
  40. <el-form-item label="原H B/L NO:" prop="hblno">
  41. <el-input style="width: 100%;" v-model="form.hblno" :disabled="buttonDisable"
  42. size="small" autocomplete="off"
  43. clearable placeholder="请输入原H B/L NO">
  44. </el-input>
  45. </el-form-item>
  46. </el-col>
  47. <el-col :span="5">
  48. <el-form-item label="原RET MBLNO:" prop="refno" label-width="110px">
  49. <el-input style="width: 100%;" v-model="form.refno" :disabled="buttonDisable"
  50. size="small" autocomplete="off"
  51. clearable placeholder="请输入原RET MBLNO">
  52. </el-input>
  53. </el-form-item>
  54. </el-col>
  55. <el-col :span="5">
  56. <el-form-item label="AMEND原因:" prop="responsibleParty">
  57. <search-query :datalist="responsiblePartyData"
  58. :selectValue="form.responsibleParty"
  59. :filterable="true"
  60. :disabled="buttonDisable"
  61. :clearable="true"
  62. :buttonIf="false"
  63. placeholder="请选择AMEND原因"
  64. :forParameter="{key:'dictKey',label:'dictValue',value:'dictKey'}"
  65. @corpChange="corpChange($event,'responsibleParty')"
  66. @corpFocus="amendReasonfun" >
  67. </search-query>
  68. </el-form-item>
  69. </el-col>
  70. <el-col :span="10">
  71. <el-col :span="15">
  72. <el-form-item label="客户名称:" prop="corpCnName">
  73. <el-input style="width: 100%;" v-model="form.corpCnName"
  74. size="small" autocomplete="off"
  75. :disabled="true"
  76. clearable placeholder="客户名称">
  77. </el-input>
  78. </el-form-item>
  79. </el-col>
  80. <el-col :span="9">
  81. <el-form-item label="" prop="corpEnName" label-width="5px">
  82. <el-input style="width: 100%;" v-model="form.corpEnName"
  83. size="small" autocomplete="off"
  84. :disabled="true"
  85. clearable placeholder="客户名称">
  86. </el-input>
  87. </el-form-item>
  88. </el-col>
  89. </el-col>
  90. <el-col :span="5">
  91. <el-form-item label="业务类型:" prop="businessType">
  92. <search-query :datalist="origSeaTypeData"
  93. :selectValue="form.origSeaType"
  94. :filterable="true"
  95. :disabled="true"
  96. :clearable="true"
  97. :buttonIf="false"
  98. placeholder="业务类型">
  99. </search-query>
  100. </el-form-item>
  101. </el-col>
  102. <el-col :span="5">
  103. <el-form-item label="原业务编号:" prop="billNo">
  104. <el-input style="width: 100%;" v-model="form.origBillNo"
  105. size="small" autocomplete="off"
  106. :disabled="true"
  107. clearable placeholder="原业务编号">
  108. </el-input>
  109. </el-form-item>
  110. </el-col>
  111. <el-col :span="4">
  112. <el-form-item label="制单日期:" prop="voucherDate">
  113. <el-date-picker v-model="form.voucherDate" clearable
  114. style="width: 100%;"
  115. type="date" size="small"
  116. value-format="yyyy-MM-dd HH:mm:ss"
  117. :disabled="buttonDisable"
  118. placeholder="选择制单日期">
  119. </el-date-picker>
  120. </el-form-item>
  121. </el-col>
  122. <el-col :span="5">
  123. <el-form-item label="航空公司:" prop="vesselCnName">
  124. <el-input style="width: 100%;" v-model="form.carrierCnName"
  125. size="small" autocomplete="off"
  126. :disabled="true"
  127. clearable placeholder="航空公司">
  128. </el-input>
  129. </el-form-item>
  130. </el-col>
  131. <el-col :span="5">
  132. <el-form-item label="航班号:" prop="voyageNo">
  133. <el-input style="width: 100%;" v-model="form.voyageNo"
  134. size="small" autocomplete="off"
  135. :disabled="true"
  136. clearable placeholder="航次">
  137. </el-input>
  138. </el-form-item>
  139. </el-col>
  140. <el-col :span="5">
  141. <el-form-item label="ETD:" prop="etd">
  142. <el-input style="width: 100%;" v-model="form.etd"
  143. size="small" autocomplete="off"
  144. :disabled="true"
  145. clearable placeholder="ETD">
  146. </el-input>
  147. </el-form-item>
  148. </el-col>
  149. <el-col :span="5">
  150. <el-form-item label="ETA:" prop="eta">
  151. <el-input style="width: 100%;" v-model="form.eta"
  152. size="small" autocomplete="off"
  153. :disabled="true"
  154. clearable placeholder="ETA">
  155. </el-input>
  156. </el-form-item>
  157. </el-col>
  158. <el-col :span="4">
  159. <el-form-item label="业务编号:" prop="billNo">
  160. <el-input style="width: 100%;" v-model="form.billNo"
  161. size="small" autocomplete="off"
  162. :disabled="true"
  163. clearable placeholder="业务编号">
  164. </el-input>
  165. </el-form-item>
  166. </el-col>
  167. <el-col :span="5">
  168. <el-form-item label="件数:" prop="quantity">
  169. <el-input style="width: 100%;" v-model="form.quantity"
  170. size="small" autocomplete="off"
  171. :disabled="true"
  172. clearable placeholder="件数">
  173. </el-input>
  174. </el-form-item>
  175. </el-col>
  176. <el-col :span="5">
  177. <el-form-item label="毛重:" prop="grossWeight">
  178. <el-input style="width: 100%;" v-model="form.grossWeight"
  179. size="small" autocomplete="off"
  180. :disabled="true"
  181. clearable placeholder="毛重">
  182. </el-input>
  183. </el-form-item>
  184. </el-col>
  185. <el-col :span="5">
  186. <el-form-item label="尺码:" prop="measurement">
  187. <el-input style="width: 100%;" v-model="form.measurement"
  188. size="small" autocomplete="off"
  189. :disabled="true"
  190. clearable placeholder="尺码">
  191. </el-input>
  192. </el-form-item>
  193. </el-col>
  194. <el-col :span="9">
  195. <el-form-item label="箱型箱量:" prop="quantityCntrDescr">
  196. <el-input style="width: 100%;" v-model="form.quantityCntrDescr"
  197. size="small" autocomplete="off"
  198. :disabled="true"
  199. clearable placeholder="箱型箱量">
  200. </el-input>
  201. </el-form-item>
  202. </el-col>
  203. <el-col :span="10">
  204. <el-form-item label="原业务备注:" prop="origRemarks">
  205. <el-input style="width: 100%;" v-model="form.origRemarks"
  206. type="textarea"
  207. size="small" autocomplete="off"
  208. :disabled="true"
  209. clearable placeholder="原业务备注">
  210. </el-input>
  211. </el-form-item>
  212. </el-col>
  213. <el-col :span="10">
  214. <el-form-item label="备注:" prop="remarks">
  215. <el-input style="width: 100%;" v-model="form.remarks" type="textarea"
  216. size="small" autocomplete="off"
  217. clearable placeholder="请输入备注">
  218. </el-input>
  219. </el-form-item>
  220. </el-col>
  221. <el-col :span="4">
  222. <el-form-item label="" prop="billNo" label-width="50px">
  223. <el-button size="small" type="primary" style="margin-right: 8px" :disabled="form.id"
  224. :loading="saveLoading" @click="retrievalfun">提取原业务信息
  225. </el-button>
  226. </el-form-item>
  227. </el-col>
  228. </el-row>
  229. </el-form>
  230. </el-card>
  231. <el-card style="margin-top: 10px">
  232. <amends-costdetails :disabled="buttonDisable"
  233. :tableData="form.feeCenterList"
  234. :form="form" :editType="editType"
  235. @addfun="addTablefun"
  236. @oneclickEditingfun="oneclickEditingfun"
  237. @printingCostsfun="printingCostsfun"
  238. @amendsDetailfun="amendsDetailfun(form.id)" >
  239. </amends-costdetails>
  240. </el-card>
  241. <el-card style="margin-top: 10px">
  242. <!--<div style="font-size: 12px;margin-bottom: 5px">已生成账单费用:</div>-->
  243. <div style="margin-bottom: 5px;">
  244. <div style="display: inline-block;margin-right: 20px" class="disabledBox fontSize">
  245. <i class="el-icon-coin"></i>
  246. <span>应收费用</span>
  247. </div>
  248. <el-button type="primary" plain size="small" :disabled="buttonDisable"
  249. @click="upwardAddfun('D')">添加编辑数据
  250. </el-button>
  251. </div>
  252. <billgenerated :tableData="this.form.feeCenterListD" :handleSelectionData="multipleChoiceDArr"
  253. @handleSelectionChange="handleSelectionChange($event,'D')"></billgenerated>
  254. <div style="margin-bottom: 5px;">
  255. <div style="display: inline-block;margin-right: 20px" class="disabledBox meetSize">
  256. <i class="el-icon-coin"></i>
  257. <span>应付费用</span>
  258. </div>
  259. <el-button type="primary" plain size="small" :disabled="buttonDisable"
  260. @click="upwardAddfun('C')">添加编辑数据
  261. </el-button>
  262. </div>
  263. <billgenerated :tableData="this.form.feeCenterListC" :handleSelectionData="multipleChoiceCArr"
  264. @handleSelectionChange="handleSelectionChange($event,'C')"></billgenerated>
  265. </el-card>
  266. </div>
  267. <!--模板弹窗-->
  268. <el-dialog
  269. title="选择数据"
  270. class="el-dialogDeep"
  271. :visible.sync="retrievePopupsType"
  272. append-to-body
  273. width="70%"
  274. :close-on-click-modal="false">
  275. <div>
  276. <avue-crud
  277. :option="retrievePopupsOption"
  278. :data="retrievePopupsData"
  279. ref="retrievePopupsRef"
  280. id="out-table"
  281. :header-cell-class-name="headerClassName">
  282. <template slot="menu" slot-scope="{ row }">
  283. <el-button
  284. type="text"
  285. icon=""
  286. size="small"
  287. @click.stop="retrievePopupsSelect(row)"
  288. >选择
  289. </el-button>
  290. </template>
  291. </avue-crud>
  292. </div>
  293. </el-dialog>
  294. <!--设计报表弹窗-->
  295. <el-dialog append-to-body title="设计报表" class="el-dialogDeep" :visible.sync="DesignreportDialog" width="70%"
  296. :close-on-click-modal="false" :destroy-on-close="true" :close-on-press-escape="false" v-dialog-drag>
  297. <reports :id="form.id" :assemblyForm="form" businessValue="AMEND"></reports>
  298. </el-dialog>
  299. <!--往来单位弹窗-->
  300. <el-dialog
  301. title="打印"
  302. :visible.sync="printingDialog"
  303. append-to-body
  304. width="70%"
  305. :close-on-click-modal="false"
  306. :before-close="handleClose">
  307. <div>
  308. <el-row :gutter="10">
  309. <el-col :span="4">
  310. <avue-tree ref="treeRef" :option="reportOption" :data="reportTypeData" @node-click="reportNodeClick"></avue-tree>
  311. </el-col>
  312. <el-col :span="20">
  313. <avue-crud :option="optionPrinting"
  314. :table-loading="printingLoading"
  315. :data="PrintingData"
  316. id="out-table"
  317. :header-cell-class-name="headerClassName"
  318. :row-style="{height:'20px'}"
  319. :cell-style="{padding:'0px'}">
  320. <template slot-scope="scope" slot="menu">
  321. <el-button type="text" size="small" @click="dialogPreviewfun(scope.row)">打印预览</el-button>
  322. </template>
  323. </avue-crud>
  324. </el-col>
  325. </el-row>
  326. </div>
  327. <span slot="footer" class="dialog-footer">
  328. <el-button size="small" @click="printingDialog = false;">取 消</el-button>
  329. </span>
  330. </el-dialog>
  331. <!--费用打印-->
  332. <reportContainer ref="reportContainer"></reportContainer>
  333. </div>
  334. </template>
  335. <script>
  336. import SearchQuery from "@/components/iosbasic-data/searchquery.vue";
  337. import amendsCostdetails from "@/views/iosBasicData/aeamends/assembly/amendsCostdetails.vue";
  338. import billgenerated from "@/views/iosBasicData/aeamends/assembly/billgenerated.vue";
  339. import {billsGetDetail} from "@/api/iosBasicData/bills";
  340. import {dateFormat} from "@/util/date";
  341. import {amendsSubmit, amendsDetail, amendsCheckAmends, amendsRevokeCheckAmends} from "@/api/iosBasicData/amends";
  342. import {getWorkDicts} from "@/api/system/dictbiz";
  343. import reports from "@/views/iosBasicData/SeafreightExportF/bills/assembly/reports.vue";
  344. import {getList as reportsList} from "@/api/iosBasicData/reports";
  345. import {
  346. getFeeCenterCorpIds
  347. } from "@/api/iosBasicData/feecenter";
  348. import TreeSelect from "@/components/iosbasic-data/TreeSelect.vue";
  349. import {reportsGetReportData} from "@/api/iosBasicData/reports";
  350. import reportContainer from "@/views/iosBasicData/report-container/report-container.vue";
  351. import {aeabillsGetDetail} from "@/api/iosBasicData/aeabills";
  352. export default {
  353. components: {reportContainer, TreeSelect, reports, SearchQuery, amendsCostdetails, billgenerated},
  354. data() {
  355. return {
  356. retrievePopupsType: false, // 检索完的弹窗
  357. retrievePopupsData: [], // 检索完的弹窗数据
  358. retrievePopupsOption: {
  359. border: true,
  360. calcHeight: 30,
  361. tip: false,
  362. height: 'auto',
  363. index: true,
  364. addBtn: false,
  365. viewBtn: false,
  366. delBtn: false,
  367. editBtn: false,
  368. refreshBtn: false,
  369. columnBtn: false,
  370. menuWidth: '60',
  371. column: [
  372. {
  373. label: "单据类型",
  374. prop: "billType",
  375. type: 'select',
  376. dicData: [{
  377. label: '直单',
  378. value: 'DD'
  379. }, {
  380. label: '主单',
  381. value: 'MM'
  382. }, {
  383. label: '分单',
  384. value: 'MH'
  385. }],
  386. overHidden: true,
  387. },
  388. {
  389. label: "单据编号",
  390. prop: "billNo",
  391. width: "120",
  392. overHidden: true,
  393. },
  394. {
  395. label: "客户名",
  396. prop: "corpCnName",
  397. width: "140",
  398. overHidden: true,
  399. },
  400. {
  401. label: "MB/L NO",
  402. prop: "mblno",
  403. width: "80",
  404. overHidden: true,
  405. },
  406. {
  407. label: "HB/L NO",
  408. prop: "hblno",
  409. width: "80",
  410. overHidden: true,
  411. },
  412. {
  413. label: "船名",
  414. prop: "vesselCnName",
  415. overHidden: true,
  416. },
  417. {
  418. label: "航次",
  419. prop: "voyageNo",
  420. width: "80",
  421. overHidden: true,
  422. },
  423. {
  424. label: "开船日期",
  425. prop: "etd",
  426. type: "date",
  427. unlinkPanels: true,
  428. searchRange: true,
  429. overHidden: true,
  430. forma: "yyyy-MM-dd",
  431. valueFormat: "yyyy-MM-dd HH:mm:ss",
  432. searchDefaultTime: ["00:00:00", "23:59:59"],
  433. },
  434. ]
  435. },
  436. pageLoading: false, // 全屏加载动画
  437. saveLoading: false, // 按钮加载动画
  438. // 选择的数据
  439. form: {
  440. voucherDate: dateFormat(new Date(), "yyyy-MM-dd") + ' 00:00:00', // 制单日期 默认 当天,
  441. feeCenterListD: [],
  442. feeCenterListC: [],
  443. feeCenterList:[]
  444. },
  445. // 业务类型 数据
  446. origSeaTypeData: [
  447. {
  448. label: '出口',
  449. value: 'E'
  450. },
  451. {
  452. label: '进口',
  453. value: 'I'
  454. }
  455. ],
  456. responsiblePartyData:[], // AMEND 原因
  457. multipleChoiceDArr: [], // 应收多选
  458. multipleChoiceCArr: [], // 应付多选
  459. // 是否编辑状态
  460. editType: false,
  461. buttonDisable:false, // 按钮的是否禁用
  462. DesignreportDialog:false, // 设计报表弹窗
  463. printingDialog:false, // 打印弹窗
  464. reportOption: {
  465. nodeKey: "id",
  466. addBtn: false,
  467. menu: false,
  468. size: "small",
  469. props: {
  470. labelText: "标题",
  471. label: "cnName",
  472. value: "value",
  473. children: "children"
  474. }
  475. },
  476. reportTypeData:[], // 打印获取的数据
  477. reportformsObj:[], // 打印选择的数据
  478. PrintingData:[], // 打印的列表数据
  479. printingLoading:false, // 打印弹窗加载动画
  480. optionPrinting: {
  481. stripe: true,
  482. maxHeight: '250',
  483. calcHeight: 30,
  484. tip: false,
  485. searchShow: true,
  486. searchMenuSpan: 6,
  487. border: true,
  488. selection: true,
  489. dialogClickModal: false,
  490. refreshBtn:false,
  491. columnBtn:false,
  492. addBtn: false,
  493. viewBtn: false,
  494. delBtn: false,
  495. editBtn: false,
  496. menuWidth: '100',
  497. column: [
  498. {
  499. label: "客户名称",
  500. prop: "cnName",
  501. overHidden:true,
  502. },
  503. {
  504. label: "客户编号",
  505. prop: "code",
  506. overHidden:true,
  507. },
  508. ]
  509. },
  510. }
  511. },
  512. watch:{
  513. "form.status":{
  514. // 执行方法
  515. handler(oldValue,newValue) {
  516. // 0 = 新建 1=审核提交 2=审核中 3= 审核通过 4=审核驳回
  517. if (oldValue == 1 || oldValue == 2 || oldValue == 3) {
  518. this.buttonDisable = true
  519. }else {
  520. this.buttonDisable = false
  521. }
  522. },
  523. deep: false, // 深度监听
  524. immediate: false // 第一次改变就执行
  525. },
  526. },
  527. methods: {
  528. // 打印表格选择
  529. reportNodeClick(data){
  530. this.reportformsObj = data
  531. this.printingLoading = true
  532. this.getFeeCenterCorpIdsfun()
  533. },
  534. // 费用弹窗里的打印
  535. dialogPreviewfun(row){
  536. if (!this.reportformsObj.id){
  537. this.$message.warning('请选择打印类型')
  538. return;
  539. }
  540. // 获取报表数据
  541. reportsGetReportData({
  542. billId:this.form.id,
  543. reportCode:this.reportformsObj.classifyCode,
  544. groupCode:this.reportformsObj.groupCode,
  545. corpIds:row.id,
  546. type:'AMEND'
  547. }).then(res=>{
  548. this.handleReportPreview(this.reportformsObj.url,res.data.data.data)
  549. })
  550. },
  551. // 打印费用
  552. printingCostsfun(){
  553. // 没有多选弹窗
  554. this.printingLoading = true
  555. this.reportsListfun({
  556. classifyCode:'费用',
  557. })
  558. this.printingDialog = true
  559. },
  560. // 获取打印表格数据
  561. reportsListfun(obj){
  562. reportsList(1,50,obj).then(res=>{
  563. this.reportTypeData = res.data.data.records
  564. // 获取第一项的值
  565. this.reportformsObj = res.data.data.records[0]
  566. this.getFeeCenterCorpIdsfun()
  567. })
  568. },
  569. // 获取弹窗列表数据
  570. getFeeCenterCorpIdsfun(){
  571. getFeeCenterCorpIds({
  572. billId:this.form.id,
  573. dc: this.reportformsObj.cnName=='应收'?'D':'C',
  574. type:'AMEND'
  575. }).then(res=>{
  576. this.printingLoading = false
  577. this.PrintingData = res.data.data
  578. })
  579. },
  580. // 下拉回调
  581. corpChange(value,name) {
  582. this.$set(this.form,name,value)
  583. },
  584. // 获取AMEND原因字典数据
  585. amendReasonfun(){
  586. getWorkDicts('amend_reason').then(res=>{
  587. this.responsiblePartyData = res.data.data
  588. })
  589. },
  590. // 添加一条
  591. addTablefun() {
  592. this.form.feeCenterList.push({})
  593. this.editType = true
  594. },
  595. // 一键编辑
  596. oneclickEditingfun(){
  597. this.editType = true
  598. },
  599. // 详情数据
  600. amendsDetailfun(id) {
  601. this.pageLoading = true
  602. amendsDetail(id).then(res=>{
  603. this.pageLoading = false
  604. this.form = res.data.data
  605. this.editType = false // 把编辑状态变成不可编辑
  606. let arr = ['feeCenterList','feeCenterListC','feeCenterListD']
  607. for(let data of arr) {
  608. for (let item of this.form[data]) {
  609. if (item.curCode == 'CNY') {
  610. this.$set(item, 'rmbAmount', item.amount)
  611. this.$set(item, 'usdAmount', '')
  612. this.$set(item, 'rmbAmountNet', item.amountNet)
  613. this.$set(item, 'usdAmountNet', '')
  614. } else {
  615. this.$set(item, 'usdAmount', item.amount)
  616. this.$set(item, 'rmbAmount', '')
  617. this.$set(item, 'usdAmountNet', item.amountNet)
  618. this.$set(item, 'rmbAmountNet', '')
  619. }
  620. }
  621. }
  622. })
  623. },
  624. // 向上添加数据
  625. upwardAddfun(dc) {
  626. let arr = []
  627. if (dc == 'D') {
  628. arr = this.multipleChoiceDArr
  629. // for (let item of this.multipleChoiceDArr) {
  630. // item.amendSrcItemId = item.id
  631. // delete item.id
  632. // this.form.feeCenterList.unshift(item)
  633. // }
  634. } else {
  635. arr = this.multipleChoiceCArr
  636. // for (let item of this.multipleChoiceCArr) {
  637. // item.amendSrcItemId = item.id
  638. // delete item.id
  639. // this.form.feeCenterList.unshift(item)
  640. // }
  641. // this.form.feeCenterList.unshift(...this.multipleChoiceCArr)
  642. }
  643. for(let item of arr) {
  644. item.accStatus = 0
  645. delete item.id
  646. delete item.pid
  647. delete item.accAmount
  648. delete item.accBillId
  649. delete item.accBillNo
  650. delete item.accById
  651. delete item.accByName
  652. delete item.accDateaccStatus
  653. delete item.accountDate
  654. delete item.accountDay
  655. delete item.accountMonth
  656. delete item.accountYear
  657. delete item.appliedAmount
  658. delete item.appliedAmountStl
  659. delete item.appliedInvoiceAmount
  660. delete item.appliedInvoiceAmountStl
  661. delete item.applyId
  662. delete item.applyName
  663. delete item.applyTime
  664. delete item.approveTime
  665. delete item.approveTimeList
  666. delete item.approverId
  667. delete item.approverName
  668. delete item.auditStatus
  669. delete item.checkAmount
  670. delete item.checkBillId
  671. delete item.checkBillNo
  672. delete item.checkById
  673. delete item.checkByName
  674. delete item.checkDate
  675. delete item.checkStatus
  676. delete item.createDept
  677. delete item.createDeptName
  678. delete item.createTime
  679. delete item.createUser
  680. delete item.createUserName
  681. delete item.invoiceAmount
  682. delete item.invoiceAmountLoc
  683. delete item.invoiceBillId
  684. delete item.invoiceBillNo
  685. delete item.invoiceById
  686. delete item.invoiceByName
  687. delete item.invoiceCurCode
  688. delete item.invoiceDate
  689. delete item.invoiceExrate
  690. delete item.invoiceNo
  691. delete item.invoiceStatus
  692. delete item.stlAmount
  693. delete item.stlAmountLoc
  694. delete item.stlBillId
  695. delete item.stlBillNo
  696. delete item.stlById
  697. delete item.stlByName
  698. delete item.stlCurCode
  699. delete item.stlDate
  700. delete item.stlExrate
  701. delete item.stlExrateLoc
  702. delete item.stlOrgAmount
  703. delete item.stlStatus
  704. delete item.stlTtlAmount
  705. delete item.uninvoicedAmount
  706. delete item.unsettledAmount
  707. delete item.updateTime
  708. delete item.updateUser
  709. delete item.updateUserName
  710. delete item.voucherBillId
  711. delete item.voucherBillNo
  712. delete item.voucherById
  713. delete item.voucherByName
  714. delete item.voucherDate
  715. delete item.voucherNo
  716. delete item.voucherStatus
  717. this.form.feeCenterList.unshift(item)
  718. }
  719. this.editType = true
  720. },
  721. // 选择弹窗的数据
  722. retrievePopupsSelect(row) {
  723. this.retrievePopupsType = false
  724. this.form = row
  725. this.form.feeCenterList = []
  726. this.form.origId = row.id
  727. this.form.origBillNo = row.billNo
  728. this.form.origBillDate = row.billDate?row.billDate.slice(0,10) + ' 00:00:00':null
  729. this.form.origAccountDate = row.accountDate?row.accountDate.slice(0,10) + ' 00:00:00':null
  730. this.form.origSeaType = row.seaType
  731. this.form.origBillType = row.billType
  732. this.form.origRemarks = row.remarks
  733. this.form.bookingDate = row.bookingDate?row.bookingDate.slice(0,10) + ' 00:00:00':null
  734. this.form.etd = row.etd?row.etd.slice(0,10) + ' 00:00:00':null
  735. this.form.eta = row.eta?row.eta.slice(0,10) + ' 00:00:00':null
  736. this.form.businessType = 'AEA'
  737. this.form.voucherDate = dateFormat(new Date(), "yyyy-MM-dd") + ' 00:00:00' // 制单日期 默认 当天,
  738. delete this.form.id
  739. delete this.form.status
  740. delete this.form.id
  741. delete this.form.createUser
  742. delete this.form.createUserName
  743. delete this.form.createDept
  744. delete this.form.createDeptName
  745. delete this.form.createTime
  746. delete this.form.updateUser
  747. delete this.form.updateUserName
  748. delete this.form.updateTime
  749. delete this.form.billNo
  750. delete this.form.billDate
  751. delete this.form.remarks
  752. delete this.form.accountDate
  753. // this.form.feeCenterListC = row.feeCenterListC.map(item => {
  754. // item.accStatus = 0
  755. // // delete item.id
  756. // delete item.pid
  757. // delete item.accAmount
  758. // delete item.accBillId
  759. // delete item.accBillNo
  760. // delete item.accById
  761. // delete item.accByName
  762. // delete item.accDateaccStatus
  763. // delete item.accountDate
  764. // delete item.accountDay
  765. // delete item.accountMonth
  766. // delete item.accountYear
  767. // delete item.appliedAmount
  768. // delete item.appliedAmountStl
  769. // delete item.appliedInvoiceAmount
  770. // delete item.appliedInvoiceAmountStl
  771. // delete item.applyId
  772. // delete item.applyName
  773. // delete item.applyTime
  774. // delete item.approveTime
  775. // delete item.approveTimeList
  776. // delete item.approverId
  777. // delete item.approverName
  778. // delete item.auditStatus
  779. // delete item.checkAmount
  780. // delete item.checkBillId
  781. // delete item.checkBillNo
  782. // delete item.checkById
  783. // delete item.checkByName
  784. // delete item.checkDate
  785. // delete item.checkStatus
  786. // delete item.createDept
  787. // delete item.createDeptName
  788. // delete item.createTime
  789. // delete item.createUser
  790. // delete item.createUserName
  791. // delete item.invoiceAmount
  792. // delete item.invoiceAmountLoc
  793. // delete item.invoiceBillId
  794. // delete item.invoiceBillNo
  795. // delete item.invoiceById
  796. // delete item.invoiceByName
  797. // delete item.invoiceCurCode
  798. // delete item.invoiceDate
  799. // delete item.invoiceExrate
  800. // delete item.invoiceNo
  801. // delete item.invoiceStatus
  802. // delete item.stlAmount
  803. // delete item.stlAmountLoc
  804. // delete item.stlBillId
  805. // delete item.stlBillNo
  806. // delete item.stlById
  807. // delete item.stlByName
  808. // delete item.stlCurCode
  809. // delete item.stlDate
  810. // delete item.stlExrate
  811. // delete item.stlExrateLoc
  812. // delete item.stlOrgAmount
  813. // delete item.stlStatus
  814. // delete item.stlTtlAmount
  815. // delete item.uninvoicedAmount
  816. // delete item.unsettledAmount
  817. // delete item.updateTime
  818. // delete item.updateUser
  819. // delete item.updateUserName
  820. // delete item.voucherBillId
  821. // delete item.voucherBillNo
  822. // delete item.voucherById
  823. // delete item.voucherByName
  824. // delete item.voucherDate
  825. // delete item.voucherNo
  826. // delete item.voucherStatus
  827. // return item
  828. // })
  829. // this.form.feeCenterListD = row.feeCenterListD.map(item => {
  830. // item.accStatus = 0
  831. // // delete item.id
  832. // delete item.pid
  833. // delete item.accAmount
  834. // delete item.accBillId
  835. // delete item.accBillNo
  836. // delete item.accById
  837. // delete item.accByName
  838. // delete item.accDateaccStatus
  839. // delete item.accountDate
  840. // delete item.accountDay
  841. // delete item.accountMonth
  842. // delete item.accountYear
  843. // delete item.appliedAmount
  844. // delete item.appliedAmountStl
  845. // delete item.appliedInvoiceAmount
  846. // delete item.appliedInvoiceAmountStl
  847. // delete item.applyId
  848. // delete item.applyName
  849. // delete item.applyTime
  850. // delete item.approveTime
  851. // delete item.approveTimeList
  852. // delete item.approverId
  853. // delete item.approverName
  854. // delete item.auditStatus
  855. // delete item.checkAmount
  856. // delete item.checkBillId
  857. // delete item.checkBillNo
  858. // delete item.checkById
  859. // delete item.checkByName
  860. // delete item.checkDate
  861. // delete item.checkStatus
  862. // delete item.createDept
  863. // delete item.createDeptName
  864. // delete item.createTime
  865. // delete item.createUser
  866. // delete item.createUserName
  867. // delete item.invoiceAmount
  868. // delete item.invoiceAmountLoc
  869. // delete item.invoiceBillId
  870. // delete item.invoiceBillNo
  871. // delete item.invoiceById
  872. // delete item.invoiceByName
  873. // delete item.invoiceCurCode
  874. // delete item.invoiceDate
  875. // delete item.invoiceExrate
  876. // delete item.invoiceNo
  877. // delete item.invoiceStatus
  878. // delete item.stlAmount
  879. // delete item.stlAmountLoc
  880. // delete item.stlBillId
  881. // delete item.stlBillNo
  882. // delete item.stlById
  883. // delete item.stlByName
  884. // delete item.stlCurCode
  885. // delete item.stlDate
  886. // delete item.stlExrate
  887. // delete item.stlExrateLoc
  888. // delete item.stlOrgAmount
  889. // delete item.stlStatus
  890. // delete item.stlTtlAmount
  891. // delete item.uninvoicedAmount
  892. // delete item.unsettledAmount
  893. // delete item.updateTime
  894. // delete item.updateUser
  895. // delete item.updateUserName
  896. // delete item.voucherBillId
  897. // delete item.voucherBillNo
  898. // delete item.voucherById
  899. // delete item.voucherByName
  900. // delete item.voucherDate
  901. // delete item.voucherNo
  902. // delete item.voucherStatus
  903. // return item
  904. // })
  905. // 应收
  906. for (let item of this.form.feeCenterListD) {
  907. if (item.curCode == 'CNY') {
  908. this.$set(item, 'rmbAmount', item.amount)
  909. this.$set(item, 'usdAmount', '')
  910. this.$set(item, 'rmbAmountNet', item.amountNet)
  911. this.$set(item, 'usdAmountNet', '')
  912. } else {
  913. this.$set(item, 'usdAmount', item.amount)
  914. this.$set(item, 'rmbAmount', '')
  915. this.$set(item, 'usdAmountNet', item.amountNet)
  916. this.$set(item, 'rmbAmountNet', '')
  917. }
  918. }
  919. // 应付
  920. for (let item of this.form.feeCenterListC) {
  921. if (item.curCode == 'CNY') {
  922. this.$set(item, 'rmbAmount', item.amount)
  923. this.$set(item, 'usdAmount', '')
  924. this.$set(item, 'rmbAmountNet', item.amountNet)
  925. this.$set(item, 'usdAmountNet', '')
  926. } else {
  927. this.$set(item, 'usdAmount', item.amount)
  928. this.$set(item, 'rmbAmount', '')
  929. this.$set(item, 'usdAmountNet', item.amountNet)
  930. this.$set(item, 'rmbAmountNet', '')
  931. }
  932. }
  933. },
  934. // 保存
  935. amendsSubmitfun(){
  936. // 判断是否填写 AMEND原因
  937. if(!this.form.responsibleParty) {
  938. return this.$message.warning('请填写AMEND原因')
  939. }
  940. // 判断必填项
  941. let sum = '请输入'
  942. for (let item of this.form.feeCenterList) {
  943. if (!item.dc) {
  944. sum += ` 应收序号${item.$index + 1}收/付`
  945. }
  946. if (!item.corpId) {
  947. sum += ` 应收序号${item.$index + 1}往来单位`
  948. }
  949. if (!item.feeId) {
  950. sum += ` 应收序号${item.$index + 1}费用简称`
  951. }
  952. if (!item.elementsId) {
  953. sum += ` 应收序号${item.$index + 1}核算要素`
  954. }
  955. if (!item.curCode) {
  956. sum += ` 应收序号${item.$index + 1}币种`
  957. }
  958. }
  959. if(sum != '请输入') {
  960. this.$confirm(sum, {
  961. confirmButtonText: "确定",
  962. cancelButtonText: "取消",
  963. type: "warning"
  964. })
  965. return;
  966. }
  967. this.form.feeCenterList = this.form.feeCenterList.map((row,index)=>{
  968. row.dc = row.dc
  969. row.pid = this.form.id
  970. row.sort = Number(index) + 1
  971. row.businessType = this.form.businessType // 业务类型
  972. row.billType = this.form.origBillType // 单据类型
  973. row.billNo = this.form.origBillNo // 单据编号
  974. row.billDate = this.form.origBillDate // 单据日期
  975. row.billCorpId = this.form.corpId // 主表客户 id
  976. row.billCorpCnName = this.form.corpCnName // 主表客户中文名称
  977. row.billCorpEnName = this.form.corpEnName // 主表客户英文名称
  978. row.lineId = this.form.lineId // 航线 id
  979. row.lineCnName = this.form.lineCnName // 航线中文名称
  980. row.lineEnName = this.form.lineEnName // 航线英文名称
  981. row.vesselId = this.form.vesselId // 船名 id
  982. row.vesselCnName = this.form.vesselCnName // 中文船名
  983. row.vesselEnName = this.form.vesselEnName // 英文船名
  984. row.voyageNo = this.form.voyageNo // 航次
  985. row.mblno = this.form.mblno // MB/L NO
  986. row.hblno = this.form.hblno // HB/L NO
  987. row.etd = this.form.etd // 开船日期
  988. row.eta = this.form.eta // 到港日期
  989. row.polId = this.form.polId // 装货港 id
  990. row.polCode = this.form.polCode // 装货港代码
  991. row.polCnName = this.form.polCnName // 装货港中文名称
  992. row.polEnName = this.form.polEnName // 装货港英文名称
  993. row.podId = this.form.podId // 卸货港 id
  994. row.podCode = this.form.podCode // 卸货港代码
  995. row.podCnName = this.form.podCnName // 卸货港中文名称
  996. row.podEnName = this.form.podEnName // 卸货港英文名称
  997. row.corpArgreementNo = this.form.corpArgreementNo // 客户约号
  998. return row
  999. })
  1000. this.saveLoading = true
  1001. this.form.billNoFormat = 'AEA'
  1002. this.form.businessTypeCode = 'AEA'
  1003. amendsSubmit(this.form).then(res=>{
  1004. this.saveLoading = false
  1005. this.editType = false // 把费用编辑状态变成不可编辑
  1006. this.$message({
  1007. type: "success",
  1008. message: "操作成功!"
  1009. });
  1010. this.amendsDetailfun(res.data.data.id)
  1011. })
  1012. },
  1013. // 提交请核
  1014. submitforApproval(){
  1015. if (this.form.feeCenterList == 0) {
  1016. return this.$message.warning('请添加费用详情信息')
  1017. }
  1018. this.$confirm("您确定提交请核申请吗?", {
  1019. confirmButtonText: "确定",
  1020. cancelButtonText: "取消",
  1021. type: "warning"
  1022. }).then(()=>{
  1023. this.form.businessType = 'AEA'
  1024. amendsCheckAmends({
  1025. ...this.form,
  1026. url:'/iosBasicData/aeamends/index',
  1027. pageStatus:'this.$store.getters.aeamendF',
  1028. pageLabel:'AEAMEND'
  1029. }).then(res=>{
  1030. this.$message({
  1031. type: "success",
  1032. message: "操作成功!"
  1033. });
  1034. this.amendsDetailfun(this.form.id)
  1035. })
  1036. })
  1037. },
  1038. // 撤销请核
  1039. revokepleaseReview(){
  1040. this.$confirm("您确定撤销请核申请吗?", {
  1041. confirmButtonText: "确定",
  1042. cancelButtonText: "取消",
  1043. type: "warning"
  1044. }).then(()=>{
  1045. this.form.businessType = 'AEA'
  1046. amendsRevokeCheckAmends(this.form).then(res=>{
  1047. this.$message({
  1048. type: "success",
  1049. message: "操作成功!"
  1050. });
  1051. this.amendsDetailfun(this.form.id)
  1052. })
  1053. })
  1054. },
  1055. // 检索
  1056. retrievalfun() {
  1057. if (!this.form.mblno && !this.form.hblno && !this.form.refno) {
  1058. return this.$message.warning('请填写至少一项检索条件')
  1059. }
  1060. aeabillsGetDetail({
  1061. mblno: this.form.mblno ? this.form.mblno : null,
  1062. hblno: this.form.hblno ? this.form.hblno : null,
  1063. refno: this.form.refno ? this.form.refno : null,
  1064. type:'AE',
  1065. }).then(res => {
  1066. this.retrievePopupsData = res.data.data
  1067. if (res.data.data.length == 1) {
  1068. this.retrievePopupsSelect(this.retrievePopupsData[0])
  1069. }else {
  1070. this.retrievePopupsType = true
  1071. }
  1072. })
  1073. },
  1074. // 多选回调
  1075. handleSelectionChange(arr, dc) {
  1076. if (dc == 'D') {
  1077. this.multipleChoiceDArr = arr
  1078. } else {
  1079. this.multipleChoiceCArr = arr
  1080. }
  1081. },
  1082. //返回列表
  1083. backToList() {
  1084. this.$emit('goBack')
  1085. },
  1086. // 预览报表
  1087. handleReportPreview(url,data){
  1088. console.log(url,1670)
  1089. console.log(data,1671)
  1090. Stimulsoft.Base.StiLicense.key = '6vJhGtLLLz2GNviWmUTrhSqnOItdDwjBylQzQcAOiHn0s4gy0Fr5YoUZ9V00Y0igCSFQzwEqYBh/N77k4f0fWXTHW5rqeBNLkaurJDenJ9o97TyqHs9HfvINK18Uwzsc/bG01Rq+x3H3Rf+g7AY92gvWmp7VA2Uxa30Q97f61siWz2dE5kdBVcCnSFzC6awE74JzDcJMj8OuxplqB1CYcpoPcOjKy1PiATlC3UsBaLEXsok1xxtRMQ283r282tkh8XQitsxtTczAJBxijuJNfziYhci2jResWXK51ygOOEbVAxmpflujkJ8oEVHkOA/CjX6bGx05pNZ6oSIu9H8deF94MyqIwcdeirCe60GbIQByQtLimfxbIZnO35X3fs/94av0ODfELqrQEpLrpU6FNeHttvlMc5UVrT4K+8lPbqR8Hq0PFWmFrbVIYSi7tAVFMMe2D1C59NWyLu3AkrD3No7YhLVh7LV0Tttr/8FrcZ8xirBPcMZCIGrRIesrHxOsZH2V8t/t0GXCnLLAWX+TNvdNXkB8cF2y9ZXf1enI064yE5dwMs2fQ0yOUG/xornE'
  1091. // Stimulsoft.Base.StiLicense.Key = '6vJhGtLLLz2GNviWmUTrhSqnOItdDwjBylQzQcAOiHkcgIvwL0jnpsDqRpWg5FI5kt2G7A0tYIcUygBh1sPs7plofUOqPB1a4HBIXJB621mau2oiAIj+ysU7gKUXfjn/D5BocmduNB+ZMiDGPxFrAp3PoD0nYNkkWh8r7gBZ1v/JZSXGE3bQDrCQCNSy6mgby+iFAMV8/PuZ1z77U+Xz3fkpbm6MYQXYp3cQooLGLUti7k1TFWrnawT0iEEDJ2iRcU9wLqn2g9UiWesEZtKwI/UmEI2T7nv5NbgV+CHguu6QU4WWzFpIgW+3LUnKCT/vCDY+ymzgycw9A9+HFSzARiPzgOaAuQYrFDpzhXV+ZeX31AxWlnzjDWqpfluygSNPtGul5gyNt2CEoJD1Yom0VN9fvRonYsMsimkFFx2AwyVpPcs+JfVBtpPbTcZscnzUdmiIvxv8Gcin6sNSibM6in/uUKFt3bVgW/XeMYa7MLGF53kvBSwi78poUDigA2n12SmghLR0AHxyEDIgZGOTbNI33GWu7ZsPBeUdGu55R8w='
  1092. Stimulsoft.Base.Localization.StiLocalization.addLocalizationFile( '/reports/stimulsoft/Localization/zh-CHS.xml', true, 'zh-CHS')
  1093. Stimulsoft.Base.Localization.StiLocalization.setLocalizationFile('/reports/stimulsoft/Localization/zh-CHS.xml' )
  1094. // 工具栏
  1095. var options = new Stimulsoft.Viewer.StiViewerOptions()
  1096. options.height = '100%'
  1097. options.appearance.scrollbarsMode = true // 滚动条模式
  1098. options.toolbar.showDesignButton = false // 显示设计按钮
  1099. options.toolbar.showAboutButton = false // 显示关于按钮
  1100. options.toolbar.showResourcesButton = false // 显示资源按钮
  1101. options.toolbar.showFullScreenButton = false // 显示全屏按钮
  1102. options.toolbar.showOpenButton = false // 显示打开按钮
  1103. options.appearance.showTooltips = false // 显示工具提示
  1104. options.appearance.showDialogsHelp = false // 显示对话框帮助
  1105. options.exports.showExportToDocument = false // 显示导出到文档
  1106. options.toolbar.showParametersButton = true // 显示参数按钮
  1107. options.appearance.bookmarksPrint = true // 书签打印
  1108. // options.toolbar.showPrintButton = false // 打印按钮是否显示 下面直接自定义控制打印弹窗是否开启
  1109. // printDestination 参数:用于指定报表打印的目标位置,可以是打印机、PDF 文件或者直接打印到浏览器等。
  1110. // Stimulsoft.Viewer.StiPrintDestination.Direct:表示直接打印到打印机,即将报表内容直接发送至打印机进行打印。
  1111. // 通过设置不同的 printDestination 参数,你可以控制报表打印的行为,例如是直接打印到打印机,还是生成 PDF 文件,或者直接在浏览器中预览打印内容等。
  1112. options.toolbar.printDestination = Stimulsoft.Viewer.StiPrintDestination.Direct
  1113. // htmlRenderMode html渲染模式
  1114. options.appearance.htmlRenderMode = Stimulsoft.Report.Export.StiHtmlExportMode.Table
  1115. // 是创建一个 Stimulsoft 报表查看器的实例的代码
  1116. let viewer = new Stimulsoft.Viewer.StiViewer(options, 'StiViewer', false)
  1117. // 报表
  1118. console.log("创建一个报表实例");
  1119. console.log()
  1120. let report = new window.Stimulsoft.Report.StiReport();
  1121. // 加载文件
  1122. console.log("从url加载报表");
  1123. // report.loadFile("/reports/stimulsoft/demos/SimpleList.mrt");
  1124. report.load(url)
  1125. data.pageOne = 'Page : 1 of 1'
  1126. // 处理超长数据
  1127. if (data.hshipperDetails) {
  1128. var consignerIndex2 = data.hshipperDetails.indexOf( '\n' )
  1129. for (let i = 0; i < 4; i++) {
  1130. consignerIndex2 = data.hshipperDetails.indexOf( '\n', consignerIndex2 + 1 );
  1131. }
  1132. if (consignerIndex2 != -1) {
  1133. var hshipperDetails = data.hshipperDetails.substring(consignerIndex2 + 2, data.hshipperDetails.length)
  1134. data.hshipperDetails = data.hshipperDetails.substring(0, consignerIndex2) + ' *'
  1135. data.commodityDescr += '\n*' + hshipperDetails
  1136. }
  1137. }
  1138. if (data.hconsigneeDetails) {
  1139. var consigneeIndex2 = data.hconsigneeDetails.indexOf( '\n' )
  1140. for (let i = 0; i < 3; i++) {
  1141. consigneeIndex2 = data.hconsigneeDetails.indexOf( '\n', consigneeIndex2 + 1 );
  1142. }
  1143. if (consigneeIndex2 != -1) {
  1144. var hconsigneeDetails = data.hconsigneeDetails.substring(consigneeIndex2 + 2, data.hconsigneeDetails.length)
  1145. data.hconsigneeDetails = data.hconsigneeDetails.substring(0, consigneeIndex2) + ' **'
  1146. data.commodityDescr += '\n**' + hconsigneeDetails
  1147. }
  1148. }
  1149. if (data.hnotifyDetails) {
  1150. var notifierIndex2 = data.hnotifyDetails.indexOf( '\n' )
  1151. for (let i = 0; i < 3; i++) {
  1152. notifierIndex2 = data.hnotifyDetails.indexOf( '\n', notifierIndex2 + 1 );
  1153. }
  1154. if (notifierIndex2 != -1) {
  1155. var hnotifyDetails = data.hnotifyDetails.substring(notifierIndex2 + 2, data.hnotifyDetails.length)
  1156. data.hnotifyDetails = data.hnotifyDetails.substring(0, notifierIndex2) + ' ***'
  1157. data.commodityDescr += '\n***' + hnotifyDetails
  1158. }
  1159. }
  1160. // 处理箱号
  1161. if (this.isPrintTheBoxNumber) {
  1162. data.commodityDescr += '\n.\n.\n'
  1163. }
  1164. // PLACE & DATE OF ISSUE
  1165. data.placeAndDateOfIssue = ''
  1166. if (data.issueAt) {
  1167. data.placeAndDateOfIssue += data.issueAt
  1168. }
  1169. if (data.issueDate) {
  1170. let date = new Date(data.issueDate.replace(/-/g,'/'));
  1171. let yyyy = date.getFullYear();
  1172. let mmmm = date.toDateString().split(" ")[1]
  1173. let dd = date.getDate()
  1174. data.placeAndDateOfIssue += ', ' + dd + '-' + mmmm + '-' + yyyy
  1175. }
  1176. // Total number of containers or packages received by the Carriers
  1177. if (data.preContainersList) {
  1178. let boxMap = new Map();
  1179. for (let boxQuantity of data.preContainersList) {
  1180. if (boxMap.get(boxQuantity.cntrTypeCode)) {
  1181. let v = boxMap.get(boxQuantity.cntrTypeCode)
  1182. boxMap.set(boxQuantity.cntrTypeCode, v + boxQuantity.quantity)
  1183. } else {
  1184. boxMap.set(boxQuantity.cntrTypeCode, boxQuantity.quantity)
  1185. }
  1186. }
  1187. let boxs = ''
  1188. boxMap.forEach(function (value, key, map) {
  1189. boxs += value + 'x' + key + ', '
  1190. })
  1191. boxs = boxs.substring(0, boxs.length - 2)
  1192. data.boxQuantity = boxs + ' CONTAINER(S) ONLY'
  1193. }
  1194. // Number of original B/Ls
  1195. if (data.numberOfObl) {
  1196. data.numberOfObl += ' (' + data.numberOfOblDigit + ')'
  1197. }
  1198. if (data.commodityDescr) {
  1199. var descriptionIndex2 = data.commodityDescr.indexOf( '\n' )
  1200. for (let i = 0; i < 19; i++) {
  1201. descriptionIndex2 = data.commodityDescr.indexOf( '\n', descriptionIndex2 + 1 );
  1202. }
  1203. if (descriptionIndex2 != -1) {
  1204. data.pageOne = 'Page : 1 of 2'
  1205. data.pageTwo = 'Page : 2 of 2'
  1206. var extraLongText = data.commodityDescr.substring(descriptionIndex2 + 2, data.commodityDescr.length)
  1207. data.commodityDescr = data.commodityDescr.substring(0, descriptionIndex2)
  1208. data.extraLongTips = '** TO BE CONTINUED ON ATTACHED LIST **'
  1209. data.extraLongText = extraLongText
  1210. }
  1211. }
  1212. // console.log(data.hshipperDetails, 'hshipperDetails2')
  1213. // 创建一个 Stimulsoft 数据集(DataSet)的实例的代码
  1214. var dataSet = new Stimulsoft.System.Data.DataSet(
  1215. 'reportData'
  1216. )
  1217. dataSet.readJson(data) // 用于将 JSON 格式的数据加载到数据集中。data 是包含报表数据的 JSON 对象。
  1218. // 这是一个方法调用,用于在报表中注册数据源。参数 'reportData' 是数据源的名称,
  1219. // 第二个 'reportData' 是数据源的别名,dataSet 则是之前创建的数据集实例
  1220. report.regData('reportData', 'reportData', dataSet)
  1221. // 从模版和数据加载报表
  1222. // loadReport(report, '', {})
  1223. // 这是将报表对象指定给报表查看器的属性。viewer 是报表查看器的实例,而 report 是之前创建的报表对象。
  1224. viewer.report = report;
  1225. this.$refs.reportContainer.showContainer(
  1226. ()=> {
  1227. setTimeout(() => {
  1228. viewer.renderHtml('reportContainer')
  1229. this.createViewerButtons(viewer)
  1230. }, 50)
  1231. },
  1232. ()=>{
  1233. },
  1234. )
  1235. console.log("加载成功完成!");
  1236. },
  1237. createViewerButtons (viewer){
  1238. viewer.jsObject.collections.images['myClose.png'] =
  1239. 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAA0ElEQVQ4ja3TO05CQRQG4A8iOwAbtYWETndAaecK7NwCKmETtJZsSBNLobEz8ZFIJQ0UnOGSm3DnYviTybzO/895DQXGWGCVGQuMEqkRcwcfuMOLalziCaf4TIe9UG9nyMJmFRzNGoRK1BU4xxx9G7cfwostciGk+x8MqgySwDXe4tU53hVV+MNtTmAoX84JGv9NYgrHyR6DV8wUSW7hItZLm36ZVoVQxsFJLOMsPOrH/h7dQwR2cdxOTEn8DtUbPGc4V2H7Vb4Yqfedf/GYSGt8VUmxgyfuBAAAAABJRU5ErkJggg=='
  1240. const closeBtn = viewer.jsObject.SmallButton(
  1241. 'closeBtn',
  1242. '关闭',
  1243. 'myClose.png'
  1244. )
  1245. // 增加打印弹窗配置
  1246. const printBtn = viewer.jsObject.SmallButton(
  1247. 'printBtn',
  1248. '打印报表',
  1249. 'myClose.png'
  1250. )
  1251. // console.log(viewer.jsObject.print(),'1013')
  1252. // 获取 关闭按钮的dom元素位置
  1253. const toolbarTable = viewer.jsObject.controls.toolbar.firstChild.firstChild
  1254. const buttonsTable = toolbarTable.rows[0].lastChild.lastChild
  1255. const userButtonCell = buttonsTable.rows[0].insertCell(0)
  1256. // 获取打印按钮的位置
  1257. const buttonsTablePrint = toolbarTable.rows[0].childNodes[0].lastChild // 打印按钮
  1258. const userButtonPrint = buttonsTablePrint.rows[0].childNodes[0] // 打印按钮dom位置
  1259. userButtonPrint.addEventListener("click", (event)=>{
  1260. console.log("打印点击");
  1261. // event.preventDefault()
  1262. });
  1263. userButtonPrint.addEventListener("mouseover", (event) => {
  1264. console.log("移入打印按钮");
  1265. console.log(event,1035)
  1266. });
  1267. userButtonCell.className = 'stiJsViewerClearAllStyles'
  1268. userButtonCell.appendChild(closeBtn) // 添加关闭节点
  1269. // userButtonPrint.prepend(printBtn) // 在 printBtn 节点里最前面增加一个子级节点
  1270. let that=this
  1271. // 关闭按钮的监听点击
  1272. closeBtn.action = function() {
  1273. console.log(that.$refs.ReportContainer,'1022')
  1274. if (that.$refs.reportContainer)
  1275. that.$refs.reportContainer.hideContainer()
  1276. }
  1277. // // // 打印按钮监听
  1278. // printBtn.action = (e)=>{
  1279. // console.log('打印')
  1280. // window.print()
  1281. // }
  1282. },
  1283. // 更改表格颜色
  1284. headerClassName(tab) {
  1285. //颜色间隔
  1286. let back = "back-one"
  1287. // if (tab.columnIndex >= 0 && tab.column.level === 1) {
  1288. // if (tab.columnIndex % 2 === 0) {
  1289. // back = "back-one"
  1290. // } else if (tab.columnIndex % 2 === 1) {
  1291. // back = "back-two"
  1292. // }
  1293. // }
  1294. return back;
  1295. },
  1296. }
  1297. }
  1298. </script>
  1299. <style scoped lang="scss">
  1300. ::v-deep.el-form-item {
  1301. margin-bottom: 0;
  1302. }
  1303. .el-dialogDeep {
  1304. ::v-deep .el-dialog {
  1305. .el-dialog__body, .el-dialog__footer {
  1306. padding-top: 0 !important;
  1307. }
  1308. }
  1309. }
  1310. ::v-deep#out-table .back-one {
  1311. background: #ecf5ff !important;
  1312. text-align: center;
  1313. }
  1314. .disabledBox {
  1315. display: flex;
  1316. align-items: center;
  1317. }
  1318. .fontSize {
  1319. font-size: 16px;
  1320. color: #81B337;
  1321. }
  1322. .meetSize {
  1323. font-size: 16px;
  1324. color: #54BCBD;
  1325. }
  1326. </style>