zhoujump 3 órája
szülő
commit
879fe26dba

+ 13 - 2
src/api/system.js

@@ -64,7 +64,7 @@ export function getMailSettings(type) {
  * @param is_ssl
  * @returns {*}
  */
-export function saveMailSetting(id,from_name,from_email,smtp_port,smtp_server,auth_code,is_ssl) {
+export function saveMailSetting(id,from_name,from_email,smtp_port,smtp_server,auth_code,is_ssl,type) {
   return request({
     url: '/api/user/mail-setting',
     method: 'post',
@@ -75,7 +75,8 @@ export function saveMailSetting(id,from_name,from_email,smtp_port,smtp_server,au
       smtp_port,
       smtp_server,
       auth_code,
-      is_ssl
+      is_ssl,
+      type
     }
   })
 }
@@ -105,3 +106,13 @@ export function getPackList (key) {
     }
   })
 }
+
+export function sentTestEmail(to_email) {
+  return request({
+    url: '/api/user/mail-setting-send-test',
+    method: 'post',
+    params: {
+      to_email
+    }
+  })
+}

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 3 - 3
src/permission.js


+ 78 - 48
src/views/dashboard/index.vue

@@ -11,68 +11,67 @@
             </div>
             <div class="button-list">
               <router-link to="/audience" class="card-button">
-                <div class="el-icon-user button-icon"></div>
+                <div class="el-icon-user button-icon" />
                 <div class="info-box">
                   <div class="text">已预约观众</div>
-                  <div class="value">{{currentExpo.form_count || 0}}</div>
+                  <div class="value">{{ currentExpo.form_count || 0 }}</div>
                 </div>
               </router-link>
-              <router-link to="/invitation" class="card-button">
-                <div class="el-icon-key button-icon"></div>
+              <router-link to="/invitation/send" class="card-button">
+                <div class="el-icon-key button-icon" />
                 <div class="info-box">
                   <div class="text">待审邀请函</div>
-                  <div class="value">4</div>
+                  <div class="value">{{ wait_receive }}</div>
                 </div>
               </router-link>
               <router-link to="/exhibitor" class="card-button">
-                <div class="el-icon-date button-icon"></div>
+                <div class="el-icon-date button-icon" />
                 <div class="info-box">
                   <div class="text">进行中展会</div>
-                  <div class="value">{{currentExpoList.length}}</div>
+                  <div class="value">{{ currentExpoList.length }}</div>
                 </div>
               </router-link>
             </div>
           </div>
           <div class="form">
-            <div class="form-inner" id="form">
-            </div>
+            <div id="form" class="form-inner" />
           </div>
         </div>
         <div class="card-box card">
           <router-link to="/preRegister" class="card-item">
-            <div class="el-icon-tickets card-icon"></div>
+            <div class="el-icon-tickets card-icon" />
             <div class="card-info">
               <div class="title">预登记表单</div>
               <div class="describe">准备展会报名表</div>
             </div>
-            <div class="goto-icon el-icon-top-right"></div>
+            <div class="goto-icon el-icon-top-right" />
           </router-link>
           <router-link to="/invitation" class="card-item">
-            <div class="el-icon-files card-icon"></div>
+            <div class="el-icon-files card-icon" />
             <div class="card-info">
               <div class="title">邀请函模板</div>
               <div class="describe">准备邀请函以便发送</div>
             </div>
-            <div class="goto-icon el-icon-top-right"></div>
+            <div class="goto-icon el-icon-top-right" />
           </router-link>
           <router-link to="share&utm" class="card-item">
-            <div class="el-icon-data-line card-icon"></div>
+            <div class="el-icon-data-line card-icon" />
             <div class="card-info">
               <div class="title">分享中心</div>
               <div class="describe">制作海报、分享展会</div>
             </div>
-            <div class="goto-icon el-icon-top-right"></div>
+            <div class="goto-icon el-icon-top-right" />
           </router-link>
         </div>
         <div class="starter-box card">
-          <div class="icon el-icon-position"></div>
+          <div class="icon el-icon-position" />
           <div class="title">创建展会</div>
-          <div class="desc">十分钟创建一个展会<br/>通过表单系统收集与管理观众信息</div>
+          <div class="desc">十分钟创建一个展会<br>通过表单系统收集与管理观众信息</div>
         </div>
         <div class="invitation-box card">
-          <div class="icon el-icon-notebook-2"></div>
+          <div class="icon el-icon-notebook-2" />
           <div class="title">创建邀请函</div>
