gwPayFlowableDetail.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481
  1. <template>
  2. <view style="margin: 25rpx 25rpx 75rpx 25rpx;">
  3. <view style = "text-align: center;font-size: 43rpx; margin-bottom:10rpx">国电投国际贸易(北京)有限公司<br>境外付款申请及确认单</view>
  4. <view style = "margin-bottom:10rpx;text-align: right;">付款单编号:{{paymentData.payNumber}}</view>
  5. <view class="h-table" style="margin-bottom:20rpx">
  6. <view class="h-tr h-tr-4">
  7. <view class="h-td h-td-left">日 期</view>
  8. <view class="h-td h-td-left">{{paymentData.createTime}}</view>
  9. <view class="h-td h-td-left">部 门</view>
  10. <view class="h-td h-td-left">{{paymentData.roleName}}部</view>
  11. </view>
  12. <view class="h-tr h-tr-4">
  13. <view class="h-td h-td-left">合同编号</view>
  14. <view class="h-td h-td-left">{{paymentData.contractNo}}</view>
  15. <view class="h-td h-td-left">经 办 人</view>
  16. <view class="h-td h-td-left">{{paymentData.createUser}}</view>
  17. </view>
  18. <view class="h-tr h-tr-4">
  19. <view class="h-td h-td-left">合同总额</view>
  20. <view class="h-td h-td-left">{{paymentData.originalCurrency}}</view>
  21. <view class="h-td h-td-left">付款方式</view>
  22. <view class="h-td h-td-left">{{paymentData.payTypeDesc}}</view>
  23. </view>
  24. <view class="h-tr h-tr-2">
  25. <view class="h-td h-td-left">收款人所在国家(地区)名称及代码</view>
  26. <view class="h-td h-td-left">{{paymentData.counttryCode}}</view>
  27. </view>
  28. <view class="h-tr h-tr-4">
  29. <view class="h-td h-td-left">收款人名称</view>
  30. <view class="h-td h-td-left h-td-colspan">{{paymentData.companyName}}</view>
  31. </view>
  32. <view class="h-tr h-tr-4">
  33. <view class="h-td h-td-left">收款人地址</view>
  34. <view class="h-td h-td-left h-td-colspan">{{paymentData.address}}</view>
  35. </view>
  36. <view class="h-tr h-tr-4">
  37. <view class="h-td h-td-left">收款人开户行及SWIFT代码</view>
  38. <view class="h-td h-td-left h-td-colspan" v-html="paymentData.swiftCodeDesc"></view>
  39. </view>
  40. <view class="h-tr h-tr-4">
  41. <view class="h-td h-td-left">开户行地址</view>
  42. <view class="h-td h-td-left h-td-colspan">{{paymentData.bankName}}</view>
  43. </view>
  44. <view class="h-tr h-tr-4">
  45. <view class="h-td h-td-left">收款人账号</view>
  46. <view class="h-td h-td-left h-td-colspan">{{paymentData.bankNumber}}</view>
  47. </view>
  48. <view class="h-tr h-tr-4">
  49. <view class="h-td h-td-left">币种及金额</view>
  50. <view class="h-td h-td-left h-td-colspan">{{paymentData.currencyDesc}} {{paymentData.originalAmount}}</view>
  51. </view>
  52. <view class="h-tr h-tr-4">
  53. <view class="h-td h-td-left">重 量</view>
  54. <view class="h-td h-td-left">{{paymentData.contractWeight}}</view>
  55. <view class="h-td h-td-left">单 价</view>
  56. <view class="h-td h-td-left">{{paymentData.contractOriginalPrice}}</view>
  57. </view>
  58. <view class="h-tr h-tr-4">
  59. <view class="h-td h-td-left">货品名称</view>
  60. <view class="h-td h-td-left">{{paymentData.categoryName}}</view>
  61. <view class="h-td h-td-left">付款期限</view>
  62. <view class="h-td h-td-left">{{paymentData.termsPayment}}</view>
  63. </view>
  64. <view class="h-tr h-tr-4">
  65. <view class="h-td h-td-left">备 注</view>
  66. <view class="h-td h-td-left h-td-colspan">{{paymentData.remarks}}</view>
  67. </view>
  68. </view>
  69. <view class="h-table">
  70. <view class="h-tr h-tr-4">
  71. <view class="h-td h-td-center h-td-colspan">审 批</view>
  72. </view>
  73. <view class="h-tr h-tr-4">
  74. <view class="h-td h-td-center" style = "width: 25%;">审查主体</view>
  75. <view class="h-td h-td-center" style = "width: 30%;">合规要求</view>
  76. <view class="h-td h-td-center" style = "width: 20%;">审查情况</view>
  77. <view class="h-td h-td-center" style = "width: 25%;">审查意见</view>
  78. </view>
  79. <view class="h-tr h-tr-4">
  80. <view class="h-td h-td-center" style = "width: 25%;">部门复核</view>
  81. <view class="h-td h-td-left" style = "width: 30%;" @click="openTextMask('1')">
  82. <text style="overflow:hidden; text-overflow:ellipsis; white-space:nowrap;">
  83. {{text1}}
  84. </text>
  85. </view>
  86. <view class="h-td h-td-center" style = "width: 20%;" @click="openRadioMask('1')">
  87. <text>
  88. {{radioText1}}
  89. </text>
  90. </view>
  91. <view class="h-td h-td-left" style = "width: 25%;">
  92. <text>
  93. {{yijian1}}
  94. </text>
  95. </view>
  96. </view>
  97. <view class="h-tr h-tr-4">
  98. <view class="h-td h-td-center" style = "width: 25%;">部门负责人</view>
  99. <view class="h-td h-td-left" style = "width: 30%;" @click="openTextMask('2')">
  100. <text style="overflow:hidden; text-overflow:ellipsis; white-space:nowrap;" >
  101. {{text2}}
  102. </text>
  103. </view>
  104. <view class="h-td h-td-center" style = "width: 20%;" @click="openRadioMask('2')">
  105. <text>
  106. {{radioText2}}
  107. </text>
  108. </view>
  109. <view class="h-td h-td-left" style = "width: 25%;">
  110. <text>
  111. {{yijian2}}
  112. </text>
  113. </view>
  114. </view>
  115. <view class="h-tr h-tr-4">
  116. <view class="h-td h-td-center" style = "width: 25%;">风控部负责人</view>
  117. <view class="h-td h-td-left" style = "width: 30%;" @click="openTextMask('3')">
  118. <text style="overflow:hidden; text-overflow:ellipsis; white-space:nowrap;" >
  119. {{text3}}
  120. </text>
  121. </view>
  122. <view class="h-td h-td-center" style = "width: 20%;" @click="openRadioMask('3')">
  123. <text>
  124. {{radioText3}}
  125. </text>
  126. </view>
  127. <view class="h-td h-td-left" style = "width: 25%;">
  128. <text>
  129. {{yijian3}}
  130. </text>
  131. </view>
  132. </view>
  133. <view class="h-tr h-tr-4">
  134. <view class="h-td h-td-center" style = "width: 25%;">计财部负责人</view>
  135. <view class="h-td h-td-left" style = "width: 30%;" @click="openTextMask('4')">
  136. <text style="overflow:hidden; text-overflow:ellipsis; white-space:nowrap;">
  137. {{text4}}
  138. </text>
  139. </view>
  140. <view class="h-td h-td-center" style = "width: 20%;" @click="openRadioMask('4')">
  141. <text>
  142. {{radioText4}}
  143. </text>
  144. </view>
  145. <view class="h-td h-td-left" style = "width: 25%;">
  146. <text>
  147. {{yijian4}}
  148. </text>
  149. </view>
  150. </view>
  151. <view class="h-tr h-tr-4">
  152. <view class="h-td h-td-center" style = "width: 25%;">总经理</view>
  153. <view class="h-td h-td-left" style = "width: 30%;" @click="openTextMask('5')">
  154. <text style="overflow:hidden; text-overflow:ellipsis; white-space:nowrap;">
  155. {{text5}}
  156. </text>
  157. </view>
  158. <view class="h-td h-td-center" style = "width: 20%;" @click="openRadioMask('5')">
  159. <text>
  160. {{radioText5}}
  161. </text>
  162. </view>
  163. <view class="h-td h-td-left" style = "width: 25%;">
  164. <text>
  165. {{yijian5}}
  166. </text>
  167. </view>
  168. </view>
  169. <view class="h-tr h-tr-4">
  170. <view class="h-td h-td-center" style = "width: 25%;">董事长</view>
  171. <view class="h-td h-td-left" style = "width: 30%;" @click="openTextMask('6')">
  172. <text style="overflow:hidden; text-overflow:ellipsis; white-space:nowrap;">
  173. {{text6}}
  174. </text>
  175. </view>
  176. <view class="h-td h-td-center" style = "width: 20%;" @click="openRadioMask('6')">
  177. <text>
  178. {{radioText6}}
  179. </text>
  180. </view>
  181. <view class="h-td h-td-left" style = "width: 25%;">
  182. <text>
  183. {{yijian6}}
  184. </text>
  185. </view>
  186. </view>
  187. </view>
  188. <u-mask :show="textShow" :duration="400" :custom-style="{backgroundColor: '#2c2a2aeb'}" @click="closeMask()">
  189. <view style = "display: flex;align-items: center;justify-content: center;height: 100%;">
  190. <view style = "width: 600rpx;height: auto;background-color: #fff;border-radius: 10px; padding: 10px; min-height: 170rpx;">
  191. <text>
  192. {{showContent}}
  193. </text>
  194. </view>
  195. </view>
  196. </u-mask>
  197. <u-mask :show="radioShow" :duration="400" :custom-style="{backgroundColor: '#2c2a2aeb'}">
  198. <view style = "display: flex;align-items: center;justify-content: center;height: 100%;">
  199. <view style = "width: 600rpx;height: auto;background-color: #fff;border-radius: 10px; padding: 10px;">
  200. <u-radio-group v-for="(radioGroupItem, radioGroupIndex) in radioListCurrent" :key="radioGroupItem.name" v-model="radioGroupItem.value" style = "width: 100%;" width = "33%">
  201. <u-radio
  202. v-for="(radioItem, index) in radioGroupItem.item"
  203. :name="radioItem.value"
  204. :key="radioItem.key" >
  205. {{radioItem.name}}
  206. </u-radio>
  207. </u-radio-group>
  208. <view style = "display: flex;margin-top: 20rpx;">
  209. <u-button size="medium" type="primary" style="margin: auto;" @click="closeMask()">取消</u-button>
  210. <u-button size="medium" type="success" style="margin: auto;" @click="radioSubmit()">确定</u-button>
  211. </view>
  212. </view>
  213. </view>
  214. </u-mask>
  215. </view>
  216. </template>
  217. <script>
  218. import {convertCurrency} from '@/pages/common/chineseCash.js';
  219. export default {
  220. props:['parentPaymentData', 'processInstanceId'],
  221. data() {
  222. return {
  223. paymentData : {},
  224. textShow : false,
  225. showContent : '',
  226. text1 : '1.审核填写的《付款申请及确认》信息是否完整;\n2.审核收款单位名称、账户信息等是否与对应合同方一致;\n3.审核重量、单价是否填写正确,审核金额计算是否正确,且金额的大小写一致;\n4.审核付款事项与合同规定是否一致;涉及预付款事项的,审核合同是否明确预付款事项,支付比例和已付事项是否与合同规定一致;\n5.审核相应附件是否齐全,例如合同审批单或合同付款统计表、确认函、发货清单或收货凭据等;',
  227. text2 : '1.全面复核申请人的内控合规要求。',
  228. text3 : '1.全面复核申请人的内控合规要求。',
  229. text4 : '1.复核经办部门填写的《付款申请及确认》及附件是否完整、准确,审核经办部门经办人、复核人、部门主任是否签字;\n2.复核计算金额是否正确,且金额的大小写是否一致;\n3.复核收款单位名称是否与合同附件的信息一致;\n4.复核相应附件是否齐全,例如合同审批单或合同付款确认单、确认函、发货清单或收货凭据等;',
  230. text5 : '1.对预算内500万元以内的资金支付进行审批,审核资金支出的合规性以及支付金额的准确性,确认付款申请经过了前置审查。',
  231. text6 : '1.对预算内500万元以内的资金支付进行审批,审核资金支出的合规性以及支付金额的准确性,确认付款申请经过了前置审查。',
  232. yijian1 : '意见:\n签名:\n日期:',
  233. yijian2 : '意见:\n签名:\n日期:',
  234. yijian3 : '意见:\n签名:\n日期:',
  235. yijian4 : '意见:\n签名:\n日期:',
  236. yijian5 : '意见:\n签名:\n日期:',
  237. yijian6 : '意见:\n签名:\n日期:',
  238. radioListCurrent : [],
  239. radioIndex : '',
  240. radioShow : false,
  241. radioList1 : [
  242. {name : 'u1', value : '1', item : [{name : '是', value : '1', key : 'u11'},{name : '否', value : '2', key : 'u12'},{name : '不适用', value : '3', key : 'u13'}]},
  243. {name : 'u2', value : '1', item : [{name : '是', value : '1', key : 'u21'},{name : '否', value : '2', key : 'u22'},{name : '不适用', value : '3', key : 'u23'}]},
  244. {name : 'u3', value : '1', item : [{name : '是', value : '1', key : 'u31'},{name : '否', value : '2', key : 'u32'},{name : '不适用', value : '3', key : 'u33'}]},
  245. {name : 'u4', value : '1', item : [{name : '是', value : '1', key : 'u41'},{name : '否', value : '2', key : 'u42'},{name : '不适用', value : '3', key : 'u43'}]},
  246. {name : 'u5', value : '1', item : [{name : '是', value : '1', key : 'u51'},{name : '否', value : '2', key : 'u52'},{name : '不适用', value : '3', key : 'u53'}]}
  247. ],
  248. radioText1 : '是\n是\n是\n是\n是',
  249. radioList2 : [
  250. {name : 'ywzg1', value : '1', item : [{name : '是', value : '1', key : 'ywzg11'},{name : '否', value : '2', key : 'ywzg12'},{name : '不适用', value : '3', key : 'ywzg13'}]},
  251. ],
  252. radioText2 : '是',
  253. radioList3 : [
  254. {name : 'fkzg1', value : '1', item : [{name : '是', value : '1', key : 'fkzg11'},{name : '否', value : '2', key : 'fkzg12'},{name : '不适用', value : '3', key : 'fkzg13'}]},
  255. ],
  256. radioText3 : '是',
  257. radioList4 : [
  258. {name : 'cw1', value : '1', item : [{name : '是', value : '1', key : 'cw11'},{name : '否', value : '2', key : 'cw12'},{name : '不适用', value : '3', key : 'cw13'}]},
  259. {name : 'cw2', value : '1', item : [{name : '是', value : '1', key : 'cw21'},{name : '否', value : '2', key : 'cw22'},{name : '不适用', value : '3', key : 'cw23'}]},
  260. {name : 'cw3', value : '1', item : [{name : '是', value : '1', key : 'cw31'},{name : '否', value : '2', key : 'cw32'},{name : '不适用', value : '3', key : 'cw33'}]},
  261. {name : 'cw4', value : '1', item : [{name : '是', value : '1', key : 'cw41'},{name : '否', value : '2', key : 'cw42'},{name : '不适用', value : '3', key : 'cw43'}]}
  262. ],
  263. radioText4 : '是\n是\n是\n是',
  264. radioList5 : [
  265. {name : 'zjl1', value : '1', item : [{name : '是', value : '1', key : 'zjl11'},{name : '否', value : '2', key : 'zjl12'},{name : '不适用', value : '3', key : 'zjl13'}]},
  266. ],
  267. radioText5 : '是',
  268. radioList6 : [
  269. {name : 'dsz1', value : '1', item : [{name : '是', value : '1', key : 'dsz11'},{name : '否', value : '2', key : 'dsz12'},{name : '不适用', value : '3', key : 'dsz13'}]},
  270. ],
  271. radioText6 : '是',
  272. }
  273. },
  274. beforeMount() {
  275. this.paymentData = JSON.parse(JSON.stringify(this.parentPaymentData));
  276. this.paymentData.originalAmount = convertCurrency(this.paymentData.originalAmount );
  277. this.paymentData.swiftCodeDesc = "";
  278. if (!!this.paymentData.swiftCode) {
  279. this.paymentData.swiftCodeDesc = "Swift code:" + this.paymentData.swiftCode;
  280. }
  281. if (!!this.paymentData.iban) {
  282. this.paymentData.swiftCodeDesc += "<br>IBAN" + this.paymentData.iban;
  283. }
  284. let self = this;
  285. this.admRequest({
  286. action : 'ContractManageAction/selectContractInfo',
  287. data : {
  288. aciId : self.paymentData.contractId
  289. },
  290. success(res){
  291. let contractData = res.data.data[0];
  292. let originalCurrency = contractData.originalCurrency;
  293. let contractNo = contractData.contractNo;
  294. // 合同金额 和 合同号
  295. self.paymentData.originalCurrency = originalCurrency;
  296. self.paymentData.contractNo = contractNo;
  297. self.$forceUpdate();
  298. }
  299. })
  300. // 查询付款对应合同详情的产品信息 和 已付金额
  301. this.admRequest({
  302. action : 'CollectPayManageAction/payContractdetailInfo',
  303. data : {
  304. paymentId : self.paymentData.id,
  305. contractId : self.paymentData.contractId,
  306. payType : self.paymentData.payType
  307. },
  308. success(res){
  309. let payData = res.data;
  310. self.paymentData.categoryName = payData.categoryName;
  311. self.paymentData.contractWeight = payData.contractWeight;
  312. self.paymentData.contractOriginalPrice = payData.contractOriginalPrice;
  313. self.$forceUpdate();
  314. }
  315. })
  316. // 已填数据
  317. this.admRequest({
  318. action : 'ApprovalManageAction/approvalDetailFlowable',
  319. data : {
  320. id : self.paymentData.id,
  321. processId : self.processInstanceId
  322. },
  323. success(res){
  324. let inputDatas = res.data.data;
  325. for (let i = 0; i < inputDatas.length; i ++) {
  326. let inputData = inputDatas[i];
  327. let radioList = self['radioList' + (i+1)];
  328. let yijian = '意见:' + inputData.yijian + '\n' + '签名:' + inputData.qianming + '\n' + '日期:' + inputData.riqi.substring(0, 4) + "-" + inputData.riqi.substring(4, 6) + "-" + inputData.riqi.substring(6, 8);
  329. self['yijian' + (i+1)] = yijian;
  330. let checkedData = inputData.checkedData;
  331. let radioTextTemp = '';
  332. for(let key in checkedData){
  333. let v = checkedData[key];
  334. for (let r of radioList) {
  335. if (r.name == key) {
  336. r.value = v;
  337. let item = r.item;
  338. let value = r.value;
  339. for (let it of item) {
  340. if (it.value == value) {
  341. radioTextTemp += it.name + '\n';
  342. }
  343. }
  344. self['radioText' + (i+1)] = radioTextTemp;
  345. break;
  346. }
  347. }
  348. }
  349. }
  350. }
  351. })
  352. // 付款方式
  353. this.payTypeInit();
  354. },
  355. methods:{
  356. payTypeInit(){
  357. let self = this;
  358. let payTypeDesc = null;
  359. if (!!uni.getStorageSync('PAYMENT_METHOD_OUT')) {
  360. var payWayList = uni.getStorageSync('PAYMENT_METHOD_OUT');
  361. for (let p of payWayList) {
  362. if (self.paymentData.payType == p.value) {
  363. payTypeDesc = p.showmsg;
  364. self.paymentData.payTypeDesc = payTypeDesc;
  365. self.$forceUpdate();
  366. }
  367. }
  368. } else {
  369. self.admRequest({
  370. action : 'AppParamAction/getAppparList',
  371. data : {
  372. code : 'PAYMENT_METHOD_OUT'
  373. },
  374. success(r){
  375. var payWayList = r.data.data;
  376. if (!!payWayList) {
  377. uni.setStorageSync("PAYMENT_METHOD_OUT", payWayList);
  378. }
  379. for (let p of payWayList) {
  380. if (self.paymentData.payType == p.value) {
  381. payTypeDesc = p.showmsg;
  382. self.paymentData.payTypeDesc = payTypeDesc;
  383. self.$forceUpdate();
  384. }
  385. }
  386. }
  387. })
  388. }
  389. if (payTypeDesc == null) {
  390. if (!!uni.getStorageSync('PAYMENT_METHOD')) {
  391. var payWayList = uni.getStorageSync('PAYMENT_METHOD');
  392. for (let p of payWayList) {
  393. if (self.paymentData.payType == p.value) {
  394. payTypeDesc = p.showmsg;
  395. self.paymentData.payTypeDesc = payTypeDesc;
  396. self.$forceUpdate();
  397. }
  398. }
  399. } else {
  400. self.admRequest({
  401. action : 'AppParamAction/getAppparList',
  402. data : {
  403. code : 'PAYMENT_METHOD'
  404. },
  405. success(r){
  406. var payWayList = r.data.data;
  407. if (!!payWayList) {
  408. uni.setStorageSync("PAYMENT_METHOD", payWayList);
  409. }
  410. for (let p of payWayList) {
  411. if (self.paymentData.payType == p.value) {
  412. payTypeDesc = p.showmsg;
  413. self.paymentData.payTypeDesc = payTypeDesc;
  414. self.$forceUpdate();
  415. }
  416. }
  417. }
  418. })
  419. }
  420. }
  421. },
  422. openTextMask(index){
  423. this.showContent = this['text' + index];
  424. this.textShow = true;
  425. },
  426. closeMask(){
  427. this.textShow = false;
  428. this.radioShow = false;
  429. },
  430. openRadioMask(index){
  431. this.radioIndex = index;
  432. this.radioListCurrent = JSON.parse(JSON.stringify(this['radioList'+index]));
  433. this.radioShow = true;
  434. },
  435. radioSubmit(){
  436. let radioTextTemp = '';
  437. for (let r of this.radioListCurrent) {
  438. let item = r.item;
  439. let value = r.value;
  440. for (let it of item) {
  441. if (it.value == value) {
  442. radioTextTemp += it.name + '\n';
  443. }
  444. }
  445. }
  446. this['radioList' + this.radioIndex] = JSON.parse(JSON.stringify(this.radioListCurrent));
  447. this['radioText' + this.radioIndex] = radioTextTemp;
  448. this.radioShow = false;
  449. },
  450. getCallBackData(){
  451. let inputData = new Array();
  452. for (let i = 1; i <= 6; i ++) {
  453. let radioList = this['radioList' + i];
  454. let trData = {};
  455. for (let r of radioList) {
  456. trData[r.name] = r.value;
  457. }
  458. inputData.push(trData);
  459. }
  460. let data = {};
  461. data.param = {inputData : inputData};
  462. data.callBackUrl = "FlowableApiAction/payBackDeal";
  463. return data;
  464. }
  465. }
  466. }
  467. </script>
  468. <style lang="scss">
  469. /* 引入表格样式表 */
  470. @import "@/static/css/helang-table.scss";
  471. </style>