invoice.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. <template>
  2. <el-dialog
  3. v-loading="loading"
  4. title="选择发票"
  5. :center="true"
  6. align="left"
  7. top="7vh"
  8. width="1024px"
  9. :close-on-click-modal="false"
  10. :visible.sync="showModelThis"
  11. element-loading-text="拼命加载中"
  12. element-loading-spinner="el-icon-loading"
  13. element-loading-background="rgba(0, 0, 0, 0.8)"
  14. append-to-body
  15. @close="closeModel"
  16. >
  17. <el-card style="height: 700px; margin-top: -25px">
  18. <el-row :gutter="10">
  19. <el-col :span="24" style="padding: 0 0 10px 0">
  20. <el-col :span="8" style="width: 290px">
  21. <el-input v-model="parmValue.invNo" placeholder="请输入发票编号">
  22. <el-button
  23. slot="append"
  24. icon="el-icon-search"
  25. @click="searchList"
  26. ></el-button>
  27. </el-input>
  28. </el-col>
  29. <el-col :span="4" style="width: 160px" class="fr tr">
  30. <el-button type="primary" @click="searchList"> 刷新 </el-button>
  31. <el-button type="warning" @click="restSearch"> 重置 </el-button>
  32. </el-col>
  33. </el-col>
  34. <el-col :span="24">
  35. <el-table
  36. :data="tableData"
  37. ref="multipleTable"
  38. stripe
  39. border
  40. :size="'mini'"
  41. max-height="610"
  42. style="width: 100%"
  43. row-key="id"
  44. :expand-row-keys="expands"
  45. @selection-change="handleSelectionChange"
  46. >
  47. <el-table-column
  48. type="selection"
  49. width="45"
  50. fixed="left"
  51. align="center"
  52. ></el-table-column>
  53. <el-table-column
  54. prop="invNo"
  55. label="发票编号"
  56. show-overflow-tooltip
  57. width="170"
  58. ></el-table-column>
  59. <el-table-column
  60. prop="inv_in"
  61. label="企业编码"
  62. show-overflow-tooltip
  63. min-width="130"
  64. ></el-table-column>
  65. <el-table-column
  66. prop="company"
  67. label="企业名称"
  68. show-overflow-tooltip
  69. min-width="170"
  70. ></el-table-column>
  71. <el-table-column
  72. prop="apply_name"
  73. label="处理人"
  74. show-overflow-tooltip
  75. min-width="70"
  76. ></el-table-column>
  77. <el-table-column
  78. prop="inv_value"
  79. label="发票额度"
  80. show-overflow-tooltip
  81. min-width="110"
  82. ></el-table-column>
  83. <el-table-column
  84. label="关联资金信息"
  85. show-overflow-tooltip
  86. align="center"
  87. >
  88. <el-table-column
  89. prop="atrade_fee"
  90. label="已核销金额"
  91. show-overflow-tooltip
  92. min-width="110"
  93. ></el-table-column>
  94. <el-table-column
  95. prop="fund_used"
  96. label="处理中的金额"
  97. show-overflow-tooltip
  98. min-width="110"
  99. ></el-table-column>
  100. <el-table-column
  101. prop="wtrade_fee"
  102. label="未核销金额"
  103. show-overflow-tooltip
  104. min-width="110"
  105. ></el-table-column>
  106. <el-table-column
  107. label="核销状态"
  108. show-overflow-tooltip
  109. min-width="95"
  110. >
  111. <template slot-scope="scope">
  112. <el-tag
  113. type="danger"
  114. :size="'mini'"
  115. v-if="scope.row.trade_status === '1'"
  116. >未核销</el-tag
  117. >
  118. <el-tag
  119. type="warning"
  120. :size="'mini'"
  121. v-else-if="scope.row.trade_status === '2'"
  122. >部分核销</el-tag
  123. >
  124. <el-tag type="" :size="'mini'" v-else>全部核销</el-tag>
  125. </template>
  126. </el-table-column>
  127. </el-table-column>
  128. <el-table-column
  129. label="关联确认单信息"
  130. show-overflow-tooltip
  131. align="center"
  132. >
  133. <el-table-column
  134. prop="aorder_fee"
  135. label="已核销金额"
  136. show-overflow-tooltip
  137. min-width="110"
  138. ></el-table-column>
  139. <el-table-column
  140. prop="order_used"
  141. label="处理中的金额"
  142. show-overflow-tooltip
  143. min-width="110"
  144. ></el-table-column>
  145. <el-table-column
  146. prop="worder_fee"
  147. label="未核销金额"
  148. show-overflow-tooltip
  149. min-width="110"
  150. ></el-table-column>
  151. <el-table-column
  152. label="核销状态"
  153. show-overflow-tooltip
  154. min-width="95"
  155. >
  156. <template slot-scope="scope">
  157. <el-tag
  158. type="danger"
  159. :size="'mini'"
  160. v-if="scope.row.order_status === '1'"
  161. >未核销</el-tag
  162. >
  163. <el-tag
  164. type="warning"
  165. :size="'mini'"
  166. v-else-if="scope.row.order_status === '2'"
  167. >部分核销</el-tag
  168. >
  169. <el-tag type="" :size="'mini'" v-else>全部核销</el-tag>
  170. </template>
  171. </el-table-column>
  172. </el-table-column>
  173. <el-table-column
  174. prop="addtime"
  175. label="创建时间"
  176. show-overflow-tooltip
  177. width="150"
  178. ></el-table-column>
  179. </el-table>
  180. </el-col>
  181. <el-col :span="24">
  182. <el-row>
  183. <el-col :span="18">
  184. <div
  185. class="Pagination"
  186. style="text-align: center; margin-top: 12px"
  187. >
  188. <el-pagination
  189. :current-page="parmValue.page"
  190. :page-size="parmValue.size"
  191. :size="searchSize"
  192. layout="total, prev, pager, next, jumper"
  193. :total="count"
  194. @size-change="handleSizeChange"
  195. @current-change="handlePageChange"
  196. />
  197. </div>
  198. </el-col>
  199. <el-col :span="6" style="text-align: right">
  200. <div style="margin-top: 12px">
  201. <el-button type="primary" size="medium" @click="submitForm"
  202. >保 存
  203. </el-button>
  204. <el-button @click="showModelThis = false" size="medium">{{
  205. isDetail ? "关 闭" : "取 消"
  206. }}</el-button>
  207. </div>
  208. </el-col>
  209. </el-row>
  210. </el-col>
  211. </el-row>
  212. </el-card>
  213. </el-dialog>
  214. </template>
  215. <script>
  216. import asyncRequest from "@/apis/service/InvoiceSales/invoicePool";
  217. import mixinPage from "@/mixins/elPaginationHandle";
  218. import resToken from "@/mixins/resToken";
  219. export default {
  220. props: [
  221. "id",
  222. "showModel",
  223. "trade_status",
  224. "order_status",
  225. "inv_status",
  226. "type_check",
  227. "onces",
  228. ],
  229. mixins: [mixinPage, resToken],
  230. data() {
  231. return {
  232. loading: false,
  233. icon: "",
  234. count: 0,
  235. tableData: [],
  236. showModelThis: this.showModel,
  237. multipleSelection: [],
  238. parmValue: {
  239. companyNo: "",
  240. order_status: "",
  241. trade_status: "",
  242. total_low: "",
  243. total_up: "",
  244. starttime: "",
  245. endtime: "",
  246. type_check: "",
  247. status: "",
  248. invNo: "",
  249. page: 1, // 页码
  250. size: 15, // 每页显示条数
  251. },
  252. };
  253. },
  254. watch: {
  255. icon(val) {
  256. if (val) {
  257. this.showModelThis = false;
  258. this.$emit("setVal", val);
  259. }
  260. },
  261. showModel: function (val) {
  262. this.showModelThis = val;
  263. },
  264. showModelThis(val) {
  265. if (!val) {
  266. this.$emit("cancel");
  267. } else {
  268. this.searchList();
  269. }
  270. },
  271. },
  272. methods: {
  273. handleSelectionChange(val) {
  274. this.multipleSelection = val;
  275. },
  276. restSearch() {
  277. this.parmValue.invNo = "";
  278. this.parmValue.page = 1;
  279. this.searchList();
  280. },
  281. async searchList() {
  282. this.multipleSelection = [];
  283. if (!this.loading) {
  284. this.loading = true;
  285. this.tableData = [];
  286. this.parmValue.companyNo = this.id; // 客户企业编码
  287. this.parmValue.type_check = this.type_check;
  288. this.parmValue.order_status = this.order_status;
  289. this.parmValue.trade_status = this.trade_status;
  290. const res = await asyncRequest.list(this.parmValue);
  291. if (res && res.code === 0 && res.data && res.data.list) {
  292. this.tableData = res.data.list;
  293. this.count = res.data.count;
  294. } else if (res && res.code >= 100 && res.code <= 104) {
  295. await this.logout();
  296. } else {
  297. this.tableData = [];
  298. this.count = 0;
  299. }
  300. this.loading = false;
  301. }
  302. },
  303. closeModel() {
  304. console.log("closeModel!!");
  305. },
  306. async submitForm() {
  307. let isok = true;
  308. this.multipleSelection.forEach((v1) => {
  309. if (this.trade_status === "4" && parseInt(v1.fund_used) !== 0) {
  310. isok = false;
  311. }
  312. if (this.order_status === "4" && parseInt(v1.order_used) !== 0) {
  313. isok = false;
  314. }
  315. });
  316. if (!isok) {
  317. if (this.trade_status === "4") {
  318. this.$message.warning("部分发票信息:资金处理中的金额不为零!!");
  319. return;
  320. }
  321. if (this.order_status === "4") {
  322. this.$message.warning("部分发票信息:确认单处理中的金额不为零!!");
  323. return;
  324. }
  325. }
  326. if (this.onces && this.multipleSelection.length > 1) {
  327. this.$message.warning("只能选择一条数据!");
  328. } else {
  329. // 刷新
  330. this.showModelThis = false;
  331. this.$emit("refresh", this.multipleSelection);
  332. }
  333. },
  334. },
  335. };
  336. </script>
  337. <style></style>