DailyFeePayment.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539
  1. <template>
  2. <div class="visa-box">
  3. <div class="search-ul">
  4. <div class="search-li">
  5. <div class="feeType-box">
  6. <label>费用类型: </label>
  7. <el-select v-model="feeTypValue" filterable placeholder="请选择费用类型" @change="filtersub()">
  8. <el-option
  9. v-for="item in feeTypeData"
  10. :key="item.id"
  11. :label="item.name"
  12. :value="item.id">
  13. </el-option>
  14. </el-select>
  15. </div>
  16. <div class="feeType-box">
  17. <label>费用子类型: </label>
  18. <el-select @change="downtrigger()" :disabled="banned" v-model="feeSubTypeValue" filterable placeholder="请选择费用子类型">
  19. <el-option
  20. v-for="item in feeSubTypeData"
  21. :key="item.id"
  22. :label="item.name"
  23. :value="item.id">
  24. </el-option>
  25. </el-select>
  26. </div>
  27. <div class="feeType-box">
  28. <label>财务审核: </label>
  29. <el-select @change="downtrigger()" v-model="financialValue" filterable placeholder="请输入财务审核状态">
  30. <el-option
  31. v-for="item in financialAudit"
  32. :key="item.value"
  33. :label="item.label"
  34. :value="item.value">
  35. </el-option>
  36. </el-select>
  37. </div>
  38. <div class="feeType-box">
  39. <label>总经理审核: </label>
  40. <el-select @change="downtrigger()" v-model="GMValue" filterable placeholder="请输入总经理审核状态">
  41. <el-option
  42. v-for="item in GMAudit"
  43. :key="item.value"
  44. :label="item.label"
  45. :value="item.value">
  46. </el-option>
  47. </el-select>
  48. </div>
  49. <!-- <div class="feeType-box">
  50. <label>申请说明:</label>
  51. <el-input v-model="formInline.feeDesc" placeholder="申请说明"></el-input>
  52. </div> -->
  53. <div class="feeType-box">
  54. <label>申请人: </label>
  55. <el-select @change="downtrigger()" v-model="userNameValue" filterable placeholder="请选择申请人">
  56. <el-option
  57. v-for="item in userNameData"
  58. :key="item.id"
  59. :label="item.cnName"
  60. :value="item.id">
  61. </el-option>
  62. </el-select>
  63. </div>
  64. </div>
  65. <!-- <div class="search-li">
  66. <el-button type="primary">查询</el-button>
  67. </div> -->
  68. </div>
  69. <el-row>
  70. <el-button type="primary">导出费用</el-button>
  71. <el-button type="primary">批量生成</el-button>
  72. <el-button @click="addDaily()" type="primary">新增数据</el-button>
  73. </el-row>
  74. <div class="dailyment-box">
  75. <template>
  76. <el-table
  77. :data="tableData"
  78. border
  79. style="width: 100%">
  80. <el-table-column
  81. prop="rouNumber"
  82. label="序 号"
  83. width="55">
  84. <template slot-scope="scope">
  85. {{(currentPage - 1) * pageSize + scope.$index + 1}}
  86. </template>
  87. </el-table-column>
  88. <el-table-column
  89. prop="companyName"
  90. width="200"
  91. label="公 司">
  92. </el-table-column>
  93. <el-table-column
  94. prop="instructions"
  95. label="费用描述"
  96. width="220">
  97. </el-table-column>
  98. <el-table-column
  99. prop="sumPrice"
  100. :formatter="numFilter"
  101. label="费用总计"
  102. width="100">
  103. </el-table-column>
  104. <el-table-column
  105. prop="createUser"
  106. label="申请人"
  107. width="100">
  108. </el-table-column>
  109. <el-table-column
  110. prop="createTime"
  111. label="申请时间"
  112. width="200">
  113. </el-table-column>
  114. <el-table-column
  115. prop="fAuditDesc"
  116. label="财务审核"
  117. width="100">
  118. </el-table-column>
  119. <el-table-column
  120. prop="mAuditDesc"
  121. label="总经理审核"
  122. width="100">
  123. </el-table-column>
  124. <el-table-column
  125. prop="Id"
  126. label="操 作">
  127. <template slot-scope="scope">
  128. <el-button
  129. title="生成"
  130. size="mini"
  131. @click="handleGenerate(scope.$index, scope.row)"><i class="el-icon-share"></i></el-button>
  132. <el-button
  133. title="详情"
  134. size="mini"
  135. @click="handleEdit(scope.$index, scope.row)"><i class="el-icon-edit-outline"></i></el-button>
  136. <el-button
  137. title="删除"
  138. size="mini"
  139. type="danger"
  140. @click="handleDelete(scope.$index, scope.row,tableData)"><i class="el-icon-delete"></i></el-button>
  141. </template>
  142. </el-table-column>
  143. </el-table>
  144. </template>
  145. <div class="block">
  146. <el-pagination align='center'
  147. @size-change="handleSizeChange"
  148. @current-change="handleCurrentChange"
  149. :current-page="currentPage"
  150. :page-sizes="[5,10,15,20]"
  151. :page-size="pageSize"
  152. layout="total, sizes, prev, pager, next"
  153. :total="tableDataLength">
  154. </el-pagination>
  155. </div>
  156. </div>
  157. </div>
  158. </template>
  159. <script>
  160. export default {
  161. data() {
  162. return {
  163. banned:true,
  164. input: '',
  165. financialValue:-1,
  166. financialAudit:[
  167. {
  168. value: -1,
  169. label: '全部'
  170. },
  171. {
  172. value: 0,
  173. label: '未审核'
  174. },
  175. {
  176. value: 1,
  177. label: '已通过'
  178. },
  179. {
  180. value: 2,
  181. label: '未通过'
  182. },
  183. ],
  184. GMValue:-1,
  185. GMAudit:[
  186. {
  187. value: -1,
  188. label: '全部'
  189. },
  190. {
  191. value: 0,
  192. label: '未审核'
  193. },
  194. {
  195. value: 1,
  196. label: '已通过'
  197. },
  198. {
  199. value: 2,
  200. label: '未通过'
  201. },
  202. ],
  203. feeTypeData:[
  204. {
  205. id: -1,
  206. name: "全部"
  207. },
  208. ],
  209. feeTypValue:-1,
  210. userNameData:[
  211. {
  212. cnName: "全部",
  213. id:-1
  214. }
  215. ],
  216. userNameValue:-1,
  217. feeSubType:[],
  218. feeSubTypeData:[
  219. {
  220. id: -1,
  221. name: "全部",
  222. sTid:'-1'
  223. }
  224. ],
  225. feeSubTypeValue:-1,
  226. formInline:{
  227. feeDesc:""
  228. },
  229. tableData: [],
  230. tableDataLength: 0, // 数据总条数
  231. currentPage: 1, // 当前页码
  232. pageSize: 10 , // 每页的数据条数
  233. multipleTable:[],
  234. token:'',
  235. userid:''
  236. }
  237. },
  238. methods:{
  239. //每页条数改变时触发 选择一页显示多少行
  240. handleSizeChange(val) {
  241. this.currentPage = 1;
  242. this.pageSize = val;
  243. this.postPageDailyPaymentList()
  244. },
  245. //当前页改变时触发 跳转其他页
  246. handleCurrentChange(val) {
  247. console.log(val)
  248. this.currentPage = val;
  249. this.postPageDailyPaymentList()
  250. },
  251. handleSelectionChange(val) {
  252. this.multipleSelection = val;
  253. console.log(this.multipleSelection)
  254. },
  255. getRowKeys(row) {
  256. return row.num
  257. },
  258. numFilter(row,column) {
  259. return parseFloat(row[column.property]).toFixed(2);
  260. },
  261. async postPageDailyPaymentList() {
  262. console.log(this.feeTypValue)
  263. var url = "/api/Financial/PostPageSearchDailyPaymentList"
  264. var that = this
  265. this.$axios({
  266. method: 'post',
  267. url: url,
  268. headers: {
  269. Authorization: 'Bearer ' + this.token
  270. },
  271. data: {
  272. portType: 1,
  273. pageIndex: that.currentPage,
  274. pageSize: that.pageSize,
  275. companyId: -1,
  276. financialAuditStatus: that.financialValue,//财务审核
  277. managerAuditStatus: that.GMValue, //总经理审核
  278. feeTypeId: that.feeTypValue, //费用类型
  279. feeSubTypeId: that.feeSubTypeValue, //费用子类型
  280. feeDesc: '', //描述
  281. createUserId: that.userNameValue //申请人
  282. }
  283. }).then(function (res) {
  284. console.log(res)
  285. if (res.data.code == 200) {
  286. that.tableData = res.data.data.dataList;
  287. that.tableDataLength = res.data.data.dataCount;
  288. }
  289. console.log(that.tableData);
  290. })
  291. },
  292. getTypeData() {
  293. var url = "/api/Financial/PostPageSearchDailyPaymentPriceTypeData"
  294. var that = this
  295. this.$axios({
  296. method: 'post',
  297. url: url,
  298. headers: {
  299. Authorization: 'Bearer ' + that.token
  300. },
  301. data: {
  302. portType: 1,
  303. }
  304. }).then(function (res) {
  305. if (res.data.code == 200) {
  306. for(var u=0;u<res.data.data.userNameData.length;u++){
  307. that.userNameData.push(res.data.data.userNameData[u])
  308. }
  309. // that.userNameData=res.data.data.userNameData;
  310. for(var l=0;l<res.data.data.feeTypeData.length;l++){
  311. that.feeTypeData.push(res.data.data.feeTypeData[l])
  312. }
  313. // that.feeTypeData=res.data.data.feeTypeData;
  314. that.feeSubType=res.data.data.feeSubTypeData;
  315. }
  316. })
  317. },
  318. filtersub(){
  319. this.feeSubTypeData=[
  320. {
  321. id: -1,
  322. name: "全部",
  323. sTid:'-1'
  324. }
  325. ];
  326. this.feeSubTypeValue=-1;
  327. for(var i=0;i<this.feeSubType.length;i++){
  328. if(this.feeSubType[i].sTid==this.feeTypValue){
  329. this.feeSubTypeData.push(this.feeSubType[i]);
  330. }
  331. }
  332. console.log(this.feeTypValue);
  333. if(this.feeSubTypeData.length==1){
  334. this.banned=true;
  335. }else{
  336. this.banned=false;
  337. }
  338. this.currentPage= 1;
  339. this.postPageDailyPaymentList();
  340. },
  341. downtrigger(){
  342. this.currentPage= 1;
  343. this.postPageDailyPaymentList();
  344. },
  345. addDaily(){
  346. this.$router.push({ path: "/home/DailyFeeedit"});
  347. },
  348. handleEdit(index, row) {
  349. this.$router.push({path: '/home/DailyFeeedit?id=' + row.id +''});
  350. },
  351. handleDelete(index, row,rows) {
  352. console.log(index, row);
  353. this.$confirm('此操作将删除该条信息, 是否继续?', '提示', {
  354. confirmButtonText: '确定',
  355. cancelButtonText: '取消',
  356. type: 'warning'
  357. }).then(() => {
  358. var url="/api/Financial/PostDelDailyPayment"
  359. var that=this
  360. this.$axios({
  361. method: 'post',
  362. url:url,
  363. headers:{
  364. Authorization:'Bearer '+this.token
  365. },
  366. data:{
  367. portType: 1,
  368. id:row.id,
  369. userId:that.userid
  370. }
  371. }).then(function(res){
  372. if(res.data.code==200){
  373. that.$message({
  374. message:res.data.msg ,
  375. type: 'success',
  376. offset:50
  377. });
  378. rows.splice(index, 1);
  379. that.postPageDailyPaymentList();
  380. }else{
  381. that.$message({
  382. message:res.data.msg ,
  383. type: 'warning',
  384. offset:50
  385. });
  386. }
  387. })
  388. }).catch(() => {
  389. this.$message({
  390. type: 'info',
  391. message: '已取消删除'
  392. });
  393. });
  394. },
  395. handleGenerate(index, row){
  396. this.$confirm('是否生成此条数据?', '提示', {
  397. confirmButtonText: '确定',
  398. cancelButtonText: '取消',
  399. type: 'warning'
  400. }).then(() => {
  401. var url="/api/Financial/PostExcelDailyPaymentDownload"
  402. var that=this
  403. this.$axios({
  404. method: 'post',
  405. url:url,
  406. headers:{
  407. Authorization:'Bearer '+this.token
  408. },
  409. data:{
  410. portType: 1,
  411. id:row.id,
  412. }
  413. }).then(function(res){
  414. console.log(res)
  415. if(res.data.code==200){
  416. that.$message({
  417. message:"生成成功!" ,
  418. type: 'success',
  419. offset:50
  420. });
  421. window.open(res.data.msg);
  422. }else{
  423. that.$message({
  424. message:res.data.msg ,
  425. type: 'warning',
  426. offset:50
  427. });
  428. }
  429. })
  430. }).catch(() => {
  431. this.$message({
  432. type: 'info',
  433. message: '已取消删除'
  434. });
  435. });
  436. }
  437. },
  438. mounted() {
  439. this.token = JSON.parse(localStorage.getItem('userinif')).token;
  440. this.userid=JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
  441. this.postPageDailyPaymentList();
  442. this.getTypeData();
  443. },
  444. watch:{
  445. 'feeSubTypeData.length': {
  446. handler(newValue, oldValue) {
  447. if (newValue !== oldValue) {
  448. // this.banned=false
  449. }
  450. }
  451. }
  452. }
  453. }
  454. </script>
  455. <style>
  456. .visa-box{
  457. background-color: #fff;
  458. padding: 10px;
  459. box-shadow: 0 0 5px #0005;
  460. border-radius: 10px;
  461. }
  462. /*.search-li:nth-child(1){
  463. width: 80%;
  464. }*/
  465. /*.search-li:nth-child(2){
  466. width: 20%;
  467. justify-content: end;
  468. }*/
  469. .search-ul{
  470. margin-bottom: 10px;
  471. }
  472. .search-li label{
  473. color: #606266;
  474. }
  475. .search-li{
  476. display: flex;
  477. justify-content: space-between;
  478. }
  479. .search-li>div{
  480. margin-right: 10px;
  481. }
  482. .dailyment-box .el-table th.el-table__cell>.cell{
  483. text-align: center;
  484. }
  485. .dailyment-box .el-table td.el-table__cell div{
  486. text-align: center;
  487. }
  488. .dailyment-box .block{
  489. margin-top: 10px;
  490. }
  491. .visa-box .el-row{
  492. text-align: right;
  493. margin-bottom: 5px;
  494. }
  495. .visas-list{
  496. background-color: #fff;
  497. padding: 10px;
  498. box-shadow: 0 0 5px #0005;
  499. border-radius: 10px;
  500. }
  501. .visas-title{
  502. display: flex;
  503. font-size: 17px;
  504. font-weight:600 ;
  505. color: #555;
  506. margin-top: 8px;
  507. margin-bottom: 2px;
  508. justify-content: space-between;
  509. align-items: center;
  510. }
  511. .visas-box{
  512. display: flex;
  513. }
  514. .visas-box>button{
  515. margin-left: 10px;
  516. padding: 8px 20px;
  517. }
  518. .country-box{
  519. display: flex;
  520. justify-content: space-between;
  521. align-items: center;
  522. }
  523. .interpret-box{
  524. display: flex;
  525. justify-content: space-between;
  526. align-items: center;
  527. }
  528. .dailyment-box .el-link{
  529. margin: 0 8px;
  530. }
  531. .search-li .feeType-box{
  532. margin-right: 0;
  533. }
  534. </style>