car.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  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.list.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. },
  120. add(){
  121. uni.navigateTo({
  122. url:"./add"
  123. })
  124. },
  125. pass(item){
  126. let params={
  127. id:item.id,
  128. auditStatus:1
  129. }
  130. this.$dialog.showModal('确定要审核通过此记录吗?').then(res=>{
  131. this.$api.carManage.update(params).then(res=>{
  132. if (res.data==true) {
  133. this.$u.toast('操作成功')
  134. this.mescroll.resetUpScroll();
  135. }
  136. })
  137. })
  138. },
  139. opinionConfirm(){
  140. let params={
  141. id:this.operaId,
  142. auditOpinion:this.auditOpinion|| '',
  143. auditStatus:-1
  144. }
  145. this.$api.carManage.update(params).then(res=>{
  146. if (res.data==true) {
  147. this.$u.toast('操作成功')
  148. this.mescroll.resetUpScroll();
  149. }
  150. })
  151. },
  152. fail(item){
  153. this.operaId=item.id
  154. this.opinionShow=true
  155. },
  156. //筛选
  157. open(index) {
  158. this.$refs.uDropdown.highlight();
  159. },
  160. close(index) {
  161. this.$refs.uDropdown.highlight(index);
  162. },
  163. closeDropdown() {
  164. this.$refs.uDropdown.close();
  165. },
  166. filterChange(e){
  167. this.mescroll.resetUpScroll();
  168. },
  169. reset(){
  170. this.params={}
  171. this.mescroll.resetUpScroll();
  172. this.closeDropdown()
  173. },
  174. downCallback(){
  175. setTimeout(()=>{
  176. this.mescroll.resetUpScroll();
  177. },1200)
  178. },
  179. upCallback(mescroll){
  180. let params={
  181. current:mescroll.num,
  182. size:mescroll.size
  183. }
  184. if (this.auditFilterValue!=-2) {
  185. //不是筛选全部审核状态
  186. params.auditStatus=this.auditFilterValue
  187. }
  188. if (this.carTypeFilterValue!=-1) {
  189. //不是筛选全部车辆类型
  190. params.type=this.carTypeFilterValue
  191. }
  192. if (!this.$isEmpty(this.params.number)) {
  193. //车牌号
  194. params.number=this.params.number
  195. }
  196. if (!this.$isEmpty(this.params.personName)) {
  197. //姓名
  198. params.personName=this.params.personName
  199. }
  200. if (!this.$isEmpty(this.params.personPhone)) {
  201. //手机号
  202. params.personPhone=this.params.personPhone
  203. }
  204. try{
  205. this.$api.carManage.page(params).then(res=>{
  206. let data=res.data.records
  207. let total=res.data.total
  208. mescroll.endBySize(data.length,total);
  209. if(mescroll.num == 1) that.list = []; //如果是第一页需手动制空列表
  210. that.list=that.list.concat(data); //追加新数据
  211. })
  212. }catch(e){
  213. this.mescroll.endErr()
  214. }
  215. }
  216. }
  217. }
  218. </script>
  219. <style lang="scss" scoped>
  220. </style>