index.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674
  1. <template>
  2. <div>
  3. <van-nav-bar title="费用报销" left-text="返回" @click-left="back" fixed left-arrow style="z-index:1000" />
  4. <div class="content">
  5. <van-tabs v-model="active" @change="activeChange">
  6. <van-tab title="费用报销" :name="0"></van-tab>
  7. <van-tab title="单据列表" :name="1"></van-tab>
  8. <van-tab title="单据审核" :name="2" v-if="canExamine"></van-tab>
  9. </van-tabs>
  10. <!-- #region 费用报销 -->
  11. <div class="edit" v-if="active == 0">
  12. <van-form class="edit_form" label-width="140">
  13. <!-- 报销人 -->
  14. <van-field v-model="editForm.ownerId" label="报销人" @click="ownerIdShow = true" readonly clickable required>
  15. <template #input>{{formshowText.name}}</template>
  16. </van-field>
  17. <van-popup v-model="ownerIdShow" position="bottom" v-if="canExamine">
  18. <van-picker
  19. value-key="name"
  20. show-toolbar
  21. :columns="userList"
  22. @confirm="ownerIdChange"
  23. @cancel="ownerIdShow = false;$forceUpdate();"/>
  24. </van-popup>
  25. <!-- 填报日期 -->
  26. <van-field v-model="editForm.createDate" label="填报日期" @click="createDateShow = true" readonly clickable required></van-field>
  27. <van-popup v-model="createDateShow" position="bottom">
  28. <van-datetime-picker
  29. type="date"
  30. title="选择填报日期"
  31. @confirm="createDateChange"
  32. @cancel="createDateShow = false;$forceUpdate();"
  33. :min-date="minDate"
  34. :max-date="maxDate"/>
  35. </van-popup>
  36. <!-- 发票张数 -->
  37. <van-field label="发票张数">
  38. <template #input>
  39. <van-stepper v-model="editForm.ticketNum"/>
  40. </template>
  41. </van-field>
  42. <!-- 费用类型 -->
  43. <van-field v-model="editForm.type" label="费用类型" @click="typeShow = true" readonly clickable>
  44. <template #input>{{typeList[editForm.type]}}</template>
  45. </van-field>
  46. <van-popup v-model="typeShow" position="bottom">
  47. <van-picker
  48. show-toolbar
  49. :columns="typeList"
  50. @confirm="typeChange"
  51. @cancel="typeShow = false;$forceUpdate();"/>
  52. </van-popup>
  53. <!-- 备注 -->
  54. <van-field v-model="editForm.remark" label="备注" type="textarea"></van-field>
  55. <!-- 发票 -->
  56. <van-field label="发票" readonly>
  57. <template #input>总费用:{{totalCost | numtosum}} 元</template>
  58. </van-field>
  59. <div class="invoice" v-if="invoiceList.length != 0">
  60. <div v-for="item,index in invoiceList" :key="item.id" style="position:relative" :class="index == 0 ? '' : 'invoice_item'">
  61. <!-- <van-button class="deletebtn" size="mini" type="default" @click="deleteInvoice(index)">删除</van-button> -->
  62. <van-icon name="delete-o" class="deletebtn" @click="deleteInvoice(index)" />
  63. <van-field label="所属项目:" v-model="item.projectId" @click="in_projectShow = true,invoiceIndex = index" readonly clickable>
  64. <template #input>{{formshowText.inProjectName[index]}}</template>
  65. </van-field>
  66. <van-field label="费用日期:" v-model="item.happenDate" @click="in_dateShow = true,invoiceIndex = index" readonly clickable></van-field>
  67. <van-field label="发票种类:" v-model="item.invoiceType" @click="in_typeShow = true,invoiceIndex = index" readonly clickable>
  68. <template #input>{{inTypeList[item.invoiceType]}}</template>
  69. </van-field>
  70. <van-field label="费用类型:" v-model="item.expenseType" @click="in_exTypeShow = true,invoiceIndex = index" readonly clickable></van-field>
  71. <van-field label="费用金额(含税):" v-model="item.amount" type="number" @input="costCount"></van-field>
  72. <van-field label="发票号:" v-model="item.invoiceNo"></van-field>
  73. <van-field label="税率%:" v-model="item.taxPercent"></van-field>
  74. <van-field label="税额:" v-model="item.taxValue"></van-field>
  75. <van-field label="备注:" v-model="item.remark" autosize></van-field>
  76. <van-field label="报销凭证:" @click="invoiceIndex = index" clickable>
  77. <template #input>
  78. <van-uploader v-model="uploader[index]" :before-read="beforeRead" :after-read="afterRead" @delete="item.pic = null" :max-count="1" />
  79. </template>
  80. </van-field>
  81. </div>
  82. </div>
  83. <div class="addinvoice"><van-button size="mini" icon="plus" type="info" plain hairline @click="addInvoice">添加发票</van-button></div>
  84. <!-- 发票-popup -->
  85. <span>
  86. <!-- 所属项目 -->
  87. <van-popup v-model="in_projectShow" position="bottom">
  88. <van-picker
  89. value-key="projectName"
  90. show-toolbar
  91. :columns="inProjectList"
  92. @confirm="inProjectChange"
  93. @cancel="in_projectShow = false;$forceUpdate();"/>
  94. </van-popup>
  95. <!-- 费用日期 -->
  96. <van-popup v-model="in_dateShow" position="bottom">
  97. <van-datetime-picker
  98. type="date"
  99. title="选择费用日期"
  100. @confirm="inDateChange"
  101. @cancel="in_dateShow = false;$forceUpdate();"
  102. :min-date="minDate"
  103. :max-date="maxDate"/>
  104. </van-popup>
  105. <!-- 发票种类 -->
  106. <van-popup v-model="in_typeShow" position="bottom">
  107. <van-picker
  108. show-toolbar
  109. :columns="inTypeList"
  110. @confirm="inTypeChange"
  111. @cancel="in_typeShow = false;$forceUpdate();"/>
  112. </van-popup>
  113. <!-- 费用类型 -->
  114. <van-popup v-model="in_exTypeShow" position="bottom">
  115. <van-picker
  116. value-key="typeName"
  117. show-toolbar
  118. :columns="inexTypeList"
  119. @confirm="inexTypeChange"
  120. @cancel="in_exTypeShow = false;$forceUpdate();"/>
  121. </van-popup>
  122. </span>
  123. </van-form>
  124. <!-- 提交 -->
  125. <div class="form_btn" style="position:fixed; bottom:0px;width:100%;">
  126. <div style="padding-bottom:10px;">
  127. <van-button square block type="info" @click="submitExpense" style="width:100%;float:left;">提交</van-button>
  128. </div>
  129. </div>
  130. </div>
  131. <!-- #endregion -->
  132. <!-- 单据列表 -->
  133. <div class="list" v-if="active == 1">
  134. <van-collapse v-model="activeName" accordion class="list_collapse">
  135. <van-collapse-item v-for="item in billList" :key="item.id" title="标题1" :name="item.id">
  136. <template #title>
  137. <div class="collapse_label_l">票据编号:{{item.code}}</div>
  138. <div class="collapse_label_r">报销人:{{item.ownerName}}</div>
  139. <div class="collapse_label_l">金额: ¥{{item.totalAmount | numtosum}}</div>
  140. <div class="collapse_label_r">状态:<span :class="statusClass[item.status]">{{statusList[item.status]}}</span></div>
  141. </template>
  142. <div class="wrapper">
  143. <div><span>票据编号:</span><span>{{item.code}}</span></div>
  144. <div><span>金额:</span><span>¥{{item.totalAmount | numtosum}}</span></div>
  145. <div><span>报销人:</span><span>{{item.ownerName}}</span></div>
  146. <div><span>填报日期:</span><span>{{item.createDate}}</span></div>
  147. <div><span>发票张数:</span><span>{{item.ticketNum}}</span></div>
  148. <div><span>费用类型:</span><span>{{typeList[item.type]}}</span></div>
  149. <!-- <div><span>状态:</span><span>{{item.status}}</span></div> -->
  150. <div><span>驳回原因:</span><span>{{item.denyReason}}</span></div>
  151. <div><span>备注:</span><span>{{item.remark}}</span></div>
  152. </div>
  153. <div class="operation">
  154. <van-button size="small" type="info" :to="{ name: 'expenseDetails', params: { id: item.id, canEdit: false } }">查看</van-button>
  155. <van-button style="margin-left:10px" size="small" type="info" :to="{ name: 'expenseDetails', params: { id: item.id, canEdit: true } }">编辑</van-button>
  156. <van-button style="margin-left:10px" size="small" type="danger" @click="deleteBill(item.id)">删除</van-button>
  157. </div>
  158. </van-collapse-item>
  159. </van-collapse>
  160. </div>
  161. <!-- 单据审核 -->
  162. <div class="audit" v-if="active == 2">
  163. <van-collapse v-model="auditName" accordion class="list_collapse">
  164. <van-collapse-item v-for="item in examineList" :key="item.id" title="标题2" :name="item.id">
  165. <template #title>
  166. <div class="collapse_label_l">票据编号:{{item.code}}</div>
  167. <div class="collapse_label_r">报销人:{{item.ownerName}}</div>
  168. <div class="collapse_label_l">金额: ¥{{item.totalAmount | numtosum}}</div>
  169. <div class="collapse_label_r">状态:<span :class="statusClass[item.status]">{{statusList[item.status]}}</span></div>
  170. <div class="operation">
  171. <van-button size="small" type="info" @click="approve(item.id)">通过</van-button>
  172. <van-button style="margin-left:15px" size="small" type="danger" @click="deny(item.id)">驳回</van-button>
  173. </div>
  174. </template>
  175. <div class="wrapper">
  176. <div><span>票据编号:</span><span>{{item.code}}</span></div>
  177. <div><span>金额:</span><span>¥{{item.totalAmount | numtosum}}</span></div>
  178. <div><span>报销人:</span><span>{{item.ownerName}}</span></div>
  179. <div><span>填报日期:</span><span>{{item.createDate}}</span></div>
  180. <div><span>发票张数:</span><span>{{item.ticketNum}}</span></div>
  181. <div><span>费用类型:</span><span>{{typeList[item.type]}}</span></div>
  182. <!-- <div><span>状态:</span><span>{{item.status}}</span></div> -->
  183. <div><span>驳回原因:</span><span>{{item.denyReason}}</span></div>
  184. <div><span>备注:</span><span>{{item.remark}}</span></div>
  185. </div>
  186. <div class="lookup">
  187. <van-button size="small" type="info" :to="{ name: 'expenseDetails', params: { id: item.id,canEdit: false } }">查看单据信息</van-button>
  188. </div>
  189. </van-collapse-item>
  190. </van-collapse>
  191. </div>
  192. </div>
  193. </div>
  194. </template>
  195. <script>
  196. export default {
  197. data() {
  198. return {
  199. active: 0,
  200. user: JSON.parse(localStorage.userInfo),
  201. userList: [],
  202. canExamine: false,
  203. minDate: new Date(2020,0,1),
  204. maxDate: new Date(2025,11,31),
  205. formshowText: {
  206. name: '',
  207. inProjectName: []
  208. },
  209. // #region 费用报销
  210. editForm: {
  211. ownerId: '',
  212. createDate: '',
  213. ticketNum: 0,
  214. type: 0,
  215. remark: ''
  216. },
  217. ownerIdShow: false,
  218. createDateShow: false,
  219. typeShow: false,
  220. typeList: ['一般','差旅','外包'],
  221. invoiceIndex: 0,
  222. totalCost: 0,
  223. invoiceList: [
  224. // {
  225. // projectId: '',
  226. // happenDate: '',
  227. // invoiceType: '',
  228. // expenseType: '',
  229. // amount: '',
  230. // invoiceNo: '',
  231. // taxPercent: '',
  232. // taxValue: '',
  233. // remark: '',
  234. // pic: ''
  235. // }
  236. ],
  237. in_projectShow: false,
  238. in_dateShow: false,
  239. in_typeShow: false,
  240. in_exTypeShow: false,
  241. inProjectList: [],
  242. inTypeList: ['增值税专用发票','增值税普通发票'],
  243. allexTypeList: [],
  244. inexTypeList: [],
  245. uploader: [[]],
  246. // #endregion
  247. // 单据列表
  248. activeName: '',
  249. billList: [],
  250. statusList: ['审核通过','待审核','已驳回','已撤销'],
  251. statusClass: ['','waiting','rejected',''],
  252. // 单据审核
  253. auditName: '',
  254. examineList: []
  255. }
  256. },
  257. filters: {
  258. numtosum(value) {
  259. if (value == undefined || !value) return '0.00'
  260. value = value.toFixed(2)
  261. const intPart = Math.trunc(value)
  262. const intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
  263. let floatPart = '.00'
  264. const valueArray = value.toString().split('.')
  265. if (valueArray.length === 2) { // 有小数部分
  266. floatPart = valueArray[1].toString() // 取得小数部分
  267. return intPartFormat + '.' + floatPart
  268. }
  269. return intPartFormat + floatPart
  270. },
  271. },
  272. mounted() {
  273. for(let i in this.user.functionList){
  274. if(this.user.functionList[i].name == '费用审核'){
  275. this.canExamine = true
  276. }
  277. }
  278. if(!this.canExamine){
  279. this.editForm.ownerId = this.user.id
  280. this.formshowText.name = this.user.name
  281. }
  282. this.getUserList()
  283. this.getProjectList()
  284. this.getExTypeList()
  285. },
  286. methods: {
  287. back(){
  288. history.back();
  289. },
  290. formatDate(date) {
  291. let mon = date.getMonth() + 1
  292. return `${date.getFullYear()}-${mon<10?'0'+mon:mon}-${date.getDate()<10?'0'+date.getDate():date.getDate()}`;
  293. },
  294. activeChange(){
  295. if(this.active == 1){
  296. this.getBillList()
  297. }
  298. if(this.active == 2){
  299. this.getExamineList()
  300. }
  301. },
  302. costCount(){
  303. let costnum = 0
  304. for(let i in this.invoiceList){
  305. costnum += this.invoiceList[i].amount*1
  306. }
  307. this.totalCost = costnum
  308. },
  309. // #region 费用报销
  310. ownerIdChange(value,key){
  311. this.editForm.ownerId = value.id
  312. this.formshowText.name = value.name
  313. this.ownerIdShow = false
  314. },
  315. createDateChange(value,key){
  316. this.editForm.createDate = this.formatDate(value)
  317. this.createDateShow = false
  318. },
  319. typeChange(value,key){
  320. this.editForm.type = key
  321. this.typeShow = false
  322. this.inexTypeList = this.allexTypeList.filter(a=>a.mainType == this.editForm.type)
  323. },
  324. // 发票
  325. inProjectChange(value,key){
  326. this.formshowText.inProjectName[this.invoiceIndex] = value.projectName
  327. this.invoiceList[this.invoiceIndex].projectId = value.id
  328. this.in_projectShow = false
  329. },
  330. inDateChange(value,key){
  331. this.invoiceList[this.invoiceIndex].happenDate = this.formatDate(value)
  332. this.in_dateShow = false
  333. },
  334. inTypeChange(value,key){
  335. this.invoiceList[this.invoiceIndex].invoiceType = key
  336. this.in_typeShow = false
  337. },
  338. inexTypeChange(value,key){
  339. this.invoiceList[this.invoiceIndex].expenseType = value.typeName
  340. this.in_exTypeShow = false
  341. },
  342. addInvoice(){
  343. this.invoiceList.push({
  344. projectId: '',
  345. happenDate: '',
  346. invoiceType: '',
  347. expenseType: '',
  348. amount: '',
  349. invoiceNo: '',
  350. taxPercent: '',
  351. taxValue: '',
  352. remark: '',
  353. pic: '',
  354. })
  355. this.uploader.push([])
  356. },
  357. deleteInvoice(index){
  358. this.invoiceList.splice(index,1)
  359. this.uploader.splice(index,1)
  360. },
  361. // 上传报销凭证
  362. beforeRead(file){
  363. if(file.type != 'image/jpeg' && file.type != 'image/png'){
  364. this.$toast.fail('请选择jpg或png格式的图片')
  365. return false
  366. }
  367. return true
  368. },
  369. afterRead(file){
  370. console.log('afterRead',file);
  371. let formData = new FormData();
  372. formData.append("multipartFile", file.file);
  373. this.$axios.post("/common/uploadFile", formData)
  374. .then(res => {
  375. if(res.code == "ok") {
  376. this.invoiceList[this.invoiceIndex].pic = res.data
  377. } else {
  378. this.$toast.fail('上传失败');
  379. this.uploader[this.invoiceIndex] = []
  380. }
  381. }).catch(err=> {this.$toast.clear();console.log(err);this.uploader[this.invoiceIndex]=[]});
  382. },
  383. // 提交
  384. submitExpense(){
  385. if(!this.editForm.ownerId){
  386. this.$toast.fail('请选择报销人')
  387. return
  388. }
  389. if(!this.editForm.createDate){
  390. this.$toast.fail('请选择填报日期')
  391. return
  392. }
  393. if(this.invoiceList.length == 0){
  394. this.$toast.fail('请添加发票')
  395. return
  396. }
  397. this.editForm.items = JSON.stringify(this.invoiceList)
  398. this.editForm.totalAmount = this.totalCost
  399. this.$axios.post("/expense-sheet/add", this.editForm)
  400. .then(res => {
  401. if(res.code == "ok") {
  402. this.$toast.success('填报成功')
  403. this.editForm = {
  404. ownerId: '',
  405. createDate: '',
  406. ticketNum: 0,
  407. type: 0,
  408. remark: ''
  409. }
  410. this.invoiceList = []
  411. this.uploader = []
  412. } else {
  413. this.$toast.fail('获取失败');
  414. }
  415. }).catch(err=> {this.$toast.clear();console.log(err)});
  416. },
  417. // #endregion
  418. // 单据列表
  419. deleteBill(pid){
  420. this.$axios.post("/expense-sheet/delete", {id: pid})
  421. .then(res => {
  422. if(res.code == "ok") {
  423. this.$toast.success('删除成功')
  424. this.getBillList()
  425. } else {
  426. this.$toast.fail('获取失败');
  427. }
  428. }).catch(err=> {this.$toast.clear();console.log(err)});
  429. },
  430. // 单据审核
  431. approve(pid){
  432. this.$axios.post("/expense-sheet/approve", {id: pid})
  433. .then(res => {
  434. if(res.code == "ok") {
  435. this.$toast.success('已通过')
  436. this.getExamineList()
  437. } else {
  438. this.$toast.fail('获取失败');
  439. }
  440. }).catch(err=> {this.$toast.clear();console.log(err)});
  441. },
  442. deny(pid){
  443. this.$axios.post("/expense-sheet/deny", {id: pid,denyReason:''})
  444. .then(res => {
  445. if(res.code == "ok") {
  446. this.$toast.success('已驳回')
  447. this.getExamineList()
  448. } else {
  449. this.$toast.fail('获取失败');
  450. }
  451. }).catch(err=> {this.$toast.clear();console.log(err)});
  452. },
  453. getUserList(){
  454. this.$axios.post("/user/getSimpleActiveUserList", {})
  455. .then(res => {
  456. if(res.code == "ok") {
  457. this.userList = res.data
  458. } else {
  459. this.$toast.fail('获取失败');
  460. }
  461. }).catch(err=> {this.$toast.clear();console.log(err)});
  462. },
  463. getProjectList(){
  464. this.$axios.post("/project/getProjectList", {})
  465. .then(res => {
  466. if(res.code == "ok") {
  467. this.inProjectList = res.data
  468. } else {
  469. this.$toast.fail('获取失败');
  470. }
  471. }).catch(err=> {this.$toast.clear();console.log(err)});
  472. },
  473. getExTypeList(){
  474. this.$axios.post("/expense-type/getList", {})
  475. .then(res => {
  476. if(res.code == "ok") {
  477. this.allexTypeList = res.data
  478. this.inexTypeList = this.allexTypeList.filter(a=>a.mainType == 0)
  479. } else {
  480. this.$toast.fail('获取失败');
  481. }
  482. }).catch(err=> {this.$toast.clear();console.log(err)});
  483. },
  484. getBillList(){
  485. this.$axios.post("/expense-sheet/list", {
  486. pageSize: 20,
  487. pageIndex: 1,
  488. startDate: '',
  489. endDate: '',
  490. ownerId: '',
  491. type: ''
  492. }).then(res => {
  493. if(res.code == "ok") {
  494. this.billList = res.data.records
  495. } else {
  496. this.$toast.fail('获取失败');
  497. }
  498. }).catch(err=> {this.$toast.clear();console.log(err)});
  499. },
  500. getExamineList(){
  501. this.$axios.post("/expense-sheet/list", {
  502. pageSize: 20,
  503. pageIndex: 1,
  504. startDate: '',
  505. endDate: '',
  506. ownerId: '',
  507. type: '',
  508. status: 1
  509. }).then(res => {
  510. if(res.code == "ok") {
  511. this.examineList = res.data.records
  512. } else {
  513. this.$toast.fail('获取失败');
  514. }
  515. }).catch(err=> {this.$toast.clear();console.log(err)});
  516. }
  517. },
  518. }
  519. </script>
  520. <style lang="less" scoped>
  521. .content{
  522. margin-top: 46px;
  523. overflow: auto;
  524. .edit{
  525. padding-bottom: 46px;
  526. .form_btn{
  527. z-index: 1000;
  528. }
  529. .edit_form{
  530. .invoice{
  531. border: 0.5px solid rgb(135, 195, 255);
  532. margin: 0.2rem;
  533. .deletebtn{
  534. position: absolute;
  535. z-index: 900;
  536. font-size: 24px;
  537. right: 0.08rem;
  538. top: 0.08rem;
  539. color: #c03131;
  540. }
  541. .invoice_item{
  542. border-top: 0.5px solid rgb(135, 195, 255);
  543. }
  544. }
  545. .addinvoice{
  546. padding: 0 0.3rem 0.3rem;
  547. margin-top: 0.2rem;
  548. text-align: right;
  549. }
  550. }
  551. }
  552. .list{
  553. .list_collapse>div{
  554. margin: 4px;
  555. }
  556. .list_collapse{
  557. .collapse_label_l{
  558. width: 60%;
  559. padding: 4px;
  560. display: inline-block;
  561. }
  562. .collapse_label_r{
  563. width: 40%;
  564. padding: 4px;
  565. display: inline-block;
  566. .waiting {
  567. color:orange;
  568. }
  569. .rejected {
  570. color:red;
  571. }
  572. }
  573. .wrapper{
  574. div{
  575. margin: 8px 16px;
  576. }
  577. div span:nth-child(1){
  578. width: 30%;
  579. display: inline-block;
  580. }
  581. div span:nth-child(2){
  582. width: 70%;
  583. display: inline-block;
  584. }
  585. }
  586. .operation{
  587. display: flex;
  588. align-items: center;
  589. justify-content: flex-end;
  590. }
  591. }
  592. }
  593. .audit{
  594. .list_collapse>div{
  595. margin: 4px;
  596. }
  597. .list_collapse{
  598. .collapse_label_l{
  599. width: 60%;
  600. padding: 4px;
  601. display: inline-block;
  602. }
  603. .collapse_label_r{
  604. width: 40%;
  605. padding: 4px;
  606. display: inline-block;
  607. .waiting {
  608. color:orange;
  609. }
  610. .rejected {
  611. color:red;
  612. }
  613. }
  614. .operation{
  615. margin-top: 5px;
  616. padding-top: 5px;
  617. border-top: 0.5px solid #ebedf0;
  618. display: flex;
  619. align-items: center;
  620. justify-content: flex-end;
  621. }
  622. .wrapper{
  623. div{
  624. margin: 8px 16px;
  625. }
  626. div span:nth-child(1){
  627. width: 30%;
  628. display: inline-block;
  629. }
  630. div span:nth-child(2){
  631. width: 70%;
  632. display: inline-block;
  633. }
  634. }
  635. .lookup{
  636. display: flex;
  637. align-items: center;
  638. justify-content: flex-end;
  639. }
  640. }
  641. }
  642. }
  643. </style>
  644. <style>
  645. .edit_form .invoice .van-field__label{
  646. color: #999;
  647. }
  648. .edit_form .invoice .van-field__control{
  649. color: #999;
  650. }
  651. </style>