index.vue 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. <template>
  2. <view class="previewCard">
  3. <view class="card-container">11111</view>
  4. <view class="contact-mode">
  5. <view class="mode-item" v-for="(item,index) in modeList" :key="index" @click="mobeClick(item.value,item.name)">
  6. <tui-icon :name="item.icon" :size="26" color="#3A8FFF"></tui-icon>
  7. <text>{{ item.name }}</text>
  8. </view>
  9. </view>
  10. <view class="personal" v-for="(item, index) in briefList" :key="index" :class="index == 1 ? 'act' : ''">
  11. <view class="title">
  12. <text>{{ item.title }}</text>
  13. <view class="edit">
  14. <tui-icon name="evaluate" :size="24" color="#3A8FFF"></tui-icon>
  15. <text>编辑</text>
  16. </view>
  17. </view>
  18. <tui-textarea :disabled="item.disabled" :value=item.value flexStart :placeholder=item.placeholder
  19. min-height="200rpx" height="200rpx" :size="28"></tui-textarea>
  20. </view>
  21. <view class="footer" :style="{ bottom: bottom + 'rpx' }">
  22. <view class="preview" @click="goBack">编辑名片</view>
  23. <view class="preserve">发送名片</view>
  24. </view>
  25. <tui-drawer mode="bottom" :visible="visible" @close="closeDrawer">
  26. <view class="d-container">
  27. <view class="d-header">
  28. <text>{{ drawerVal.title }}</text>
  29. <view class="icon" @click="closeDrawer">
  30. <tui-icon name="shut" :size="24"></tui-icon>
  31. </view>
  32. </view>
  33. <view class="d-body">
  34. <text>{{ drawerVal.value }}</text>
  35. <view class="copy" @click="copyVal">
  36. <tui-icon name="feedback" :size="24" color="#3A8FFF"></tui-icon>
  37. </view>
  38. </view>
  39. </view>
  40. </tui-drawer>
  41. </view>
  42. </template>
  43. <script>
  44. export default {
  45. onLoad() {
  46. uni.getSystemInfo({
  47. success: (res) => {
  48. this.bottom = res.safeAreaInsets.bottom
  49. }
  50. })
  51. },
  52. data() {
  53. return {
  54. // 控制底部弹框
  55. visible:false,
  56. // 控制输入框是否可以编辑
  57. personalDis: true,
  58. companylDis: true,
  59. bottom: null,
  60. // 联系列表
  61. modeList:[
  62. {
  63. name:"电话",
  64. icon:"voipphone",
  65. value:"1"
  66. },
  67. {
  68. name:"微信",
  69. icon:"wechat",
  70. value:"2"
  71. },
  72. {
  73. name:"地址",
  74. icon:"gps",
  75. value:"3"
  76. }
  77. ],
  78. // 简介列表
  79. briefList: [
  80. {
  81. title: "个人简介",
  82. value: "广东团蜂科技个人简介广东团蜂科技个人简介广东团蜂科技个人简介广东团蜂科技个人简介广东团蜂科技个人简介广东团蜂科技个人简介广东团蜂科技个人简介广东团蜂科技个人简介广东团蜂科技个人简介广东团蜂科技个人简介广东团蜂科技个人简介广东团蜂科技个人简介广东团蜂科技个人简介广东团蜂科技个人简介广东团蜂科技个人简介广东团蜂科技个人简介广东团蜂科技个人简介广东团蜂科技个人简介",
  83. placeholder: "请填写个人简介",
  84. disabled: true
  85. },
  86. {
  87. title: "公司简介",
  88. value: "团蜂科技公司理念:用专业获得尊重,用系统解决问题,用服务赢得信任,用结果换来认可,执行,认真,快,坚守承诺!!!向奋斗者学习,和创新者共进,与价值观一致者同行",
  89. placeholder: "请填写公司简介",
  90. disabled: true
  91. }
  92. ],
  93. // 弹框数据
  94. drawerVal:{
  95. value:"11111",
  96. title:"电话"
  97. }
  98. }
  99. },
  100. methods: {
  101. mobeClick(val,title){
  102. // 给弹框赋值
  103. this.drawerVal.value = val
  104. this.drawerVal.title = title
  105. this.visible = true
  106. },
  107. // 拷贝文本
  108. copyVal(){
  109. uni.setClipboardData({
  110. data:this.drawerVal.value,
  111. success: (res) => {
  112. uni.showToast({
  113. title: '复制成功',
  114. icon: 'none'
  115. })
  116. }
  117. })
  118. },
  119. // 关闭弹框
  120. closeDrawer(){
  121. this.visible = false
  122. },
  123. goBack() {
  124. uni.navigateBack()
  125. }
  126. },
  127. }
  128. </script>
  129. <style lang="scss" scoped>
  130. %paddBox {
  131. margin-top: 20rpx;
  132. border-radius: 10rpx;
  133. padding: 30rpx 20rpx;
  134. box-sizing: border-box;
  135. background-color: #fff;
  136. }
  137. %title {
  138. border-bottom: 1rpx solid #ccc;
  139. font-size: 30rpx;
  140. color: #000;
  141. font-weight: 600;
  142. padding-bottom: 20rpx;
  143. }
  144. page {
  145. background-color: #f5f5f5;
  146. }
  147. .previewCard {
  148. padding: 30rpx 20rpx;
  149. background-color: #f5f5f5;
  150. min-height: 100vh;
  151. box-sizing: border-box;
  152. .card-container {
  153. width: 100%;
  154. height: 400rpx;
  155. background-color: aquamarine;
  156. border-radius: 20rpx;
  157. }
  158. .contact-mode {
  159. @include flex(center, null);
  160. width: 100%;
  161. height: 250rpx;
  162. background-color: #fff;
  163. border-radius: 20rpx;
  164. .mode-item {
  165. flex: 1;
  166. @include flex(center, column, 20rpx);
  167. text {
  168. font-size: 28rpx;
  169. color: #000;
  170. }
  171. }
  172. }
  173. .personal {
  174. @extend %paddBox;
  175. .title {
  176. @extend %title;
  177. @include flex(space-between, null, 0);
  178. .edit {
  179. @include flex(center, null, 10rpx);
  180. color: #3A8FFF;
  181. text {
  182. font-size: 26rpx;
  183. }
  184. }
  185. }
  186. }
  187. .act {
  188. margin-bottom: 150rpx;
  189. }
  190. .footer {
  191. position: fixed;
  192. left: 0;
  193. bottom: 0;
  194. width: 100%;
  195. height: 100rpx;
  196. line-height: 100rpx;
  197. z-index: 99;
  198. @include flex(space-between, null);
  199. font-size: 30rpx;
  200. text-align: center;
  201. .preview {
  202. width: 250rpx;
  203. background-color: #fff;
  204. color: rgb(58, 143, 255);
  205. }
  206. .preserve {
  207. flex: 1;
  208. background-color: #3A8FFF;
  209. color: #fff;
  210. }
  211. }
  212. }
  213. // 弹框
  214. .d-container{
  215. height: 500rpx;
  216. width: 100%;
  217. .d-header{
  218. height: 100rpx;
  219. line-height: 100rpx;
  220. text-align: center;
  221. font-size: 28rpx;
  222. position: relative;
  223. .icon{
  224. position: absolute;
  225. top: 50%;
  226. transform: translateY(-50%);
  227. right: 30rpx;
  228. }
  229. }
  230. .d-body{
  231. margin-top: 30rpx;
  232. padding-left: 50rpx;
  233. padding-right: 30rpx;
  234. box-sizing: border-box;
  235. // justify-content:
  236. @include flex(space-between);
  237. }
  238. }
  239. </style>