DailyFeeedit.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547
  1. <template>
  2. <div v-loading="fullscreenLoading" class="dailyedit-box">
  3. <div class="dailyedit-title">
  4. 新增日常费用付款申请款项
  5. </div>
  6. <div style="text-align: right;margin-bottom: 20px;">
  7. <el-button v-if="editid&&userid==21||userid==22" size="small" type="primary" @click="PostDelDailyPaymentAudit(1)">审核通过</el-button>
  8. <el-button v-if="editid&&userid==21||userid==22" size="small" type="primary" @click="PostDelDailyPaymentAudit(2)">审核不通过</el-button>
  9. <el-button size="small" type="primary" @click="submitForm('ruleForm')">保 存</el-button>
  10. <el-button size="small" @click="resetForm('ruleForm')">返 回</el-button>
  11. </div>
  12. <el-form :model="ruleForm" :rules="rules" ref="ruleForm" class="demo-ruleForm">
  13. <div class="dailyedit-set">
  14. <el-form-item label="类型标识:" label-width="85px" prop="transferation">
  15. <el-select :disabled="thesame" @change="trans()" v-model="ruleForm.transferation" placeholder="请选择转账标识">
  16. <el-option v-for="(item,index) in Transferlogo" :key="index" :label="item.name" :value="item.id"></el-option>
  17. </el-select>
  18. </el-form-item>
  19. <el-form-item label="转账标识:" prop="identification" label-width="85px">
  20. <el-select :disabled="banned" v-model="ruleForm.identification" placeholder="请选择费用类型">
  21. <el-option v-for="(item,index) in identificationset" :key="index" :label="item.name" :value="item.id"></el-option>
  22. </el-select>
  23. </el-form-item>
  24. <el-form-item label="费用类型:" prop="type" label-width="85px">
  25. <el-select :disabled="thesame" @change="typechange()" v-model="ruleForm.type" placeholder="请选择费用类型">
  26. <el-option v-for="(item,index) in typeset" :key="index" :label="item.name" :value="item.id"></el-option>
  27. </el-select>
  28. </el-form-item>
  29. <el-form-item label="费用名称:" prop="name" label-width="85px">
  30. <el-select :disabled="bannedtype" v-model="ruleForm.name" placeholder="请选择费用名称">
  31. <el-option v-for="(item,index) in nameset" :key="index" :label="item.name" :value="item.id"></el-option>
  32. </el-select>
  33. </el-form-item>
  34. <el-form-item v-if="ruleForm.type==104" label="关联团组:" prop="groupId" label-width="85px">
  35. <el-select v-model="ruleForm.groupId" filterable placeholder="请选择">
  36. <el-option
  37. v-for="item in grouplist"
  38. :key="item.id"
  39. :label="item.groupName"
  40. :value="item.id">
  41. </el-option>
  42. </el-select>
  43. </el-form-item>
  44. <el-form-item label="申请公司:" prop="company" label-width="85px">
  45. <el-select :disabled="thesame" v-model="ruleForm.company" placeholder="请选择申请公司">
  46. <el-option v-for="(item,index) in companyset" :key="index" :label="item.companyName" :value="item.id"></el-option>
  47. </el-select>
  48. </el-form-item>
  49. </div>
  50. <el-form-item label="申请说明:" label-width="85px" prop="desc">
  51. <el-input :disabled="thesame" type="textarea" v-model="ruleForm.desc"></el-input>
  52. </el-form-item>
  53. <div class="dailyfrom-title">
  54. <div>录入具体费用</div>
  55. <el-form-item>
  56. <el-button size="mini" @click="AddForm()" type="primary">新 增</el-button>
  57. </el-form-item>
  58. </div>
  59. <div class="items-form">
  60. <div v-for="(item,index) in itemsArr" :key="index" class="items-li">
  61. <el-form :model="item" class="demo-form-inline" label-width="85px">
  62. <el-form-item label="费用项目:">
  63. <el-input :disabled="thesame" v-model="item.priceName" placeholder="费用项目名称"></el-input>
  64. </el-form-item>
  65. <el-form-item label="数量:">
  66. <template>
  67. <el-input-number :disabled="thesame" :min="1" v-model="item.quantity"></el-input-number>
  68. </template>
  69. </el-form-item>
  70. <el-form-item label="单价(CNY):">
  71. <el-input-number :disabled="thesame" :controls="false" v-model="item.price" :precision="4"></el-input-number>
  72. </el-form-item>
  73. <el-form-item label="小计(CNY):">
  74. <div class="sub-box">{{item.itemTotal=(item.quantity*item.price).toFixed(4)}}</div>
  75. </el-form-item>
  76. <el-form-item label="备注:">
  77. <el-input :disabled="thesame" v-model="item.remark" placeholder="备注"></el-input>
  78. </el-form-item>
  79. <el-form-item>
  80. <el-button
  81. size="mini"
  82. type="danger"
  83. :disabled="itemsArr.length<=1"
  84. @click="deleteRow(index,itemsArr )"><i class="el-icon-delete"></i></el-button>
  85. </el-form-item>
  86. </el-form>
  87. </div>
  88. </div>
  89. </el-form>
  90. </div>
  91. </template>
  92. <script>
  93. import {debounce} from '../../store/statice'
  94. export default {
  95. // beforeRouteLeave(to, from, next) {
  96. // if(to.name=='DailyFeePayment'){
  97. // to.meta.keepAlive = true;
  98. // }
  99. // next()
  100. // },
  101. data(){
  102. return{
  103. editid:'',
  104. userid:'',
  105. grouplist:[],
  106. token:'',
  107. banned:true,
  108. bannedtype:true,
  109. thesame:false,//是否能编辑标识
  110. ruleForm: {
  111. transferation:'',
  112. identification: '',
  113. type: '',
  114. groupId:'',
  115. name: '',
  116. company: '',
  117. desc:''
  118. },
  119. SumPrice:0,
  120. itemsArr:[
  121. {
  122. priceName:"",
  123. quantity:'',
  124. price:"",
  125. itemTotal:'',
  126. remark:""
  127. }
  128. ],
  129. rules: {
  130. transferation: [
  131. { required: true, message: '请选择转账标识', trigger: 'change' }
  132. ],
  133. identification: [
  134. { required: true, message: '请选择费用标识', trigger: 'change' }
  135. ],
  136. type: [
  137. { required: true, message: '请选择费用类型', trigger: 'change' }
  138. ],
  139. name: [
  140. { required: true, message: '请选择费用名称', trigger: 'change' }
  141. ],
  142. company: [
  143. { required: true, message: '请选择申请公司', trigger: 'change' }
  144. ],
  145. desc: [
  146. { required: true, message: '请填写申请说明', trigger: 'change' }
  147. ],
  148. },
  149. Transferlogo:[],//类型标识
  150. feeMarkSubTypeData:[],//转账标识ALL
  151. identificationset:[],//转账标识
  152. typeset:[],//费用类型
  153. feeSubTypeData:[],//费用名称ALL
  154. nameset:[],//费用名称
  155. companyset:[],//申请公司
  156. fullscreenLoading:false,//loading
  157. }
  158. },
  159. methods:{
  160. submitForm:debounce(function(formName) {
  161. this.$refs[formName].validate((valid) => {
  162. if (valid) {
  163. this.SumPrice=0;
  164. console.log(this.itemsArr)
  165. var issubmit=true;
  166. for(var g=0;g<this.itemsArr.length;g++){
  167. if(this.itemsArr[g].itemTotal!=""&&this.itemsArr[g].price!=0&&this.itemsArr[g].priceName!=""&&this.itemsArr[g].quantity!=""){
  168. if(!this.thesame){
  169. //for(var k=0;k<this.itemsArr.length;k++){
  170. this.SumPrice+=Number(this.itemsArr[g].itemTotal)
  171. //}
  172. console.log(this.SumPrice);
  173. }else{
  174. this.$message({
  175. showClose: true,
  176. message: '本申请不是您建立的或已被审核,无法修改!',
  177. type: 'error'
  178. });
  179. issubmit=false;
  180. break;
  181. }
  182. }else{
  183. this.$message({
  184. showClose: true,
  185. message: '请检查录入具体费用是否填写完整!',
  186. type: 'error'
  187. });
  188. issubmit=false;
  189. break;
  190. }
  191. }
  192. if(issubmit){
  193. if(this.editid!=undefined){
  194. this.UpdateDailyPayment()
  195. }else{
  196. this.AddDailyPayment()
  197. }
  198. }
  199. } else {
  200. console.log('error submit!!');
  201. return false;
  202. }
  203. });
  204. },1000,true),
  205. resetForm(formName) {
  206. // this.$refs[formName].resetFields();
  207. this.$router.push({ path: "/home/DailyFeePayment"});
  208. },
  209. AddForm(){
  210. if(this.thesame){
  211. this.$message({
  212. showClose: true,
  213. message: '本申请不是您建立的或已被审核,无法操作!',
  214. type: 'error'
  215. });
  216. return false
  217. }
  218. this.itemsArr.push(
  219. {priceName: '', quantity: '', price:'',itemTotal:'', remark: ''}
  220. )
  221. },
  222. deleteRow(index, rows) {
  223. if(this.thesame){
  224. this.$message({
  225. showClose: true,
  226. message: '本申请不是您建立的或已被审核,无法操作!',
  227. type: 'error'
  228. });
  229. return false
  230. }
  231. rows.splice(index, 1);
  232. },
  233. getTypeData() {
  234. var url = "/api/Financial/PostPageSearchDailyPaymentPriceTypeData"
  235. var that = this
  236. this.$axios({
  237. method: 'post',
  238. url: url,
  239. headers: {
  240. Authorization: 'Bearer ' + that.token
  241. },
  242. data: {
  243. portType: 1,
  244. }
  245. }).then(function (res) {
  246. if (res.data.code == 200) {
  247. that.Transferlogo=res.data.data.feeMarkTypeData;
  248. that.feeMarkSubTypeData=res.data.data.feeMarkSubTypeData;
  249. that.typeset=res.data.data.feeTypeData;
  250. that.feeSubTypeData=res.data.data.feeSubTypeData;
  251. that.companyset=res.data.data.companyNameData;
  252. that.GetGroupNameList();
  253. }
  254. })
  255. },
  256. //获取团组
  257. GetGroupNameList() {
  258. this.grouplist=[];
  259. var url = "/api/Business/GetGroupNameList"
  260. var that = this
  261. this.$axios({
  262. method: 'post',
  263. url: url,
  264. headers: {
  265. Authorization: 'Bearer '
  266. },
  267. data: {
  268. portType: 1,
  269. }
  270. }).then(function (res) {
  271. that.grouplist=res.data.data;
  272. })
  273. },
  274. trans(){
  275. this.identificationset=[];
  276. this.ruleForm.identification='';
  277. for(var i=0;i<this.feeMarkSubTypeData.length;i++){
  278. if(this.feeMarkSubTypeData[i].sTid==this.ruleForm.transferation){
  279. this.identificationset.push(this.feeMarkSubTypeData[i]);
  280. }
  281. }
  282. if(this.identificationset.length==0){
  283. this.banned=true;
  284. }else{
  285. this.banned=false;
  286. }
  287. },
  288. typechange(){
  289. if (this.ruleForm.type!=104) {
  290. this.ruleForm.groupId=''
  291. }
  292. this.nameset=[];
  293. this.ruleForm.name='';
  294. console.log(this.feeSubTypeData)
  295. for(var i=0;i<this.feeSubTypeData.length;i++){
  296. if(this.feeSubTypeData[i].sTid==this.ruleForm.type){
  297. this.nameset.push(this.feeSubTypeData[i]);
  298. }
  299. }
  300. if(this.nameset.length==0){
  301. this.bannedtype=true;
  302. }else{
  303. this.bannedtype=false;
  304. }
  305. },
  306. AddDailyPayment(){
  307. if (this.ruleForm.type!=104) {
  308. this.ruleForm.groupId=''
  309. }
  310. var url = "/api/Financial/PostAddDailyPayment"
  311. var that = this
  312. this.$axios({
  313. method: 'post',
  314. url: url,
  315. headers: {
  316. Authorization: 'Bearer ' + that.token
  317. },
  318. data: {
  319. PortType: 1,
  320. UserId:that.userid,
  321. Instructions:that.ruleForm.desc,
  322. SumPrice:that.SumPrice,
  323. TransferTypeId:that.ruleForm.identification,
  324. groupId:that.ruleForm.groupId==""?0:that.ruleForm.groupId,
  325. PriceTypeId:that.ruleForm.name,
  326. CompanyId:that.ruleForm.company,
  327. FeeContents:that.itemsArr
  328. }
  329. }).then(function (res) {
  330. console.log(res)
  331. if (res.data.code == 200) {
  332. that.$message({
  333. message: res.data.msg,
  334. type: 'success',
  335. offset:50
  336. });
  337. that.$router.push({ path: "/home/DailyFeePayment"});
  338. }
  339. })
  340. },
  341. UpdateDailyPayment(){
  342. var url = "/api/Financial/PostEditDailyPayment"
  343. var that = this
  344. this.$axios({
  345. method: 'post',
  346. url: url,
  347. headers: {
  348. Authorization: 'Bearer ' + that.token
  349. },
  350. data: {
  351. PortType: 1,
  352. Id:that.editid,
  353. UserId:that.userid,
  354. Instructions:that.ruleForm.desc,
  355. groupId:that.ruleForm.groupId==""?0:that.ruleForm.groupId,
  356. SumPrice:that.SumPrice,
  357. TransferTypeId:that.ruleForm.identification,
  358. PriceTypeId:that.ruleForm.name,
  359. CompanyId:that.ruleForm.company,
  360. FeeContents:that.itemsArr
  361. }
  362. }).then(function (res) {
  363. console.log(res)
  364. if (res.data.code == 200) {
  365. that.$message({
  366. message: res.data.msg,
  367. type: 'success',
  368. offset:50
  369. });
  370. that.$router.push({ path: "/home/DailyFeePayment"});
  371. }else{
  372. that.$message.error(res.data.msg);
  373. }
  374. })
  375. },
  376. //审核
  377. PostDelDailyPaymentAudit:debounce(function(val){
  378. var url = "/api/Financial/PostDelDailyPaymentAudit"
  379. var that = this
  380. var auditType=0
  381. if(that.userid==21){
  382. auditType=2
  383. }
  384. if(that.userid==22){
  385. auditType=1
  386. }
  387. this.$axios({
  388. method: 'post',
  389. url: url,
  390. headers: {
  391. Authorization: 'Bearer ' + that.token
  392. },
  393. data: {
  394. id: that.editid,
  395. auditType:auditType,
  396. auditStatus:val
  397. }
  398. }).then(function (res) {
  399. if (res.data.code == 200) {
  400. that.$message({
  401. message: res.data.msg,
  402. type: 'success',
  403. offset:50
  404. });
  405. that.$router.push({ path: "/home/DailyFeePayment"});
  406. }else{
  407. that.$message.error(res.data.msg);
  408. }
  409. })
  410. },1000,true),
  411. getPostSearchDailyPaymentInfo(){
  412. if(this.editid!=undefined){
  413. this.fullscreenLoading=true;
  414. var url = "/api/Financial/PostSearchDailyPaymentInfo"
  415. var that = this
  416. this.$axios({
  417. method: 'post',
  418. url: url,
  419. headers: {
  420. Authorization: 'Bearer ' + that.token
  421. },
  422. data: {
  423. PortType: 1,
  424. id:that.editid
  425. }
  426. }).then(function (res) {
  427. console.log(res)
  428. if (res.data.code == 200) {
  429. that.itemsArr=res.data.data.feeContents;
  430. that.ruleForm.desc=res.data.data.instructions;
  431. setTimeout(function (){
  432. for(var a=0;a<that.feeMarkSubTypeData.length;a++){
  433. if(that.feeMarkSubTypeData[a].id==res.data.data.transferTypeId){
  434. that.ruleForm.transferation=that.feeMarkSubTypeData[a].sTid;
  435. }
  436. }
  437. that.trans();
  438. that.ruleForm.identification=res.data.data.transferTypeId;
  439. for(var b=0;b<that.feeSubTypeData.length;b++){
  440. if(that.feeSubTypeData[b].id==res.data.data.priceTypeId){
  441. that.ruleForm.type=that.feeSubTypeData[b].sTid;
  442. }
  443. }
  444. that.typechange()
  445. that.ruleForm.name=res.data.data.priceTypeId;
  446. that.ruleForm.groupId=res.data.data.groupId;
  447. that.fullscreenLoading=false;
  448. if(that.userid!=res.data.data.createUserId){
  449. that.thesame=true;
  450. }else if(res.data.data.fAudit==1||res.data.data.mAudit==1){
  451. that.thesame=true;
  452. if(that.ruleForm.type==90){
  453. that.thesame=false;
  454. }
  455. }
  456. if(that.thesame==true){
  457. that.banned=true;
  458. that.bannedtype=true;
  459. }
  460. },1000);
  461. that.ruleForm.company=res.data.data.companyId;
  462. }
  463. })
  464. }
  465. }
  466. },
  467. mounted(){
  468. this.editid=this.$route.query.id;
  469. this.token = JSON.parse(localStorage.getItem('userinif')).token;
  470. this.userid=JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
  471. this.getTypeData();
  472. this.getPostSearchDailyPaymentInfo();
  473. }
  474. }
  475. </script>
  476. <style>
  477. .dailyedit-box{
  478. background-color: #fff;
  479. padding: 10px;
  480. box-shadow: 0 0 5px #0005;
  481. border-radius: 10px;
  482. min-height: 800px;
  483. }
  484. .dailyedit-title{
  485. font-size: 17px;
  486. font-weight: 600;
  487. color: #555;
  488. margin-bottom: 30px;
  489. }
  490. .dailyedit-set{
  491. display: flex;
  492. justify-content: space-between;
  493. flex-wrap: wrap;
  494. }
  495. .dailyedit-set .el-form-item{
  496. width: 285px;
  497. }
  498. .items-li{
  499. border-bottom: 1px #DCDFE6 solid;
  500. margin-bottom: 12px;
  501. }
  502. .items-li .demo-form-inline{
  503. display: flex;
  504. justify-content: space-between;
  505. }
  506. .dailyfrom-title{
  507. font-size: 14px;
  508. font-weight: 600;
  509. color: #555;
  510. margin-bottom: 30px;
  511. display: flex;
  512. align-items: center;
  513. justify-content: space-between;
  514. }
  515. .dailyfrom-title .el-form-item{
  516. margin: 0;
  517. }
  518. .items-li .el-form-item{
  519. margin-bottom: 10px;
  520. }
  521. .dailyedit-box .sub-box{
  522. -ms-user-select: none;
  523. font-family:"微软雅黑";
  524. -khtml-user-select: none;
  525. -webkit-user-select: none;
  526. -moz-user-select: none;
  527. user-select: none;
  528. background-color: #FFF;
  529. background-image: none;
  530. border-radius: 4px;
  531. border: 1px solid #DCDFE6;
  532. -webkit-box-sizing: border-box;
  533. box-sizing: border-box;
  534. color: #606266;
  535. display: inline-block;
  536. height: 40px;
  537. line-height: 40px;
  538. outline: 0;
  539. padding: 0 15px;
  540. -webkit-transition: border-color .2s cubic-bezier(.645,.045,.355,1);
  541. transition: border-color .2s cubic-bezier(.645,.045,.355,1);
  542. width: 100%;
  543. }
  544. </style>