caigourukudan.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. <template>
  2. <div class="bg">
  3. <el-dialog
  4. width="26cm"
  5. height="12cm"
  6. :modal="!alertVisible"
  7. :visible.sync="alertVisible"
  8. >
  9. <!-- 表单是否显示 技术列表流程页面打印 -->
  10. <div style="height: 500px; width: 90%; margin: 0 auto" >
  11. <div ref="qrcode" id="box">
  12. <vue-easy-print tableShow ref="easyPrint" :onePageRow="onePageRow">
  13. <div
  14. v-for="(item1, index1) in list"
  15. :key="index1"
  16. style="margin-bottom: 30px;width: 92%;margin: 0px 0px 0px 0px;"
  17. >
  18. <div style="page-break-after: always;margin: 0px 0px 0px 30px;">
  19. <table :border="1">
  20. <thead>
  21. <tr class="title">
  22. <th colspan="15" style="line-height: 12px !important;">
  23. <h1 style="display:block;margin:0px;line-height: 16px;font-size:16px;padding: 0px 0px 5px;">采购入库单</h1>
  24. </th>
  25. </tr>
  26. <tr class="title-sub" style="line-height: 12px;">
  27. <th colspan="15" style="padding-top: 2px;padding-bottom: 4px;">
  28. <span style="float: left;">供应商: {{item1[0].gong_ying_shang_| gongyingshang(gongyingshangList)}}</span>
  29. <span style="margin-left: 6px;float: left;">申购部门: {{item1[0].shen_gou_bu_men_ | bumenfilters(bumenList)}}</span>
  30. <span style="margin-left: 6px;float: right;">日期:{{item1[0].dao_ku_ri_qi_}}</span>
  31. <span style="margin-left: 6px;float: right;">采购单号:{{item1[0].cai_gou_ding_dan_}} </span>
  32. </th>
  33. </tr>
  34. <tr>
  35. <th style="width: 15px">序号</th>
  36. <th style="font-weight: normal;width: 25px">物料编码</th>
  37. <th style="font-weight: normal;width: 70px">物料名称</th>
  38. <th style="width: 60px">货号</th>
  39. <th style="width: 60px">批号</th>
  40. <th style="width: 50px">规格/特征</th>
  41. <th style="width: 60px">生产商/品牌</th>
  42. <th style="width: 70px">数量</th>
  43. <th style="width: 30px">单位</th>
  44. <th style="width: 50px">单价(含税)</th>
  45. <th style="width: 50px">税率</th>
  46. <th style="width: 40px">单价</th>
  47. <th style="width: 40px">税额</th>
  48. <th style="width: 40px">金额</th>
  49. <th style="width: 50px">含税合计</th>
  50. </tr>
  51. </thead>
  52. <tbody>
  53. <tr v-for="(item, index) in item1" :key="index">
  54. <td style="width: 25px">{{ index+1 }}</td>
  55. <td style="width: 70px">{{ item.wu_liao_dai_ma_ }}</td>
  56. <td style="width: 100px">{{ item.wu_liao_ming_chen }}</td>
  57. <td style="width: 50px">{{ item.huo_hao_ }}</td>
  58. <td style="width: 50px">{{ item.pi_hao_ }}</td>
  59. <td style="width: 60px">{{ item.gui_ge_ }}</td>
  60. <td style="width: 70px;padding: 1px;">{{ item.chang_jia_| gongyingshang(gongyingshangList) }}</td>
  61. <td style="width: 30px">{{ item.dao_huo_shu_liang }}</td>
  62. <td style="width: 50px;padding: 1px;">{{ item.dan_wei_ }}</td>
  63. <td style="width: 50px;padding: 1px;">{{ item.dan_jia_han_shui_|numToFixed}}</td>
  64. <td style="width: 40px">{{ item.shui_lv_ }}</td>
  65. <td style="width: 40px;padding: 1px;">{{ item.dan_jia_|numToFixed(item.dan_jia_)}}</td>
  66. <td style="width: 40px;padding: 1px;">{{ item.shui_e_ |numToFixed}}</td>
  67. <td style="width: 40px;padding: 1px;">{{ item.jin_e_ |numToFixed(item.jin_e_)}}</td>
  68. <td style="width: 50px;padding: 1px;">
  69. {{ item.han_shui_he_ji_|numToFixed(item.han_shui_he_ji_) }}
  70. </td>
  71. </tr>
  72. <tr class="count">
  73. <td colspan="15">
  74. 合计&nbsp;&nbsp;&nbsp;&nbsp;
  75. 税额:&nbsp;{{ item1.addshuie}}&nbsp;&nbsp;
  76. 金额:&nbsp;{{ item1.addjine}}&nbsp;&nbsp;
  77. 含税合计:&nbsp;{{ item1.addhanshuiheji }}
  78. </td>
  79. </tr>
  80. </tbody>
  81. <tfoot class="bottom">
  82. <tr>
  83. <td colspan="5" style="text-align:left">
  84. <div style="float: left;margin-top:5px">仓管员:{{ item1.name2 }}</div>
  85. </td>
  86. <td colspan="10" style="text-align:right">
  87. <div style="margin-top:5px;">审核人:{{ item1.name3 }} </div>
  88. </td>
  89. </tr>
  90. </tfoot>
  91. </table>
  92. </div>
  93. </div>
  94. </vue-easy-print>
  95. </div>
  96. </div>
  97. <span slot="footer" class="dialog-footer">
  98. <el-button type="primary" @click="printDemo">打印</el-button>
  99. </span>
  100. </el-dialog>
  101. </div>
  102. </template>
  103. <script>
  104. import VueBarcode from "vue-barcode";
  105. import vueEasyPrint from "vue-easy-print";
  106. import repostCurd from "@/business/platform/form/utils/custom/joinCURD.js";
  107. export default {
  108. components: {
  109. VueBarcode,
  110. vueEasyPrint,
  111. },
  112. props: {
  113. obj: {
  114. default: [],
  115. type: Array,
  116. },
  117. onePageRow: {
  118. type: Number,
  119. default: 3,
  120. },
  121. blankLines: {
  122. type: Boolean,
  123. default: true,
  124. },
  125. alertVisible : {
  126. type: Boolean,
  127. default: false,
  128. },
  129. currentScan: {
  130. type: Boolean,
  131. default: false,
  132. },
  133. },
  134. data() {
  135. return {
  136. // onePageRow: 1,
  137. value: "",
  138. id: "",
  139. list: [],
  140. visible: true,
  141. gongyingshangList: [],
  142. bumenList: [],
  143. };
  144. },
  145. created() {
  146. this.getInit();
  147. let sql = `select id_,gong_ying_shang_m FROM t_gysml`;
  148. repostCurd("sql", sql).then((res) => {
  149. return (this.gongyingshangList = res.variables.data);
  150. });
  151. let sql1 = `select ID_,NAME_ FROM ibps_party_org `; //部门列表
  152. repostCurd("sql", sql1).then((res) => {
  153. return (this.bumenList = res.variables.data);
  154. });
  155. },
  156. filters: {
  157. gongyingshang: function (value, list) {
  158. for (let i = 0; i < list.length; i++) {
  159. if (value == list[i].id_) {
  160. return list[i].gong_ying_shang_m;
  161. } else if (i == list.length - 1) {
  162. return value;
  163. }
  164. }
  165. },
  166. numToFixed: function (value) {
  167. return (value*1).toFixed(2)
  168. },
  169. bumenfilters: function (value, list) {
  170. for (let i = 0; i < list.length; i++) {
  171. if (value == list[i].ID_) {
  172. return list[i].NAME_;
  173. } else if (i == list.length - 1) {
  174. return value;
  175. }
  176. }
  177. },
  178. },
  179. watch: {
  180. obj() {
  181. this.getInit();
  182. },
  183. alertVisible(ne,old) {
  184. console.log(22222,ne,old)
  185. // alert(this.alertVisible)
  186. },
  187. },
  188. methods: {
  189. printDemo() {
  190. this.$refs.easyPrint.print();
  191. // this.$refs.easyPrint.window.print()
  192. },
  193. addNumber(num1, num2) {
  194. let a = parseFloat(num1);
  195. let b = parseFloat(num2);
  196. return a.toFixed("2") * 1 + b.toFixed("2") * 1;
  197. },
  198. riqi(value) {
  199. let date = new Date(value);
  200. let y = date.getFullYear(); //获取年份
  201. let m = date.getMonth() + 1; //获取月份
  202. m = m < 10 ? "0" + m : m; //月份不满10天显示前加0
  203. let d = date.getDate(); //获取日期
  204. d = d < 10 ? "0" + d : d; //日期不满10天显示前加0
  205. return y + "-" + m + "-" + d;
  206. },
  207. addNumber(num1, num2) {
  208. let a = parseFloat(num1);
  209. let b = parseFloat(num2);
  210. return a.toFixed("2") * 1 + b.toFixed("2") * 1;
  211. },
  212. toDecimal2(x) {
  213. var f = parseFloat(x);
  214. if (isNaN(f)) {
  215. return false;
  216. }
  217. var f = Math.round(x * 100) / 100;
  218. var s = f.toString();
  219. var rs = s.indexOf(".");
  220. if (rs < 0) {
  221. rs = s.length;
  222. s += ".";
  223. }
  224. while (s.length <= rs + 2) {
  225. s += "0";
  226. }
  227. return s;
  228. },
  229. getInit() {
  230. // var idStr = "";
  231. // this.obj.forEach((item) => {
  232. // idStr += item + ",";
  233. // });
  234. // idStr = idStr.substring(0, idStr.length - 1);
  235. this.getLook(this.obj);
  236. },
  237. getLook(id) {
  238. this.list = [];
  239. let this_ = this;
  240. let name1, name2, name3;
  241. let time1, time2, time3;
  242. id.forEach((item) => {
  243. let sql = `select * FROM t_wljsysjlb WHERE id_='${item}'`;
  244. repostCurd("sql", sql).then((res) => {
  245. let data = res.variables.data;
  246. let s2 = `select a.NAME_,DATE_FORMAT(b.CREATE_TIME_,'%Y-%m-%d') AS CREATE_TIME_ FROM ibps_party_employee as a join ibps_bpm_oper_log as b on a.ID_ = b.CREATE_BY_ where b.PROC_INST_ID_ = ( SELECT PROC_INST_ID_ FROM ibps_bpm_bus_rel WHERE BUSINESSKEY_ = '${item}') AND b.NODE_ID_ = 'Activity_1pha4py' ORDER BY b.CREATE_TIME_ DESC LIMIT 1`;
  247. repostCurd("sql", s2).then((res) => {
  248. name2 = res.variables.data[0].NAME_ || 0;
  249. time2 = res.variables.data[0].CREATE_TIME_ || 0;
  250. data["name2"] = name2;
  251. data["time2"] = time2;
  252. let addhanshuiheji = 0;
  253. let addjine = 0;
  254. let addshuie = 0;
  255. let s3 = `select a.NAME_,DATE_FORMAT(b.CREATE_TIME_,'%Y-%m-%d') AS CREATE_TIME_ FROM ibps_party_employee as a join ibps_bpm_oper_log as b on a.ID_ = b.CREATE_BY_ where b.PROC_INST_ID_ = ( SELECT PROC_INST_ID_ FROM ibps_bpm_bus_rel WHERE BUSINESSKEY_ = '${item}' LIMIT 1) AND b.NODE_ID_ = 'Activity_04ff3k5' ORDER BY b.CREATE_TIME_ DESC LIMIT 1`;
  256. repostCurd("sql", s3).then((res) => {
  257. if(res.variables.data.length >0){
  258. name3 = res.variables.data[0].NAME_ || 0;
  259. time3 = res.variables.data[0].CREATE_TIME_ || 0;
  260. }
  261. data["name3"] = name3;
  262. data["time3"] = time3;
  263. data.forEach((it) => {
  264. data["addhanshuiheji"] = this.addNumber(
  265. addhanshuiheji,
  266. it.han_shui_he_ji_
  267. );
  268. data["addjine"] = this.addNumber(addjine, it.jin_e_);
  269. data["addshuie"] = this.addNumber(addshuie, it.shui_e_);
  270. addhanshuiheji = data["addhanshuiheji"];
  271. addjine = data["addjine"];
  272. addshuie = data["addshuie"];
  273. });
  274. data["addhanshuiheji"] = this_.toDecimal2(data["addhanshuiheji"]);
  275. data["addjine"] = this_.toDecimal2(data["addjine"]);
  276. data["addshuie"] = this_.toDecimal2(data["addshuie"]);
  277. this_.list.push(data);
  278. addhanshuiheji = 0;
  279. addjine = 0;
  280. addshuie = 0;
  281. });
  282. });
  283. });
  284. });
  285. },
  286. },
  287. };
  288. </script>
  289. <style lang="scss" scoped>
  290. * {
  291. margin: 0;
  292. padding: 0;
  293. }
  294. table {
  295. border-collapse: collapse;
  296. font-family: "微软雅黑";
  297. background: #fff;
  298. font-size: 13px;
  299. }
  300. .title{
  301. border: 1px solid transparent;
  302. }
  303. .title-sub{
  304. border-left: 1px solid transparent;
  305. border-right: 1px solid transparent;
  306. }
  307. span{
  308. font-weight: 500;
  309. }
  310. td {
  311. text-align: center;
  312. padding: 2px;
  313. }
  314. thead > tr > th {
  315. text-align: center;
  316. font-weight: 500;
  317. }
  318. .el-dialog__body {
  319. word-break: none;
  320. }
  321. .count td {
  322. text-align: right;
  323. padding: 4px 0px;
  324. padding-right: 15px;
  325. }
  326. .bottom {
  327. margin-top: 15px;
  328. }
  329. .bottom {
  330. margin-top: 15px;
  331. border-bottom: 1px solid transparent;
  332. border-left: 1px solid transparent;
  333. border-right: 1px solid transparent;
  334. }
  335. </style>