-          <div class="desc">十分钟创建一个邀请函<br/>集成表单系统快速填充信息并发送</div>
+          <div class="desc">十分钟创建一个邀请函<br>集成表单系统快速填充信息并发送</div>
         </div>
       </div>
     </div>
@@ -83,35 +82,18 @@
 import echartsTheme from '@/lib/echart/v5.json'
 import * as echarts from 'echarts'
 import { getExpoList } from '@/api/expo'
+import { getAudienceList } from '@/api/form'
 export default {
   name: 'Dashboard',
   data() {
     return {
       currentExpo: {},
-      currentExpoList: []
-    }
-  },
-  computed: {
-    user() { return this.$store.state.user.user }
-  },
-  mounted() {
-    this.init()
-    this.initForm()
-  },
-  methods: {
-    initForm() {
-      echarts.registerTheme('blueTheme', echartsTheme)
-      const dom = document.getElementById('form')
-      const form = echarts.init(dom,'blueTheme',{
-        renderer: 'canvas',
-        width: dom.offsetWidth,
-        height: dom.offsetHeight
-      })
-      form.setOption({
+      currentExpoList: [],
+      formData: {
         xAxis: {
           type: 'category',
           boundaryGap: false,
-          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+          data: ['Sun']
         },
         yAxis: {
           type: 'value'
@@ -124,30 +106,78 @@ export default {
         },
         series: [
           {
-            data: [200, 932, 901, 934, 1290, 1330, 1320],
+            data: [1320],
             type: 'line',
             smooth: true,
             areaStyle: {}
           }
         ]
+      },
+      wait_receive: 0
+    }
+  },
+  computed: {
+    user() { return this.$store.state.user.user }
+  },
+  mounted() {
+    this.init()
+    // this.initForm()
+  },
+  methods: {
+    initForm() {
+      echarts.registerTheme('blueTheme', echartsTheme)
+      const dom = document.getElementById('form')
+      const form = echarts.init(dom, 'blueTheme', {
+        renderer: 'canvas',
+        width: dom.offsetWidth,
+        height: dom.offsetHeight
       })
+      form.setOption(this.formData)
     },
     init() {
       getExpoList(1, 20).then(res => {
         const expoList = res.data.data
         for (const item of expoList) {
           if (item.status === 0 && this.getEndDay(item.end_date) >= 0) {
+            console.log(this.getEndDay(item.end_date))
             this.currentExpoList.push(item)
           }
         }
-        this.currentExpo = this.currentExpoList.length > 0 ? expoList[0] : false
-      }).catch(err => {
-        this.$notify({
-          title: '提示',
-          message: '获取展会列表失败'+err,
-          type: 'error'
-        })
+        this.currentExpo = (this.currentExpoList.length > 0) ? this.currentExpoList[0] : false
+        return getAudienceList(1, 100, '', 0, this.currentExpo.id, 1)
       })
+        .then(res => {
+          this.wait_receive = res.data.total
+          return getAudienceList(1, 100, '', 0, this.currentExpo.id, '')
+        })
+        .then(res => {
+          const data = new Map()
+          let length = 0
+          res.data.data.forEach(item => {
+            console.log(item)
+            const itemDate = new Date(item.create_time).getMonth() + 1 + '月' + new Date(item.create_time).getDate() + '日'
+            if (length < 7) {
+              if (data.has(itemDate)) {
+                data.set(itemDate, data.get(itemDate) + 1)
+              } else {
+                length += 1
+                data.set(itemDate, 1)
+              }
+            }
+          })
+          const reversedMap = new Map([...data].reverse())
+          this.formData.xAxis.data = Array.from(reversedMap.keys())
+          this.formData.series[0].data = Array.from(reversedMap.values())
+          console.log(data)
+          this.initForm()
+        })
+        .catch(err => {
+          this.$notify({
+            title: '提示',
+            message: '获取展会列表失败' + err,
+            type: 'error'
+          })
+        })
     },
     getEndDay(date) {
       const endTime = new Date(date)

+ 3 - 3
src/views/exhibitorManage/exhibitorSetting.vue

@@ -63,9 +63,6 @@ export default Vue.extend({
           this.exhibitorSetting.social_links = JSON.parse(this.exhibitorSetting.social_links)
           this.initEditor()
           this.loading = false
-          return getTemplateList(1,100)
-        }).then(res2 => {
-          this.templateList = res2.data.data
         }).catch(err => {
           this.$notify({
             title: '提示',
@@ -94,6 +91,9 @@ export default Vue.extend({
       } else {
         this.initEditor()
       }
+      getTemplateList(1, 1000).then(res => {
+        this.templateList = res.data.data
+      })
       getFormList(1, 1000).then(res => {
         this.formList = res.data.data
       }).catch(err => {

+ 2 - 2
src/views/inviteRebate/index.vue

@@ -28,12 +28,12 @@ export default Vue.extend({
     <div class="amount-count">
       <div class="background">Rebate</div>
       <div class="amount">
-        <div class="title">累计获得返利:</div>
+        <div class="title">我的钱包余额:</div>
         <div class="count">¥100</div>
       </div>
       <div class="button-list">
         <div class="button">
-          <div class="text">绑定取款账户</div>
+          <div class="text">绑定取款账户<span class="el-icon-top-right"></span></div>
         </div>
         <div class="button">
           <div class="text">复制分享链接</div>

+ 45 - 17
src/views/setting/systemSetting.vue

@@ -1,6 +1,6 @@
 <script>
 import Vue from 'vue'
-import { getMailSettings, saveMailSetting } from '@/api/system'
+import { getMailSettings, saveMailSetting, sentTestEmail } from '@/api/system'
 export default Vue.extend({
   name: 'SystemSetting',
   data() {
@@ -14,6 +14,9 @@ export default Vue.extend({
         recipient_email: '',
         is_ssl: 0
       },
+      recipientSetting: {
+        from_email: ''
+      },
       loading: false
     }
   },
@@ -23,32 +26,57 @@ export default Vue.extend({
   methods: {
     init() {
       this.loading = true
-      getMailSettings().then(res => {
-        this.loading = false
+      getMailSettings(1).then(res => {
         if (res.data) {
           this.mailSetting = res.data
         }
-      }).catch(err => {
-        this.$notify({
-          title: '提示',
-          message: '获取邮箱配置失败' + err,
-          type: 'error'
-        })
+        return getMailSettings(2)
       })
+        .then(res2 => {
+          if (res2.data) {
+            this.recipientSetting = res2.data
+          }
+          this.loading = false
+        })
+        .catch(err => {
+          this.$notify({
+            title: '提示',
+            message: '获取邮箱配置失败' + err,
+            type: 'error'
+          })
+        })
     },
     save() {
       if (this.loading) {
         return
       }
       this.loading = true
-      saveMailSetting(this.mailSetting.id, this.mailSetting.from_name, this.mailSetting.from_email, this.mailSetting.smtp_port, this.mailSetting.smtp_server, this.mailSetting.auth_code, this.mailSetting.is_ssl).then(res => {
-        this.loading = false
-        this.init()
-      }).catch(err => {
+      saveMailSetting(this.mailSetting.id, this.mailSetting.from_name, this.mailSetting.from_email, this.mailSetting.smtp_port, this.mailSetting.smtp_server, this.mailSetting.auth_code, this.mailSetting.is_ssl, 1).then(res => {
+        return saveMailSetting(this.recipientSetting.id, '', this.recipientSetting.from_email, '', '', '', '', 2)
+      })
+        .then(res3 => {
+          this.$notify({
+            title: '提示',
+            message: '保存邮箱配置成功',
+            type: 'success'
+          })
+          this.loading = false
+          this.init()
+        })
+        .catch(err => {
+          this.$notify({
+            title: '提示',
+            message: '保存邮箱配置失败' + err,
+            type: 'error'
+          })
+        })
+    },
+    sentTest(email) {
+      sentTestEmail(email).then(res => {
         this.$notify({
           title: '提示',
-          message: '保存邮箱配置失败' + err,
-          type: 'error'
+          message: '发送测试邮件成功',
+          type: 'success'
         })
       })
     }
@@ -106,11 +134,11 @@ export default Vue.extend({
             <div class="label">
               接收通知邮箱
             </div>
-            <el-input placeholder="请输入通知邮箱" />
+            <el-input v-model="recipientSetting.from_email" v-permission="'setting.system.receiveEmail'" placeholder="请输入通知邮箱" />
           </div>
           <div class="setting-item" />
           <div class="setting-item">
-            <el-button type="primary">发送测试邮件</el-button>
+            <el-button v-permission="'setting.system.sentEmail'" type="primary" @click="sentTest(recipientSetting.from_email)">发送测试邮件</el-button>
           </div>
         </div>
       </div>