caigourukudan.vue 12 KB

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