index.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. <template>
  2. <view class="container">
  3. <navBar title="绘本生成" :back="true" color="#333333" background="#FFFFFF" />
  4. <view class="topBox">
  5. <view class="left">
  6. <image :src="picBase+'upCamera.png'" mode="heightFix" class="aiIcon" @click="upload"></image>
  7. </view>
  8. <view class="right">
  9. <view class="label1">
  10. 纯AI制作
  11. </view>
  12. <view class="label2">
  13. 创作独一无二的绘本
  14. </view>
  15. </view>
  16. </view>
  17. <view class="mainBox">
  18. <view class="titleBox">
  19. 上传一张故事主角的照片
  20. </view>
  21. <view class="uploadBox">
  22. <view class="tipBox">
  23. <image :src="picBase+'upCamera.png'" mode="heightFix" class="tipIcon" @click="upload"></image>
  24. 绘本内容会根据您所上传的照片进行创作
  25. </view>
  26. <view class="selBox">
  27. <u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" name="1" multiple
  28. :maxCount="1">
  29. <view class="myUpArea">
  30. <image :src="picBase+'upCamera.png'" mode="heightFix" class="upIcon">
  31. </image>
  32. 上传图片
  33. </view>
  34. </u-upload>
  35. </view>
  36. </view>
  37. </view>
  38. <view class="parmasBox">
  39. <view class="titleBox">
  40. 故事主角信息
  41. </view>
  42. <view class="inputBox">
  43. <view class="nickname">
  44. <input type="text" class="nackI" v-model="formData.nickName" placeholder="请输入昵称" />
  45. <image :src="picBase+'arrR2.png'" mode="heightFix" class="arrIcon">
  46. </image>
  47. </view>
  48. <view class="otherBox">
  49. <view class="item" @click="show=true">
  50. <input type="text" class="nackI" disabled v-model="formData.sex" placeholder="选择性别" />
  51. <image :src="picBase+'arrR2.png'" mode="heightFix" class="arrIcon">
  52. </image>
  53. </view>
  54. <view class="item" @click="show2=true">
  55. <input type="text" class="nackI" disabled v-model="formData.age" placeholder="选择年龄" />
  56. <image :src="picBase+'arrR2.png'" mode="heightFix" class="arrIcon">
  57. </image>
  58. </view>
  59. <view class="item" @click="show3=true">
  60. <input type="text" class="nackI" disabled v-model="formData.star" placeholder="选择星座" />
  61. <image :src="picBase+'arrR2.png'" mode="heightFix" class="arrIcon">
  62. </image>
  63. </view>
  64. <view class="item" @click="show4=true">
  65. <input type="text" class="nackI" disabled v-model="formData.class" placeholder="选择年级" />
  66. <image :src="picBase+'arrR2.png'" mode="heightFix" class="arrIcon">
  67. </image>
  68. </view>
  69. </view>
  70. </view>
  71. </view>
  72. <view class="pos">
  73. </view>
  74. <view class="btnBox">
  75. <view class="left">
  76. <image :src="picBase+'kefu.png'" mode="heightFix" class="kfIcon">
  77. </image>
  78. 客服
  79. </view>
  80. <view class="right">
  81. <view class="top">
  82. 立即生成
  83. </view>
  84. <view class="bot">
  85. 绘本生成剩余次数:8次
  86. </view>
  87. </view>
  88. </view>
  89. <!-- 性别弹框 -->
  90. <!-- <u-popup :show="show" @close="close" @open="open" :round="10">
  91. <view class="topBar">
  92. <view class="left">
  93. 取消
  94. </view>
  95. <view class="mid">
  96. 昵称选择
  97. </view>
  98. <view class="right">
  99. 确定
  100. </view>
  101. </view>
  102. <view class="content">
  103. <text>出淤泥而不染,濯清涟而不妖</text>
  104. </view>
  105. </u-popup> -->
  106. <u-picker :show="show" title="性别选择" aColor="#007AFF" :columns="columns" confirmColor="#007AFF"
  107. @confirm="confirm1" @cancel="show=false"></u-picker>
  108. <u-picker :show="show2" title="年龄选择" aColor="#007AFF" :columns="columns2" confirmColor="#007AFF"
  109. @confirm="confirm2" @cancel="show2=false"></u-picker>
  110. <u-picker :show="show3" title="星座选择" aColor="#007AFF" :columns="columns3" confirmColor="#007AFF"
  111. @confirm="confirm3" @cancel="show3=false"></u-picker>
  112. <u-picker :show="show4" title="班级选择" aColor="#007AFF" :columns="columns4" confirmColor="#007AFF"
  113. @confirm="confirm4" @cancel="show4=false"></u-picker>
  114. </view>
  115. </template>
  116. <script>
  117. // import navBar from '@/components/navBar/index.vue'
  118. import uploadUrl from '@/common/config.js'
  119. export default {
  120. // components: {
  121. // navBar
  122. // },
  123. data() {
  124. return {
  125. picBase: this.$picBase2,
  126. fileList1: [],
  127. formData: {
  128. nickName: '',
  129. sex: '',
  130. age: '',
  131. star: '',
  132. class: ''
  133. },
  134. show: false,
  135. columns: [
  136. ['男', '女']
  137. ],
  138. show2: false,
  139. columns2: [
  140. ['一岁', '两岁']
  141. ],
  142. show3: false,
  143. columns3: [
  144. ['金牛', '双子']
  145. ],
  146. show4: false,
  147. columns4: [
  148. ['蒙大一', '蒙大二', '蒙小一', '蒙小二', '蒙小三']
  149. ],
  150. }
  151. },
  152. onLoad() {
  153. },
  154. methods: {
  155. confirm1(e) {
  156. console.log('e', e);
  157. this.formData.sex = e.value[0]
  158. this.show = false
  159. },
  160. confirm2(e) {
  161. console.log('e', e);
  162. this.formData.age = e.value[0]
  163. this.show2 = false
  164. },
  165. confirm3(e) {
  166. console.log('e', e);
  167. this.formData.star = e.value[0]
  168. this.show3 = false
  169. },
  170. confirm4(e) {
  171. console.log('e', e);
  172. this.formData.class = e.value[0]
  173. this.show4 = false
  174. },
  175. // 删除图片
  176. deletePic(event) {
  177. this[`fileList${event.name}`].splice(event.index, 1)
  178. },
  179. // 新增图片
  180. async afterRead(event) {
  181. // 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
  182. let lists = [].concat(event.file)
  183. let fileListLen = this[`fileList${event.name}`].length
  184. lists.map((item) => {
  185. this[`fileList${event.name}`].push({
  186. ...item,
  187. status: 'uploading',
  188. message: '上传中'
  189. })
  190. })
  191. for (let i = 0; i < lists.length; i++) {
  192. const result = await this.uploadFilePromise(lists[i].url)
  193. let item = this[`fileList${event.name}`][fileListLen]
  194. this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
  195. status: 'success',
  196. message: '',
  197. url: result
  198. }))
  199. fileListLen++
  200. }
  201. },
  202. uploadFilePromise(url) {
  203. return new Promise((resolve, reject) => {
  204. let a = uni.uploadFile({
  205. // url: 'http://192.168.2.21:7001/upload', // 仅为示例,非真实的接口地址
  206. url: uploadUrl.baseUrl + '/api/upload', // 仅为示例,非真实的接口地址
  207. filePath: url,
  208. name: 'file',
  209. formData: {
  210. user: 'test',
  211. 'tag': 'lamp'
  212. },
  213. success: (res) => {
  214. console.log('uploadFilePromise返回值', res);
  215. setTimeout(() => {
  216. resolve(JSON.parse(res.data).file)
  217. }, 1000)
  218. }
  219. });
  220. })
  221. },
  222. }
  223. }
  224. </script>
  225. <style lang="scss" scoped>
  226. @import "./index.scss";
  227. </style>