Bläddra i källkod

外层样式调整,相关接口引入,分享页面基本逻辑开发

wenmenghao 2 år sedan
förälder
incheckning
5ff23a74b1

+ 1 - 1
public/index.html

@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html>
+<html id="myElement">
   <head>
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">

+ 25 - 2
src/App.vue

@@ -1,14 +1,37 @@
 <template>
   <div id="app" class="reset-page">
-    <router-view/>
+    <router-view />
   </div>
 </template>
+<script>
+import { getParam } from '@/utils/'
+export default {
+  name: 'app',
+  data () {
+    return {
 
+    }
+  },
+  created () {
+    const element = document.getElementById('myElement')
+    if (getParam('iframe') === 'shareBox') {
+      element.style.background = 'rgba(0, 0, 0, 0)'
+    } else {
+      element.style.background = 'rgba(245, 244, 249, 1)'
+    }
+  },
+  mounted () { },
+  methods: {
+
+  }
+}
+</script>
 <style lang="scss">
 @import "~@/assets/style/index.scss";
 @import '~@/assets/style/in-app.scss';
+
 #app {
-  font-family: -apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif;
+  font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, WenQuanYi Micro Hei, sans-serif;
   -webkit-font-smoothing: antialiased;
   -moz-osx-font-smoothing: grayscale;
   color: #171826;

+ 10 - 0
src/api/modules/bigmember.js

@@ -0,0 +1,10 @@
+import request from '@/api'
+// 查询分享数据
+export function chatShare (data) {
+  return request({
+    baseURL: '/bigmember',
+    url: '/details/chatShare',
+    method: 'post',
+    data
+  })
+}

+ 2 - 0
src/api/modules/index.js

@@ -4,3 +4,5 @@ export * from './userCenter'
 export * from './orderCenter'
 export * from './knowledge'
 export * from './entbase'
+export * from './bigmember'
+export * from './publicapply'

+ 19 - 0
src/api/modules/publicapply.js

@@ -0,0 +1,19 @@
+import request from '@/api'
+// 身份列表
+export function identityList (data) {
+  return request({
+    baseURL: '/publicapply',
+    url: '/identity/list',
+    method: 'post',
+    data
+  })
+}
+// 身份切换
+export function identitySwitch (data) {
+  return request({
+    baseURL: '/publicapply',
+    url: '/identity/switch',
+    method: 'post',
+    data
+  })
+}

+ 7 - 0
src/api/modules/userCenter.js

@@ -8,3 +8,10 @@ export function getUserInfo (data) {
     data
   })
 }
+export function entAdd (data) { // 创建企业
+  return request({
+    url: '/userCenter/ent/add',
+    method: 'post',
+    data
+  })
+}

+ 1 - 1
src/assets/style/common.scss

