borrow.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508
  1. <template>
  2. <view class="home">
  3. <view class="detail-area">
  4. <view class="layout-row">
  5. <u-row
  6. justify="space-between"
  7. gutter="10">
  8. <u-col span="4">
  9. <view class="demo-layout">
  10. 资产编号
  11. </view>
  12. </u-col>
  13. <u-col span="8" >
  14. <view class="demo-layout">{{assetObj.number?assetObj.number:""}}</view>
  15. </u-col>
  16. </u-row>
  17. </view>
  18. <view class="layout-row">
  19. <u-row
  20. justify="space-between"
  21. gutter="10">
  22. <u-col span="4">
  23. <view class="demo-layout">资产名称</view>
  24. </u-col>
  25. <u-col span="8">
  26. <view class="demo-layout">{{assetObj.name?assetObj.name:""}}</view>
  27. </u-col>
  28. </u-row>
  29. </view>
  30. <view class="layout-row">
  31. <u-row
  32. justify="space-between"
  33. gutter="10">
  34. <u-col span="4">
  35. <view class="demo-layout">资产种类</view>
  36. </u-col>
  37. <u-col span="8">
  38. <view class="demo-layout">{{assetObj.kind?assetObj.kind:""}}</view>
  39. </u-col>
  40. </u-row>
  41. </view>
  42. <view class="layout-row">
  43. <u-row
  44. justify="space-between"
  45. gutter="10">
  46. <u-col span="4">
  47. <view class="demo-layout">资产分类</view>
  48. </u-col>
  49. <u-col span="8">
  50. <view class="demo-layout">{{assetObj.categoryNumber?assetObj.categoryNumber:""}}</view>
  51. </u-col>
  52. </u-row>
  53. </view>
  54. <view class="layout-row">
  55. <u-row
  56. justify="space-between"
  57. gutter="10">
  58. <u-col span="4">
  59. <view class="demo-layout">使用部门</view>
  60. </u-col>
  61. <u-col span="8">
  62. <view class="demo-layout">{{assetObj.deptName?assetObj.deptName:""}}</view>
  63. </u-col>
  64. </u-row>
  65. </view>
  66. <view class="layout-row">
  67. <u-row
  68. justify="space-between"
  69. gutter="10">
  70. <u-col span="4">
  71. <view class="demo-layout">资产原值(元)</view>
  72. </u-col>
  73. <u-col span="8">
  74. <view class="demo-layout">{{assetObj.amount?assetObj.amount:""}}</view>
  75. </u-col>
  76. </u-row>
  77. </view>
  78. <view class="layout-row">
  79. <u-row
  80. justify="space-between"
  81. gutter="10">
  82. <u-col span="4">
  83. <view class="demo-layout">数量</view>
  84. </u-col>
  85. <u-col span="8">
  86. <view class="demo-layout">{{assetObj.quantity?assetObj.quantity:""}}</view>
  87. </u-col>
  88. </u-row>
  89. </view>
  90. <view class="layout-row">
  91. <u-row
  92. justify="space-between"
  93. gutter="10">
  94. <u-col span="4">
  95. <view class="demo-layout">存放地点</view>
  96. </u-col>
  97. <u-col span="8">
  98. <view class="demo-layout">{{assetObj.placeName?assetObj.placeName:""}}</view>
  99. </u-col>
  100. </u-row>
  101. </view>
  102. <view class="layout-row">
  103. <u-row
  104. justify="space-between"
  105. gutter="10">
  106. <u-col span="4">
  107. <view class="demo-layout">设备状态</view>
  108. </u-col>
  109. <u-col span="8">
  110. <view class="demo-layout">{{assetObj.borrowStatus?assetObj.borrowStatus:""}}</view>
  111. </u-col>
  112. </u-row>
  113. </view>
  114. <view class="layout-row">
  115. <u-row
  116. justify="space-between"
  117. gutter="10">
  118. <u-col span="4">
  119. <view class="demo-layout">登记人</view>
  120. </u-col>
  121. <u-col span="8">
  122. <view class="demo-layout">{{assetObj.registrant?assetObj.registrant:""}}</view>
  123. </u-col>
  124. </u-row>
  125. </view>
  126. <view class="layout-row">
  127. <u-row
  128. justify="space-between"
  129. gutter="10">
  130. <u-col span="4">
  131. <view class="demo-layout">取得日期</view>
  132. </u-col>
  133. <u-col span="8">
  134. <view class="demo-layout">{{assetObj.buildDate?assetObj.buildDate:""}}</view>
  135. </u-col>
  136. </u-row>
  137. </view>
  138. <view class="layout-row">
  139. <u-row
  140. justify="space-between"
  141. gutter="10">
  142. <u-col span="4">
  143. <view class="demo-layout">资产用途</view>
  144. </u-col>
  145. <u-col span="8">
  146. <view class="demo-layout">{{assetObj.purpose?assetObj.purpose:""}}</view>
  147. </u-col>
  148. </u-row>
  149. </view>
  150. <view class="layout-row">
  151. <u-row
  152. justify="space-between"
  153. gutter="10">
  154. <u-col span="4">
  155. <view class="demo-layout">规格型号</view>
  156. </u-col>
  157. <u-col span="8">
  158. <view class="demo-layout">{{assetObj.specificationsModel?assetObj.specificationsModel:""}}</view>
  159. </u-col>
  160. </u-row>
  161. </view>
  162. </view>
  163. <view v-if="show">
  164. <view class="borrow-date" v-if="assetObj.borrowStatus?assetObj.borrowStatus=='可借出'?true:false:false">
  165. <u--form
  166. labelPosition="left"
  167. :model="form"
  168. ref="Form1"
  169. :labelWidth="110"
  170. labelAlign="left">
  171. <u-form-item
  172. label="借用地点"
  173. prop="borrowPlaceName"
  174. borderBottom>
  175. <text @click="showPlace" style="font-size: 30rpx;width: 100%;height: 100%;">{{form.borrowPlaceName}}</text>
  176. <u-picker
  177. :show="placeShow"
  178. :columns="placeList"
  179. title="请选择地点"
  180. keyName="name"
  181. @cancel="placeShow = false"
  182. @confirm="selectPlace"></u-picker>
  183. </u-form-item>
  184. <u-form-item
  185. label="联系电话"
  186. prop="tel"
  187. borderBottom>
  188. <u--input
  189. v-model="form.tel"
  190. border="none" placeholder="请输入联系电话">
  191. </u--input>
  192. </u-form-item>
  193. <u-form-item
  194. label="借用日期"
  195. prop="borrowDate"
  196. borderBottom>
  197. <text @click="showBor" style="font-size: 30rpx;">{{form.borrowDate}}</text>
  198. <u-datetime-picker
  199. :show="borrowShow"
  200. v-model="borrowValue"
  201. mode="datetime"
  202. @confirm="changeDate"
  203. @cancel="borrowShow = false"
  204. ></u-datetime-picker>
  205. </u-form-item>
  206. <u-form-item
  207. label="归还日期"
  208. prop="returnDate"
  209. borderBottom>
  210. <text
  211. @click="showRet"
  212. style="font-size: 30rpx;">
  213. {{form.returnDate}}
  214. </text>
  215. <u-datetime-picker
  216. :show="returnShow"
  217. v-model="returnValue"
  218. mode="datetime"
  219. @confirm="returnChange"
  220. @cancel="returnShow = false"
  221. ></u-datetime-picker>
  222. </u-form-item>
  223. <u-form-item
  224. label="备注"
  225. prop="remark"
  226. borderBottom>
  227. <u--input
  228. v-model="form.remark"
  229. border="none"
  230. placeholder="请输入备注"
  231. >
  232. </u--input>
  233. </u-form-item>
  234. </u--form>
  235. </view>
  236. <view class="borrow-date" v-else-if="assetObj.borrowStatus?assetObj.borrowStatus=='可借出'?false:true:true">
  237. <u--form
  238. labelPosition="left"
  239. :model="assetObj"
  240. ref="resF"
  241. :labelWidth="110"
  242. labelAlign="left">
  243. <u-form-item
  244. label="借用人工号"
  245. prop="borrowUserName"
  246. borderBottom>
  247. <text
  248. style="font-size: 30rpx;">
  249. {{assetObj.borrowUserName?assetObj.borrowUserName:""}}
  250. </text>
  251. </u-form-item>
  252. <u-form-item
  253. label="借用地点"
  254. prop="borrowPlaceName"
  255. borderBottom>
  256. <text
  257. style="font-size: 30rpx;">
  258. {{assetObj.placeName?assetObj.placeName:""}}
  259. </text>
  260. </u-form-item>
  261. <u-form-item
  262. label="联系电话"
  263. prop="tel"
  264. borderBottom>
  265. <text
  266. style="font-size: 30rpx">
  267. {{assetObj.tel?assetObj.tel:""}}
  268. </text>
  269. </u-form-item>
  270. <u-form-item
  271. label="借用日期"
  272. prop="borrowDate"
  273. borderBottom>
  274. <text
  275. style="font-size: 30rpx;">
  276. {{assetObj.borrowDate?assetObj.borrowDate:""}}
  277. </text>
  278. </u-form-item>
  279. <u-form-item
  280. label="归还日期"
  281. prop="returnDate"
  282. borderBottom>
  283. <text
  284. style="font-size: 30rpx;">
  285. {{assetObj.returnDate?assetObj.returnDate:""}}
  286. </text>
  287. </u-form-item>
  288. <u-form-item
  289. label="备注"
  290. prop="remark"
  291. borderBottom>
  292. <text style="font-size: 30rpx;">
  293. {{assetObj.remark?assetObj.remark:"无"}}
  294. </text>
  295. </u--input>
  296. </u-form-item>
  297. </u--form>
  298. </view>
  299. <text style="font-size: 24rpx;">归还时间以实际归还时间为准</text>
  300. <view class="btn-area">
  301. <u-button text="借用" color="#000" v-if="assetObj.borrowStatus?assetObj.borrowStatus=='可借出'?true:false:false" @click="toBorrowAsset">借用</u-button>
  302. <u-button text="归还" color="#000" v-else-if="assetObj.borrowStatus?assetObj.borrowStatus=='可借出'?false:true:true" @click="toReturnAsset">归还</u-button>
  303. </view>
  304. <view class="repair-btn" @click="toRepeat">
  305. <i class="iconfont icon-a-shezhi2"></i>
  306. </view>
  307. </view>
  308. </view>
  309. </template>
  310. <script>
  311. import { searchAsset,getAllPlace,borrowAsset,returnAsset } from "@/api/asset.js"
  312. import cache from "@/utils/storage.js"
  313. import { dateToString } from "@/common/js/core.js"
  314. export default {
  315. data() {
  316. return {
  317. borrowShow:false,
  318. borrowValue:Number(new Date()),
  319. returnShow:false,
  320. returnValue:Number(new Date()),
  321. assetObj:{},
  322. form:{
  323. borrowDate:dateToString(new Date()),
  324. returnDate:dateToString(new Date()),
  325. remark:"",
  326. tel:cache.session.getJSON("phone"),
  327. borrowPlaceName:"",
  328. assetBarCode:""
  329. },
  330. placeShow: false,
  331. placeList: [],
  332. show:false
  333. };
  334. },
  335. onLoad:function(option){
  336. this.form.assetBarCode = option.number
  337. this.initAssets(option.number)
  338. this.init()
  339. },
  340. methods:{
  341. showBor(){
  342. this.borrowShow = true
  343. },
  344. showRet(){
  345. this.returnShow = true
  346. },
  347. handleDate(fDate,rDate){
  348. let f = new Date(fDate)
  349. let r = new Date(rDate)
  350. if (f < r) {
  351. return true
  352. } else {
  353. uni.showToast({
  354. icon:"none",
  355. title:"借用日期应小于归还日期"
  356. })
  357. return false
  358. }
  359. },
  360. changeDate(val){
  361. let date = dateToString(val.value);
  362. this.form.borrowDate = date
  363. this.borrowShow = false
  364. },
  365. returnChange(val){
  366. let date = dateToString(val.value);
  367. if(this.handleDate(this.form.borrowDate,date)){
  368. this.form.returnDate = date
  369. this.returnShow = false
  370. }
  371. },
  372. init(){
  373. this.placeList = []
  374. getAllPlace().then(res=>{
  375. if(res.length!==0){
  376. this.placeList.push(res)
  377. this.form.borrowPlaceName = res[0].name?res[0].name:"请选择地点"
  378. }
  379. })
  380. this.form.borrowDate = dateToString(new Date())
  381. this.form.returnDate = dateToString(new Date())
  382. this.form.tel = cache.session.getJSON("phone")
  383. },
  384. initAssets(data){
  385. searchAsset({barCode: data}).then(res=>{
  386. if(res.meBorrow || res.borrowStatus ==="可借出"){
  387. this.show = true;
  388. }else{
  389. this.show = false;
  390. }
  391. this.assetObj = res
  392. })
  393. },
  394. showPlace(){
  395. this.placeShow = true
  396. },
  397. selectPlace(e){
  398. this.form.borrowPlaceName = e.value[0].name
  399. this.placeShow = false
  400. },
  401. //点去维修
  402. toRepeat(){
  403. console.log("111233")
  404. },
  405. toBorrowAsset(){
  406. if(this.form.tel===""){
  407. uni.showToast({
  408. icon:"none",
  409. title:"请输入正确的手机号"
  410. })
  411. return;
  412. }
  413. if(!this.handleDate(this.form.borrowDate,this.form.returnDate)){
  414. return;
  415. }
  416. let data = {
  417. "tel": this.form.tel,
  418. "assetBarCode": this.assetObj.barCode,
  419. "borrowPlaceName": this.form.borrowPlaceName,
  420. "remark": this.form.remark
  421. }
  422. console.log(data,1)
  423. let returnDate = new Date(this.form.returnDate).getTime()
  424. let borrowDate = new Date(this.form.borrowDate).getTime()
  425. borrowAsset(borrowDate,returnDate,data).then(res=>{
  426. uni.showToast({
  427. icon:"none",
  428. title:"借用成功!"
  429. })
  430. this.initAssets(res.assetBarCode)
  431. })
  432. },
  433. toReturnAsset(){
  434. returnAsset(this.assetObj.barCode).then(res=>{
  435. if(res.data.code===200 && res.data.msg==="归还成功"){
  436. uni.showToast({
  437. icon:"none",
  438. title:"归还成功!"
  439. })
  440. this.initAssets(this.assetObj.barCode)
  441. }
  442. })
  443. }
  444. }
  445. }
  446. </script>
  447. <style lang="scss" scoped>
  448. .home{
  449. padding: 20rpx;
  450. display: flex;
  451. flex-direction: column;
  452. // height: 100vh;
  453. box-sizing: border-box;
  454. }
  455. .detail-area{
  456. height: 72%;
  457. border: 1px solid $uni-border-black;
  458. padding: 0 20rpx;
  459. overflow-y: scroll;
  460. }
  461. .borrow-date{
  462. border: 1px solid $uni-border-black;
  463. padding: 0 20rpx;
  464. margin-top: 20rpx;
  465. /deep/.u-picker__view__column__item{
  466. text-align: center;
  467. }
  468. /deep/.u-form-item__body__right__content__slot{
  469. height: 100%;
  470. }
  471. }
  472. .layout-row{
  473. border-top: 1rpx solid #d6d7d9;
  474. padding: 20rpx 0 ;
  475. }
  476. .demo-layout {
  477. height: 25px;
  478. }
  479. .btn-area{
  480. margin-top: 20rpx;
  481. padding: 0 250rpx;
  482. }
  483. .repair-btn{
  484. width: 80rpx;
  485. height: 80rpx;
  486. color: rgba(80, 80, 80, 1);
  487. border-radius: 50%;
  488. line-height: 150%;
  489. box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.5);
  490. display: flex;
  491. align-items: center;
  492. justify-content: center;
  493. text-align: center;
  494. flex-direction: column;
  495. font-size: 36rpx;
  496. position: fixed;
  497. bottom: 20rpx;
  498. right: 20rpx;
  499. background: #ffffff;
  500. z-index:100;
  501. .iconfont{
  502. font-size: 42rpx;
  503. }
  504. }
  505. </style>