更新完成全部ajax获取数据

pull/30/head
taoshihan1991 5 years ago
parent 42500db064
commit a450c67b96

@ -5,7 +5,6 @@ import (
"fmt" "fmt"
"github.com/taoshihan1991/imaptool/tmpl" "github.com/taoshihan1991/imaptool/tmpl"
"github.com/taoshihan1991/imaptool/tools" "github.com/taoshihan1991/imaptool/tools"
"html/template"
"log" "log"
"net/http" "net/http"
"strconv" "strconv"
@ -55,7 +54,25 @@ func index(w http.ResponseWriter, r *http.Request) {
//输出列表 //输出列表
func list(w http.ResponseWriter, r *http.Request) { func list(w http.ResponseWriter, r *http.Request) {
tmpl.RenderList(w, nil) values := r.URL.Query()
fid := ""
currentPage := 0
if len(values["fid"]) != 0 {
fid = values["fid"][0]
}
if len(values["page"]) != 0 {
currentPage, _ = strconv.Atoi(values["page"][0])
}
if fid == "" {
fid = "INBOX"
}
if currentPage == 0 {
currentPage = 1
}
render := new(tools.IndexData)
render.CurrentPage = currentPage
render.Fid = fid
tmpl.RenderList(w, render)
} }
//详情界面 //详情界面
@ -74,28 +91,30 @@ func view(w http.ResponseWriter, r *http.Request) {
} else { } else {
id = 0 id = 0
} }
//
mailServer:=tools.GetMailServerFromCookie(r) //mailServer:=tools.GetMailServerFromCookie(r)
var wg sync.WaitGroup //var wg sync.WaitGroup
var render = new(tools.ViewData) var render = new(tools.ViewData)
wg.Add(1)
go func() {
defer wg.Done()
folders := tools.GetFolders(mailServer.Server, mailServer.Email, mailServer.Password, fid)
render.Folders = folders
render.Fid = fid render.Fid = fid
}() render.Id = id
wg.Add(1) //wg.Add(1)
go func() { //go func() {
defer wg.Done() // defer wg.Done()
mail := tools.GetMessage(mailServer.Server, mailServer.Email, mailServer.Password, fid, id) // folders := tools.GetFolders(mailServer.Server, mailServer.Email, mailServer.Password, fid)
render.From = mail.From // render.Folders = folders
render.To = mail.To // render.Fid = fid
render.Subject = mail.Subject //}()
render.Date = mail.Date //wg.Add(1)
render.HtmlBody = template.HTML(mail.Body) //go func() {
}() // defer wg.Done()
wg.Wait() // mail := tools.GetMessage(mailServer.Server, mailServer.Email, mailServer.Password, fid, id)
// render.From = mail.From
// render.To = mail.To
// render.Subject = mail.Subject
// render.Date = mail.Date
// render.HtmlBody = template.HTML(mail.Body)
//}()
//wg.Wait()
tmpl.RenderView(w, render) tmpl.RenderView(w, render)
} }
@ -146,6 +165,7 @@ func check(w http.ResponseWriter, r *http.Request) {
w.Write(msg) w.Write(msg)
} }
} }
//邮件夹接口 //邮件夹接口
func folders(w http.ResponseWriter, r *http.Request) { func folders(w http.ResponseWriter, r *http.Request) {
values := r.URL.Query() values := r.URL.Query()
@ -196,6 +216,7 @@ func folders(w http.ResponseWriter, r *http.Request) {
}) })
w.Write(msg) w.Write(msg)
} }
//邮件接口 //邮件接口
func mail(w http.ResponseWriter, r *http.Request) { func mail(w http.ResponseWriter, r *http.Request) {
values := r.URL.Query() values := r.URL.Query()
@ -247,4 +268,3 @@ func mail(w http.ResponseWriter, r *http.Request) {
}) })
w.Write(msg) w.Write(msg)
} }

@ -7,7 +7,6 @@
<title>GO-IMAP网页版邮箱imap工具</title> <title>GO-IMAP网页版邮箱imap工具</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/element-ui@2.13.1/lib/theme-chalk/index.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/element-ui@2.13.1/lib/theme-chalk/index.css">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue-router/dist/vue-router.js"></script>
<script src="https://cdn.jsdelivr.net/npm/element-ui@2.13.1/lib/index.js"></script> <script src="https://cdn.jsdelivr.net/npm/element-ui@2.13.1/lib/index.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js"></script>
<style> <style>
@ -42,6 +41,9 @@
margin-left: 10px; margin-left: 10px;
margin-bottom: 60px; margin-bottom: 60px;
} }
.el-card__body{
cursor: pointer;
}
</style> </style>
</head> </head>
@ -90,27 +92,14 @@
:total="mailTotal"> :total="mailTotal">
</el-pagination> </el-pagination>
</el-main> </el-main>
<router-view></router-view>
</el-container> </el-container>
</template> </template>
<template id="mailList">
<div>aaa</div>
</template>
</div> </div>
</body> </body>
<script> <script>
const list = { template: mailList };
const view = { template: '<div>bbb</div>' };
const routes = [
{ path: '/', component: list },
{ path: '/view', component: view }
];
const router = new VueRouter({
routes // (缩写) 相当于 routes: routes
})
new Vue({ new Vue({
router,
el: '#app', el: '#app',
delimiters:["<{","}>"], delimiters:["<{","}>"],
data: { data: {
@ -151,7 +140,7 @@
}, },
}, },
created: function () { created: function () {
this.getFolders(); this.getFolders({{.CurrentPage}},{{.Fid}});
} }
}) })

@ -9,5 +9,5 @@ import (
func RenderList(w http.ResponseWriter, render interface{}) { func RenderList(w http.ResponseWriter, render interface{}) {
html := tools.FileGetContent("html/list.html") html := tools.FileGetContent("html/list.html")
t, _ := template.New("list").Parse(html) t, _ := template.New("list").Parse(html)
t.Execute(w,nil) t.Execute(w, render)
} }

@ -4,6 +4,7 @@ import (
"net/http" "net/http"
"strings" "strings"
) )
func SetCookie(name string, value string, w *http.ResponseWriter) { func SetCookie(name string, value string, w *http.ResponseWriter) {
cookie := http.Cookie{ cookie := http.Cookie{
Name: name, Name: name,
@ -33,4 +34,3 @@ func GetMailServerFromCookie(r *http.Request)*MailServer{
} }
return mailServer return mailServer
} }

@ -4,6 +4,7 @@ import (
"fmt" "fmt"
"mime" "mime"
) )
func main() { func main() {
dec := new(mime.WordDecoder) dec := new(mime.WordDecoder)
header, err := dec.DecodeHeader("=?utf-8?q?=C3=89ric?= <eric@example.org>, =?utf-8?q?Ana=C3=AFs?= <anais@example.org>") header, err := dec.DecodeHeader("=?utf-8?q?=C3=89ric?= <eric@example.org>, =?utf-8?q?Ana=C3=AFs?= <anais@example.org>")

@ -1,6 +1,7 @@
package tools package tools
import "html/template" import "html/template"
type MailServer struct { type MailServer struct {
Server, Email, Password string Server, Email, Password string
} }

Loading…
Cancel
Save