invoiceList.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  1. <template>
  2. <div class="form-wrap">
  3. <div class="searchBox">
  4. <el-form
  5. ref="form"
  6. :model="form"
  7. :inline="true"
  8. label-width="150px">
  9. <el-form-item
  10. label="起始时间"
  11. prop="createTimeBegin">
  12. <el-date-picker
  13. v-model="form.createTimeBegin"
  14. type="datetime"
  15. placeholder="选择日期时间">
  16. </el-date-picker>
  17. </el-form-item>
  18. <el-form-item
  19. label="截止时间"
  20. prop="createTimeEnd">
  21. <el-date-picker
  22. v-model="form.createTimeEnd"
  23. type="datetime"
  24. placeholder="选择日期时间">
  25. </el-date-picker>
  26. </el-form-item>
  27. <el-form-item
  28. label="发票渠道"
  29. prop="channelName">
  30. <el-select
  31. v-model="form.channelName"
  32. filterable>
  33. <el-option
  34. v-for="item in channelList"
  35. :key="item.id"
  36. :value="item.invoiceSellerName"
  37. :label="item.invoiceSellerName"></el-option>
  38. </el-select>
  39. </el-form-item>
  40. <el-form-item
  41. label="发票状态"
  42. prop="status">
  43. <el-select
  44. v-model="form.status">
  45. <el-option
  46. value=""
  47. label="全部"></el-option>
  48. <el-option
  49. :value="0"
  50. label="未开票"></el-option>
  51. <el-option
  52. :value="1"
  53. label="已开票"></el-option>
  54. <el-option
  55. :value="2"
  56. label="开票失败"></el-option>
  57. <el-option
  58. :value="3"
  59. label="开票中"></el-option>
  60. </el-select>
  61. </el-form-item>
  62. <el-form-item
  63. label="开票人"
  64. prop="userId">
  65. <el-input v-model="form.userId"></el-input>
  66. </el-form-item>
  67. <el-form-item
  68. label="买方名称"
  69. prop="invoiceBuyerName">
  70. <el-input v-model="form.invoiceBuyerName"></el-input>
  71. </el-form-item>
  72. <el-form-item
  73. label="买方税号"
  74. prop="invoiceBuyerTaxNumber">
  75. <el-input v-model="form.invoiceBuyerTaxNumber"></el-input>
  76. </el-form-item>
  77. <el-form-item
  78. label="买方接收邮箱"
  79. prop="invoiceBuyerReceiveEmail">
  80. <el-input v-model="form.invoiceBuyerReceiveEmail"></el-input>
  81. </el-form-item>
  82. <el-form-item
  83. label="买方接收号码"
  84. prop="invoiceBuyerReceivePhone">
  85. <el-input v-model="form.invoiceBuyerReceivePhone"></el-input>
  86. </el-form-item>
  87. </el-form>
  88. <div class="btn-wrap">
  89. <el-button @click="reset">重置</el-button>
  90. <el-button
  91. type="primary"
  92. @click="getList">搜索</el-button>
  93. <el-button
  94. type="primary"
  95. plain
  96. v-if="canEdit"
  97. @click="showAddDialog">开票</el-button>
  98. </div>
  99. </div>
  100. <div class="tableBox">
  101. <!-- <div class="block-title">查询信息</div> -->
  102. <el-table
  103. stripe
  104. :data="tableData"
  105. v-loading="loading">
  106. <el-table-column
  107. label="发票渠道"
  108. prop="channelName"></el-table-column>
  109. <el-table-column
  110. label="开票人"
  111. prop="userId">
  112. </el-table-column>
  113. <el-table-column
  114. prop="orderCreateTime"
  115. label="订单下单时间">
  116. </el-table-column>
  117. <el-table-column
  118. prop="price"
  119. label="开票金额">
  120. </el-table-column>
  121. <el-table-column
  122. prop="invoiceSellerName"
  123. label="开票卖方">
  124. </el-table-column>
  125. <el-table-column
  126. prop="invoiceBuyerName"
  127. label="买方名称">
  128. </el-table-column>
  129. <el-table-column
  130. prop="invoiceBuyerTaxNum"
  131. label="买方税号">
  132. </el-table-column>
  133. <el-table-column
  134. prop="invoiceBuyerAddress"
  135. label="买方地址">
  136. </el-table-column>
  137. <el-table-column
  138. prop="invoiceBuyerPhone"
  139. label="买方联系方式">
  140. </el-table-column>
  141. <el-table-column
  142. prop="invoiceBuyerBank"
  143. label="买方开户银行">
  144. </el-table-column>
  145. <el-table-column
  146. prop="invoiceBuyerAccount"
  147. label="买方开户行账号">
  148. </el-table-column>
  149. <el-table-column
  150. prop="invoiceBuyerReceiveEmail"
  151. label="买方接收邮箱">
  152. </el-table-column>
  153. <el-table-column
  154. prop="invoiceBuyerReceivePhone"
  155. label="买方接收号码">
  156. </el-table-column>
  157. <el-table-column
  158. prop="submitTime"
  159. label="开票提交时间">
  160. </el-table-column>
  161. <el-table-column
  162. prop="completeTime"
  163. label="开票完成时间">
  164. </el-table-column>
  165. <el-table-column
  166. prop="downloadUrl"
  167. label="开票下载地址">
  168. <template slot-scope="scope">
  169. <a
  170. v-if="scope.row.downloadUrl"
  171. :href="scope.row.downloadUrl"
  172. target="_blank">下载</a>
  173. </template>
  174. </el-table-column>
  175. <el-table-column
  176. prop="qrcodeUrl"
  177. label="扫码开票二维码">
  178. <template slot-scope="scope">
  179. <img
  180. v-if="scope.row.qrcodeUrl"
  181. :src="scope.row.qrcodeUrl"
  182. alt="二维码"
  183. style="width:40px;height:40px;" >
  184. </template>
  185. </el-table-column>
  186. <el-table-column
  187. prop="fpdm"
  188. label="发票代码">
  189. </el-table-column>
  190. <el-table-column
  191. prop="fphm"
  192. label="发票号码">
  193. </el-table-column>
  194. <el-table-column
  195. prop="status"
  196. label="开票状态">
  197. <template slot-scope="scope">
  198. <span v-if="scope.row.status === 0">未开票</span>
  199. <span v-else-if="scope.row.status === 1">已开票</span>
  200. <span v-else-if="scope.row.status === 2">开票失败</span>
  201. <span v-else-if="scope.row.status === 3">开票中</span>
  202. <span v-else>未知</span>
  203. </template>
  204. </el-table-column>
  205. <el-table-column
  206. prop="remark"
  207. label="开票备注">
  208. </el-table-column>
  209. <el-table-column
  210. prop="errInfo"
  211. label="失败原因">
  212. </el-table-column>
  213. <el-table-column
  214. v-if="canEdit"
  215. width="120"
  216. label="操作">
  217. <template slot-scope="scope">
  218. <el-button
  219. type="text"
  220. @click="showDialog('edit', scope.row)">
  221. <i class="el-icon-edit"></i>
  222. 编辑
  223. </el-button>
  224. <!-- <el-button
  225. type="text"
  226. @click="deleteItem(scope.row)">
  227. <i class="el-icon-delete"></i>
  228. 删除
  229. </el-button> -->
  230. <!-- <el-button
  231. v-if="scope.row.otaSourceCode==='KS'"
  232. type="text"
  233. @click="$refs.KSNewDialogRef.show(scope.row)"
  234. >
  235. 同步商品
  236. </el-button>
  237. <el-button
  238. v-if="scope.row.otaSourceCode==='KS' && scope.row.ksProductId"
  239. type="text"
  240. @click="$refs.KSUpdateDialogRef.show(scope.row)"
  241. >
  242. 同步商品价格库存
  243. </el-button> -->
  244. </template>
  245. </el-table-column>
  246. </el-table>
  247. <el-pagination
  248. background
  249. :current-page.sync="form.pageNum"
  250. @current-change="getList"
  251. layout="total, prev, pager, next"
  252. :total="total">
  253. </el-pagination>
  254. </div>
  255. <ElDialog
  256. :title="'编辑'"
  257. width="500px"
  258. v-model="dialogVisible">
  259. <el-form
  260. class="form-wrap"
  261. label-width="150px">
  262. <el-form-item label="发票ID">
  263. <el-input
  264. v-model="currentItem.id"
  265. disabled></el-input>
  266. </el-form-item>
  267. <el-form-item label="开票备注">
  268. <el-input
  269. v-model="currentItem.remark"
  270. type="area"></el-input>
  271. </el-form-item>
  272. </el-form>
  273. </ElDialog>
  274. <ElDialog
  275. :title="'开票'"
  276. width="800px"
  277. v-model="addDialogVisible">
  278. <AddDialog ></AddDialog>
  279. </ElDialog>
  280. </div>
  281. </template>
  282. <script>
  283. import { getInvoiceSellerList, getInvoiceList } from '@/api/invoice'
  284. import ElDialog from '@/components/Dialog'
  285. import AddDialog from './invoice/Dialog'
  286. export default {
  287. components: {
  288. ElDialog,
  289. AddDialog
  290. },
  291. data () {
  292. return {
  293. projectName: localStorage.getItem('otaProject'),
  294. performList: [],
  295. dialogType: 'add',
  296. dialogVisible: false,
  297. addDialogVisible: false,
  298. form: {
  299. pageNum: 1,
  300. pageSize: 10,
  301. createTimeBegin: '',
  302. createTimeEnd: '',
  303. status: '',
  304. channelName: '',
  305. userId: '',
  306. otaProductId: '',
  307. invoiceBuyerName: '',
  308. invoiceBuyerTaxNumber: '',
  309. invoiceBuyerReceiveEmail: '',
  310. invoiceBuyerReceivePhone: ''
  311. },
  312. loading: false,
  313. multipleSelection: [], // 批量删除多选数组
  314. total: 0,
  315. tableData: [],
  316. currentItem: {},
  317. channelList: [],
  318. otaList: []
  319. }
  320. },
  321. created () {
  322. this.getChannelList()
  323. this.getList()
  324. // this.fetchBatchConfigList()
  325. // getPerformList(this.projectName).then((res) => {
  326. // this.performList = res.extraInfo
  327. // })
  328. },
  329. filters: {
  330. formatXCProductName (time) {
  331. if (!time) return ''
  332. const map = {
  333. '1': '一张一人需要证件',
  334. '2': '一张一人不需要证件',
  335. '3': '一单一人需要证件',
  336. '4': '一单一人不需要证件'
  337. }
  338. return map[time] || ''
  339. }
  340. },
  341. computed: {
  342. canEdit () {
  343. return true
  344. // return this.$store.state.user.permissionList.includes('product:pricecode_edit')
  345. },
  346. queryClear () {
  347. return this.$store.state.user.permissionList.includes('stats:clearwx_query')
  348. }
  349. },
  350. methods: {
  351. handleSelectionChange (val) {
  352. this.multipleSelection = val
  353. },
  354. getChannelList () {
  355. return getInvoiceSellerList({
  356. pageNum: 1,
  357. pageSize: -1
  358. }).then(res => {
  359. this.ticketTypeList = res.data.records
  360. })
  361. },
  362. // 获取列表
  363. getList () {
  364. this.loading = true
  365. getInvoiceList(this.form).then(res => {
  366. this.total = res.data.total
  367. this.tableData = res.data.records
  368. this.loading = false
  369. })
  370. },
  371. // 打开编辑对话框
  372. showDialog (type, item) {
  373. this.dialogType = type
  374. this.currentItem = item || {}
  375. this.dialogVisible = true
  376. },
  377. showAddDialog () {
  378. this.addDialogVisible = true
  379. },
  380. reset () {
  381. this.$refs.form.resetFields()
  382. }
  383. }
  384. }
  385. </script>