my.vue 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. <template>
  2. <div v-loading="loading">
  3. <div class="qs_search" style="margin-bottom: 0px;display: flex;justify-content: space-between;align-items: center;">
  4. <el-form ref="form" label-width="80px" style="display: flex;flex-direction: row;">
  5. <el-form-item label="公司名称">
  6. <el-input size="small" v-model="search.company_name"></el-input>
  7. </el-form-item>
  8. <el-form-item label-width="5px">
  9. <el-button @click="getList" size="small" type="primary">查询</el-button>
  10. </el-form-item>
  11. </el-form>
  12. </div>
  13. <el-table :data="list" style="width: 100%">
  14. <el-table-column prop="company_name" label="公司名称"></el-table-column>
  15. <el-table-column label="开票用户" prop="uid">
  16. <template slot-scope="scope">
  17. <a :href="scope.row.user_link" target="_blank">{{scope.row.uid}}</a>
  18. </template>
  19. </el-table-column>
  20. <el-table-column prop="money" label="开票金额"></el-table-column>
  21. <el-table-column prop="address" label="状态">
  22. <template slot-scope="scope">
  23. <span :style="`color: ${scope.row.status_obj.color}`">{{scope.row.status_obj.name}}</span>
  24. </template>
  25. </el-table-column>
  26. <el-table-column prop="addtime" label="申请时间"></el-table-column>
  27. <el-table-column prop="addtime" label="操作">
  28. <template slot-scope="scope">
  29. <el-button size="mini" @click="show_info_dialog(scope.row)" type="primary">开票明细</el-button>
  30. <el-button size="mini" v-if="scope.row.status==1" @click="cancel(scope.row)" type="info">撤销开票</el-button>
  31. </template>
  32. </el-table-column>
  33. </el-table>
  34. <el-pagination
  35. background
  36. style="margin-top: 10px"
  37. layout="total,prev, pager, next"
  38. @current-change="page_event"
  39. :page-size="search.pagesize"
  40. :total="search.total">
  41. </el-pagination>
  42. <el-dialog :append-to-body="true" :close-on-click-modal="false" v-loading="loading" title="开票明细" width="1200px" :visible.sync="show_info">
  43. <div style="display: flex;flex-flow: row;justify-content: space-between">
  44. <div style="width: 400px;">
  45. <el-divider>客户信息</el-divider>
  46. <div class="user_account" style="display: flex;flex-flow: column">
  47. <el-form label-width="80px">
  48. <el-form-item label="名称">{{show_info_data.apply_content.company_name}}</el-form-item>
  49. <el-form-item label="税号">{{show_info_data.apply_content.tax_number}}</el-form-item>
  50. <el-form-item label="单位地址">{{show_info_data.apply_content.company_address}}</el-form-item>
  51. <el-form-item label="电话号码">{{show_info_data.apply_content.company_tel}}</el-form-item>
  52. <el-form-item label="开户银行">{{show_info_data.apply_content.address}}</el-form-item>
  53. <el-form-item label="银行账号">{{show_info_data.apply_content.bank_number}}</el-form-item>
  54. <el-form-item label="邮箱">{{show_info_data.apply_content.email}}</el-form-item>
  55. </el-form>
  56. </div>
  57. <el-divider>关联订单</el-divider>
  58. <div class="user_account" style="display: flex;flex-flow: column">
  59. <el-form label-width="80px">
  60. <el-form-item v-for="item in show_info_data.g_order" label="订单:"><a target="_blank" :href="`/main/orders_detail/?id=${item}`">{{item}}</a></el-form-item>
  61. </el-form>
  62. </div>
  63. </div>
  64. <div style="width: 50px;border-right: 1px solid #DCDFE6;"></div>
  65. <div style="width: 50%">
  66. <el-divider v-if="show_info_data.memo">特别说明</el-divider>
  67. <div v-if="show_info_data.memo" class="user_account" style="display: flex;flex-flow: column">
  68. <el-form>
  69. <el-form-item v-html="show_info_data.memo"></el-form-item>
  70. </el-form>
  71. </div>
  72. <el-divider v-if="show_info_data.memo">发票备注</el-divider>
  73. <div v-if="show_info_data.memo" class="user_account" style="display: flex;flex-flow: column">
  74. <el-form>
  75. <el-form-item v-html="show_info_data.kh_memo"></el-form-item>
  76. </el-form>
  77. </div>
  78. <el-divider>开票信息</el-divider>
  79. <div class="user_account" style="display: flex;flex-flow: column">
  80. <el-form label-width="80px">
  81. <el-form-item label="开票金额">
  82. <span style="font-size:20px;font-weight: 700;color: red;">{{show_info_data.money}}</span>元
  83. <el-link v-if="show_info_data.status==2 && show_info_data.user_invoice.file" style="margin-left: 30px" :href="show_info_data.user_invoice.file" type="success" target="_blank">查看发票</el-link>
  84. </el-form-item>
  85. <el-form-item label="发票类型">{{show_info_data.type==1?"普票":"专票"}}</el-form-item>
  86. <el-form-item v-if="show_info_data.status==1" label="发票号码">
  87. <el-input size="small" style="width: 200px" v-model="show_info_data.tax_number" placeholder="发票号码"></el-input>
  88. </el-form-item>
  89. <el-form-item v-if="show_info_data.status==1" label="上传发票">
  90. <el-upload
  91. class="upload-demo"
  92. action="/uapi/pub/upload"
  93. :data="{type:'invoice'}"
  94. :on-success="(response, file, fileList)=> upload_success(response, file, fileList,1)"
  95. :on-remove="(file, fileList)=> upload_remove(file, fileList,1)"
  96. accept="application/pdf,image/jpeg,image/gif,image/png"
  97. multiple
  98. :on-exceed="handleExceed"
  99. :limit="1"
  100. :file-list="user_invoice_fileList">
  101. <div style="display:flex;align-items: center">
  102. <div><el-button size="mini" type="primary">点击上传</el-button></div>
  103. <div style="margin-left: 10px" slot="tip" class="el-upload__tip">只能上传pdf文件</div>
  104. </div>
  105. </el-upload>
  106. </el-form-item>
  107. </el-form>
  108. </div>
  109. <el-form v-if="show_info_data.status==1" style="margin-top: 20px" label-width="120px">
  110. <el-button type="primary" size="small" @click="user_invoice_order_submit">确认开票</el-button>
  111. </el-form>
  112. </div>
  113. </div>
  114. </el-dialog>
  115. </div>
  116. </template>
  117. <script>
  118. export default {
  119. props: {
  120. back:{
  121. type:Object
  122. },
  123. },
  124. data() {
  125. return {
  126. show_info:false,
  127. show_info_data:{
  128. apply_content:{}
  129. },
  130. loading:true,
  131. list:[],
  132. user_account:{},
  133. search:{
  134. page:1,
  135. total:0,
  136. pagesize:10
  137. },
  138. user_invoice_fileList:[],
  139. user_invoice:{},
  140. };
  141. },
  142. page_event(page) {
  143. this.search.page = page;
  144. this.getList();
  145. },
  146. async mounted() {
  147. this.getList();
  148. },
  149. methods: {
  150. page_event(page) {
  151. this.search.page = page;
  152. this.getList();
  153. },
  154. async show_info_dialog(row)
  155. {
  156. this.show_info_data=row;
  157. this.show_info=true;
  158. },
  159. async getList() {
  160. this.loading = true;
  161. let res = await this.$post("/uapi/pub/info/user/user_invoice_order/my_admin",this.search);
  162. if (res.status == 1) {
  163. this.list=res.data.list;
  164. this.search.total=res.data.total;
  165. }
  166. this.loading = false;
  167. },
  168. async user_invoice_order_submit()
  169. {
  170. this.loading = true;
  171. let res = await this.$post("/uapi/pub/info/user/user_invoice_order/submit_admin",{id:this.show_info_data.id,tax_number:this.show_info_data.tax_number,file:this.show_info_data.file});
  172. if (res.status == 1) {
  173. this.list=res.data.list;
  174. await this.getList();
  175. this.show_info=false;
  176. }
  177. this.loading = false;
  178. },
  179. async cancel(row)
  180. {
  181. this.$confirm('是否确认取消开票?', '提示', {
  182. confirmButtonText: '确定',
  183. cancelButtonText: '取消',
  184. type: 'warning'
  185. }).then(async () => {
  186. let res = await this.$post("/uapi/pub/info/user/user_invoice_order/cancel_admin",{id:row.id});
  187. if (res.status == 1) {
  188. this.$message({
  189. type: 'success',
  190. message: '撤销成功!'
  191. });
  192. this.getList();
  193. }
  194. }).catch(() => {
  195. this.$message({
  196. type: 'info',
  197. message: '已取消'
  198. });
  199. });
  200. },
  201. upload_success(res, file, fileList,type){
  202. if(res.status!=1)
  203. {
  204. if(type==1)
  205. {
  206. let fileList_=[];
  207. for(var i=0;i<fileList.length;i++)
  208. {
  209. let data=fileList[i];
  210. if(data.response.status==1)
  211. {
  212. fileList_.push(fileList[i])
  213. }
  214. }
  215. this.user_invoice_fileList=fileList_;
  216. this.show_info_data.file="";
  217. }
  218. this.$message.error(res.info);
  219. }
  220. else
  221. {
  222. if(type==1)
  223. {
  224. this.user_invoice_fileList=fileList;
  225. this.show_info_data.file=res.data.url;
  226. }
  227. }
  228. },
  229. upload_remove( file, fileList,type){
  230. if(type==1)
  231. {
  232. this.user_invoice_fileList=fileList;
  233. }
  234. },
  235. handleExceed(files, fileList) {
  236. this.$message.warning(`只能上传一个文件`);
  237. },
  238. }
  239. };
  240. </script>
  241. <style scoped>
  242. .el-tag {
  243. cursor: pointer;
  244. }
  245. .user_account .el-form .el-form-item{
  246. margin-bottom: 0px;
  247. }
  248. </style>