provider.remit.php 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. <?php defined('InShopNC') or exit('Access Invalid!'); ?>
  2. <style>
  3. </style>
  4. <div class="page">
  5. <div class="fixed-bar">
  6. <div class="item-title">
  7. <h3>通道管理</h3>
  8. <ul class="tab-base">
  9. <li><a href="index.php?act=provider&op=index"><span><?php echo $lang['nc_manage'] ?></span></a></li>
  10. <li><a href="index.php?act=provider&op=provider_amount"><span>调款记录</span></a></li>
  11. <li><a href="JavaScript:void(0);" class="current"><span>打款</span></a></li>
  12. </ul>
  13. </div>
  14. </div>
  15. <div class="fixed-empty"></div>
  16. <form id="price_form" enctype="multipart/form-data" method="post">
  17. <input type="hidden" name="form_submit" value="ok" />
  18. <table class="table tb-type2">
  19. <tbody>
  20. <tr class="noborder">
  21. <td colspan="2" class="required"><label class="validation" for="mchid">操作人:</label></td>
  22. </tr>
  23. <tr class="noborder">
  24. <td class="vatop rowform"><input type="text" name="operation" id="operation" class="txt" value="">
  25. </td>
  26. <td class="vatop tips"></td>
  27. </tr>
  28. <tr>
  29. <td colspan="2" class="required"><label class="validation" for="password">打款:</label></td>
  30. </tr>
  31. <?php foreach ($output['remit_data'] as $data) { ?>
  32. <tr class="noborder">
  33. <td>
  34. <table class="spec_table tb-type2 setTable" style="width: 780px">
  35. <tr>
  36. <th>公司名称:<?php echo $data['co_name'];?></th>
  37. </tr>
  38. <tr class="w500">
  39. <th class="w150 align-center">通道名称</th>
  40. <th class="w150 align-center">当前余额</th>
  41. <th class="w150 align-center">接口余额</th>
  42. <th class="w150 align-center">打款金额</th>
  43. </tr>
  44. <?php foreach ($data['providers'] as $v){?>
  45. <tbody class="tbody">
  46. <tr class="w500" style="height: 50px;">
  47. <td class="w100 align-center">
  48. <?php echo $v['store_name']; ?>
  49. </td>
  50. <td class="w100 align-center">
  51. <?php echo $v['available_predeposit']; ?>
  52. </td>
  53. <td class="w100 align-center">
  54. <?php echo $v['balance']; ?>
  55. </td>
  56. <td class="w100 align-center">
  57. <input type="hidden" name="strs[]" value="<?php echo $v['co_id']?>-<?php echo $v['provider_id']?>">
  58. <input type="text" name="remits[]" class="priceInput" value="<?php echo $v['remit'];?>">
  59. <div id="money" style="color:red;"></div>
  60. </td>
  61. </tr>
  62. </tbody>
  63. <?php }?>
  64. </table>
  65. </td>
  66. </tr>
  67. <?php } ?>
  68. <tr>
  69. <th></th>
  70. <td text-align="right">总计:<span id="total" style="color:red;">0</span></td>
  71. </tr>
  72. </tbody>
  73. <tfoot>
  74. <tr class="tfoot">
  75. <td colspan="15"><a href="JavaScript:void(0);" class="btn" id="submitBtn"><span><?php echo $lang['nc_submit']; ?></span></a></td>
  76. </tr>
  77. </tfoot>
  78. </table>
  79. </form>
  80. </div>
  81. <script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/js/dialog/dialog.js" id="dialog_js" charset="utf-8"></script>
  82. <script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/js/jquery-ui/jquery.ui.js"></script>
  83. <script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/js/ajaxfileupload/ajaxfileupload.js"></script>
  84. <script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/js/jquery.Jcrop/jquery.Jcrop.js"></script>
  85. <link href="<?php echo RESOURCE_SITE_URL; ?>/js/jquery.Jcrop/jquery.Jcrop.min.css" rel="stylesheet" type="text/css" id="cssfile2" />
  86. <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/3.16.0/math.min.js"></script>
  87. <script>
  88. math.config({
  89. number: 'BigNumber',
  90. precision: 20
  91. });
  92. </script>
  93. <script type="text/javascript">
  94. $(function() {
  95. total_calculation()
  96. function total_calculation()
  97. {
  98. let total = 0;
  99. var $priceInput = $('.priceInput');
  100. for(let i=0;i<$priceInput.length;i++){
  101. if($priceInput.eq(i).val() && !isNaN($priceInput.eq(i).val())){
  102. const value = parseFloat($priceInput.eq(i).val());
  103. // total = math.parser().eval(total + "+" + value);
  104. total = math.add(math.bignumber(total),math.bignumber(value)).toNumber();
  105. }
  106. }
  107. let total_chineseStr = convertCurrency(total);
  108. total = numFormat(total);
  109. let total_text = total + '('+ total_chineseStr +')';
  110. $('#total').html(total_text)
  111. }
  112. function numFormat(num){
  113. return num.toString().replace(/\d+/, function (n) { // 先提取小数点前后的整数部分
  114. //(\d)(?=(\d{3})正则的意思是匹配连续三个数结尾的数字,例如1234,1后面有234连续三个数的数字,就可以匹配上,匹配的是1这个数字。如果是123,因为1后面是两位数,所以就匹配不上了
  115. return n.replace(/(\d)(?=(\d{3})+$)/g, function ($1) {
  116. return $1 + ",";
  117. });
  118. });
  119. }
  120. $("#submitBtn").click(function() {
  121. if ($("#price_form").valid()) {
  122. $("#price_form").submit();
  123. }
  124. });
  125. $('.priceInput').blur(function (){
  126. let money = $(this).val();
  127. money = parseFloat(money)
  128. let chineseStr = convertCurrency(money);
  129. $(this).next().html(chineseStr)
  130. total_calculation()
  131. })
  132. $('#price_form').validate({
  133. errorPlacement: function (error, element) {
  134. error.appendTo(element.parent().parent().prev().find('td:first'));
  135. },
  136. rules: {
  137. operation: {
  138. required: true,
  139. },
  140. },
  141. messages: {
  142. operation: {
  143. required: '操作人不能为空',
  144. },
  145. }
  146. });
  147. });
  148. function convertCurrency(money) {
  149. //汉字的数字
  150. var cnNums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
  151. //基本单位
  152. var cnIntRadice = ['', '拾', '佰', '仟'];
  153. //对应整数部分扩展单位
  154. var cnIntUnits = ['', '万', '亿', '兆'];
  155. //对应小数部分单位
  156. var cnDecUnits = ['角', '分', '毫', '厘'];
  157. //整数金额时后面跟的字符
  158. var cnInteger = '整';
  159. //整型完以后的单位
  160. var cnIntLast = '元';
  161. //最大处理的数字
  162. var maxNum = 999999999999999.9999;
  163. //金额整数部分
  164. var integerNum;
  165. //金额小数部分
  166. var decimalNum;
  167. //输出的中文金额字符串
  168. var chineseStr = '';
  169. //分离金额后用的数组,预定义
  170. var parts;
  171. // 传入的参数为空情况
  172. if(money === '') {
  173. return '';
  174. }
  175. money = parseFloat(money)
  176. if(money >= maxNum){
  177. return ''
  178. }
  179. // 传入的参数为0的情况
  180. if(money === 0) {
  181. chineseStr = cnNums[0] + cnIntLast + cnInteger;
  182. return chineseStr
  183. }
  184. // 转为字符串
  185. money = money.toString();
  186. // indexOf 检测某字符在字符串中首次出现的位置 返回索引值(从0 开始) -1 代表无
  187. if(money.indexOf('.') === -1){
  188. integerNum = money;
  189. decimalNum = ''
  190. }else{
  191. parts = money.split('.');
  192. integerNum = parts[0];
  193. decimalNum = parts[1].substr(0,4);
  194. }
  195. //转换整数部分
  196. if(parseInt(integerNum,10) > 0){
  197. let zeroCount = 0;
  198. let IntLen = integerNum.length
  199. for(let i = 0; i < IntLen; i++){
  200. let n = integerNum.substr(i,1);
  201. let p = IntLen - i - 1;
  202. let q = p / 4;
  203. let m = p % 4;
  204. if( n === '0'){
  205. zeroCount ++ ;
  206. }else{
  207. if(zeroCount > 0){
  208. chineseStr += cnNums[0]
  209. }
  210. zeroCount = 0;
  211. chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
  212. }
  213. if(m === 0 && zeroCount < 4){
  214. chineseStr += cnIntUnits[q];
  215. }
  216. }
  217. // 最后+ 元
  218. chineseStr += cnIntLast;
  219. }
  220. // 转换小数部分
  221. if(decimalNum !== ''){
  222. let decLen = decimalNum.length;
  223. for(let i = 0; i <decLen; i++){
  224. let n = decimalNum.substr(i,1);
  225. if(n !== '0'){
  226. chineseStr += cnNums[Number(n)] + cnDecUnits[i]
  227. }
  228. }
  229. }
  230. if(chineseStr === ''){
  231. chineseStr += cnNums[0] + cnIntLast + cnInteger;
  232. }else if(decimalNum === ''){
  233. chineseStr += cnInteger;
  234. }
  235. return chineseStr
  236. }
  237. </script>