fininvoicesDetails.vue 61 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041
  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" type="warning" plain style="margin-right: 8px" :disabled="!form.id" v-if="form.status == 3"
  11. :loading="saveLoading" @click="revokeFinInvoicesApprovefun">撤销
  12. </el-button>
  13. <el-button size="small" type="success" plain style="margin-right: 8px" :disabled="!form.id" v-else
  14. :loading="saveLoading" @click="finInvoicesApprovefun">提交
  15. </el-button>
  16. <el-button size="small" type="primary" style="margin-right: 8px" v-if="editSave"
  17. :loading="saveLoading" @click="editHandle">编 辑
  18. </el-button>
  19. <el-button size="small" type="primary" style="margin-right: 8px" v-else
  20. :loading="saveLoading" @click="editCustomer">保 存
  21. </el-button>
  22. </div>
  23. </div>
  24. <div style="margin: 55px 5px 0px 5px;'">
  25. <el-form :model="form" ref="form" :rules="rules" label-width="90px" class="demo-ruleForm">
  26. <trade-card title="基础信息" styleIocup="color:#4b9fe9">
  27. <el-row>
  28. <el-col :span="10">
  29. <div class="flexBoxLeft">
  30. <el-row>
  31. <el-col :span="12">
  32. <el-form-item label="发票号码" prop="invoiceNo">
  33. <el-input style="width: 100%;" v-model="form.invoiceNo"
  34. size="small" autocomplete="off"
  35. :disabled="true"
  36. clearable placeholder="请输入发票号码" >
  37. </el-input>
  38. </el-form-item>
  39. </el-col>
  40. <el-col :span="12">
  41. <el-form-item label="开票日期" prop="invoiceDate">
  42. <el-date-picker v-model="form.invoiceDate" clearable
  43. style="width: 100%;"
  44. type="date" size="small"
  45. :disabled="true"
  46. value-format="yyyy-MM-dd"
  47. placeholder="选择开票日期">
  48. </el-date-picker>
  49. </el-form-item>
  50. </el-col>
  51. <el-col :span="24">
  52. <el-form-item label="开票单位" prop="invCorpCnName">
  53. <search-query :datalist="invCorpData"
  54. :selectValue="form.invCorpCnName"
  55. :clearable="true"
  56. :disabled="editSave || !form.corpId"
  57. :buttonIf="false"
  58. :remote="true"
  59. :filterable="true"
  60. placeholder="请选择开票单位"
  61. :forParameter="{ key:'id', label:'invoiceHeader', value:'id'}"
  62. @corpChange="corpChange($event,'invCorpCnName')"
  63. @remoteMethod="invcorpsinvoiceheaderListfun"
  64. @corpFocus="invcorpsinvoiceheaderListfun" >
  65. </search-query>
  66. </el-form-item>
  67. </el-col>
  68. <el-col :span="24">
  69. <el-form-item label="税号" prop="invCorpTaxNo">
  70. <el-input style="width: 100%;" v-model="form.invCorpTaxNo"
  71. size="small" autocomplete="off"
  72. :disabled="true"
  73. clearable placeholder="请输入税号" >
  74. </el-input>
  75. </el-form-item>
  76. </el-col>
  77. <el-col :span="12">
  78. <el-form-item label="美元银行" prop="invCorpAccountBankUsd">
  79. <el-input style="width: 100%;" v-model="form.invCorpAccountBankUsd"
  80. size="small" autocomplete="off"
  81. :disabled="true"
  82. clearable placeholder="请输入美元银行" >
  83. </el-input>
  84. </el-form-item>
  85. </el-col>
  86. <el-col :span="12">
  87. <el-form-item label="美元账户" prop="invCorpAccountNoUsd">
  88. <el-input style="width: 100%;" v-model="form.invCorpAccountNoUsd"
  89. size="small" autocomplete="off"
  90. :disabled="true"
  91. clearable placeholder="请输入美元账户" >
  92. </el-input>
  93. </el-form-item>
  94. </el-col>
  95. <el-col :span="12">
  96. <el-form-item label="人民币银行" prop="invCorpAccountBankCny">
  97. <el-input style="width: 100%;" v-model="form.invCorpAccountBankCny"
  98. size="small" autocomplete="off"
  99. :disabled="true"
  100. clearable placeholder="请输入美元银行" >
  101. </el-input>
  102. </el-form-item>
  103. </el-col>
  104. <el-col :span="12">
  105. <el-form-item label="人民币账户" prop="invCorpAccountNoCny">
  106. <el-input style="width: 100%;" v-model="form.invCorpAccountNoCny"
  107. size="small" autocomplete="off"
  108. :disabled="true"
  109. clearable placeholder="请输入人民币账户" >
  110. </el-input>
  111. </el-form-item>
  112. </el-col>
  113. <el-col :span="12">
  114. <el-form-item label="船名/航次" prop="vesselVoyno">
  115. <el-input style="width: 100%;" v-model="form.vesselVoyno"
  116. size="small" autocomplete="off"
  117. :disabled="editSave"
  118. clearable placeholder="请输入船名/航次" >
  119. </el-input>
  120. </el-form-item>
  121. </el-col>
  122. <el-col :span="12">
  123. <el-form-item label="开航日期" prop="etd">
  124. <el-date-picker v-model="form.etd" clearable
  125. style="width: 100%;"
  126. type="date" size="small"
  127. :disabled="editSave"
  128. value-format="yyyy-MM-dd HH:mm:ss"
  129. placeholder="请输入开航日期">
  130. </el-date-picker>
  131. </el-form-item>
  132. </el-col>
  133. <el-col :span="12">
  134. <el-form-item label="装货港" prop="pol">
  135. <search-query :datalist="polData"
  136. :selectValue="form.pol"
  137. :filterable="true"
  138. :clearable="true"
  139. :remote="true"
  140. :disabled="editSave"
  141. :buttonIf="false"
  142. placeholder="请输入装货港"
  143. :forParameter="{key:'id',label:'enName',value:'enName'}"
  144. @corpChange="corpChange($event,'pol')"
  145. @remoteMethod="polBportsListfun"
  146. @corpFocus="polBportsListfun" >
  147. </search-query>
  148. </el-form-item>
  149. </el-col>
  150. <el-col :span="12">
  151. <el-form-item label="卸货港" prop="pod">
  152. <search-query :datalist="podData"
  153. :selectValue="form.pod"
  154. :filterable="true"
  155. :clearable="true"
  156. :remote="true"
  157. :disabled="editSave"
  158. :buttonIf="false"
  159. placeholder="请输入卸货港"
  160. :forParameter="{key:'id',label:'enName',value:'enName'}"
  161. @corpChange="corpChange($event,'pod')"
  162. @remoteMethod="podBportsListfun"
  163. @corpFocus="podBportsListfun" >
  164. </search-query>
  165. </el-form-item>
  166. </el-col>
  167. <el-col :span="12">
  168. <el-form-item label="目的地" prop="destination">
  169. <search-query :datalist="destinationData"
  170. :selectValue="form.destination"
  171. :filterable="true"
  172. :clearable="true"
  173. :remote="true"
  174. :disabled="editSave"
  175. :buttonIf="false"
  176. placeholder="请输入目的地"
  177. :forParameter="{key:'id',label:'enName',value:'enName'}"
  178. @corpChange="corpChange($event,'destination')"
  179. @remoteMethod="destinationBportsListfun"
  180. @corpFocus="destinationBportsListfun" >
  181. </search-query>
  182. </el-form-item>
  183. </el-col>
  184. <el-col :span="12">
  185. <el-form-item label="箱型箱量" prop="containers">
  186. <el-input style="width: 100%;" v-model="form.containers"
  187. size="small" autocomplete="off"
  188. :disabled="editSave"
  189. clearable placeholder="请输入箱型箱量" >
  190. </el-input>
  191. </el-form-item>
  192. </el-col>
  193. <el-col :span="12">
  194. <el-form-item label="全电发票备注:" prop="invCurCode">
  195. <el-input style="width: 100%;" v-model="form.elecRemarks"
  196. size="small" autocomplete="off"
  197. :disabled="editSave"
  198. clearable placeholder="请输入全电发票备注" >
  199. </el-input>
  200. </el-form-item>
  201. </el-col>
  202. <el-col :span="12">
  203. <el-form-item label="开票合计:" prop="invCurCode">
  204. <span>¥{{form.amountLoc}}元</span>
  205. </el-form-item>
  206. </el-col>
  207. </el-row>
  208. </div>
  209. </el-col>
  210. <el-col :span="14">
  211. <div class="flexBoxRight">
  212. <el-row>
  213. <el-col :span="4">
  214. <el-switch
  215. v-model="form.stlMode"
  216. active-value="1"
  217. inactive-value="0"
  218. active-color="#66dd7a"
  219. inactive-color="#4ea6ea"
  220. active-text="票结"
  221. inactive-text="月结">
  222. </el-switch>
  223. </el-col>
  224. <el-col :span="6">
  225. <el-checkbox style="margin-left: 10%" size="medium" :true-label="1" :false-label="0"
  226. :disabled="editSave"
  227. v-model="form.isDk">整票(不列费用明细)
  228. </el-checkbox>
  229. </el-col>
  230. <el-col :span="5">
  231. <el-checkbox style="margin-left: 10%" size="medium" :true-label="1" :false-label="0"
  232. :disabled="editSave"
  233. v-model="form.isRp">只提取开票费用
  234. </el-checkbox>
  235. </el-col>
  236. <el-col :span="3">
  237. <el-checkbox style="margin-left: 10%" size="medium" :true-label="1" :false-label="0"
  238. :disabled="editSave"
  239. v-model="form.isExportMblno">主单号
  240. </el-checkbox>
  241. </el-col>
  242. <el-col :span="3">
  243. <el-checkbox style="margin-left: 10%" size="medium" :true-label="1" :false-label="0"
  244. :disabled="editSave"
  245. v-model="form.isExportVslvoy">船名航次
  246. </el-checkbox>
  247. </el-col>
  248. <el-col :span="3">
  249. <el-checkbox style="margin-left: 10%" size="medium" :true-label="1" :false-label="0"
  250. :disabled="editSave"
  251. v-model="form.isExportHblno">分单号
  252. </el-checkbox>
  253. </el-col>
  254. </el-row>
  255. <el-row>
  256. <el-col :span="8">
  257. <el-form-item label="结算单位" prop="corpCnName">
  258. <search-query :datalist="corpData"
  259. :selectValue="form.corpCnName"
  260. :clearable="true"
  261. :disabled="editSave"
  262. :buttonIf="false"
  263. :remote="true"
  264. :filterable="true"
  265. placeholder="请输入结算单位"
  266. :forParameter="{ key:'id', label:'cnName', value:'cnName'}"
  267. @corpChange="corpChange($event,'corpCnName')"
  268. @remoteMethod="corpBcorpsListfun"
  269. @corpFocus="corpBcorpsListfun" >
  270. </search-query>
  271. </el-form-item>
  272. </el-col>
  273. <el-col :span="8">
  274. <el-form-item label="开票日期" prop="invoiceDate">
  275. <el-date-picker v-model="form.invoiceDate" clearable
  276. style="width: 100%;"
  277. type="date" size="small"
  278. :disabled="editSave"
  279. value-format="yyyy-MM-dd"
  280. placeholder="选择开票日期">
  281. </el-date-picker>
  282. </el-form-item>
  283. </el-col>
  284. <el-col :span="8">
  285. <el-form-item label="税控发票号" prop="taxInvoiceNo">
  286. <el-input style="width: 100%;" v-model="form.taxInvoiceNo"
  287. size="small" autocomplete="off"
  288. :disabled="editSave"
  289. clearable placeholder="请输入税控发票号" >
  290. </el-input>
  291. </el-form-item>
  292. </el-col>
  293. <el-col :span="8">
  294. <el-form-item label="银行账号" prop="bankReceiptAccountNo">
  295. <search-query :datalist="bankReceiptData"
  296. :selectValue="form.bankReceiptAccountNo"
  297. :clearable="true"
  298. :disabled="editSave || !form.corpId"
  299. :buttonIf="false"
  300. :remote="true"
  301. :filterable="true"
  302. placeholder="请输入银行账号"
  303. :forParameter="{ key:'id', label:'accountNo', value:'accountNo'}"
  304. @corpChange="corpChange($event,'bankReceiptAccountNo')"
  305. @remoteMethod="bcorpsbankListfun">
  306. </search-query>
  307. </el-form-item>
  308. </el-col>
  309. <el-col :span="8">
  310. <el-form-item label="银行名称" prop="bankReceiptBankName">
  311. <el-input style="width: 100%;" v-model="form.bankReceiptBankName"
  312. size="small" autocomplete="off"
  313. :disabled="editSave"
  314. clearable placeholder="请输入银行名称" >
  315. </el-input>
  316. </el-form-item>
  317. </el-col>
  318. <el-col :span="8">
  319. <el-form-item label="导出时间" prop="exportDate">
  320. <el-date-picker v-model="form.exportDate" clearable
  321. style="width: 100%;"
  322. type="date" size="small"
  323. :disabled="editSave"
  324. value-format="yyyy-MM-dd HH:mm"
  325. placeholder="请选择导出时间">
  326. </el-date-picker>
  327. </el-form-item>
  328. </el-col>
  329. <el-col :span="16">
  330. <el-form-item label="业务编号" prop="businessNo">
  331. <el-input style="width: 100%;" v-model="form.businessNo"
  332. size="small" autocomplete="off"
  333. :disabled="editSave"
  334. clearable placeholder="请输入业务编号" >
  335. </el-input>
  336. </el-form-item>
  337. </el-col>
  338. <el-col :span="8">
  339. <el-form-item label="导出人" prop="exportName">
  340. <el-input style="width: 100%;" v-model="form.exportName"
  341. size="small" autocomplete="off"
  342. :disabled="editSave"
  343. clearable placeholder="请输入导出人" >
  344. </el-input>
  345. </el-form-item>
  346. </el-col>
  347. <el-col :span="16">
  348. <el-form-item label="主单编号" prop="mblno">
  349. <el-input style="width: 100%;" v-model="form.mblno"
  350. size="small" autocomplete="off"
  351. :disabled="editSave"
  352. clearable placeholder="请输入主单编号" >
  353. </el-input>
  354. </el-form-item>
  355. </el-col>
  356. <el-col :span="8">
  357. <el-form-item label="导出汇率" prop="exrate">
  358. <el-input style="width: 100%;" v-model="form.exrate"
  359. size="small" autocomplete="off"
  360. :disabled="editSave"
  361. clearable placeholder="请输入导出汇率" >
  362. </el-input>
  363. </el-form-item>
  364. </el-col>
  365. <el-col :span="16">
  366. <el-form-item label="分单编号" prop="hblno">
  367. <el-input style="width: 100%;" v-model="form.hblno"
  368. size="small" autocomplete="off"
  369. :disabled="editSave"
  370. clearable placeholder="请输入分单编号" >
  371. </el-input>
  372. </el-form-item>
  373. </el-col>
  374. <el-col :span="8">
  375. <el-form-item label="发票类型" prop="invType">
  376. <search-query :datalist="invTypeData"
  377. :selectValue="form.invType"
  378. :clearable="true"
  379. :disabled="editSave"
  380. :buttonIf="false"
  381. placeholder="请输入发票类型"
  382. :forParameter="{ key:'dictKey', label:'dictValue', value:'dictKey'}"
  383. @corpChange="corpChange($event,'isInvoice')"
  384. @corpFocus="invTypeWorkDictsfun" >
  385. </search-query>
  386. </el-form-item>
  387. </el-col>
  388. <el-col :span="8">
  389. <el-form-item label="无字段账单号" prop="bookingNo">
  390. <el-input style="width: 100%;" v-model="form.bookingNo"
  391. size="small" autocomplete="off"
  392. :disabled="editSave"
  393. clearable placeholder="请输入账单号" >
  394. </el-input>
  395. </el-form-item>
  396. </el-col>
  397. <el-col :span="8">
  398. <el-form-item label="对账单号" prop="checkNo">
  399. <el-input style="width: 100%;" v-model="form.checkNo"
  400. size="small" autocomplete="off"
  401. :disabled="editSave"
  402. clearable placeholder="请输入对账单号" >
  403. </el-input>
  404. </el-form-item>
  405. </el-col>
  406. <el-col :span="8">
  407. <el-form-item label="所属税种" prop="taxType">
  408. <el-input style="width: 100%;" v-model="form.taxType"
  409. size="small" autocomplete="off"
  410. :disabled="editSave"
  411. clearable placeholder="请输入所属税种" >
  412. </el-input>
  413. </el-form-item>
  414. </el-col>
  415. <el-col :span="8">
  416. <el-form-item label="BOOK NO" prop="bookingNo">
  417. <el-input style="width: 100%;" v-model="form.bookingNo"
  418. size="small" autocomplete="off"
  419. :disabled="editSave"
  420. clearable placeholder="请输入BOOK NO" >
  421. </el-input>
  422. </el-form-item>
  423. </el-col>
  424. <el-col :span="8">
  425. <el-form-item label="业务类型" prop="businessTypes">
  426. <search-query :datalist="businessTypesData"
  427. :selectValue="form.businessTypes"
  428. :clearable="true"
  429. :disabled="editSave"
  430. :buttonIf="false"
  431. :multiple="true"
  432. :collapseTags="true"
  433. placeholder="请输入业务类型"
  434. @corpChange="corpChange($event,'businessTypes')">
  435. </search-query>
  436. </el-form-item>
  437. </el-col>
  438. <el-col :span="8">
  439. <el-form-item label="税率" prop="taxRate">
  440. <el-input style="width: 100%;" v-model="form.taxRate"
  441. size="small" autocomplete="off"
  442. :disabled="editSave"
  443. clearable placeholder="请输入税率" >
  444. </el-input>
  445. </el-form-item>
  446. </el-col>
  447. <el-col :span="8">
  448. <el-form-item label="选择币种" prop="curCode">
  449. <search-query :datalist="curData"
  450. :selectValue="form.curCode"
  451. :filterable="true"
  452. :clearable="true"
  453. :disabled="editSave"
  454. :remote="true"
  455. :buttonIf="false"
  456. placeholder="请输入选择币种"
  457. :forParameter="{key:'id',label:'code',value:'code'}"
  458. @remoteMethod="getRateListfun"
  459. @corpChange="corpChange($event,'curCode')"
  460. @corpFocus="getRateListfun">
  461. </search-query>
  462. </el-form-item>
  463. </el-col>
  464. <el-col :span="8">
  465. <el-checkbox style="margin-left: 10%" size="medium" :true-label="1" :false-label="0"
  466. :disabled="editSave"
  467. v-model="form.isExchangeToCny">转换成人民币
  468. </el-checkbox>
  469. <el-checkbox v-model="appendType" false-label="检索" true-label="追加">追加</el-checkbox>
  470. <el-button type="primary"
  471. size="small"
  472. plain @click="finstlbillslistAccBillV1fun(appendType)">提取费用
  473. </el-button>
  474. </el-col>
  475. <el-col :span="8">
  476. <el-form-item label="邮箱" prop="checkNo">
  477. <el-input style="width: 100%;" v-model="form.checkNo"
  478. size="small" autocomplete="off"
  479. :disabled="editSave"
  480. clearable placeholder="请输入邮箱" >
  481. </el-input>
  482. </el-form-item>
  483. </el-col>
  484. </el-row>
  485. </div>
  486. </el-col>
  487. </el-row>
  488. </trade-card>
  489. <el-card style="margin-top: 10px">
  490. <el-tabs v-model="detailTabs" type="card">
  491. <el-tab-pane label="费用明细" name="first">
  492. <div style="margin-bottom: 10px;display: flex;">
  493. <search-query :datalist="invoicingData"
  494. :selectValue="invoicingValue"
  495. :clearable="true"
  496. :buttonIf="false"
  497. :filterable="true"
  498. :forParameter="{key:'dictKey',label:'dictValue',value:'dictValue'}"
  499. placeholder="请输入开票项目"
  500. @corpChange="corpChange($event,'invoicingValue')"
  501. @corpFocus="invoicingWorkDictsfun" >
  502. </search-query>
  503. <el-button style="margin-left: 10px" size="small" type="primary" @click="invoicingfun" >开票</el-button>
  504. <el-button size="small" type="danger" @click="batchDeletefun" >批量删除</el-button>
  505. </div>
  506. <fininvoicesitems :tableData="tableData"
  507. :handleSelectionData="handleSelectionData"
  508. :editSave="editSave"
  509. @handleSelectionChange="handleSelectionChange"
  510. @deletefun="detailsdeletionfun">
  511. </fininvoicesitems>
  512. </el-tab-pane>
  513. <el-tab-pane label="开票明细" name="second">
  514. <fininvoiceitemdetail :tableData="InvoicingList"
  515. :handleSelectionData="[]">
  516. </fininvoiceitemdetail>
  517. </el-tab-pane>
  518. </el-tabs>
  519. </el-card>
  520. <el-card class="box-card" style="margin-top: 10px">
  521. <el-row>
  522. <el-col :span="5">
  523. <el-form-item label="业务编号" prop="billNo">
  524. <el-input style="width: 100%;" v-model="form.billNo"
  525. size="small" autocomplete="off"
  526. :disabled="true"
  527. clearable placeholder="请输入业务编号" >
  528. </el-input>
  529. </el-form-item>
  530. </el-col>
  531. <el-col :span="5">
  532. <el-form-item label="单据日期" prop="billDate">
  533. <el-date-picker v-model="form.billDate" clearable
  534. style="width: 100%;"
  535. type="date" size="small"
  536. :disabled="true"
  537. value-format="yyyy-MM-dd HH:mm"
  538. placeholder="选择单据日期">
  539. </el-date-picker>
  540. </el-form-item>
  541. </el-col>
  542. <el-col :span="5">
  543. <el-form-item label="制单人" prop="createUserName">
  544. <el-input style="width: 100%;" v-model="form.createUserName"
  545. size="small" autocomplete="off"
  546. :disabled="true"
  547. clearable placeholder="请输入制单人" >
  548. </el-input>
  549. </el-form-item>
  550. </el-col>
  551. <el-col :span="5">
  552. <el-form-item label="发票币种" prop="invCurCode">
  553. <search-query :datalist="invCurCodeData"
  554. :selectValue="form.invCurCode"
  555. :filterable="true"
  556. :clearable="true"
  557. :disabled="editSave"
  558. :buttonIf="false"
  559. placeholder="请选择发票币种"
  560. :forParameter="{key:'id',label:'code',value:'code'}"
  561. @corpChange="corpChange($event,'invCurCode')"
  562. @corpFocus="invCurCodeRateListfun">
  563. </search-query>
  564. </el-form-item>
  565. </el-col>
  566. <!--<el-col :span="4">-->
  567. <!-- <el-form-item label="打印次数" prop="invCurCode">-->
  568. <!-- <el-input style="width: 100%;" v-model="form.invCurCode"-->
  569. <!-- size="small" autocomplete="off"-->
  570. <!-- :disabled="editSave"-->
  571. <!-- clearable placeholder="请输入打印次数" >-->
  572. <!-- </el-input>-->
  573. <!-- </el-form-item>-->
  574. <!--</el-col>-->
  575. </el-row>
  576. </el-card>
  577. </el-form>
  578. </div>
  579. </div>
  580. </template>
  581. <script>
  582. import fininvoicesitems from "@/views/iosBasicData/fininvoicesApplyfor/assembly/fininvoicesitems.vue";
  583. import fininvoiceitemdetail from "@/views/iosBasicData/fininvoicesApplyfor/assembly/fininvoiceitemdetail.vue";
  584. import {getRateList} from "@/api/iosBasicData/rateManagement";
  585. import {finstlbillsitemsRemove, finstlbillslistAccBillV1} from "@/api/iosBasicData/finstlbills";
  586. import {bcorpsbankList, corpsinvoiceheaderList, getBcorpsList} from "@/api/iosBasicData/bcorps";
  587. import {bportsList} from "@/api/iosBasicData/bports";
  588. import SearchQuery from "@/components/iosbasic-data/searchquery.vue";
  589. import {
  590. finInvoicesApprove,
  591. fininvoicesDetail,
  592. revokeFinInvoicesApprove,
  593. fininvoicesSubmit, fininvoicesitemsRemove
  594. } from "@/api/iosBasicData/fininvoices";
  595. import {getWorkDicts} from "@/api/system/dictbiz";
  596. export default {
  597. components:{ SearchQuery, fininvoicesitems,fininvoiceitemdetail},
  598. data() {
  599. return {
  600. invoicingData:[], // 开票项目数据
  601. invoicingValue:'', // 开票项目
  602. detailTabs:'first',
  603. appendType:'检索',
  604. pageLoading:false, // 全屏加载
  605. saveLoading:false, // 按钮加载
  606. form:{},
  607. tableData:[], // 费用明细数据
  608. InvoicingList:[], // 开票明细数据
  609. handleSelectionData:[], // 选择的数据
  610. corpData:[], // 结算单位数据
  611. invCorpData:[], // 开票单位
  612. bankReceiptData:[], // 结算单位银行账号数据
  613. // 业务类型
  614. businessTypesData:[
  615. {
  616. label:'海运出口',
  617. value:'SE'
  618. },{
  619. label:'海运进口',
  620. value:'SI'
  621. }
  622. ],
  623. curData:[], // 币别
  624. destinationData:[], // 目的港
  625. podData:[], // 卸货港
  626. polData:[], // 装货港
  627. invCurCodeData:[], // 发票币种
  628. invTypeData:[], // 发票类型
  629. rules: {
  630. corpCnName: [
  631. {required: true, message: '请输入付费对象', trigger: 'blur'},
  632. ],
  633. invoiceDate: [
  634. {required: true, message: '请输入开票日期', trigger: 'blur'},
  635. ],
  636. exrate: [
  637. {required: true, message: '请输入导入汇率', trigger: 'blur'},
  638. ],
  639. taxType: [
  640. {required: true, message: '请输入所属税种', trigger: 'blur'},
  641. ],
  642. },
  643. }
  644. },
  645. props:{
  646. editSave:{
  647. type:Boolean,
  648. default:false
  649. }
  650. },
  651. methods:{
  652. // 开票信息
  653. invoicingfun(){
  654. this.detailTabs = 'second'
  655. },
  656. // 批量删除
  657. batchDeletefun(){
  658. if (this.handleSelectionData.length == 0) {
  659. return this.$message.warning('请选择要删除的数据')
  660. }
  661. this.$confirm("确定将选择数据删除?", {
  662. confirmButtonText: "确定",
  663. cancelButtonText: "取消",
  664. type: "warning"
  665. }).then(()=>{
  666. // 获取有id 的数据
  667. const itemsWithId = this.handleSelectionData.filter(item => item.hasOwnProperty('id'));
  668. let arrIds = itemsWithId.map(item=>item.id) // 获取id 数据
  669. // 把选中的删除掉
  670. this.handleSelectionData.forEach((item)=>{
  671. for (let index in this.tableData) {
  672. if (item.accBillNo == this.tableData[index].accBillNo) {
  673. this.tableData.splice(index,1)
  674. }
  675. }
  676. })
  677. // 有id 的处理
  678. if(itemsWithId.length != 0) {
  679. fininvoicesitemsRemove(arrIds.join(',')).then(res=>{
  680. this.$message.success('操作成功')
  681. })
  682. }
  683. })
  684. },
  685. // 单个删除
  686. detailsdeletionfun(id){
  687. this.$confirm("确定将选择数据删除?", {
  688. confirmButtonText: "确定",
  689. cancelButtonText: "取消",
  690. type: "warning"
  691. }).then(()=>{
  692. if (id) {
  693. fininvoicesitemsRemove(id).then(res=>{
  694. this.$message.success('操作成功')
  695. })
  696. }
  697. this.tableData.splice(index,1)
  698. })
  699. },
  700. // 下拉框的回调
  701. corpChange(value,name){
  702. // 结算单位
  703. if (name == 'corpCnName') {
  704. if (!value) {
  705. this.$set(this.form,'corpId','')
  706. this.$set(this.form,'corpCnName','')
  707. this.$set(this.form,'corpEnName','')
  708. return
  709. }
  710. for(let item of this.corpData) {
  711. if (item.cnName == value) {
  712. this.$set(this.form,'corpId',item.id)
  713. this.$set(this.form,'corpCnName',item.cnName)
  714. this.$set(this.form,'corpEnName',item.enName)
  715. bcorpsbankList(1,10,{pid:this.form.corpId}).then(res=>{
  716. if (res.data.data.records.length != 0) {
  717. this.$set(this.form,'bankReceiptAccountNo',res.data.data.records[0].accountNo)
  718. this.$set(this.form,'bankReceiptBankName',res.data.data.records[0].accountBank)
  719. }
  720. })
  721. // 带出开票单位数据
  722. corpsinvoiceheaderList(1,20,{pid:this.form.corpId}).then(res=>{
  723. if (res.data.data.records.length != 0) {
  724. this.$set(this.form,'invCorpId',res.data.data.records[0].id)
  725. this.$set(this.form,'invCorpCnName',res.data.data.records[0].invoiceHeader)
  726. this.$set(this.form,'invCorpTaxNo',res.data.data.records[0].uscc) // 税号
  727. this.$set(this.form,'invCorpAccountBankUsd',res.data.data.records[0].accountBankUsd) // 美元银行
  728. this.$set(this.form,'invCorpAccountNoUsd',res.data.data.records[0].accountNoUsd) // 美元账户
  729. this.$set(this.form,'invCorpAccountBankCny',res.data.data.records[0].accountBankUsd) // 人民币银行
  730. this.$set(this.form,'invCorpAccountNoCny',res.data.data.records[0].accountNoUsd) // 人民币账户
  731. }
  732. })
  733. }
  734. }
  735. }
  736. // 开票单位
  737. else if (name == 'invCorpCnName') {
  738. this.$set(this.form,'invCorpAccountBankUsd','')
  739. this.$set(this.form,'invCorpAccountNoUsd','')
  740. this.$set(this.form,'invCorpAccountBankCny','')
  741. this.$set(this.form,'invCorpAccountNoCny','')
  742. if (!value) {
  743. this.$set(this.form,'invCorpId','')
  744. this.$set(this.form,'invCorpCnName','')
  745. return
  746. }
  747. for(let item of this.invCorpData) {
  748. if (item.id == value) {
  749. this.$set(this.form,'invCorpId',item.id)
  750. this.$set(this.form,'invCorpCnName',item.invoiceHeader)
  751. this.$set(this.form,'invCorpTaxNo',item.uscc) // 税号
  752. this.$set(this.form,'invCorpAccountBankUsd',item.accountBankUsd) // 美元银行
  753. this.$set(this.form,'invCorpAccountNoUsd',item.accountNoUsd) // 美元账户
  754. this.$set(this.form,'invCorpAccountBankCny',item.accountBankUsd) // 人民币银行
  755. this.$set(this.form,'invCorpAccountNoCny',item.accountNoUsd) // 人民币账户
  756. }
  757. }
  758. }
  759. // 结算单位银行账户
  760. else if(name == 'bankReceiptAccountNo') {
  761. for(let item of this.bankReceiptData) {
  762. if (item.accountNo == value) {
  763. this.$set(this.form,'bankReceiptAccountNo',item.accountNo)
  764. this.$set(this.form,'bankReceiptBankName',item.accountBank)
  765. }
  766. }
  767. }
  768. else if (name == 'invoicingValue') {
  769. this.invoicingValue = value
  770. }
  771. else {
  772. this.$set(this.form,name,value)
  773. }
  774. },
  775. // 下面表格多选
  776. handleSelectionChange(arr){
  777. this.handleSelectionData = arr
  778. },
  779. // 编辑事件
  780. editHandle(){
  781. this.editSave = false
  782. },
  783. // 保存按钮事件
  784. editCustomer(){
  785. this.$refs.form.validate((valid) => {
  786. if (!valid) return
  787. if (!this.form.id) {
  788. // 是否选择从表数据
  789. if (this.handleSelectionData.length == 0) {
  790. this.$message.warning('请选择结算数据');
  791. return;
  792. }
  793. }
  794. this.form.type = '销项'
  795. this.form.billNoFormat = 'FPSQ'
  796. this.form.businessTypeCode = 'FPSQ'
  797. this.form.businessTypes = this.form.businessTypes?this.form.businessTypes.join(','):''
  798. //开票日期
  799. if(this.form.invoiceDate) {
  800. this.form.invoiceDate = this.form.invoiceDate.slice(0,10) + ' 00:00:00'
  801. }
  802. this.form.finInvoicesItemsList = this.handleSelectionData.map(item=>{
  803. if (item.currentCurCode == 'CNY') {
  804. item.currentAmount = item.currentAmountCNY
  805. }else {
  806. item.currentAmount = item.currentAmountUSD
  807. }
  808. return item
  809. })
  810. this.saveLoading = true
  811. this.fininvoicesSubmitfun(this.form)
  812. })
  813. },
  814. // 检索
  815. finstlbillslistAccBillV1fun(type){
  816. if (!this.form.corpId) {
  817. this.$message.warning('请选择结算单位');
  818. return
  819. }
  820. let obj = {}
  821. //开票日期
  822. if(this.form.invoiceDate) {
  823. obj.invoiceDate = this.form.invoiceDate.slice(0,10) + ' 00:00:00'
  824. }
  825. obj.type = '3'
  826. obj.corpCnName = this.form.corpId // 结算单位
  827. obj.billNo = this.form.bookingNo // 账单号
  828. obj.businessBillNo = this.form.billNo // 业务编号
  829. obj.mblno = this.form.mblno // 主单编号
  830. obj.hblno = this.form.hblno // 分单编号
  831. obj.checkBillNo = this.form.checkNo // 对账单号
  832. obj.bookingNo = this.form.bookingNo // 订舱号(BOOK NO)
  833. obj.curCode = this.form.curCode // 币种
  834. obj.businessType = this.form.businessTypes?this.form.businessTypes.join(','):'' // 业务类型
  835. finstlbillslistAccBillV1(obj).then(res=>{
  836. let arr = res.data.data.map((item,index)=>{
  837. item.lineNo = Number(index) + 1 // 行号
  838. item.accBillId = item.id
  839. item.accBillNo = item.billNo
  840. item.accDate = item.createTime
  841. item.currentCurCode = item.curCode
  842. item.currentExrate = item.exrate
  843. if (item.currentCurCode == 'CNY') {
  844. // 本次发票金额
  845. item.currentAmountCNY = (Number(item.amount) - Number(item.stlTtlAmount) - Number(item.appliedAmount)).toFixed(2)
  846. }else {
  847. // 本次发票金额
  848. item.currentAmountUSD = (Number(item.amount) - Number(item.stlTtlAmount) - Number(item.appliedAmount)).toFixed(2)
  849. }
  850. delete item.id
  851. return item
  852. })
  853. if (type == '追加') {
  854. let a = [...this.tableData,...arr,]
  855. this.tableData = a.filter((obj, index) => {
  856. return a.findIndex((elem) => {
  857. return elem.accBillNo === obj.accBillNo
  858. }) === index;
  859. });
  860. }else {
  861. // 获取有id 的数据
  862. const itemsWithId = this.tableData.filter(item => item.hasOwnProperty('id'));
  863. let arrIds = itemsWithId.map(item=>item.id) // 获取id 数据
  864. // 有id 的处理
  865. if(itemsWithId.length != 0) {
  866. fininvoicesitemsRemove(arrIds.join(',')).then(res=>{
  867. this.$message.success('操作成功')
  868. })
  869. }
  870. this.tableData = arr
  871. }
  872. })
  873. },
  874. // 保存接口
  875. fininvoicesSubmitfun(obj){
  876. fininvoicesSubmit(obj).then(res=>{
  877. this.saveLoading = false
  878. this.$message.success('操作成功');
  879. this.fininvoicesDetailfun(res.data.data.id)
  880. })
  881. },
  882. // 详情接口
  883. fininvoicesDetailfun(id){
  884. this.pageLoading = true
  885. fininvoicesDetail(id).then(res=>{
  886. this.form = res.data.data
  887. this.form.businessTypes = this.form.businessTypes?this.form.businessTypes.split(','):[] // 业务类型转换成数组显示
  888. this.tableData = this.form.finInvoicesItemsList.map(item=>{
  889. if (item.currentCurCode == 'CNY') {
  890. item.currentAmountCNY = item.currentAmount
  891. }else {
  892. item.currentAmountUSD = item.currentAmount
  893. }
  894. return item
  895. })
  896. this.InvoicingList = this.form.finInvoiceItemDetailList
  897. this.pageLoading = false
  898. })
  899. },
  900. // 确认申请
  901. finInvoicesApprovefun(){
  902. this.$confirm("确定进行申请操作?", {
  903. confirmButtonText: "确定",
  904. cancelButtonText: "取消",
  905. type: "warning"
  906. }).then(res=>{
  907. this.pageLoading = true
  908. this.form.businessTypes = this.form.businessTypes?this.form.businessTypes.join(','):''
  909. finInvoicesApprove(this.form).then(res=>{
  910. this.pageLoading = false
  911. this.$message.success('操作成功');
  912. this.fininvoicesDetailfun(res.data.data.id)
  913. }).catch(err=>{
  914. this.pageLoading = false
  915. })
  916. })
  917. },
  918. // 撤销申请
  919. revokeFinInvoicesApprovefun(){
  920. this.$confirm("确定进行撤销申请操作?", {
  921. confirmButtonText: "确定",
  922. cancelButtonText: "取消",
  923. type: "warning"
  924. }).then(res=>{
  925. this.pageLoading = true
  926. this.form.businessTypes = this.form.businessTypes?this.form.businessTypes.join(','):''
  927. revokeFinInvoicesApprove(this.form).then(res=>{
  928. this.pageLoading = false
  929. this.$message.success('操作成功');
  930. this.fininvoicesDetailfun(res.data.data.id)
  931. }).catch(err=>{
  932. this.pageLoading = false
  933. })
  934. })
  935. },
  936. //返回列表
  937. backToList() {
  938. this.$emit('goBack')
  939. },
  940. // 获取客户名称数据 往来单位数据
  941. corpBcorpsListfun(cnName){
  942. getBcorpsList(1,10,{cnName}).then(res=>{
  943. this.corpData = res.data.data.records
  944. })
  945. },
  946. // 根据往来单位选择调用获取银行数据
  947. bcorpsbankListfun(accountNo){
  948. bcorpsbankList(1,10,{
  949. // curNo:this.cntyCode,
  950. pid:this.form.corpId,
  951. accountNo:accountNo
  952. }).then(res=>{
  953. this.bankReceiptData = res.data.data.records
  954. })
  955. },
  956. // 根据往来单位选择调用获取发票抬头数据 开票单位数据
  957. invcorpsinvoiceheaderListfun(cnName){
  958. corpsinvoiceheaderList(1,20,{pid:this.form.corpId,cnName}).then(res=>{
  959. this.invCorpData = res.data.data.records
  960. })
  961. },
  962. // 获取币别数据
  963. getRateListfun(cnName){
  964. getRateList({current:1,size:10,cnName}).then(res=>{
  965. this.curData = res.data.data.records
  966. })
  967. },
  968. // 获取发票币别数据
  969. invCurCodeRateListfun(cnName){
  970. getRateList({current:1,size:20,cnName}).then(res=>{
  971. this.invCurCodeData = res.data.data.records
  972. })
  973. },
  974. // 目的地
  975. destinationBportsListfun(enName){
  976. bportsList(1,10,{enName}).then(res=>{
  977. this.destinationData = res.data.data.records
  978. })
  979. },
  980. // 卸货港
  981. podBportsListfun(enName){
  982. bportsList(1,10,{enName}).then(res=>{
  983. this.podData = res.data.data.records
  984. })
  985. },
  986. // 装货港
  987. polBportsListfun(enName){
  988. bportsList(1,10,{enName}).then(res=>{
  989. this.polData = res.data.data.records
  990. })
  991. },
  992. // 发票类型字典数据
  993. invTypeWorkDictsfun(){
  994. getWorkDicts('inv_type_los').then(res=>{
  995. this.invTypeData = res.data.data;
  996. })
  997. },
  998. invoicingWorkDictsfun(){
  999. getWorkDicts('Invoice_information_los').then(res=>{
  1000. this.invoicingData = res.data.data;
  1001. })
  1002. },
  1003. },
  1004. }
  1005. </script>
  1006. <style scoped>
  1007. ::v-deep.el-form-item {
  1008. margin-bottom: 0;
  1009. }
  1010. .cardBox {
  1011. background: #fff;
  1012. width: 100%;
  1013. height: 100%;
  1014. padding: 20px;
  1015. box-sizing: border-box;
  1016. border-radius: 4px;
  1017. box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
  1018. }
  1019. .flexBox {
  1020. display: flex;
  1021. }
  1022. .flexBoxLeft {
  1023. flex: 2;
  1024. margin-right: 10px;
  1025. //padding-bottom: 40px;
  1026. }
  1027. .flexBoxRight {
  1028. flex: 3;
  1029. //padding-bottom: 40px;
  1030. }
  1031. </style>