| | |
| | | <!-- 资产借用 --> |
| | | <template> |
| | | <!-- mescroll-body本质是原生page的滚动,无法像mescroll-uni那样用flex布局嵌在某个view中使用局部区域滚动, 但是可以通过fixed定位其他元素来实现"局部区域滚动"--> |
| | | <view> |
| | | <view class=""> |
| | | <cu-custom bgColor="bg-gradual-blue" :isBack="true"> |
| | | <block slot="backText">返回</block> |
| | | <block slot="content">资产借用</block> |
| | | </cu-custom> |
| | | </view> |
| | | <view class=""> |
| | | <view class="cu-bar bg-white solid-bottom "> |
| | | <view class="action"> |
| | | <text class="cuIcon-title text-orange"></text> 可借用资产列表 |
| | | </view> |
| | | </view> |
| | | <view class="cu-list menu-avatar"> |
| | | <view class="cu-item"> |
| | | <view class="cu-avatar radius lg" |
| | | style="background-image:url(https://ossweb-img.qq.com/images/lol/web201310/skin/big81007.jpg);"> |
| | | </view> |
| | | <view class="content"> |
| | | <view> |
| | | <view class="text-cut text-bold text-xl">课桌</view> |
| | | <view class="cu-tag radius bg-orange sm">可借用:100</view> |
| | | <view class="numbox"> |
| | | <u-number-box v-model="value" :min="0" :showMinus="value > 0"> |
| | | <view slot="minus" class="minus"> |
| | | <u-icon name="minus" size="12"></u-icon> |
| | | </view> |
| | | <input slot="input" style="width: 38px;text-align: center; " |
| | | class="input" :value="value"></input> |
| | | <view slot="plus" class="plus"> |
| | | <u-icon name="plus" color="#FFFFFF" size="12"></u-icon> |
| | | </view> |
| | | </u-number-box> |
| | | </view> |
| | | </view> |
| | | <view class="text-gray text-sm flex"> |
| | | <view class="text-cut">规格:120*120 白色 编码:1234533333</view> |
| | | </view> |
| | | </view> |
| | | <view class="action"> |
| | | <!-- <view class="text-grey text-xs">22:20</view> --> |
| | | <view class="cu-tag round bg-red sm">删除</view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="cu-item"> |
| | | <view class="cu-avatar radius lg" |
| | | style="background-image:url(https://ossweb-img.qq.com/images/lol/web201310/skin/big81007.jpg);"> |
| | | </view> |
| | | <view class="content"> |
| | | <view> |
| | | <view class="text-cut text-bold text-xl">圆规</view> |
| | | <view class="cu-tag radius bg-orange sm">可借用:100</view> |
| | | <view class="numbox"> |
| | | <u-number-box v-model="value" :min="0" :showMinus="value > 0"> |
| | | <view slot="minus" class="minus"> |
| | | <u-icon name="minus" size="12"></u-icon> |
| | | </view> |
| | | <input slot="input" style="width: 38px;text-align: center; " |
| | | class="input" :value="value"></input> |
| | | <view slot="plus" class="plus"> |
| | | <u-icon name="plus" color="#FFFFFF" size="12"></u-icon> |
| | | </view> |
| | | </u-number-box> |
| | | </view> |
| | | </view> |
| | | <view class="text-gray text-sm flex"> |
| | | <view class="text-cut">规格:120*120 白色 编码:12345</view> |
| | | </view> |
| | | </view> |
| | | <view class="action"> |
| | | <!-- <view class="text-grey text-xs">22:20</view> --> |
| | | <view class="cu-tag round bg-red sm">删除</view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="cu-item"> |
| | | <view class="cu-avatar radius lg" |
| | | style="background-image:url(https://ossweb-img.qq.com/images/lol/web201310/skin/big81007.jpg);"> |
| | | </view> |
| | | <view class="content"> |
| | | <view> |
| | | <view class="text-cut text-bold text-xl">椅子</view> |
| | | <view class="cu-tag radius bg-orange sm">可借用:100</view> |
| | | <view class="numbox"> |
| | | <u-number-box v-model="value" :min="0" :showMinus="value > 0"> |
| | | <view slot="minus" class="minus"> |
| | | <u-icon name="minus" size="12"></u-icon> |
| | | </view> |
| | | <input slot="input" style="width: 38px;text-align: center; " |
| | | class="input" :value="value"></input> |
| | | <view slot="plus" class="plus"> |
| | | <u-icon name="plus" color="#FFFFFF" size="12"></u-icon> |
| | | </view> |
| | | </u-number-box> |
| | | </view> |
| | | </view> |
| | | <view class="text-gray text-sm flex"> |
| | | <view class="text-cut">规格:120*120 白色 编码:12345</view> |
| | | </view> |
| | | </view> |
| | | <view class="action"> |
| | | <!-- <view class="text-grey text-xs">22:20</view> --> |
| | | <view class="cu-tag round bg-red sm">删除</view> |
| | | </view> |
| | | </view> |
| | | <!-- 顶部 fixed定位 --> |
| | | <view class="top-warp"> |
| | | <view class=""> |
| | | <cu-custom bgColor="bg-gradual-blue" :isBack="true"> |
| | | <block slot="backText">返回</block> |
| | | <block slot="content">资产借用</block> |
| | | </cu-custom> |
| | | </view> |
| | | |
| | | </view> |
| | | <view class="search-box"> |
| | | <view class="item"> |
| | | <u-search placeholder="请输入关键字搜索" v-model="keyword" :clearabled="true" :show-action="false" |
| | | @search="onSearch"> |
| | | </u-search> |
| | | </view> |
| | | </view> |
| | | |
| | | |
| | | |
| | | <!-- mescroll-body跟随page滚动, 不可fixed定位, 可设置 top, bottom, topbar, bottombar, safearea的偏移量--> |
| | | <mescroll-body ref="mescrollRef" top="176" bottom="300" @init="mescrollInit" @down="downCallback" @up="upCallback"> |
| | | <view class="cu-list menu-avatar "> |
| | | <view class="cu-item" v-for="(item,index) in assetsList" :key="index"> |
| | | <view class="cu-avatar radius lg bg-white" |
| | | style="background-image:url(../../static/device.png)"> |
| | | </view> |
| | | <view class="content"> |
| | | <view> |
| | | <view class="text-cut text-bold text-xl">{{item.name}}</view> |
| | | <view class="cu-tag radius bg-orange sm">可领用:{{item.quantity}}</view> |
| | | <view class="numbox"> |
| | | <u-number-box v-model="valueList[index]" :min="0" :max="item.quantity" |
| | | :showMinus="valueList[index] > 0"> |
| | | <view slot="minus" class="minus"> |
| | | <u-icon name="minus" size="12"></u-icon> |
| | | </view> |
| | | <input slot="input" style="width: 38px;text-align: center; " class="input" |
| | | :value="valueList[index]?valueList[index]:0"></input> |
| | | <view slot="plus" class="plus"> |
| | | <u-icon name="plus" color="#FFFFFF" size="12"></u-icon> |
| | | </view> |
| | | </u-number-box> |
| | | </view> |
| | | </view> |
| | | <view class="text-gray text-sm flex"> |
| | | <view class="text-cut">规格:{{item.model?item.model:'无'}} 编码:{{item.serialNumber}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </mescroll-body> |
| | | |
| | | <!-- 底部 fixed定位 --> |
| | | <view class="bottom-warp"> |
| | | <view class="margin-top"> |
| | | <view class="margin-left border-title"> |
| | | 申请理由 |
| | | 申请理由 |
| | | </view> |
| | | <view class="flex justify-center align-center" style="margin-top: 10rpx;"> |
| | | <view class="" style="width: 95%; "> |
| | | <u--textarea v-model="reason" placeholder="请输入内容" placeholderStyle="font-size: 15rpx;" ></u--textarea> |
| | | <u--textarea height="50" v-model="reason" placeholder="请输入内容" placeholderStyle="font-size: 15rpx;"> |
| | | </u--textarea> |
| | | </view> |
| | | |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="padding-left padding-top border-title " style="padding-bottom: 10rpx;"> |
| | | <view class="action"> |
| | | 申请人信息 |
| | | 申请人信息 |
| | | </view> |
| | | </view> |
| | | <view class="flex justify-center"> |
| | | <view class="u-border radius" style="width: 95%; padding:20rpx 0 20rpx 20rpx;"> |
| | | <view class=""> |
| | | 申请人: 李老师 |
| | | 申请人: {{applicant}} |
| | | </view> |
| | | |
| | | <view class="" style="margin-top: 5rpx;"> |
| | | 职务: 班主任 |
| | | </view> |
| | | <view class="" style="margin-top: 5rpx;"> |
| | | 申请单位: 初一1班 |
| | | </view> |
| | | <view class="" style="margin-top: 5rpx;"> |
| | | 申请时间: 2022年2月8日 23:00 |
| | | 申请时间: {{applicationTime}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="margin-top" style="margin-bottom: 30rpx;"> |
| | | <u-button style="width: 40%;" type="primary" text="提交申请" @click="submit" :disabled="isDisabled"></u-button> |
| | | </view> |
| | | |
| | | <u-toast ref="uToast"></u-toast> |
| | | </view> |
| | | |
| | | |
| | | <view class="margin-top"> |
| | | <u-button style="width: 40%;" type="primary" text="提交申请"></u-button> |
| | | </view> |
| | | |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js"; |
| | | |
| | | |
| | | export default { |
| | | mixins: [MescrollMixin], // 使用mixin |
| | | data() { |
| | | return { |
| | | value: 10, |
| | | reason:'' |
| | | keyword: '', |
| | | value: 0, |
| | | reason: '', |
| | | total:0, |
| | | assetsList: [], |
| | | listFlag: false, |
| | | |
| | | valueList: [], |
| | | applicant: "", //申请人 |
| | | |
| | | applicationTime: '', //申请时间 |
| | | templateId: '', //模板ID |
| | | isDisabled: false, |
| | | |
| | | |
| | | page: 1, |
| | | pageSize: 10, |
| | | status: 'loadmore', |
| | | user:null |
| | | } |
| | | }, |
| | | onLoad() { |
| | | this.user =uni.getStorageSync('user'); |
| | | this.applicant = this.user.userName; |
| | | this.applicationTime = this.$dayjs().format("YYYY-MM-DD HH:mm:ss") |
| | | }, |
| | | onShow() { |
| | | this.initTemplateData(); |
| | | }, |
| | | methods: { |
| | | valChange(e) { |
| | | console.log('当前值为: ' + e.value) |
| | | /*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */ |
| | | onSearch(e) { |
| | | console.log("搜索:" + this.keyword) |
| | | this.page = 1; |
| | | let page ={}; |
| | | page.num =1; |
| | | this.upCallback(page); |
| | | }, |
| | | |
| | | upCallback(page) { |
| | | |
| | | let pageNum = page.num; //页码,默认从1开始 |
| | | let pageSize = 10; //页长,默认每页10条 |
| | | |
| | | console.log(pageNum) |
| | | this.$http.get('/assets/approval/search', { |
| | | params: { |
| | | pageNum: pageNum, |
| | | pageSize: pageSize, |
| | | keyStr: this.keyword, |
| | | state: "1" |
| | | } |
| | | }) |
| | | .then(res => { |
| | | if (res.data.code === 0) { |
| | | let data = res.data.rows; |
| | | console.log(res.data.total) |
| | | if (page.num == 1) this.assetsList = []; //如果是第一页,需手动置空列表 |
| | | this.assetsList = this.assetsList.concat(data); //追加新数据 |
| | | console.log(this.assetsList.length) |
| | | this.mescroll.endBySize(this.assetsList.length, res.data.total); |
| | | } |
| | | else{ |
| | | this.mescroll.endBySize(0, 0); |
| | | } |
| | | |
| | | }) |
| | | .catch(err => { |
| | | this.mescroll.endErr(); |
| | | console.log('异常', err); |
| | | }); |
| | | }, |
| | | |
| | | //获取借用的模板 |
| | | initTemplateData() { |
| | | this.$http.get('/assets/approval/getTemplate') |
| | | .then(res => { |
| | | // debugger; |
| | | if (res.data.code === 0) { |
| | | let data = res.data.data; |
| | | //获取领用的模板ID |
| | | for (let i = 0; i < data.length; i++) { |
| | | if (data[i].type === 2) { |
| | | this.templateId = data[i].templateId; |
| | | break; |
| | | } |
| | | } |
| | | console.log('模板ID=' + this.templateId) |
| | | } |
| | | |
| | | |
| | | }).catch(err => { |
| | | |
| | | console.log(err.data) |
| | | }) |
| | | }, |
| | | |
| | | submit() { |
| | | this.isDisabled = true; |
| | | if (this.reason.length <= 0) { |
| | | this.isDisabled = false; |
| | | this.$refs.uToast.show({ |
| | | type: 'error', |
| | | message: "请填写申请理由" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.valueList.length <= 0) { |
| | | this.isDisabled = false; |
| | | this.$refs.uToast.show({ |
| | | type: 'error', |
| | | message: "请选择一个或多个领用资产!" |
| | | }); |
| | | |
| | | return; |
| | | } |
| | | |
| | | this.submitApply(); |
| | | }, |
| | | |
| | | submitApply() { |
| | | let assets = []; |
| | | for (let i = 0; i < this.valueList.length; i++) { |
| | | if (this.valueList[i] > 0) { |
| | | let item = this.assetsList[i]; |
| | | assets.push({ |
| | | "id": item.id, |
| | | "name": item.name, |
| | | "serialNumber": item.serialNumber, |
| | | "quantity": this.valueList[i] |
| | | }) |
| | | } |
| | | } |
| | | |
| | | // console.log(assets); |
| | | let data = { |
| | | "assets": assets, |
| | | "templateId": this.templateId, |
| | | "reason": this.reason |
| | | } |
| | | |
| | | this.$http.post('/assets/approval/submit', data) |
| | | .then(res => { |
| | | // debugger; |
| | | if (res.data.code === 0) { |
| | | console.log("成功了"); |
| | | this.reason=""; |
| | | this.$refs.uToast.show({ |
| | | type: 'success', |
| | | message: "提交成功" |
| | | }); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | type: 'error', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | this.isDisabled = false; |
| | | |
| | | }).catch(err => { |
| | | this.isDisabled = false; |
| | | console.log(err.data) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | |
| | | <style lang="scss"> |
| | | /* 顶部 fixed定位*/ |
| | | .top-warp{ |
| | | z-index: 200; |
| | | position: fixed; |
| | | top: var(--window-top); |
| | | left: 0; |
| | | width: 100%; |
| | | height: 88rpx; |
| | | padding-top: 10rpx; |
| | | font-size: 28rpx; |
| | | text-align: center; |
| | | background-color: #CFE0DA; |
| | | } |
| | | |
| | | .numbox{ |
| | | // 设置padding |
| | | .mescroll-body, |
| | | /deep/.mescroll-body{ |
| | | padding-left: 0rpx; |
| | | } |
| | | |
| | | /* 底部 fixed定位*/ |
| | | .bottom-warp{ |
| | | z-index: 200; |
| | | position: fixed; |
| | | left: 0; |
| | | bottom: 0; |
| | | width: 100%; |
| | | background-color: #FFFFFF; |
| | | } |
| | | |
| | | .itembox { |
| | | /* 父容器设置宽度, 并超出部分不显示 */ |
| | | width: 100%; |
| | | height: 100%; |
| | | overflow: scroll; |
| | | |
| | | .item { |
| | | /* 子容器比父容器的宽度多 17 px, 经测正好是滚动条的默认宽度 */ |
| | | // width: 5517px; |
| | | // height: 100%; |
| | | // line-height: 30px; |
| | | text-align: center; |
| | | overflow-y: scroll; |
| | | } |
| | | |
| | | } |
| | | |
| | | .content-box { |
| | | position: relative; |
| | | // border: 1rpx red solid; |
| | | height: 50vh; |
| | | } |
| | | |
| | | .search-box { |
| | | background-color: #FFFFFF; |
| | | // margin-top: 88rpx; |
| | | z-index: 200; |
| | | top:88rpx; |
| | | width: 100%; |
| | | position: fixed; |
| | | padding: 10rpx 30rpx 0rpx 30rpx; |
| | | // border: 1rpx red solid; |
| | | } |
| | | |
| | | |
| | | .numbox { |
| | | margin-left: 20rpx; |
| | | } |
| | | |
| | | .minus { |
| | | |
| | | |
| | | width: 15px; |
| | | height: 15px; |
| | | border-width: 1px; |
| | |
| | | justify-content: center; |
| | | align-items: center; |
| | | } |
| | | |
| | | |
| | | .input { |
| | | padding: 0 5px; |
| | | } |
| | | |
| | | |
| | | .plus { |
| | | width: 15px; |
| | | height: 15px; |
| | |
| | | justify-content: center; |
| | | align-items: center; |
| | | } |
| | | </style> |
| | | </style> |