@@ -57,7 +57,7 @@ html,
 html body {
   -webkit-text-size-adjust: 100%;
   margin: 0 auto;
-  background: rgba(245, 244, 249, 1);
+  // background: rgba(245, 244, 249, 1);
   color: #3d3d3d;
   line-height: 1;
   font-family: "Microsoft YaHei", "Helvetica Neue", "Roboto", "Segoe UI",

+ 3 - 3
src/components/inviteDialog/createEnterprise.vue

@@ -11,7 +11,7 @@
           <span class="filter-item-content">创建新企业或团队,在剑鱼标讯与企业同事或团队成员高效协作;企业/团队创建成功后,您即为管理员。</span>
         </div>
         <div class="btn-box">
-          <el-button class="next" type="primary" @click="next">下一步</el-button>
+          <el-button class="next" type="primary" @click="next" :loading="loading">下一步</el-button>
           <el-button class="cancel" type="primary" @click="onClose">取消</el-button>
         </div>
       </div>
@@ -36,8 +36,8 @@ export default {
   },
   data () {
     return {
-      val: ''
-
+      val: '',
+      loading: false
     }
   },
   created () { },

+ 1 - 1
src/components/inviteDialog/inviteDialog.vue

@@ -120,7 +120,7 @@ export default {
     }
   },
   created () {
-    this.getEntInfo()
+    // this.getEntInfo()
   },
   mounted () {
 

+ 19 - 13
src/components/switchingEnterprise/switchingEnterprise.vue

@@ -8,11 +8,12 @@
         <div class="choose" v-show="active === item.id"></div>
       </div>
     </div>
-    <div class="PersonalEdition" @click="choose('Personal')">
-      <p>个人版本</p>
-      <div class="choose" v-show="true"></div>
+    <div class="PersonalEdition" v-for="(item, index) in personageList" @click="choose(item)" :key="index">
+      <p>{{ item.name }}</p>
+      <div class="choose" v-show="active === item.id"></div>
     </div>
-    <el-button v-if="true" class="el-button--main btn" type="primary" @click.stop="onClick">{{ btnText }}</el-button>
+    <el-button v-if="entList.length === 0" class="el-button--main btn" type="primary" @click.stop="onClick">{{ btnText
+    }}</el-button>
   </div>
 </template>
 
@@ -39,6 +40,7 @@ export default {
   data () {
     return {
       entList: [],
+      personageList: [],
       active: '',
       btnText: '创建企业'
     }
@@ -50,7 +52,18 @@ export default {
   computed: {},
   watch: {
     list (val) {
-      this.entList = val
+      const list = val
+      const entList = []
+      const personageList = []
+      list.forEach(ele => {
+        if (ele.positionType === 0) {
+          personageList.push(ele)
+        } else if (ele.positionType === 1) {
+          entList.push(ele)
+        }
+      })
+      this.entList = entList
+      this.personageList = personageList
     },
     defaultChoose (val) {
       this.active = val
@@ -59,15 +72,8 @@ export default {
   methods: {
     choose (item) {
       if (!item) return
-      if (item.id === this.active) {
-        return
-      }
-      if (item === 'Personal') {
-
-      } else {
-        this.active = item.id
-      }
       this.$emit('change', item)
+      this.active = item.id
     },
     onClick () {
       this.$emit('createClick')

+ 96 - 11
src/views/shareBox/index.vue

@@ -1,15 +1,17 @@
 <template>
-  <div class="shade">
-    <switchingEnterprise :list="list" :defaultChoose="defaultChoose" @change="entChange" @createClick="createClick">
+  <div class="shade" @click.self="outclick">
+    <switchingEnterprise :list="list" :defaultChoose="defaultChoose" @change="entChange" @createClick="createClick"
+      ref="switchingEnterprise" v-show="entshow" v-loading="loading">
     </switchingEnterprise>
-    <createEnterprise :show.sync="createShow" @next="next"></createEnterprise>
-    <inviteDialog :show.sync="inviteShow"></inviteDialog>
+    <createEnterprise :show.sync="createShow" @next="next" ref="createEnterprise"></createEnterprise>
+    <inviteDialog :show.sync="inviteShow" ref="inviteDialog"></inviteDialog>
   </div>
 </template>
 <script>
 import switchingEnterprise from '@/components/switchingEnterprise/switchingEnterprise.vue'
 import inviteDialog from '@/components/inviteDialog/inviteDialog.vue'
 import createEnterprise from '@/components/inviteDialog/createEnterprise.vue'
+import { chatShare, entAdd, identityList, identitySwitch } from '@/api/modules/'
 export default {
   name: 'shareBox',
   components: { switchingEnterprise, inviteDialog, createEnterprise },
@@ -18,12 +20,23 @@ export default {
     return {
       inviteShow: false,
       createShow: false,
+      entshow: false,
       val: '',
       defaultChoose: '',
-      list: []
+      list: [],
+      shareData: null,
+      loading: false
     }
   },
-  created () { },
+  created () {
+    try {
+      this.shareData = window.parent.$shareBox.shareData
+      console.log(this.shareData)
+    } catch (e) {
+      console.warn(e)
+    }
+    this.getIdentitylist()
+  },
   mounted () { },
   beforeDestroy () { },
   filters: {},
@@ -32,16 +45,88 @@ export default {
   },
   methods: {
     entChange (val) {
-      this.$toast('切换成功,当前身份:')
-      this.inviteShow = true
+      this.loading = true
+      const params = new FormData()
+      params.append('token', val.token)
+      identitySwitch(params).then(res => {
+        this.loading = false
+        if (res.data === 1) {
+          this.$toast('切换成功,当前身份:' + val.name)
+          try {
+            window.parent.location.reload()
+          } catch (e) {
+            console.warn(e)
+          }
+        } else {
+          this.$toast(res.error_msg)
+        }
+      })
     },
     createClick () { // 创建企业
-
+      this.createShow = true
+    },
+    next (val) { // 下一步
+      this.$refs.createEnterprise.loading = true
+      entAdd({ name: val }).then(res => {
+        this.$refs.createEnterprise.loading = false
+        if (res.data.status === 1) {
+          this.createShow = false
+          this.$refs.inviteDialog.getEntInfo()
+          this.inviteShow = true
+          this.getIdentitylist()
+        } else {
+          this.$toast(res.error_msg)
+        }
+      })
     },
-    next () { // 下一步
+    outclick () {
+      try { // 关闭父级窗口
+        window.parent.$shareBox.close()
+      } catch (e) {
+        console.warn(e)
+      }
+    },
+    getIdentitylist () {
+      identityList().then(res => {
+        const list = res.data
+        list.forEach(ele => {
+          ele.id = ele.entId
+          if (ele.checked === 1) {
+            this.defaultChoose = ele.entId
+          }
+        })
+        this.list = list
+        const isPersonage = this.list.some((ele) => ele.positionType === 0 && ele.checked === 1)
+        const isEnterprise = this.list.some((ele) => ele.positionType === 1 && ele.checked === 1)
+        if (isPersonage) { // 个人身份
+          this.entshow = true
+        }
+        if (isEnterprise) { // 当前身份为企业调分享弹框 
+          this.getchatShare()
+        }
+      })
+    },
+    getchatShare () {
+      const params = {}
+      if (this.shareData.code === 1) { // 标讯详情
+        params.type = 1
+        params.stype = this.shareData.stype
+        params.id = this.shareData.id
+      } else if (this.shareData.code === 2) { // 项目详情
+        params.type = 2
+        params.sid = this.shareData.sid
+        params.fid = this.shareData.fid
+      } else if (this.shareData.code === 3) { // 企业画像
+        params.type = 3
+        params.entId = this.shareData.entId
+      } else if (this.shareData.code === 4) { // 采购单位画像
+        params.type = 4
+        params.params = this.shareData.params
+      }
+      chatShare(params).then(res => {
 
+      })
     }
-
   }
 }
 </script>