addFleet.vue 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. <template>
  2. <view class="center">
  3. <view class="flex row form_css">
  4. <view class="left-text">车队名称</view>
  5. <view class="right-text">
  6. <u--input placeholder="输入车队名称,4-15个字" inputAlign='left' border="none" v-model="formData.fleetName">
  7. </u--input>
  8. </view>
  9. </view>
  10. <view class="flex row form_css">
  11. <view class="left-text">常驻城市</view>
  12. <view class="right-text">
  13. <!-- <regionPicker :multiIndex_="selections1" @region_="regionChange1" custom_="请选择"
  14. @selecteRegion_="selecteRegion1" title_="全国" /> -->
  15. <!-- <view @click="show = true">{{title1 ? title1 : "请选择地址"}}</view>
  16. <Linkage @conceal="conceal1" class="flex" v-if="show" ref="uDropdown"></Linkage> -->
  17. <view @click="selectAddress">{{title1 ? title1 : "请选择地址"}}</view>
  18. <itmister-address-picker ref="addressElone" @confirmChange="confirmChangeOne"></itmister-address-picker>
  19. </view>
  20. </view>
  21. <view class="flex row form_css">
  22. <view class="left-text">邀请权限</view>
  23. <view class="right-text">
  24. <u-radio-group v-model="formData.invitationPermission">
  25. <u-radio key="1" label="所有队员" name="1"></u-radio>
  26. <u-radio key="2" label="仅队长" name="2"></u-radio>
  27. </u-radio-group>
  28. </view>
  29. </view>
  30. <view class="row">
  31. <view class="left-text">车队简介</view>
  32. <u--textarea v-model="formData.fleetProfile" placeholder="请输入内容" autoHeight maxlength="500" height="100"></u--textarea>
  33. </view>
  34. <view class="row">
  35. <view class="left-text">封面照片</view>
  36. <u-upload class="uview-upload" :fileList="fileList1" @afterRead="afterRead($event)" @delete="deletePic"
  37. name="1" multiple :maxCount="1">
  38. <!-- <image src="fileList1[0]"
  39. mode="widthFix" style="width: 250px;height: 150px;"></image> -->
  40. </u-upload>
  41. </view>
  42. <view class=" row ">
  43. <view class="left-text">车队照片</view>
  44. <u-upload class="uview-upload" :fileList="fileList2" @afterRead="afterRead1($event)" @delete="deletePic"
  45. name="2" multiple :maxCount="9" style="z-index: 9999;"></u-upload>
  46. </view>
  47. <u-toast ref="uToast"></u-toast>
  48. <u-button type="primary" @click="submit">提交</u-button>
  49. </view>
  50. </template>
  51. <script>
  52. // import Linkage from '@/components/gaojianghua-linkage/linkage.vue'
  53. import uploadImage from '@/components/ossutil/uploadFile.js';
  54. import itmisterAddressPicker from '@/components/itmister-address-picker/itmister-address-picker.nvue'
  55. export default{
  56. components: {
  57. // Linkage
  58. itmisterAddressPicker
  59. },
  60. data(){
  61. return{
  62. formData:{
  63. fleetMemberInfo:{},
  64. invitationPermission:1,
  65. },
  66. show:false,
  67. title1:"",
  68. fileList1: [],
  69. fileList2:[]
  70. }
  71. },
  72. onShow(){
  73. },
  74. onLoad(options){
  75. this.id = options.id
  76. if(this.id){//修改
  77. uni.setNavigationBarTitle({
  78. title:'设置'
  79. })
  80. this.getList()
  81. }
  82. },
  83. methods:{
  84. selectAddress() {
  85. this.$refs.addressElone.show();
  86. },
  87. // 确认选中
  88. confirmChangeOne(address) {
  89. // if(address.province == '全国'){
  90. // uni.$u.toast("发货地不可以是全国")
  91. // // this.$refs.addressElone.show();
  92. // return
  93. // }
  94. this.formData.province = address.province ? address.province : ''
  95. this.formData.city = address.city ? address.city : ''
  96. this.formData.Area = address.area ? address.area : ''
  97. if(address.city == '全省'){
  98. this.title1 = address.province
  99. this.formData.sendCity = ""
  100. this.formData.sendArea = ""
  101. }else if(address.area == '全市'){
  102. this.title1 = address.province + address.city
  103. this.formData.sendArea = ""
  104. }else{
  105. this.title1 = address.province + address.city + address.area;
  106. }
  107. },
  108. getList(){
  109. this.$request.baseRequest('get', '/fleetInfo/getFleetInfo', {
  110. id: this.id
  111. }).then(res => {
  112. this.formData = res.data
  113. this.title1 = this.formData.province + this.formData.city + this.formData.area
  114. let coverUrlList = this.formData.coverUrl.split(",")
  115. for(let i = 0 ; i < coverUrlList.length ; i++){
  116. this.fileList1.push({
  117. url:coverUrlList[i]
  118. })
  119. }
  120. let fleetUrlList = this.formData.fleetUrl.split(",")
  121. // this.fileList2 = this.formData.fleetUrl.split(",")
  122. for(let i = 0 ; i < fleetUrlList.length ; i++){
  123. this.fileList2.push({
  124. url:fleetUrlList[i]
  125. })
  126. }
  127. })
  128. .catch(res => {
  129. uni.$u.toast(res.message);
  130. });
  131. },
  132. conceal1(param) {
  133. const {
  134. chooseprovince,
  135. choosecity,
  136. choosearea
  137. } = param
  138. // 获取到传过来的 省 市 区 县数据
  139. this.formData.province = chooseprovince
  140. this.formData.city = choosecity == '全部' ? "" : choosecity
  141. this.formData.area = choosearea == '全部' ? "" : choosearea
  142. this.title1 = chooseprovince + choosecity + choosearea
  143. if (chooseprovince == '全国') {
  144. this.succeed()
  145. }
  146. if (choosecity == '全部') {
  147. this.succeed()
  148. } else if (choosearea != '') {
  149. this.succeed()
  150. }
  151. },
  152. succeed() {
  153. // this.$refs.uDropdown.close();
  154. this.show = false
  155. },
  156. // 删除图片
  157. deletePic(event) {
  158. console.log(this[`fileList${event.name}`])
  159. this[`fileList${event.name}`].splice(event.index, 1)
  160. },
  161. // 新增图片
  162. async afterRead(event) {
  163. // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
  164. let lists = [].concat(event.file)
  165. console.log(this[`fileList${event.name}`])
  166. let fileListLen = this[`fileList${event.name}`].length
  167. lists.map((item) => {
  168. this[`fileList${event.name}`].push({
  169. ...item,
  170. status: 'uploading',
  171. message: '上传中'
  172. })
  173. })
  174. for (let i = 0; i < lists.length; i++) {
  175. const result = await this.uploadFilePromise(lists[i].url)
  176. let item = this[`fileList${event.name}`][fileListLen]
  177. this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
  178. status: 'success',
  179. message: '',
  180. url: result
  181. }))
  182. fileListLen++
  183. }
  184. },
  185. uploadFilePromise(url) {
  186. uploadImage('image',url, 'appData/',
  187. result => {
  188. // 上传成功回调函数
  189. if(this.formData.coverUrl){
  190. this.formData.coverUrl = this.formData.coverUrl+','+ result
  191. }else{
  192. this.formData.coverUrl = result
  193. }
  194. }
  195. )
  196. },
  197. // 新增图片
  198. async afterRead1(event) {
  199. // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
  200. let lists = [].concat(event.file)
  201. let fileListLen = this[`fileList${event.name}`].length
  202. lists.map((item) => {
  203. this[`fileList${event.name}`].push({
  204. ...item,
  205. status: 'uploading',
  206. message: '上传中'
  207. })
  208. })
  209. for (let i = 0; i < lists.length; i++) {
  210. const result = await this.uploadFilePromise1(lists[i].url)
  211. let item = this[`fileList${event.name}`][fileListLen]
  212. this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
  213. status: 'success',
  214. message: '',
  215. url: result
  216. }))
  217. fileListLen++
  218. }
  219. },
  220. uploadFilePromise1(url) {
  221. uploadImage('image',url, 'appData/',
  222. result => {
  223. // 上传成功回调函数
  224. if(this.formData.fleetUrl){
  225. this.formData.fleetUrl = this.formData.fleetUrl+','+ result
  226. }else{
  227. this.formData.fleetUrl = result
  228. }
  229. }
  230. )
  231. },
  232. submit(){
  233. if(this.id){//编辑
  234. this.$request.baseRequest('post', '/fleetInfo/api/editFleetInfo', this.formData).then(res => {
  235. if (res.code == 200) {
  236. this.$refs.uToast.show({
  237. type: 'success',
  238. message: "车队修改成功!",
  239. complete() {
  240. // uni.$u.route("pages/riders/fleetSee")
  241. uni.navigateBack({
  242. delta: 1
  243. });
  244. }
  245. })
  246. }
  247. })
  248. .catch(res => {
  249. uni.$u.toast(res.message);
  250. });
  251. }else{
  252. this.formData.commonId = uni.getStorageSync("firstAuthentication").commonId
  253. this.formData.fleetMemberInfo.commonId = uni.getStorageSync("firstAuthentication").commonId
  254. this.formData.fleetMemberInfo.driverNickname = uni.getStorageSync("firstAuthentication").driverCall
  255. this.formData.fleetMemberInfo.driverPortrait = uni.getStorageSync("userInfo").avatarUrl
  256. this.$request.baseRequest('post', '/fleetInfo/api/addFleetInfo', this.formData).then(res => {
  257. if (res.code == 200) {
  258. this.$refs.uToast.show({
  259. type: 'success',
  260. message: "车队添加成功!",
  261. complete() {
  262. uni.$u.route("pages/riders/myTeam")
  263. }
  264. })
  265. }
  266. })
  267. .catch(res => {
  268. uni.$u.toast(res.message);
  269. });
  270. }
  271. }
  272. }
  273. }
  274. </script>
  275. <style lang="scss">
  276. .form_data{
  277. // padding: 30rpx;
  278. }
  279. .form_css {
  280. width: 100%;
  281. display: flex;
  282. margin: 20rpx 0;
  283. height: 60rpx;
  284. border-bottom: 1px solid #eeeeee;
  285. .left-text {
  286. width: 50%;
  287. text-align: left;
  288. }
  289. .right-text {
  290. width: 50%;
  291. justify-content: flex-end;
  292. display: flex;
  293. text-align: right;
  294. }
  295. }
  296. </style>