car.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. <template>
  2. <view>
  3. <u-modal :show-cancel-button="true" confirmColor="#5064eb" @confirm="opinionConfirm" title="审核意见" :mask-close-able="true" v-model="opinionShow" >
  4. <view class="slot-content" style="margin: 20rpx;">
  5. <u-form label-width="150" ref="uForm">
  6. <u-form-item :border-bottom="false"><u-input height="150" placeholder="请输入审核意见(选填)" v-model="auditOpinion" /></u-form-item>
  7. </u-form>
  8. </view>
  9. </u-modal>
  10. <view class="bg-white" >
  11. <u-dropdown ref="uDropdown" @open="open" @close="close" active-color="#5064eb" duration="20">
  12. <u-dropdown-item @change="filterChange" v-model="auditFilterValue" title="审核状态" :options="auditFilterList"></u-dropdown-item>
  13. <u-dropdown-item @change="filterChange" v-model="carTypeFilterValue" title="车辆类型" :options="carTypeFilterList"></u-dropdown-item>
  14. <u-dropdown-item title="其他筛选">
  15. <view class="bg-white" style="padding: 20rpx 30rpx;">
  16. <u-form label-width="200" :model="params" ref="uForm">
  17. <u-form-item label="车牌号码"><u-input placeholder="请输入车牌号码" v-model="params.number" /></u-form-item>
  18. <u-form-item label="车主姓名"><u-input placeholder="请输入车主姓名" v-model="params.personName" /></u-form-item>
  19. <u-form-item label="手机号码"><u-input placeholder="请输入手机号码" type="number" maxlength="11" v-model="params.personPhone" /></u-form-item>
  20. </u-form>
  21. <view class="flex justify-around " style="margin: 30rpx 0;">
  22. <view class="cu-btn bg-red radius" @click="reset" style="width: 42%;padding: 37rpx;">
  23. 重置
  24. </view>
  25. <view class="cu-btn bg-blue radius" @click="filterChange();closeDropdown()" style="width: 42%;padding: 37rpx;">
  26. 筛选
  27. </view>
  28. </view>
  29. </view>
  30. </u-dropdown-item>
  31. </u-dropdown>
  32. </view>
  33. <mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
  34. <car-manager-card @pass="pass" @fail="fail" :list="list"></car-manager-card>
  35. </mescroll-body>
  36. <!-- <wm-list-add bgColor="#7fc6ac" ref="add" @clickAdd="add"/> -->
  37. </view>
  38. </template>
  39. <script>
  40. import wmListAdd from '@/components/wm-list-add/wm-list-add';
  41. import MescrollMixin from "@/components/mescroll-body/mescroll-mixins.js";
  42. import carManagerCard from "./comps/car-manager-card.vue"
  43. var that;
  44. export default {
  45. mixins: [MescrollMixin], // 使用mixin
  46. components:{
  47. carManagerCard,wmListAdd
  48. },
  49. data() {
  50. return {
  51. list:[],
  52. loginType:'',
  53. //审核意见
  54. operaId:'',//操作id
  55. opinionShow:false,
  56. auditOpinion:'',
  57. //筛选
  58. auditFilterValue: -2,
  59. carTypeFilterValue: -1,
  60. params:{
  61. number:'',
  62. personName:'',
  63. personPhone:''
  64. },
  65. auditFilterList: [{
  66. label: '全部',
  67. value: -2,
  68. },
  69. {
  70. label: '待审核',
  71. value: 0,
  72. },
  73. {
  74. label: '审核通过',
  75. value: 1,
  76. },
  77. {
  78. label: '审核不通过',
  79. value: -1,
  80. }
  81. ],
  82. carTypeFilterList: [],
  83. other:[]
  84. }
  85. },
  86. onLoad() {
  87. that=this
  88. this.getCarTypeFilterList()
  89. },
  90. onShow() {
  91. //刷新mescroll数据
  92. // this.$util.reload(this.mescroll)
  93. },
  94. methods: {
  95. async getCarTypeFilterList(){
  96. let dict=this.$cache.get('dict')
  97. if (dict) {
  98. //缓存中有字典值
  99. this.carTypeFilterList=dict.carTypeList
  100. this.carTypeFilterList.unshift({
  101. label:'全部',
  102. value:'-1'
  103. })
  104. return
  105. }
  106. //车辆类型
  107. let res=await this.$api.dict('car_type')
  108. res.data.forEach((item)=>{
  109. let tmp={
  110. value:item.dictKey,
  111. label:item.dictValue
  112. }
  113. this.carTypeFilterList.push(tmp)
  114. })
  115. this.carTypeFilterList.unshift({
  116. label:'全部',
  117. value:'-1'
  118. })
  119. console.log(this.carTypeFilterList,12);
  120. },
  121. add(){
  122. uni.navigateTo({
  123. url:"./add"
  124. })
  125. },
  126. pass(item){
  127. let params={
  128. id:item.id,
  129. auditStatus:1
  130. }
  131. this.$dialog.showModal('确定要审核通过此记录吗?').then(res=>{
  132. this.$api.carManage.audit(params).then(res=>{
  133. if (res.code==200) {
  134. this.$u.toast('操作成功')
  135. this.mescroll.resetUpScroll();
  136. }
  137. })
  138. })
  139. },
  140. opinionConfirm(){
  141. let params={
  142. id:this.operaId,
  143. auditOpinion:this.auditOpinion|| '',
  144. auditStatus:-1
  145. }
  146. this.$api.carManage.audit(params).then(res=>{
  147. if (res.code==200) {
  148. this.$u.toast('操作成功')
  149. this.mescroll.resetUpScroll();
  150. }
  151. })
  152. },
  153. fail(item){
  154. this.operaId=item.id
  155. this.opinionShow=true
  156. },
  157. //筛选
  158. open(index) {
  159. this.$refs.uDropdown.highlight();
  160. },
  161. close(index) {
  162. this.$refs.uDropdown.highlight(index);
  163. },
  164. closeDropdown() {
  165. this.$refs.uDropdown.close();
  166. },
  167. filterChange(e){
  168. this.mescroll.resetUpScroll();
  169. },
  170. reset(){
  171. this.params={}
  172. this.mescroll.resetUpScroll();
  173. this.closeDropdown()
  174. },
  175. downCallback(){
  176. setTimeout(()=>{
  177. this.mescroll.resetUpScroll();
  178. },1200)
  179. },
  180. upCallback(mescroll){
  181. let params={
  182. current:mescroll.num,
  183. size:mescroll.size
  184. }
  185. if (this.auditFilterValue!=-2) {
  186. //不是筛选全部审核状态
  187. params.auditStatus=this.auditFilterValue
  188. }
  189. if (this.carTypeFilterValue!=-1) {
  190. //不是筛选全部车辆类型
  191. params.type=this.carTypeFilterValue
  192. }
  193. if (!this.$isEmpty(this.params.number)) {
  194. //车牌号
  195. params.number=this.params.number
  196. }
  197. if (!this.$isEmpty(this.params.personName)) {
  198. //姓名
  199. params.personName=this.params.personName
  200. }
  201. if (!this.$isEmpty(this.params.personPhone)) {
  202. //手机号
  203. params.personPhone=this.params.personPhone
  204. }
  205. try{
  206. this.$api.carManage.page(params).then(res=>{
  207. let data=res.data.records
  208. let total=res.data.total
  209. mescroll.endBySize(data.length,total);
  210. if(mescroll.num == 1) that.list = []; //如果是第一页需手动制空列表
  211. that.list=that.list.concat(data); //追加新数据
  212. })
  213. }catch(e){
  214. this.mescroll.endErr()
  215. }
  216. }
  217. }
  218. }
  219. </script>
  220. <style lang="scss" scoped>
  221. </style>