addbill.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414
  1. <template>
  2. <view class="content">
  3. <view v-for="(item,index) in contractDrafts" :key="index">
  4. <view class="addtitle flex6">
  5. <text class="ty">汇票{{index+1}}</text>
  6. <!-- <text class="tde">删除</text> -->
  7. </view>
  8. <view class="listitem">
  9. <text class="lys">汇票名称</text>
  10. <view class="inbox">
  11. <input type="text" v-model="item.name" placeholder="请输入汇票的名称" placeholder-style="color:#BEBDBB" />
  12. </view>
  13. </view>
  14. <view class="listitem">
  15. <text class="lys">汇票号码</text>
  16. <view class="inbox">
  17. <input type="text" v-model="item.draftNo" placeholder="请输入汇票的号码" placeholder-style="color:#BEBDBB" />
  18. </view>
  19. </view>
  20. <view class="listitem">
  21. <text class="lys">兑换人</text>
  22. <view class="chosbox">
  23. <uni-data-select v-model="item.accepter" :localdata="range" @change="changeacPerson" :showas="false"></uni-data-select>
  24. </view>
  25. </view>
  26. <view class="listitem">
  27. <text class="lys">出票人</text>
  28. <view class="chosbox">
  29. <uni-data-select v-model="item.drawersId" :localdata="range" @change="changedrPerson"></uni-data-select>
  30. </view>
  31. </view>
  32. <view class="listitem">
  33. <text class="lys">金额</text>
  34. <view class="inbox">
  35. <input type="text" v-model="item.money" placeholder="请输入汇票的金额" placeholder-style="color:#BEBDBB" />
  36. </view>
  37. </view>
  38. <view class="listitem">
  39. <text class="lys">承兑日期</text>
  40. <view class="calender" @click="openTime(index,1)">
  41. <view class="canicon">
  42. <image src="../../static/img/canlen.png" mode="aspectFill"></image>
  43. </view>
  44. <text>{{item.acceptDate}}</text>
  45. </view>
  46. </view>
  47. <view class="listitem">
  48. <text class="lys">出票日期</text>
  49. <view class="calender" @click="openTime(index,2)">
  50. <view class="canicon">
  51. <image src="../../static/img/canlen.png" mode="aspectFill"></image>
  52. </view>
  53. <text>{{item.issueDate}}</text>
  54. </view>
  55. </view>
  56. <view class="listitem">
  57. <text class="lys">汇票到期日</text>
  58. <view class="calender" @click="openTime(index,3)">
  59. <view class="canicon">
  60. <image src="../../static/img/canlen.png" mode="aspectFill"></image>
  61. </view>
  62. <text>{{item.expireDate}}</text>
  63. </view>
  64. </view>
  65. <view class="listitem">
  66. <text class="lys">预计贴现日</text>
  67. <view class="calender" @click="openTime(index,4)">
  68. <view class="canicon">
  69. <image src="../../static/img/canlen.png" mode="aspectFill"></image>
  70. </view>
  71. <text>{{item.expectDiscountDate}}</text>
  72. </view>
  73. </view>
  74. <view class="listitem">
  75. <text class="lys">最高贷款额度</text>
  76. <view class="inbox" v-if="form.serviceRate&&form.interestRate">
  77. <input type="text" v-model="form.loanLimit" placeholder="请输入最高贷款额度" placeholder-style="color:#BEBDBB"
  78. disabled="true" />
  79. </view>
  80. <view class="inbox" v-else>
  81. <input type="text" v-model="form.loanLimit" placeholder="请输入最高贷款额度" placeholder-style="color:#BEBDBB"
  82. disabled="true" />
  83. </view>
  84. </view>
  85. <view class="flex4">
  86. <view class="listitem">
  87. <text class="lys">服务费率</text>
  88. <view class="inbox">
  89. <input type="text" v-model="form.serviceRate" placeholder="输入费率" placeholder-style="color:#BEBDBB"
  90. />
  91. </view>
  92. </view>
  93. <view class="listitem">
  94. <text class="lys">服务费</text>
  95. <view class="inbox">
  96. <input type="text" v-model="form.serviceMoney" placeholder="自动计算得出" placeholder-style="color:#BEBDBB"
  97. disabled="true" />
  98. </view>
  99. </view>
  100. </view>
  101. <view class="flex4">
  102. <view class="listitem">
  103. <text class="lys">利率</text>
  104. <view class="inbox">
  105. <input type="text" v-model="form.interestRate" placeholder="输入利率" placeholder-style="color:#BEBDBB"
  106. />
  107. </view>
  108. </view>
  109. <view class="listitem">
  110. <text class="lys">利息</text>
  111. <view class="inbox">
  112. <input type="text" v-model="form.interest" placeholder="自动计算得出" placeholder-style="color:#BEBDBB"
  113. disabled="true" />
  114. </view>
  115. </view>
  116. </view>
  117. <view class="listitem">
  118. <view class="" style="display: flex;align-content: center;">
  119. <text class="lys">上传附件</text>
  120. <text
  121. style="font-size: 24rpx; color:#D05C39;padding-top: 45rpx;padding-left: 20rpx;">*支持上传pdf、jpg/jpeg、png格式</text>
  122. </view>
  123. <view class="inbox" style="border: none;padding-bottom: 0;">
  124. <u-upload :fileList="fileList4" @afterRead="afterRead" @delete="deletePic" name="1" multiple
  125. :maxCount="10" width="100" height="100" @click="checkIndex(index)"></u-upload>
  126. </view>
  127. </view>
  128. </view>
  129. <view class="addnewbill" @click="addNewBill">
  130. + 新增汇票
  131. </view>
  132. <view class="safebt"></view>
  133. <view class="newbill flex1">
  134. <view class="newbillbtn">
  135. <text>确认上传</text>
  136. </view>
  137. </view>
  138. <u-datetime-picker :show="dateshow" mode="date" @confirm="confirm" @cancel="closeDate" v-model="start">
  139. </u-datetime-picker>
  140. </view>
  141. </template>
  142. <script>
  143. import calllips from "@/componet/calllips/calllips.vue"
  144. export default {
  145. components: {
  146. calllips
  147. },
  148. data() {
  149. return {
  150. editall: false,
  151. quan: false,
  152. dateshow: false,
  153. opdanum: '',
  154. state: '',
  155. index:0,
  156. start: Number(new Date()),
  157. allindex:'',
  158. fileList1: [],
  159. contractDrafts:[
  160. {
  161. name: '',
  162. draftNo: '',
  163. acceptorId:'',
  164. drawersId:'',
  165. money: '',
  166. acceptDate: '',
  167. issueDate: '',
  168. expireDate: '',
  169. loanLimit:'',
  170. expectDiscountDate: '',
  171. picUrls: [],
  172. },
  173. ],
  174. range: [{
  175. value: 0,
  176. text: "篮球"
  177. },
  178. {
  179. value: 1,
  180. text: "足球"
  181. },
  182. {
  183. value: 2,
  184. text: "游泳"
  185. },
  186. ],
  187. }
  188. },
  189. computed:{
  190. },
  191. onLoad() {
  192. let myDate = new Date()
  193. let wk = myDate.getDay()
  194. let yy = String(myDate.getFullYear())
  195. let mm = myDate.getMonth() + 1
  196. let dd = String(myDate.getDate() < 10 ? '0' + myDate.getDate() : myDate.getDate())
  197. let nowDate = yy + '-' + mm + '-' + dd
  198. this.contractDrafts.forEach(item=>{
  199. item.acceptDate = nowDate
  200. item.issueDate = nowDate
  201. item.expireDate = nowDate
  202. item.expectDiscountDate = nowDate
  203. })
  204. this.init()
  205. },
  206. methods: {
  207. addNewBill(){
  208. let form={
  209. name: '',
  210. draftNo: '',
  211. acceptorId:'',
  212. drawersId:'',
  213. money: '',
  214. acceptDate: '',
  215. issueDate: '',
  216. expireDate: '',
  217. expectDiscountDate: '',
  218. picUrls: [],
  219. }
  220. this.contractDrafts.push(form)
  221. },
  222. init(){
  223. uni.$u.http.post('/api/Acceptor/search',{
  224. pageIndex:1,
  225. pageSize:10,
  226. }, {
  227. custom: {
  228. auth: true
  229. }
  230. }).then((res) => {
  231. }).catch((err) => {
  232. })
  233. },
  234. checkIndex(index){
  235. this.allindex=index
  236. },
  237. changeacPerson(e){
  238. this.accepter=e
  239. },
  240. changedrPerson(e){
  241. this.drawer=e
  242. },
  243. openTime(index,value) {
  244. this.dateshow = true
  245. this.index=index
  246. this.opdanum = value
  247. },
  248. closeDate() {
  249. this.dateshow = false
  250. },
  251. confirm(e) {
  252. const timeFormat = uni.$u.timeFormat
  253. if (this.opdanum == 1) {
  254. this.contractDrafts[this.index].acceptDate = timeFormat(e.value, 'yyyy-mm-dd')
  255. } else if (this.opdanum == 2) {
  256. this.contractDrafts[this.index].issueDate = timeFormat(e.value, 'yyyy-mm-dd')
  257. } else if (this.opdanum == 3) {
  258. this.contractDrafts[this.index].expireDate = timeFormat(e.value, 'yyyy-mm-dd')
  259. } else if (this.opdanum == 4) {
  260. this.contractDrafts[this.index].expectDiscountDate = timeFormat(e.value, 'yyyy-mm-dd')
  261. }
  262. console.log(this.index,this.opdanum)
  263. this.dateshow = false
  264. },
  265. change(e) {
  266. console.log("e:", e);
  267. },
  268. open(e) {
  269. // console.log('open', e)
  270. },
  271. close(e) {
  272. // console.log('close', e)
  273. },
  274. change(e) {
  275. // console.log('change', e)
  276. },
  277. // 删除图片
  278. deletePic(event) {
  279. this[`fileList${event.name}`].splice(event.index, 1)
  280. },
  281. // 新增图片
  282. async afterRead(event) {
  283. // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
  284. let lists = [].concat(event.file)
  285. let fileListLen = this[`fileList${event.name}`].length
  286. lists.map((item) => {
  287. this[`fileList${event.name}`].push({
  288. ...item,
  289. status: 'uploading',
  290. message: '上传中'
  291. })
  292. })
  293. for (let i = 0; i < lists.length; i++) {
  294. const result = await this.uploadFilePromise(lists[i].url)
  295. let item = this[`fileList${event.name}`][fileListLen]
  296. this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
  297. status: 'success',
  298. message: '',
  299. url: result
  300. }))
  301. this[`fileList${event.name}`].forEach(item=>{
  302. this.form[this.index].picUrls.push(item.url)
  303. })
  304. fileListLen++
  305. }
  306. },
  307. uploadFilePromise(url) {
  308. return new Promise((resolve, reject) => {
  309. let a = uni.uploadFile({
  310. url: 'http://192.168.2.21:7001/upload', // 仅为示例,非真实的接口地址
  311. filePath: url,
  312. name: 'file',
  313. formData: {
  314. user: 'test'
  315. },
  316. success: (res) => {
  317. setTimeout(() => {
  318. resolve(res.data.data)
  319. }, 1000)
  320. }
  321. });
  322. })
  323. },
  324. }
  325. }
  326. </script>
  327. <style lang="scss">
  328. .content {
  329. padding: 0 30rpx;
  330. box-sizing: border-box;
  331. }
  332. .addtitle {
  333. font-weight: 600;
  334. padding-top: 58rpx;
  335. font-size: 36rpx;
  336. .ty {
  337. color: #D8AB5A;
  338. }
  339. .tde {
  340. color: #D05C39;
  341. }
  342. }
  343. .listitem {
  344. .lys {
  345. display: block;
  346. font-size: 32rpx;
  347. font-weight: 600;
  348. padding-top: 40rpx;
  349. padding-bottom: 30rpx;
  350. }
  351. .inbox {
  352. padding-bottom: 20rpx;
  353. width: 100%;
  354. font-size: 30rpx;
  355. border-bottom: 1rpx solid #E8E8E8;
  356. }
  357. .chosbox {
  358. border-radius: 20rpx;
  359. // border: 1rpx solid #BEBDBB;
  360. }
  361. .calender {
  362. border-radius: 20rpx;
  363. width: 690rpx;
  364. height: 80rpx;
  365. border-radius: 20rpx;
  366. border: 1rpx solid #BEBDBB;
  367. display: flex;
  368. align-items: center;
  369. padding-left: 30rpx;
  370. font-size: 32rpx;
  371. box-sizing: border-box;
  372. .canicon {
  373. width: 34rpx;
  374. height: 34rpx;
  375. margin-right: 20rpx;
  376. image {
  377. width: 100%;
  378. height: 100%;
  379. }
  380. }
  381. }
  382. }
  383. .addnewbill {
  384. width: 200rpx;
  385. height: 78rpx;
  386. border-radius: 45rpx;
  387. border: 1rpx solid #E8E8E8;
  388. line-height: 78rpx;
  389. text-align: center;
  390. margin-top: 50rpx;
  391. margin-bottom: 200rpx;
  392. }
  393. </style>