From 4e1859708f3c00c9a7b79a3489ac9a6640f8f7b7 Mon Sep 17 00:00:00 2001 From: litian <2804272236@qq.com> Date: 星期二, 28 五月 2024 18:18:39 +0800 Subject: [PATCH] yuedu --- src/views/index.vue | 11 src/assets/main.css | 5 public/resource.json | 939 +++++++++++++++++++ src/views/components/dictionary.vue | 42 src/qiankunState/state.ts | 3 src/assets/images/menu/daiban.png | 0 src/assets/images/menu/jisuanqi.png | 0 src/assets/images/menu/fanqiezhong.png | 0 src/main.ts | 39 src/assets/js/middleGround/api/edu.js | 13 src/views/login.vue | 2 src/assets/images/operation/Note-b.svg | 1 src/assets/js/middleGround/WebMiddleGroundApi.js | 2 src/child.ts | 2 src/views/bookshelfList/list.vue | 226 ++++ src/router/index.ts | 15 src/views/home.vue | 1571 +++++++++++++++++++++---------- src/App.vue | 36 18 files changed, 2,268 insertions(+), 639 deletions(-) diff --git a/public/resource.json b/public/resource.json new file mode 100644 index 0000000..a123547 --- /dev/null +++ b/public/resource.json @@ -0,0 +1,939 @@ +[ + { + "index": 1, + "resourceName": "1-1銆丮ODULE 1锛坙esson one锛�", + "md5": "3B2BB09BF969690D2914A5DF9F56E964", + "resourceType": "PPT", + "chapterNum": 5, + "chapter": "MODULE1 CHINA,A WONDERLAND", + "section": "lesson one ", + "pagination": 18, + "isTeacherResource": "鏄�" + }, + { + "index": 2, + "resourceName": "1-1銆丮ODULE 1锛坙esson one 锛�", + "md5": "3B2BB09BF969690D2914A5DF9F56E964", + "resourceType": "PPT", + "chapterNum": 5, + "chapter": "MODULE1 CHINA,A WONDERLAND", + "section": "lesson one ", + "pagination": 18, + "isTeacherResource": "鏄�" + }, + { + "index": 3, + "resourceName": "01-Module one Lesson 1-Listening", + "md5": "422139A2EF66EA888C5ED1D550AE23E0", + "resourceType": "闊抽", + "chapterNum": 5, + "chapter": "MODULE1 CHINA,A WONDERLAND", + "section": "lesson one ", + "pagination": 13, + "isTeacherResource": "鍚�" + }, + { + "index": 4, + "resourceName": "02-Module one Lesson 1-Reading", + "md5": "3F442B682D84C8AB06C800B29D734920", + "resourceType": "闊抽", + "chapterNum": 5, + "chapter": "MODULE1 CHINA,A WONDERLAND", + "section": "lesson one ", + "pagination": 13, + "isTeacherResource": "鍚�" + }, + { + "index": 5, + "resourceName": "03-Module one Lesson 1-Reading-Words&Expressions", + "md5": "E8719EC88026BCFB11D292AA999F6D3D", + "resourceType": "闊抽", + "chapterNum": 5, + "chapter": "MODULE1 CHINA,A WONDERLAND", + "section": "lesson one ", + "pagination": 14, + "isTeacherResource": "鍚�" + }, + { + "index": 6, + "resourceName": "1-2銆丮ODULE 1锛坙esson two锛�", + "md5": "CE90404D3022BEC7678CAA42F55B53F9", + "resourceType": "PPT", + "chapterNum": 5, + "chapter": "MODULE1 CHINA,A WONDERLAND", + "section": "lesson two", + "pagination": 23, + "isTeacherResource": "鏄�" + }, + { + "index": 7, + "resourceName": "04-Module one Lesson 2-Reading ", + "md5": "43AAC2E2725009F975A611DDB5AF41A4", + "resourceType": "闊抽", + "chapterNum": 5, + "chapter": "MODULE1 CHINA,A WONDERLAND", + "section": "lesson two", + "pagination": 20, + "isTeacherResource": "鍚�" + }, + { + "index": 8, + "resourceName": "05-Module one Lesson 2-Reading-Words&Expressions", + "md5": "9B2DC045F8CD6697F14784714D472DBB", + "resourceType": "闊抽", + "chapterNum": 5, + "chapter": "MODULE1 CHINA,A WONDERLAND", + "section": "lesson two", + "pagination": 21, + "isTeacherResource": "鍚�" + }, + { + "index": 9, + "resourceName": "1-3銆丮ODULE 1锛坙esson three锛�", + "md5": "A598DD3E100CD2A0A100AF1C2AC53F15", + "resourceType": "PPT", + "chapterNum": 5, + "chapter": "MODULE1 CHINA,A WONDERLAND", + "section": "lesson three", + "pagination": 28, + "isTeacherResource": "鏄�" + }, + { + "index": 10, + "resourceName": "06-Module one Lesson 3-Listening-1", + "md5": "D3DD18BEA1DCB8CF3772E9D1DCC8B893", + "resourceType": "闊抽", + "chapterNum": 5, + "chapter": "MODULE1 CHINA,A WONDERLAND", + "section": "lesson three", + "pagination": 14, + "isTeacherResource": "鍚�" + }, + { + "index": 11, + "resourceName": "07-Module one Lesson 3-Listening-2", + "md5": "F7026C57657D78745D38676F7854E9D7", + "resourceType": "闊抽", + "chapterNum": 5, + "chapter": "MODULE1 CHINA,A WONDERLAND", + "section": "lesson three", + "pagination": 14, + "isTeacherResource": "鍚�" + }, + { + "index": 12, + "resourceName": "2-1銆丮ODULE 2锛坙esson one 锛�", + "md5": "962F7ABE3FEF61D27C6ADB2C68730092", + "resourceType": "PPT", + "chapterNum": 6, + "chapter": "MODULE2 GOING GLOBAL", + "section": "lesson one ", + "pagination": 37, + "isTeacherResource": "鏄�" + }, + { + "index": 13, + "resourceName": "08-Module Two Lesson 1-Listening ", + "md5": "D96D6F8082786B037A2B1842860BC0C4 ", + "resourceType": "闊抽", + "chapterNum": 6, + "chapter": "MODULE2 GOING GLOBAL", + "section": "lesson one ", + "pagination": 31, + "isTeacherResource": "鍚�" + }, + { + "index": 14, + "resourceName": "09-Module Two Lesson 1-Reading", + "md5": "E51F6E052B08F00B19819E4D5504219F", + "resourceType": "闊抽", + "chapterNum": 6, + "chapter": "MODULE2 GOING GLOBAL", + "section": "lesson one ", + "pagination": 31, + "isTeacherResource": "鍚�" + }, + { + "index": 15, + "resourceName": "10-Module Two Lesson 1-Reading-Words&Expressions ", + "md5": "1456A70576E21C0E8C1497916A6E8D57", + "resourceType": "闊抽", + "chapterNum": 6, + "chapter": "MODULE2 GOING GLOBAL", + "section": "lesson one ", + "pagination": 32, + "isTeacherResource": "鍚�" + }, + { + "index": 16, + "resourceName": "2-2銆丮ODULE 2锛坙esson two锛�", + "md5": "7FDFE8A1F0C925A90D9ED370C4417C72", + "resourceType": "PPT", + "chapterNum": 6, + "chapter": "MODULE2 GOING GLOBAL", + "section": "lesson two", + "pagination": 42, + "isTeacherResource": "鏄�" + }, + { + "index": 17, + "resourceName": "11-Module Two Lesson 2-Warm-up", + "md5": "7301D06AC2208C93FE05A9952C8858E7", + "resourceType": "闊抽", + "chapterNum": 6, + "chapter": "MODULE2 GOING GLOBAL", + "section": "lesson two", + "pagination": 37, + "isTeacherResource": "鍚�" + }, + { + "index": 18, + "resourceName": "12-Module Two Lesson 2-Reading ", + "md5": "85198824B16CA185AFF073275FC394BE", + "resourceType": "闊抽", + "chapterNum": 6, + "chapter": "MODULE2 GOING GLOBAL", + "section": "lesson two", + "pagination": 38, + "isTeacherResource": "鍚�" + }, + { + "index": 19, + "resourceName": "13-Module Two Lesson 2-Reading-Words&Expressions", + "md5": "148CD1F30A60DAF665B4E4678755D767", + "resourceType": "闊抽", + "chapterNum": 6, + "chapter": "MODULE2 GOING GLOBAL", + "section": "lesson two", + "pagination": 39, + "isTeacherResource": "鍚�" + }, + { + "index": 20, + "resourceName": "2-3銆丮ODULE 2锛坙esson three锛�", + "md5": "5CA19662B7E5F39AF73B907F5C4513F8", + "resourceType": "PPT", + "chapterNum": 6, + "chapter": "MODULE2 GOING GLOBAL", + "section": "lesson three", + "pagination": 47, + "isTeacherResource": "鏄�" + }, + { + "index": 21, + "resourceName": "14-Module Two Lesson 3-Listening 1", + "md5": "7CE34F30D8440BAE15D4A76479834434", + "resourceType": "闊抽", + "chapterNum": 6, + "chapter": "MODULE2 GOING GLOBAL", + "section": "lesson three", + "pagination": 33, + "isTeacherResource": "鍚�" + }, + { + "index": 22, + "resourceName": "15-Module Two Lesson 3-Listening 2", + "md5": "D5080B2EEBFE29233A6DB282B1A28D6C", + "resourceType": "闊抽", + "chapterNum": 6, + "chapter": "MODULE2 GOING GLOBAL", + "section": "lesson three", + "pagination": 33, + "isTeacherResource": "鍚�" + }, + { + "index": 23, + "resourceName": "3-1銆丮ODULE 3锛坙esson one 锛�", + "md5": "91ED78195E3A140520285007E8B07496", + "resourceType": "PPT", + "chapterNum": 7, + "chapter": "MODULE3 A BETTER WORLD WITH VOLUNTEER", + "section": "lesson one ", + "pagination": 55, + "isTeacherResource": "鏄�" + }, + { + "index": 24, + "resourceName": "16-Module Three Lesson 1-Listening", + "md5": "BE415E5F4ACF889844A235A19832EB42", + "resourceType": "闊抽", + "chapterNum": 7, + "chapter": "MODULE3 A BETTER WORLD WITH VOLUNTEER", + "section": "lesson one ", + "pagination": 49, + "isTeacherResource": "鍚�" + }, + { + "index": 25, + "resourceName": "17-Module Three Lesson 1-Reading", + "md5": "CAA563DB7727326EF9469C71E198DC20", + "resourceType": "闊抽", + "chapterNum": 7, + "chapter": "MODULE3 A BETTER WORLD WITH VOLUNTEER", + "section": "lesson one ", + "pagination": 50, + "isTeacherResource": "鍚�" + }, + { + "index": 26, + "resourceName": "18-Module Three Lesson 1-Reading-Words&Expressions ", + "md5": "E18F33A25DEB9B77CCBA5FC2977E3385", + "resourceType": "闊抽", + "chapterNum": 7, + "chapter": "MODULE3 A BETTER WORLD WITH VOLUNTEER", + "section": "lesson one ", + "pagination": 51, + "isTeacherResource": "鍚�" + }, + { + "index": 27, + "resourceName": "3-2銆丮ODULE 3锛坙esson two 锛�", + "md5": "104F0A7AC131026929589FBEBC29BAFB", + "resourceType": "PPT", + "chapterNum": 7, + "chapter": "MODULE3 A BETTER WORLD WITH VOLUNTEER", + "section": "lesson two", + "pagination": 61, + "isTeacherResource": "鏄�" + }, + { + "index": 28, + "resourceName": "19-Module Three Lesson 2-Listening ", + "md5": "EE3DC2A770CB6280D5F57930017F8473", + "resourceType": "闊抽", + "chapterNum": 7, + "chapter": "MODULE3 A BETTER WORLD WITH VOLUNTEER", + "section": "", + "pagination": "", + "isTeacherResource": "鍚�", + "鎻掑叆鏍峰紡璇︾粏璇存槑": "涔︿腑浣嶇疆娌℃湁璇ヨ祫婧愪綅缃�" + }, + { + "index": 29, + "resourceName": "19-Module Three Lesson 2-Reading", + "md5": "6CC658238756D3B60721712FA2453082", + "resourceType": "闊抽", + "chapterNum": 7, + "chapter": "MODULE3 A BETTER WORLD WITH VOLUNTEER", + "section": "lesson two", + "pagination": 57, + "isTeacherResource": "鍚�" + }, + { + "index": 30, + "resourceName": "20-Module Three Lesson 2-Reading-Words&Expressions", + "md5": "7E56A7028EFD4ECB1320DB02D079F2A2", + "resourceType": "闊抽", + "chapterNum": 7, + "chapter": "MODULE3 A BETTER WORLD WITH VOLUNTEER", + "section": "lesson two", + "pagination": 58, + "isTeacherResource": "鍚�" + }, + { + "index": 31, + "resourceName": "3-3銆丮ODULE 3锛坙esson three 锛�", + "md5": "79B3C4727A3648ED0D7D77D985083599", + "resourceType": "PPT", + "chapterNum": 7, + "chapter": "MODULE3 A BETTER WORLD WITH VOLUNTEER", + "section": "lesson three", + "pagination": 66, + "isTeacherResource": "鏄�" + }, + { + "index": 32, + "resourceName": "21-Module Three Lesson 3-Listening 1", + "md5": "E143D4F451EA8172C368005710C4692B", + "resourceType": "闊抽", + "chapterNum": 7, + "chapter": "MODULE3 A BETTER WORLD WITH VOLUNTEER", + "section": "lesson three", + "pagination": 62, + "isTeacherResource": "鍚�" + }, + { + "index": 33, + "resourceName": "22-Module Three Lesson 3-Listening 2 ", + "md5": "B9FD8D144AB41BB9BFB7D363F0FD7975", + "resourceType": "闊抽", + "chapterNum": 7, + "chapter": "MODULE3 A BETTER WORLD WITH VOLUNTEER", + "section": "lesson three", + "pagination": 62, + "isTeacherResource": "鍚�" + }, + { + "index": 34, + "resourceName": "4-1銆丮ODULE 4锛坙esson one锛�", + "md5": "C1EEDE2F8E823D035E8AFBAA367D8623", + "resourceType": "PPT", + "chapterNum": 8, + "chapter": "MODULE4 TECHNOLOGY AND OUR LIFE", + "section": "lesson one ", + "pagination": 75, + "isTeacherResource": "鏄�" + }, + { + "index": 35, + "resourceName": "23-Module Four Lesson 1-Listening", + "md5": "A502FE9E4A034ACF1B055B1D547C4B8F", + "resourceType": "闊抽", + "chapterNum": 8, + "chapter": "MODULE4 TECHNOLOGY AND OUR LIFE", + "section": "lesson one ", + "pagination": 70, + "isTeacherResource": "鍚�" + }, + { + "index": 36, + "resourceName": "24-Module Four Lesson 1-Reading ", + "md5": "59A4053C6BE193D9A97945841614841D", + "resourceType": "闊抽", + "chapterNum": 8, + "chapter": "MODULE4 TECHNOLOGY AND OUR LIFE", + "section": "lesson one ", + "pagination": 70, + "isTeacherResource": "鍚�" + }, + { + "index": 37, + "resourceName": "25-Module Four Lesson 1-Reading-Words&Expressions", + "md5": "541CA8B7A9AE8746340C1259A83F8422", + "resourceType": "闊抽", + "chapterNum": 8, + "chapter": "MODULE4 TECHNOLOGY AND OUR LIFE", + "section": "lesson one ", + "pagination": 71, + "isTeacherResource": "鍚�" + }, + { + "index": 38, + "resourceName": "4-2銆丮ODULE 4锛坙esson two锛� ", + "md5": "2A3BF5E3075DDD2EA5B4887CF08AF33E", + "resourceType": "PPT", + "chapterNum": 8, + "chapter": "MODULE4 TECHNOLOGY AND OUR LIFE", + "section": "lesson two", + "pagination": 81, + "isTeacherResource": "鏄�" + }, + { + "index": 39, + "resourceName": "26-Module Four Lesson 2-Reading ", + "md5": "53A742267A1C22C01B8D5D35B13D3B9A", + "resourceType": "闊抽", + "chapterNum": 8, + "chapter": "MODULE4 TECHNOLOGY AND OUR LIFE", + "section": "lesson two", + "pagination": 76, + "isTeacherResource": "鍚�" + }, + { + "index": 40, + "resourceName": "27-Module Four Lesson 2-Reading-Words&Expressions", + "md5": "2683C3F79104E353CE30961433F6AB35", + "resourceType": "闊抽", + "chapterNum": 8, + "chapter": "MODULE4 TECHNOLOGY AND OUR LIFE", + "section": "lesson two", + "pagination": 77, + "isTeacherResource": "鍚�" + }, + { + "index": 41, + "resourceName": "4-3銆丮ODULE 4锛坙esson three锛� ", + "md5": "92A9E5D4CA97A09947F9E6DD39292AEF", + "resourceType": "PPT", + "chapterNum": 8, + "chapter": "MODULE4 TECHNOLOGY AND OUR LIFE", + "section": "lesson three", + "pagination": 86, + "isTeacherResource": "鏄�" + }, + { + "index": 42, + "resourceName": "28-Module Four Lesson 3-Listening 1", + "md5": "393DD3913EF74B1CCCADCE8EC81EC7E2", + "resourceType": "闊抽", + "chapterNum": 8, + "chapter": "MODULE4 TECHNOLOGY AND OUR LIFE", + "section": "lesson three", + "pagination": 81, + "isTeacherResource": "鍚�" + }, + { + "index": 43, + "resourceName": "29-Module Four Lesson 3-Listening 2", + "md5": "B65A5824313D5331C53AF83FDB42D6AC", + "resourceType": "闊抽", + "chapterNum": 8, + "chapter": "MODULE4 TECHNOLOGY AND OUR LIFE", + "section": "lesson three", + "pagination": 82, + "isTeacherResource": "鍚�" + }, + { + "index": 44, + "resourceName": "5-1銆丮ODULE 5锛坙esson one锛�", + "md5": "4713C703ABB481B5FD8CB59D4BCEDB44", + "resourceType": "PPT", + "chapterNum": 9, + "chapter": "MODULE5 BETTER PLANET,BETTER HOME", + "section": "lesson one ", + "pagination": 94, + "isTeacherResource": "鏄�" + }, + { + "index": 45, + "resourceName": "30-Module Five Lesson 1-Listening ", + "md5": "66F0637DD5232C224AF3A791D043A0A7", + "resourceType": "闊抽", + "chapterNum": 9, + "chapter": "MODULE5 BETTER PLANET,BETTER HOME", + "section": "lesson one ", + "pagination": 88, + "isTeacherResource": "鍚�" + }, + { + "index": 46, + "resourceName": "31-Module Five Lesson 1-Reading ", + "md5": "157842B38CA587C8134070E66D174DDE", + "resourceType": "闊抽", + "chapterNum": 9, + "chapter": "MODULE5 BETTER PLANET,BETTER HOME", + "section": "lesson one ", + "pagination": 89, + "isTeacherResource": "鍚�" + }, + { + "index": 47, + "resourceName": "32-Module Five Lesson 1-Reading-Words&Expressions", + "md5": "F0060BCF874B78E05E2DC9FE317A6D37", + "resourceType": "闊抽", + "chapterNum": 9, + "chapter": "MODULE5 BETTER PLANET,BETTER HOME", + "section": "lesson one ", + "pagination": 90, + "isTeacherResource": "鍚�" + }, + { + "index": 48, + "resourceName": "5-2銆丮ODULE 5锛坙esson two锛�", + "md5": "6621ED56EDC5B274F01BBDF8CC68E799", + "resourceType": "PPT", + "chapterNum": 9, + "chapter": "MODULE5 BETTER PLANET,BETTER HOME", + "section": "lesson two", + "pagination": 100, + "isTeacherResource": "鏄�" + }, + { + "index": 49, + "resourceName": "33-Module Five Lesson 2-Reading", + "md5": "4AC860B7C2CEB89231AF97F85275A9C6", + "resourceType": "闊抽", + "chapterNum": 9, + "chapter": "MODULE5 BETTER PLANET,BETTER HOME", + "section": "lesson two", + "pagination": 96, + "isTeacherResource": "鍚�" + }, + { + "index": 50, + "resourceName": "34-Module Five Lesson 2-Reading-Words&Expressions ", + "md5": "31AE82BE3BFCD4F772C7C3AFD27D0E31", + "resourceType": "闊抽", + "chapterNum": 9, + "chapter": "MODULE5 BETTER PLANET,BETTER HOME", + "section": "lesson two", + "pagination": 97, + "isTeacherResource": "鍚�" + }, + { + "index": 51, + "resourceName": "5-3銆丮ODULE 5锛坙esson three锛�", + "md5": "764736AD5A058748C59CD108953D1E0B", + "resourceType": "PPT", + "chapterNum": 9, + "chapter": "MODULE5 BETTER PLANET,BETTER HOME", + "section": "lesson three", + "pagination": 105, + "isTeacherResource": "鏄�" + }, + { + "index": 52, + "resourceName": "35-Module Five Lesson 3-Listening 1 ", + "md5": "5D9F90ABD53E30608E09A0DEE07401C1", + "resourceType": "闊抽", + "chapterNum": 9, + "chapter": "MODULE5 BETTER PLANET,BETTER HOME", + "section": "lesson three", + "pagination": 101, + "isTeacherResource": "鍚�" + }, + { + "index": 53, + "resourceName": "36-Module Five Lesson 3-Listening 2", + "md5": "3DF0EEC6B4334C0C7FF7BC69F8322C22", + "resourceType": "闊抽", + "chapterNum": 9, + "chapter": "MODULE5 BETTER PLANET,BETTER HOME", + "section": "lesson three", + "pagination": 101, + "isTeacherResource": "鍚�" + }, + { + "index": 54, + "resourceName": "37-Module Five Unit Project", + "md5": "BB6F58469CF7056440FE458E82960F4A", + "resourceType": "闊抽", + "chapterNum": 9, + "chapter": "MODULE5 BETTER PLANET,BETTER HOME", + "section": "lesson three", + "pagination": 105, + "isTeacherResource": "鍚�" + }, + { + "index": 55, + "resourceName": "6-1銆丮ODULE 6锛坙esson one锛� ", + "md5": "8805836F4D952A280157DEE1F58B1F07", + "resourceType": "PPT", + "chapterNum": 10, + "chapter": "MODULE6 A GLIMPSE OF THR WORK ENVIRONMENT", + "section": "lesson one ", + "pagination": 114, + "isTeacherResource": "鏄�" + }, + { + "index": 56, + "resourceName": "38-Module Six Lesson 1-Listening\t", + "md5": "AB15FA5A96B3FA325489F2E6620827FD\t", + "resourceType": "闊抽", + "chapterNum": 10, + "chapter": "MODULE6 A GLIMPSE OF THR WORK ENVIRONMENT", + "section": "lesson one ", + "pagination": 109, + "isTeacherResource": "鍚�" + }, + { + "index": 57, + "resourceName": "39-Module Six Lesson 1-Reading ", + "md5": "DF353557BE4B2C0E71BB2A50C0CA753C", + "resourceType": "闊抽", + "chapterNum": 10, + "chapter": "MODULE6 A GLIMPSE OF THR WORK ENVIRONMENT", + "section": "lesson one ", + "pagination": 109, + "isTeacherResource": "鍚�" + }, + { + "index": 58, + "resourceName": "40-Module Six Lesson 1-Reading-Words&Expressions ", + "md5": "88F39B788C726DD5DB25F429570FFF7D", + "resourceType": "闊抽", + "chapterNum": 10, + "chapter": "MODULE6 A GLIMPSE OF THR WORK ENVIRONMENT", + "section": "lesson one ", + "pagination": 110, + "isTeacherResource": "鍚�" + }, + { + "index": 59, + "resourceName": "6-2銆丮ODULE 6锛坙esson two锛�", + "md5": "3504E1248920017C76D416BA50E157C4", + "resourceType": "PPT", + "chapterNum": 10, + "chapter": "MODULE6 A GLIMPSE OF THR WORK ENVIRONMENT", + "section": "lesson two", + "pagination": 121, + "isTeacherResource": "鏄�" + }, + { + "index": 60, + "resourceName": "41-Module Six Lesson 2-Reading", + "md5": "B32CC91B062501D0D75349EC300C37EA", + "resourceType": "闊抽", + "chapterNum": 10, + "chapter": "MODULE6 A GLIMPSE OF THR WORK ENVIRONMENT", + "section": "lesson two", + "pagination": 116, + "isTeacherResource": "鍚�" + }, + { + "index": 61, + "resourceName": "42-Module Six Lesson 2-Reading-Words&Expressions(1) ", + "md5": "0CFCC206E2DC45FBA070CD9CD7F0428B", + "resourceType": "闊抽", + "chapterNum": 10, + "chapter": "MODULE6 A GLIMPSE OF THR WORK ENVIRONMENT", + "section": "lesson two", + "pagination": 117, + "isTeacherResource": "鍚�" + }, + { + "index": 62, + "resourceName": "6-3銆丮ODULE 6锛坙esson three锛�", + "md5": "713A0651ED9F26C2EEAACD1248BE98FF", + "resourceType": "PPT", + "chapterNum": 10, + "chapter": "MODULE6 A GLIMPSE OF THR WORK ENVIRONMENT", + "section": "lesson three", + "pagination": 126, + "isTeacherResource": "鏄�" + }, + { + "index": 63, + "resourceName": "43-Module Six Lesson 3-Listening 1", + "md5": "B392589318D7CC282BE811EDA2D8E6B0", + "resourceType": "闊抽", + "chapterNum": 10, + "chapter": "MODULE6 A GLIMPSE OF THR WORK ENVIRONMENT", + "section": "lesson three", + "pagination": 121, + "isTeacherResource": "鍚�" + }, + { + "index": 64, + "resourceName": "44-Module Six Lesson 3-Listening 2", + "md5": "625FDB71EC5BD35CF489AA4DE6730373", + "resourceType": "闊抽", + "chapterNum": 10, + "chapter": "MODULE6 A GLIMPSE OF THR WORK ENVIRONMENT", + "section": "lesson three", + "pagination": 122, + "isTeacherResource": "鍚�" + }, + { + "index": 65, + "resourceName": "7-1銆丮ODULE 7锛坙esson one锛�", + "md5": "AFCF0AF62F3AEE0B2AD3D9F1A34C0BAE", + "resourceType": "PPT", + "chapterNum": 11, + "chapter": "MODULE7 WORK ETHIC AND SUCCESS IN THE WORKPLACE", + "section": "lesson one ", + "pagination": 134, + "isTeacherResource": "鏄�" + }, + { + "index": 66, + "resourceName": "45-Module Seven Lesson 1-Listening", + "md5": "20D9B02E3B0C95E7CD524224C57E643A", + "resourceType": "闊抽", + "chapterNum": 11, + "chapter": "MODULE7 WORK ETHIC AND SUCCESS IN THE WORKPLACE", + "section": "lesson one ", + "pagination": 129, + "isTeacherResource": "鍚�" + }, + { + "index": 67, + "resourceName": "46-Module Seven Lesson 1-Reading ", + "md5": "01A4E8C1E8E2801EF48DDBBA3E4A30BD", + "resourceType": "闊抽", + "chapterNum": 11, + "chapter": "MODULE7 WORK ETHIC AND SUCCESS IN THE WORKPLACE", + "section": "lesson one ", + "pagination": 130, + "isTeacherResource": "鍚�" + }, + { + "index": 68, + "resourceName": "47-Module Seven Lesson 1-Reading-Words&Expressions", + "md5": "8D5057637DBB959B365E38360121FB41", + "resourceType": "闊抽", + "chapterNum": 11, + "chapter": "MODULE7 WORK ETHIC AND SUCCESS IN THE WORKPLACE", + "section": "lesson one ", + "pagination": 131, + "isTeacherResource": "鍚�" + }, + { + "index": 69, + "resourceName": "7-2銆丮ODULE 7锛坙esson two锛�", + "md5": "7DCB21F624B0928D3FEC68FC25E7E8E9", + "resourceType": "PPT", + "chapterNum": 11, + "chapter": "MODULE7 WORK ETHIC AND SUCCESS IN THE WORKPLACE", + "section": "lesson two", + "pagination": 138, + "isTeacherResource": "鏄�" + }, + { + "index": 70, + "resourceName": "48-Module Seven Lesson 2-Reading", + "md5": "113D24C2D701120C0F6283A72F9F4366", + "resourceType": "闊抽", + "chapterNum": 11, + "chapter": "MODULE7 WORK ETHIC AND SUCCESS IN THE WORKPLACE", + "section": "lesson two", + "pagination": 135, + "isTeacherResource": "鍚�" + }, + { + "index": 71, + "resourceName": "49-Module Seven Lesson 2-Reading-Words&Expressions", + "md5": "DE0C4081FE1FFE2374EDB989609B25E9", + "resourceType": "闊抽", + "chapterNum": 11, + "chapter": "MODULE7 WORK ETHIC AND SUCCESS IN THE WORKPLACE", + "section": "lesson two", + "pagination": 136, + "isTeacherResource": "鍚�" + }, + { + "index": 72, + "resourceName": "7-3銆丮ODULE 7锛坙esson three锛�", + "md5": "F37024A9011D81F7E6199D511AF26A7E", + "resourceType": "PPT", + "chapterNum": 11, + "chapter": "MODULE7 WORK ETHIC AND SUCCESS IN THE WORKPLACE", + "section": "lesson three", + "pagination": 143, + "isTeacherResource": "鏄�" + }, + { + "index": 73, + "resourceName": "50-Module Seven Lesson 3-Listening 1", + "md5": "DB59D9F65B437605F766F7975026B61D", + "resourceType": "闊抽", + "chapterNum": 11, + "chapter": "MODULE7 WORK ETHIC AND SUCCESS IN THE WORKPLACE", + "section": "lesson three", + "pagination": 139, + "isTeacherResource": "鍚�" + }, + { + "index": 74, + "resourceName": "51-Module Seven Lesson 3-Listening 2", + "md5": "53543E43DC90215C21CFC432D46CAB18", + "resourceType": "闊抽", + "chapterNum": 11, + "chapter": "MODULE7 WORK ETHIC AND SUCCESS IN THE WORKPLACE", + "section": "lesson three", + "pagination": 139, + "isTeacherResource": "鍚�" + }, + { + "index": 75, + "resourceName": "8-1銆丮ODULE 8锛坙esson one锛�", + "md5": "13C04E5D87E99850A743AB9EEE8BFD30", + "resourceType": "PPT", + "chapterNum": 12, + "chapter": "MODULE8 THE FIRST STEP TOWARD A CAREER", + "section": "lesson one ", + "pagination": 152, + "isTeacherResource": "鏄�" + }, + { + "index": 76, + "resourceName": "52-Module Eight Lesson 1-Listening", + "md5": "0D60202A6F614D6B23AF7C48AFC39AB6", + "resourceType": "闊抽", + "chapterNum": 12, + "chapter": "MODULE8 THE FIRST STEP TOWARD A CAREER", + "section": "lesson one ", + "pagination": 147, + "isTeacherResource": "鍚�" + }, + { + "index": 77, + "resourceName": "53-Module Eight Lesson 1-Reading", + "md5": "8C19582CDE35B48FDA735B7E0C206F77", + "resourceType": "闊抽", + "chapterNum": 12, + "chapter": "MODULE8 THE FIRST STEP TOWARD A CAREER", + "section": "lesson one ", + "pagination": 147, + "isTeacherResource": "鍚�" + }, + { + "index": 78, + "resourceName": "54-Module Eight Lesson 1-Reading-Words&Expressions", + "md5": "946A5702CC80B0DB657CCFD66DEE1515", + "resourceType": "闊抽", + "chapterNum": 12, + "chapter": "MODULE8 THE FIRST STEP TOWARD A CAREER", + "section": "lesson one ", + "pagination": 148, + "isTeacherResource": "鍚�" + }, + { + "index": 79, + "resourceName": "8-2銆丮ODULE 8锛坙esson two锛�", + "md5": "691BB643727AD0F4DAC5101DC7BACE07", + "resourceType": "PPT", + "chapterNum": 12, + "chapter": "MODULE8 THE FIRST STEP TOWARD A CAREER", + "section": "lesson two", + "pagination": 159, + "isTeacherResource": "鏄�" + }, + { + "index": 80, + "resourceName": "55-Module Eight Lesson 2-Reading ", + "md5": "ADAFFAB7BC7A868574889809AB1166A6", + "resourceType": "闊抽", + "chapterNum": 12, + "chapter": "MODULE8 THE FIRST STEP TOWARD A CAREER", + "section": "lesson two", + "pagination": 154, + "isTeacherResource": "鍚�" + }, + { + "index": 81, + "resourceName": "56-Module Eight Lesson 2-Reading-Words&Expressions", + "md5": "966C8CEB3448A41D92BDF9B494F02B88", + "resourceType": "闊抽", + "chapterNum": 12, + "chapter": "MODULE8 THE FIRST STEP TOWARD A CAREER", + "section": "lesson two", + "pagination": 155, + "isTeacherResource": "鍚�" + }, + { + "index": 82, + "resourceName": "8-3銆丮ODULE 8锛坙esson three锛�", + "md5": "62F8CEE1D02966E34591AF62828985BC", + "resourceType": "PPT", + "chapterNum": 12, + "chapter": "MODULE8 THE FIRST STEP TOWARD A CAREER", + "section": "lesson three", + "pagination": "", + "isTeacherResource": "鏄�", + "鎻掑叆鏍峰紡璇︾粏璇存槑": "涔︿笂娌℃湁浣嶇疆" + }, + { + "index": 83, + "resourceName": "57-Module Eight Lesson 3-Listening 1", + "md5": "76546423FCFAB4B861BC8B94C97D24A2", + "resourceType": "闊抽", + "chapterNum": 12, + "chapter": "MODULE8 THE FIRST STEP TOWARD A CAREER", + "section": "lesson three", + "pagination": 159, + "isTeacherResource": "鍚�" + }, + { + "index": 84, + "resourceName": "58-Module Eight Lesson 3-Listening 2", + "md5": "717A3B915B114D7DC5CA9D3AAA1FC3ED", + "resourceType": "闊抽", + "chapterNum": 12, + "chapter": "MODULE8 THE FIRST STEP TOWARD A CAREER", + "section": "lesson three", + "pagination": 160, + "isTeacherResource": "鍚�" + }, + { + "index": 85, + "resourceName": "寰", + "md5": "29A9C275EEF0BF71C52BE68D8842C0E4", + "resourceType": "瑙嗛", + "chapterNum": "", + "chapter": "", + "section": "", + "pagination": "", + "isTeacherResource": "鍚�" + } +] diff --git a/src/App.vue b/src/App.vue index 3fa40f4..806b0a1 100644 --- a/src/App.vue +++ b/src/App.vue @@ -99,18 +99,36 @@ .catch(() => {}) }) } +const getUrlParam = (paraName) => { + var url = window.location.toString() + var arrObj = url.split('?') + if (arrObj.length > 1) { + var arrPara = arrObj[1].split('&') + var arr + for (var i = 0; i < arrPara.length; i++) { + arr = arrPara[i].split('=') + if (arr != null && arr[0] == paraName) { + return arr[1] + } + } + return '' + } else { + return '' + } +} -const token = localStorage.getItem('token') -if (token) { +let tokens = getUrlParam('token') +let bookId = getUrlParam('bookId') +let tryPageCount = getUrlParam('tryPageCount') +localStorage.setItem('bookId', bookId) +localStorage.setItem('tryPageCount', tryPageCount) +const token = localStorage.getItem('token') || tokens +localStorage.setItem('token', token) +if (tokens && bookId) { router.replace({ - path: '/home' + path: '/home', + query: { bookId: bookId } }) - // request({ - // url: '/identity/User/GetCurrentUser', - // method: 'post' - // }).then((res) => { - // // console.log(res) - // }) } else { router.replace({ path: '/login' diff --git a/src/assets/images/menu/daiban.png b/src/assets/images/menu/daiban.png new file mode 100644 index 0000000..a2954f4 --- /dev/null +++ b/src/assets/images/menu/daiban.png Binary files differ diff --git a/src/assets/images/menu/fanqiezhong.png b/src/assets/images/menu/fanqiezhong.png new file mode 100644 index 0000000..05396e3 --- /dev/null +++ b/src/assets/images/menu/fanqiezhong.png Binary files differ diff --git a/src/assets/images/menu/jisuanqi.png b/src/assets/images/menu/jisuanqi.png new file mode 100644 index 0000000..57ccf85 --- /dev/null +++ b/src/assets/images/menu/jisuanqi.png Binary files differ diff --git a/src/assets/images/operation/Note-b.svg b/src/assets/images/operation/Note-b.svg new file mode 100644 index 0000000..b19c1a9 --- /dev/null +++ b/src/assets/images/operation/Note-b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="17.193" height="17.457" viewBox="0 0 15.193 17.457"><defs><style>.a{fill:#282828;}</style></defs><g transform="translate(-66.4 -0.15)"><path class="a" d="M621.322.823a1.781,1.781,0,0,0-.587-.566.752.752,0,0,0-.832.055l-.389.45,1.494,1.166.314-.416A.606.606,0,0,0,621.322.823Zm-.784,1.719-1.487-1.173-2.967,3.949a1.082,1.082,0,0,0-.286.621l-.2,1.241c.068.416.368.266.368.266l1.125-.539a1.6,1.6,0,0,0,.621-.607l2.824-3.758Z" transform="translate(-539.836 0)"/><path class="a" d="M80.2,94.806a.44.44,0,0,1-.436.436H67.689a.44.44,0,0,1-.436-.436V81.289a.44.44,0,0,1,.436-.436h9.9l.5-.853h-10.4A1.292,1.292,0,0,0,66.4,81.289V94.806A1.292,1.292,0,0,0,67.689,96.1H79.767a1.292,1.292,0,0,0,1.289-1.289V82.373l-.853,1Z" transform="translate(0 -78.489)"/><path class="a" d="M236.939,361.793H229a.423.423,0,0,0,0,.846h7.939a.423.423,0,0,0,0-.846Zm0-3.349H229a.423.423,0,1,0,0,.846h7.939a.423.423,0,1,0,0-.846ZM229.2,355.8l-.123-.252-.109.252H228.4l.382-.716-.368-.682H229l.1.225.1-.225h.566l-.361.7.382.7Zm1.6,0-.116-.252-.116.252H230l.382-.716-.361-.682h.58l.1.225.1-.225h.566l-.361.7.382.7Zm1.6,0-.116-.252-.116.252h-.566l.382-.716-.361-.682h.58l.1.225.089-.225h.566l-.361.7.389.7Zm1.6,0-.116-.252-.116.252h-.566l.382-.716-.361-.682h.58l.1.225.089-.225h.566l-.361.7.389.7Z" transform="translate(-159.238 -348.21)"/></g></svg> \ No newline at end of file diff --git a/src/assets/js/middleGround/WebMiddleGroundApi.js b/src/assets/js/middleGround/WebMiddleGroundApi.js index 0611524..189817d 100644 --- a/src/assets/js/middleGround/WebMiddleGroundApi.js +++ b/src/assets/js/middleGround/WebMiddleGroundApi.js @@ -4,11 +4,13 @@ import store from "./api/store.js"; import identity from "./api/identity.js"; import app from "./api/app.js"; +import edu from "./api/edu.js"; const WebMiddleGroundApi = { store, identity, app, + edu }; export default WebMiddleGroundApi; diff --git a/src/assets/js/middleGround/api/edu.js b/src/assets/js/middleGround/api/edu.js new file mode 100644 index 0000000..d9cb129 --- /dev/null +++ b/src/assets/js/middleGround/api/edu.js @@ -0,0 +1,13 @@ +import request from '@/plugin/axios/index.ts' +const eduApi = { + // 鑾峰彇鍟嗗搧涓嬬殑缁勫嵎绛栫暐 + findWords(data) { + return request({ + url: '/edu/api/FindWords', + method: 'post', + data, + }) + }, +} + +export default eduApi diff --git a/src/assets/main.css b/src/assets/main.css index 6fdd628..521e39c 100644 --- a/src/assets/main.css +++ b/src/assets/main.css @@ -266,6 +266,9 @@ .el-tree { background: none !important; } +.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{ + background: rgba(0, 147, 255, 0.21) !important; +} .el-tree-node:focus > .el-tree-node__content, .el-tree-node__content:hover { background: rgba(0, 147, 255, 0.21) !important; @@ -304,4 +307,4 @@ .icon-tabler-arrow-bar-to-left,.icon-tabler-arrow-bar-to-right{ color:#707070 !important; -} \ No newline at end of file +} diff --git a/src/child.ts b/src/child.ts index b2592b3..366c3d5 100644 --- a/src/child.ts +++ b/src/child.ts @@ -14,7 +14,7 @@ // - 蹇呴�夛紝寰簲鐢ㄧ殑鍚嶇О锛屽井搴旂敤涔嬮棿蹇呴』纭繚鍞竴 name: 'app-content', // - 蹇呴�夛紝寰簲鐢ㄧ殑鍏ュ彛 - entry: '//182.92.203.7:3007/books/book/1/?t=' + Date.parse(new Date()), + entry: '//182.92.203.7:3007/books/book', // entry: '//192.168.3.203:8080', // - 蹇呴�夛紝寰簲鐢ㄧ殑瀹瑰櫒鑺傜偣鐨勯�夋嫨鍣ㄦ垨鑰� Element 瀹炰緥 container: '#container', diff --git a/src/main.ts b/src/main.ts index 440b309..595c414 100644 --- a/src/main.ts +++ b/src/main.ts @@ -8,52 +8,19 @@ import router from './router' import * as ElementPlusIconsVue from '@element-plus/icons-vue' import toolClass from '@/assets/js/toolClass' -import MG from "@/assets/js/middleGround/WebMiddleGroundApi.js" +import MG from '@/assets/js/middleGround/WebMiddleGroundApi.js' import './child.ts' const handleGetToken = () => { return localStorage.getItem('token') } -const getUrlParam =(paraName)=>{ - var url = window.location.toString(); - var arrObj = url.split("?"); - if (arrObj.length > 1) { - var arrPara = arrObj[1].split("&"); - var arr; - for (var i = 0; i < arrPara.length; i++) { - arr = arrPara[i].split("="); - if (arr != null && arr[0] == paraName) { - return arr[1]; - } - } - return ""; - } else { - return ""; - } -} - // 璺敱鎵ц涔嬪墠鐨勪竴浜涙搷浣� router.beforeEach((to, from, next) => { - let token = getUrlParam('token'); - let bookId = getUrlParam('bookId'); - if(bookId){ - localStorage.setItem('bookId', bookId) - } - - if (token) { - localStorage.setItem('token', token) - - if (to.path === '/login') { - next({ path: '/home' }) - } else { - // 濡傛灉涓嶆槸鐧诲綍椤甸潰锛岃烦杞埌鐩爣鐨勯〉闈� - next() - } - }else if (handleGetToken()) { + if (handleGetToken()) { // 鏄惁鏄櫥褰曢〉闈紝鐩存帴鍒伴椤� if (to.path === '/login') { - next({ path: '/home' }) + next({ path: '/home',query: { bookId: localStorage.getItem('bookId') } }) } else { // 濡傛灉涓嶆槸鐧诲綍椤甸潰锛岃烦杞埌鐩爣鐨勯〉闈� next() diff --git a/src/qiankunState/state.ts b/src/qiankunState/state.ts index affe189..43bce93 100644 --- a/src/qiankunState/state.ts +++ b/src/qiankunState/state.ts @@ -1,10 +1,11 @@ const state = { state: 0, - bookId:0, getBookConfig: null, windowSelection: null, + chooseWords:null, showCatalogList:[], gotoPage:null, + initTestBook:null, renderSign: null, delSign:null, scale:100, diff --git a/src/router/index.ts b/src/router/index.ts index 1242777..49f42f3 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -13,6 +13,7 @@ { path: '/index', name: 'index', + redirect: "/bookshelfList", meta: { auth: true }, component: () => import('@/views/index.vue'), children: [ @@ -49,13 +50,6 @@ ] }, { - path: '/home', - name: 'home', - meta: { auth: true, name: '闃呰鍣�' }, - component: Reader - }, - - { path: '/dictionary', name: 'dictionary', meta: { auth: true, name: '璇嶅吀' }, @@ -63,7 +57,12 @@ } ] }, - + { + path: '/home', + name: 'home', + meta: { auth: true, name: '闃呰鍣�' }, + component: Reader + }, { path: '/login', name: 'login', diff --git a/src/views/bookshelfList/list.vue b/src/views/bookshelfList/list.vue index ce7dc23..1f1f6b4 100644 --- a/src/views/bookshelfList/list.vue +++ b/src/views/bookshelfList/list.vue @@ -14,26 +14,167 @@ </el-input> </div> <div class="manageBox"> - <div class="manageItem"><img :src="jihe" /><div class="label">婵�娲�</div></div> - <div class="manageItem"><img :src="jihe" /><div class="label">绠$悊</div></div> - <div class="manageItem"><img :src="jihe" /><div class="label">鏇村鏁欐潗</div></div> + <div class="manageItem hover" @click="activateShow"> + <img :src="jihe" /> + <div class="label">婵�娲�</div> + </div> + <div class="manageItem"> + <img :src="jihe" /> + <div class="label">绠$悊</div> + </div> + <div class="manageItem"> + <img :src="jihe" /> + <div class="label">鏇村鏁欐潗</div> + </div> </div> </div> - <div class="contentBox"></div> + <div class="content"> + <div class="list-box" v-loading="pages.loading"> + <el-row :gutter="20" v-if="dataList.length > 0"> + <el-col :span="6" v-for="(item, index) in dataList" :key="index"> + <div + class="textbook-body-box hover" + @click="goBookDetails(item)" + > + <div class="book-img"> + <img :src="getPublicImage(item.product.icon, '', '')" alt="" /> + </div> + <div class="books-info"> + <p class="book-title" :title="item.product.name">{{ item.product.name }}</p> + <p class="flex jc-sb"> + <!-- <span class="author" :title="item.author">{{ item.author }}</span> + <span class="price" v-if="item.price == 0">鍏嶈垂</span> + <span class="price" v-else>锟{ item.price.toFixed(2) }}</span> --> + </p> + </div> + </div> + </el-col> + </el-row> + <div v-if="dataList.length == 0 && !pages.loading" class="noData"> + <el-empty :image-size="200" description="鏆傛棤鏁版嵁" /> + </div> + </div> + </div> </div> + <el-dialog + title="婵�娲绘暀鏉�" + align-center + v-model="activateData.dialog" + :before-close="activateClose" + width="400" + class="activateDialog" + > + <div class="formBox"> + <span class="label">婵�娲荤爜</span> + <el-input v-model="activateData.code" placeholder="璇疯緭鍏ユ縺娲荤爜"></el-input> + </div> + <template #footer> + <span class="dialog-footer"> + <el-button @click="activateClose">鍙� 娑�</el-button> + <el-button type="primary" @click="userActiveCodeGet" :loading="activateData.loading" + >纭� 瀹�</el-button + > + </span> + </template> + </el-dialog> </template> <script setup lang="ts"> import { useRouter, onBeforeRouteUpdate } from 'vue-router' -import { ref, onMounted,inject } from 'vue' +import { ref, onMounted, inject, reactive } from 'vue' +import { getPublicImage } from '@/assets/js/middleGround/tool.js' const router = useRouter() const MG: any = inject('MG') import jihe from '@/assets/images/menu/jihe.png' const searchText = ref('') -onMounted(() => {}) +let dataList = ref([]) +let pages = reactive({ + page: 1, + pageSize: 10, + count: 0, + loading: false +}) +onMounted(() => { + getDataList() +}) const searchBook = () => {} + +const getDataList = () => { + pages.loading = true + const searchData = [ + { + keywords: 'jsek_digitalTextbooks', + field: 'ProductType' + } + ] + const data = { + Size: pages.pageSize, + Start: pages.pageSize * pages.page - pages.pageSize, + sort: { + type: 'Desc', + field: 'CreateDate' + }, + searchList: searchData + } + MG.store.getPurchasedProductList(data).then((res) => { + dataList.value = res.datas + pages.count = res.totalSize + pages.loading = false + }) +} + +// 璺宠浆涔︽湰璇︽儏 +const goBookDetails = (item) => { + console.log(item) + router.push({ + name: 'home', + query: { + bookId: item.refCode, + } + }) + // window.open(config.textReaderUrl+ '?bookId=' + item.product.refCode + "&token=" + localStorage.getItem('jsek-token')) +} + +//.銆傛縺娲诲晢鍝� +const activateData = reactive({ + loading:false, + dialog: false, + code:"", +}) +const activateShow =()=>{ + activateData.dialog = true +} +const activateClose =()=>{ + activateData.dialog = false +} +// 浣跨敤婵�娲荤爜 +const userActiveCodeGet = () => { + let lock = true; + if (activateData.code == "") { + ElMessage({ + type: "error", + message: "璇疯緭鍏ユ縺娲荤爜锛�", + }); + } else { + if (lock) { + lock = false; + MG.store + .userActiveCode({ + code: activateData.code, + }) + .then((res) => { + ElMessage({ + type: res == "婵�娲绘垚鍔�" ? "success" : "error", + message: res, + }); + getDataList(); + lock = true; + }); + } + } +} </script> <style lang="less"> @@ -44,30 +185,79 @@ .topBox { display: flex; .searchBox { - padding: 0 20px; - .el-input .el-input__wrapper{ - border-radius:20px !important; - height:34px; - background: #FFFFFF; - + padding: 0 40px; + .el-input .el-input__wrapper { + width:220px; + border-radius: 20px !important; + height: 34px; + background: #ffffff; } } .manageBox { display: flex; .manageItem { margin: 0 15px; - display:flex; + display: flex; align-items: center; justify-content: center; - img{ - width:24px; - height:24px; + img { + width: 24px; + height: 24px; } - .label{ - padding-left:10px; + .label { + min-width: 40px; + padding-left: 10px; } } } } + .content { + padding: 40px; + min-width:1200px; + .textbook-body-box { + display: flex; + .book-img { + width: 130px; + height: 180px; + box-shadow: 0px 0px 20px 1px #ccc; + position: relative; + + img { + width: 100%; + height: 100%; + object-fit: contain; + } + } + + .books-info { + padding: 15px; + flex:1; + .book-title { + font-weight: bold; + height: 45px; + line-height: 22px; + display: -webkit-box; + margin-bottom: 5px; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + text-overflow: ellipsis; + } + } + } + } + .noData { + margin: 100px auto; + } +} +.activateDialog{ + .formBox{ + display:flex; + align-items: center; + .label{ + width:80px; + } + } + } </style> diff --git a/src/views/components/dictionary.vue b/src/views/components/dictionary.vue index 6e6a1d7..49c0079 100644 --- a/src/views/components/dictionary.vue +++ b/src/views/components/dictionary.vue @@ -7,7 +7,7 @@ </template> </el-input> </div> - <div class="resultBox"> + <div class="resultBox" v-if="searchResult.length > 0"> <div v-for="result in searchResult" :key="result.id"> <div class="phone_con"> <div class="per-phone">鑻� /<span>{{result.ukPhone}}</span>/</div> @@ -21,7 +21,7 @@ </div> </div> </div> - <div class="trans"> + <div class="trans" v-if="result.phrase"> <div class="title">璇嶇粍鐭</div> <div v-for="(item,index) in result.phrase" :key="item"> <div class="itemList"> @@ -31,7 +31,7 @@ </div> </div> </div> - <div class="trans"> + <div class="trans" v-if="result.syno"> <div class="title">杩戜箟璇�</div> <div v-for="item in result.syno" :key="item"> <div class="itemList"> @@ -43,7 +43,7 @@ </div> </div> </div> - <div class="trans"> + <div class="trans" v-if="result.sentence"> <div class="title">渚嬪彞</div> <div v-for="(item,index) in result.sentence" :key="item"> <div class="itemList1"> @@ -54,27 +54,18 @@ </div> </div> </div> + <div class="noResultBox" v-else> + 鏆傛棤鍐呭 + </div> </div> </template> <script setup lang="ts"> import { ref, reactive, watch, onMounted, inject } from 'vue' -const request = inject('request') -const props = defineProps({ - searchCon: String -}) +const MG: any = inject('MG') const searchContent = ref('') const isFull = ref(false) -watch(props, (newValue) => { - // 缁熺洃鍚琾rops鐨勫�煎彉鍖栵紝鍔ㄦ�佷慨鏀筰sShow鐨勫�� - searchContent.value = newValue.searchCon - getSearchResult() -}) onMounted(() => { - if(props){ - searchContent.value = props.searchCon - getSearchResult() - } }) const searchResult = ref([]) @@ -82,23 +73,20 @@ const getSearchResult = () => { if (searchContent.value) { - request({ - url: '/edu/api/FindWords', - method: 'post', - data: { + MG.edu.findWords([{ word: searchContent.value, isFull: isFull.value - } - }).then((res) => { + }]).then((res) => { + console.log(res) if (res.length > 0) { - res.map((item) => { + res[0].map((item) => { item.phrase = JSON.parse(item.phrase) item.relWord = JSON.parse(item.relWord) item.sentence = JSON.parse(item.sentence) item.syno = JSON.parse(item.syno) item.trans = JSON.parse(item.trans) }) - searchResult.value = res + searchResult.value = res[0] } }) } @@ -130,6 +118,10 @@ } } } +.noResultBox{ + padding:40px; + text-align: center; +} .resultBox{ padding:20px; .phone_con{ diff --git a/src/views/home.vue b/src/views/home.vue index f8ffa9e..30ceec7 100644 --- a/src/views/home.vue +++ b/src/views/home.vue @@ -1,12 +1,11 @@ <template> <div class="homeBox"> <div class="headerBox"> - <img :src="logo" v-if="bookConfig.textbookOwnership == '鍖椾含甯堣寖澶у鍑虹増闆嗗洟'" /> <!-- <span class="logoTxt" v-else>閾侀亾鍑虹増绀�</span> --> <span></span> <div class="userInfoBox"> - <div class="userName" v-if="userInfo.name">{{userInfo.name}}</div> + <div class="userName" v-if="userInfo.name">{{ userInfo.name }}</div> <div><div class="layout hover" @click="layoutBtn">閫�鍑�</div></div> </div> </div> @@ -100,7 +99,26 @@ <el-icon><Search /></el-icon> </template> <template #suffix> - <svg @click="searchBook" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-list-search hover"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M15 15m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0" /><path d="M18.5 18.5l2.5 2.5" /><path d="M4 6h16" /><path d="M4 12h4" /><path d="M4 18h4" /></svg> + <svg + @click="searchBook" + xmlns="http://www.w3.org/2000/svg" + width="24" + height="24" + viewBox="0 0 24 24" + fill="none" + stroke="currentColor" + stroke-width="2" + stroke-linecap="round" + stroke-linejoin="round" + class="icon icon-tabler icons-tabler-outline icon-tabler-list-search hover" + > + <path stroke="none" d="M0 0h24v24H0z" fill="none" /> + <path d="M15 15m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0" /> + <path d="M18.5 18.5l2.5 2.5" /> + <path d="M4 6h16" /> + <path d="M4 12h4" /> + <path d="M4 18h4" /> + </svg> </template> </el-input> </div> @@ -122,6 +140,8 @@ ref="catalogTree" default-expand-all="true" :expand-on-click-node="false" + highlight-current + node-key="start" :data="catalogueData" :props="defaultProps" v-if="catalogueData.length > 0" @@ -161,8 +181,11 @@ <div class="list-box"> <div v-if="scribeData.noteList.length > 0"> <div v-for="(noteItem, index) in scribeData.noteList" :key="noteItem"> - <div class="chapterName">{{ noteItem.chapterName }}</div> - <div v-for="(item, index) in noteItem.noteList" :key="item.key" class="listItem"> + <div class="chapterName"> + <el-icon @click="noteClose(index)" v-if="scribeData.isShow && scribeData.openIndex == index" class="hover"><ArrowDown /></el-icon> + <el-icon @click="noteOpen(index)" v-else class="hover"><ArrowRight /></el-icon> + <span>{{ noteItem.chapterName }}</span></div> + <div v-for="(item, index1) in noteItem.noteList" :key="item.key" class="listItem" v-show="scribeData.isShow && scribeData.openIndex == index"> <div class="textBox"> <div class="title"> <div class="title-con"> @@ -245,7 +268,26 @@ <el-icon><Search /></el-icon> </template> <template #suffix> - <svg @click="searchBook" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-list-search hover"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M15 15m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0" /><path d="M18.5 18.5l2.5 2.5" /><path d="M4 6h16" /><path d="M4 12h4" /><path d="M4 18h4" /></svg> + <svg + @click="searchBook" + xmlns="http://www.w3.org/2000/svg" + width="20" + height="20" + viewBox="0 0 20 20" + fill="none" + stroke="currentColor" + stroke-width="2" + stroke-linecap="round" + stroke-linejoin="round" + class="icon icon-tabler icons-tabler-outline icon-tabler-list-search hover" + > + <path stroke="none" d="M0 0h24v24H0z" fill="none" /> + <path d="M15 15m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0" /> + <path d="M18.5 18.5l2.5 2.5" /> + <path d="M4 6h16" /> + <path d="M4 12h4" /> + <path d="M4 18h4" /> + </svg> </template> </el-input> </div> @@ -254,8 +296,12 @@ <div v-if="resourceDataList.length > 0" class="resourceList"> <el-row :gutter="20"> <el-col :span="12" v-for="(item, index) in resourceDataList" :key="item"> - <div class="resourceItem hover" @click="goResourceDetail(item)"> - <div class="resourceImg"> + <div class="resourceItem"> + <div + class="resourceImg" + @mouseover="showHandle = index" + @mouseleave="showHandle = null" + > <img :src="item.icon" mode="" v-if="item.icon" /> <el-icon v-else-if="activeClassify == 'image'" size="30"><Picture /></el-icon> <el-icon v-else-if="activeClassify == 'audio'" size="30"><Headset /></el-icon> @@ -266,6 +312,52 @@ <el-icon v-else-if="activeClassify == 'exercises'" size="30" ><Tickets /></el-icon> + <div class="handleBox" v-if="showHandle == index"> + <div class="delImg"> + <el-icon + class="icon hover" + size="20" + @click="JumpPosition(item)" + v-if="resourceType == 'default'" + ><LocationInformation + /></el-icon> + <el-icon + @click="goPlay(item)" + size="20" + class="icon hover" + v-if="item.resourceType == '瑙嗛'" + ><VideoPlay + /></el-icon> + <el-icon + @click="goPlay(item)" + size="20" + class="icon hover" + v-if="item.resourceType == '闊抽'" + ><Headset + /></el-icon> + <el-icon + @click="getCapture(item, index)" + size="20" + class="icon hover" + v-if="item.resourceType == '鍥剧墖'" + ><View + /></el-icon> + <el-icon + size="20" + class="icon hover" + @click="goPlay(item)" + v-if=" + !( + item.resourceType == '瑙嗛' || + item.resourceType == '闊抽' || + item.resourceType == '涔犻' || + item.resourceType == '鍥剧墖' + ) + " + ><Download + /></el-icon> + </div> + </div> </div> <div class="rName" :title="item.resourceName">{{ item.resourceName }}</div> </div> @@ -315,7 +407,7 @@ <div class="list-box"> <div v-if="reMarkList.length > 0"> <div v-for="(item, index) in reMarkList" :key="index" class="reMarkItem"> - <div class="reMarkCon">{{ item.chapterName }} 绗瑊{ item.page }}椤�</div> + <div class="reMarkCon">{{ item.chapterName }} P{{ item.page }}</div> <div class="deleteReMarkImg"> <img :src="shanchu" class="icon hover" @click="deleteReMark(item)" /> </div> @@ -328,11 +420,29 @@ </div> <!-- 鑿滃崟鍐呭鏀惰捣 --> <div class="menuStateBox" v-if="menuState.open"> - <svg @click="menuState.open = false" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-arrow-bar-to-left"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M10 12l10 0" /><path d="M10 12l4 4" /><path d="M10 12l4 -4" /><path d="M4 4l0 16" /></svg> + <svg + @click="menuState.open = false" + xmlns="http://www.w3.org/2000/svg" + width="20" + height="20" + viewBox="0 0 20 20" + fill="none" + stroke="currentColor" + stroke-width="2" + stroke-linecap="round" + stroke-linejoin="round" + class="icon icon-tabler icons-tabler-outline icon-tabler-arrow-bar-to-left" + > + <path stroke="none" d="M0 0h24v24H0z" fill="none" /> + <path d="M10 12l10 0" /> + <path d="M10 12l4 4" /> + <path d="M10 12l4 -4" /> + <path d="M4 4l0 16" /> + </svg> <!-- <img :src="shouqiL" @click="menuState.open = false" /> --> </div> </div> - + <!-- 涓棿鍐呭 --> <div class="pageBox"> <!-- 澶撮儴鏄剧ず --> @@ -364,9 +474,7 @@ <!-- 寰簲鐢ㄧ洅瀛� --> <div class="pageBox-content"> <div class="content-box"> - <div - id="container" :style="{ background: settingForm.bgColorActive }" - ></div> + <div id="container" :style="{ background: settingForm.bgColorActive }"></div> <!-- 鐢荤瑪鐢诲竷 --> <div class="canvas-box" v-show="canvasShow"> <canvas id="canvasRef" :width="canvasWith" :height="canvasheight"></canvas> @@ -374,214 +482,217 @@ </div> </div> <!-- 鐢荤瑪缁勪欢 --> - <div - class="brushBox" - v-if="floatingToolData.activeToolData == '鐢荤瑪'" - > - <div class="toolList"> - <el-popover placement="top" width="250" trigger="click"> - <div class="popinnerBox"> - <div class="brush"> - <div class="thickness"> - <div - :class="toolSelectData.thicknessActive == '1' ? 'small active' : 'small'" - @click="selectThickness('1')" - ></div> - <div - :class="toolSelectData.thicknessActive == '3' ? 'middle active' : 'middle'" - @click="selectThickness('3')" - ></div> - <div - :class="toolSelectData.thicknessActive == '5' ? 'large active' : 'large'" - @click="selectThickness('5')" - ></div> + <div class="brushBox" v-if="floatingToolData.activeToolData == '鐢荤瑪'"> + <div class="toolList"> + <el-popover placement="top" width="250" trigger="click"> + <div class="popinnerBox"> + <div class="brush"> + <div class="thickness"> + <div + :class="toolSelectData.thicknessActive == '1' ? 'small active' : 'small'" + @click="selectThickness('1')" + ></div> + <div + :class="toolSelectData.thicknessActive == '3' ? 'middle active' : 'middle'" + @click="selectThickness('3')" + ></div> + <div + :class="toolSelectData.thicknessActive == '5' ? 'large active' : 'large'" + @click="selectThickness('5')" + ></div> + </div> + <div class="lineStyle"> + <div class="lineTypeBox"> + <div + :class=" + toolSelectData.lineTypeActive == 'solid' + ? 'typeItem lineTypeActive' + : 'typeItem' + " + @click="selectLineType('solid')" + > + <div class="solid"></div> + <div class="activeIcon" v-if="toolSelectData.lineTypeActive == 'solid'"> + <img :src="xuanzhong" /> + </div> + </div> + <div + :class=" + toolSelectData.lineTypeActive == 'dashed' + ? 'typeItem lineTypeActive' + : 'typeItem' + " + @click="selectLineType('dashed')" + > + <div class="dashed"></div> + <div class="activeIcon" v-if="toolSelectData.lineTypeActive == 'dashed'"> + <img :src="xuanzhong" /> + </div> + </div> + </div> + <div class="colorSelectBox"> + <div + v-for="item in colorSelectList" + :key="item.key" + class="flex1 hover" + @click="lineColorSelect(item)" + > + <div :style="{ background: item.key }" class="scribeItem"> + <img :src="xuanzhong" v-if="item.key == toolSelectData.lineColorActive" /> + </div> + </div> + </div> + </div> </div> + </div> + <template #reference> + <div class="floatToolItem hover" @click="toolSelectHandle('huabi')"> + <el-tooltip class="box-item" effect="dark" content="鐢荤瑪" placement="bottom"> + <img :src="huabi2" alt="" class="imgBox" /> + </el-tooltip> + <!-- <div class="text">鐢荤瑪</div> --> + </div> + </template> + </el-popover> + <el-popover placement="top" width="250" trigger="click"> + <div class="popinnerBox"> <div class="lineStyle"> <div class="lineTypeBox"> <div :class=" - toolSelectData.lineTypeActive == 'solid' + toolSelectData.fontSizeActive == '14' ? 'typeItem lineTypeActive' : 'typeItem' " - @click="selectLineType('solid')" + @click="selectfontSize('14')" > - <div class="solid"></div> - <div class="activeIcon" v-if="toolSelectData.lineTypeActive == 'solid'"> + 灏� + <div class="activeIcon" v-if="toolSelectData.fontSizeActive == '14'"> <img :src="xuanzhong" /> </div> </div> <div :class=" - toolSelectData.lineTypeActive == 'dashed' + toolSelectData.fontSizeActive == '16' ? 'typeItem lineTypeActive' : 'typeItem' " - @click="selectLineType('dashed')" + @click="selectfontSize('16')" > - <div class="dashed"></div> - <div class="activeIcon" v-if="toolSelectData.lineTypeActive == 'dashed'"> + 涓� + <div class="activeIcon" v-if="toolSelectData.fontSizeActive == '16'"> + <img :src="xuanzhong" /> + </div> + </div> + <div + :class=" + toolSelectData.fontSizeActive == '18' + ? 'typeItem lineTypeActive' + : 'typeItem' + " + @click="selectfontSize('18')" + > + 澶� + <div class="activeIcon" v-if="toolSelectData.fontSizeActive == '18'"> <img :src="xuanzhong" /> </div> </div> </div> - <div class="colorSelectBox"> - <div - v-for="item in colorSelectList" - :key="item.key" - class="flex1 hover" - @click="lineColorSelect(item)" - > - <div :style="{ background: item.key }" class="scribeItem"> - <img :src="xuanzhong" v-if="item.key == toolSelectData.lineColorActive" /> + <div class="lineStyle"> + <div class="colorSelectBox"> + <div + v-for="item in colorSelectList" + :key="item.key" + class="flex1 hover" + @click="lineColorSelect(item)" + > + <div :style="{ background: item.key }" class="scribeItem"> + <img :src="xuanzhong" v-if="item.key == toolSelectData.lineColorActive" /> + </div> </div> </div> </div> </div> </div> - </div> - <template #reference> - <div class="floatToolItem hover" @click="toolSelectHandle('huabi')"> - <el-tooltip class="box-item" effect="dark" content="鐢荤瑪" placement="bottom"> - <img :src="huabi2" alt="" class="imgBox"/> + <template #reference> + <div class="floatToolItem hover" @click="toolSelectHandle('wenzi')"> + <el-tooltip class="box-item" effect="dark" content="鏂囧瓧" placement="bottom"> + <img :src="wenzi2" alt="" class="imgBox" /> </el-tooltip> - <!-- <div class="text">鐢荤瑪</div> --> - </div> - </template> - </el-popover> - <el-popover placement="top" width="250" trigger="click"> - <div class="popinnerBox"> - <div class="lineStyle"> - <div class="lineTypeBox"> - <div - :class=" - toolSelectData.fontSizeActive == '14' ? 'typeItem lineTypeActive' : 'typeItem' - " - @click="selectfontSize('14')" - > - 灏� - <div class="activeIcon" v-if="toolSelectData.fontSizeActive == '14'"> - <img :src="xuanzhong" /> - </div> - </div> - <div - :class=" - toolSelectData.fontSizeActive == '16' ? 'typeItem lineTypeActive' : 'typeItem' - " - @click="selectfontSize('16')" - > - 涓� - <div class="activeIcon" v-if="toolSelectData.fontSizeActive == '16'"> - <img :src="xuanzhong" /> - </div> - </div> - <div - :class=" - toolSelectData.fontSizeActive == '18' ? 'typeItem lineTypeActive' : 'typeItem' - " - @click="selectfontSize('18')" - > - 澶� - <div class="activeIcon" v-if="toolSelectData.fontSizeActive == '18'"> - <img :src="xuanzhong" /> - </div> - </div> </div> - <div class="lineStyle"> - <div class="colorSelectBox"> - <div - v-for="item in colorSelectList" - :key="item.key" - class="flex1 hover" - @click="lineColorSelect(item)" - > - <div :style="{ background: item.key }" class="scribeItem"> - <img :src="xuanzhong" v-if="item.key == toolSelectData.lineColorActive" /> + </template> + </el-popover> + <el-popover placement="top" width="250" trigger="click"> + <div class="popinnerBox"> + <div class="graphBox"> + <div class="graphSelect"> + <div class="flex1"> + <div class="square hover" @click="graphSelect('square')"></div> + </div> + <div class="flex1"> + <div class="rotundity hover" @click="graphSelect('rotundity')"></div> + </div> + <div class="flex1"> + <div class="triangle hover" @click="graphSelect('triangle')"></div> + </div> + <div class="flex1"> + <div class="lineSegment hover" @click="graphSelect('lineSegment')">/</div> + </div> + </div> + <div class="lineStyle"> + <div class="colorSelectBox"> + <div + v-for="item in colorSelectList" + :key="item.key" + class="flex1 hover" + @click="lineColorSelect(item)" + > + <div :style="{ background: item.key }" class="scribeItem"> + <img :src="xuanzhong" v-if="item.key == toolSelectData.lineColorActive" /> + </div> </div> </div> </div> </div> </div> - </div> - <template #reference> - <div class="floatToolItem hover" @click="toolSelectHandle('wenzi')"> - <el-tooltip class="box-item" effect="dark" content="鏂囧瓧" placement="bottom"> - <img :src="wenzi2" alt="" class="imgBox"/> - </el-tooltip> - </div> - </template> - </el-popover> - <el-popover placement="top" width="250" trigger="click"> - <div class="popinnerBox"> - <div class="graphBox"> - <div class="graphSelect"> - <div class="flex1"> - <div class="square hover" @click="graphSelect('square')"></div> - </div> - <div class="flex1"> - <div class="rotundity hover" @click="graphSelect('rotundity')"></div> - </div> - <div class="flex1"> - <div class="triangle hover" @click="graphSelect('triangle')"></div> - </div> - <div class="flex1"> - <div class="lineSegment hover" @click="graphSelect('lineSegment')">/</div> - </div> + <template #reference> + <div class="floatToolItem hover" @click="toolSelectHandle('tuxing')"> + <el-tooltip class="box-item" effect="dark" content="鍥惧舰" placement="bottom"> + <img :src="tuxing" alt="" class="imgBox" /> + </el-tooltip> </div> - <div class="lineStyle"> - <div class="colorSelectBox"> - <div - v-for="item in colorSelectList" - :key="item.key" - class="flex1 hover" - @click="lineColorSelect(item)" - > - <div :style="{ background: item.key }" class="scribeItem"> - <img :src="xuanzhong" v-if="item.key == toolSelectData.lineColorActive" /> - </div> - </div> - </div> - </div> - </div> - </div> - <template #reference> - <div class="floatToolItem hover" @click="toolSelectHandle('tuxing')"> - <el-tooltip class="box-item" effect="dark" content="鍥惧舰" placement="bottom"> - <img :src="tuxing" alt="" class="imgBox"/> - </el-tooltip> - </div> - </template> - </el-popover> - <!-- <div class="floatToolItem" @click="toolSelectHandle('xiangpi')"> + </template> + </el-popover> + <!-- <div class="floatToolItem" @click="toolSelectHandle('xiangpi')"> <div class="imgBox"> <img :src="clear" alt="" /> </div> <div class="text">姗$毊鎿�</div> </div> --> - <div class="floatToolItem hover" @click="toolSelectHandle('chexiao')"> - <el-tooltip class="box-item" effect="dark" content="鎾ら攢" placement="bottom"> - <img :src="clearPrevious" alt="" class="imgBox"/> - </el-tooltip> - </div> - <!-- <div class="floatToolItem" @click="toolSelectHandle('chongzuo')"> + <div class="floatToolItem hover" @click="toolSelectHandle('chexiao')"> + <el-tooltip class="box-item" effect="dark" content="鎾ら攢" placement="bottom"> + <img :src="clearPrevious" alt="" class="imgBox" /> + </el-tooltip> + </div> + <!-- <div class="floatToolItem" @click="toolSelectHandle('chongzuo')"> <div class="imgBox"> <img :src="chongzuo" alt="" /> </div> <div class="text">閲嶅仛</div> </div> --> - <div class="floatToolItem hover" @click="toolSelectHandle('qingchu')"> - <el-tooltip class="box-item" effect="dark" content="娓呴櫎" placement="bottom"> - <img :src="qingchu2" alt="" class="imgBox"/> - </el-tooltip> - </div> - <div class="layOutTool"></div> - <div class="floatToolItem hover" @click="toolSelectHandle('tuichu')"> - <el-tooltip class="box-item" effect="dark" content="閫�鍑�" placement="bottom"> - <img :src="tuichu" alt="" class="imgBox"/> - </el-tooltip> + <div class="floatToolItem hover" @click="toolSelectHandle('qingchu')"> + <el-tooltip class="box-item" effect="dark" content="娓呴櫎" placement="bottom"> + <img :src="qingchu2" alt="" class="imgBox" /> + </el-tooltip> + </div> + <div class="layOutTool"></div> + <div class="floatToolItem hover" @click="toolSelectHandle('tuichu')"> + <el-tooltip class="box-item" effect="dark" content="閫�鍑�" placement="bottom"> + <img :src="tuichu" alt="" class="imgBox" /> + </el-tooltip> + </div> </div> </div> - </div> </div> <!-- 鏁欏缁勪欢 --> <div class="toolBox"> @@ -607,8 +718,46 @@ <div :class="['openBox', toolState.open ? 'right' : '']"> <!-- <img :src="shouqiR" v-if="toolState.open" @click="toolState.open = false" /> --> <!-- <img :src="shouqiL" v-if="!toolState.open" @click="toolState.open = true" /> --> - <svg v-if="!toolState.open" @click="toolState.open = true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-arrow-bar-to-left"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M10 12l10 0" /><path d="M10 12l4 4" /><path d="M10 12l4 -4" /><path d="M4 4l0 16" /></svg> - <svg v-if="toolState.open" @click="toolState.open = false" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-arrow-bar-to-right"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M14 12l-10 0" /><path d="M14 12l-4 4" /><path d="M14 12l-4 -4" /><path d="M20 4l0 16" /></svg> + <svg + v-if="!toolState.open" + @click="toolState.open = true" + xmlns="http://www.w3.org/2000/svg" + width="24" + height="24" + viewBox="0 0 24 24" + fill="none" + stroke="currentColor" + stroke-width="2" + stroke-linecap="round" + stroke-linejoin="round" + class="icon icon-tabler icons-tabler-outline icon-tabler-arrow-bar-to-left" + > + <path stroke="none" d="M0 0h24v24H0z" fill="none" /> + <path d="M10 12l10 0" /> + <path d="M10 12l4 4" /> + <path d="M10 12l4 -4" /> + <path d="M4 4l0 16" /> + </svg> + <svg + v-if="toolState.open" + @click="toolState.open = false" + xmlns="http://www.w3.org/2000/svg" + width="24" + height="24" + viewBox="0 0 24 24" + fill="none" + stroke="currentColor" + stroke-width="2" + stroke-linecap="round" + stroke-linejoin="round" + class="icon icon-tabler icons-tabler-outline icon-tabler-arrow-bar-to-right" + > + <path stroke="none" d="M0 0h24v24H0z" fill="none" /> + <path d="M14 12l-10 0" /> + <path d="M14 12l-4 4" /> + <path d="M14 12l-4 -4" /> + <path d="M20 4l0 16" /> + </svg> </div> <div class="classRoomBox" v-if="false"> <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick"> @@ -683,13 +832,10 @@ : 'floatToolItem' " > - <el-tooltip - class="box-item" - effect="dark" - :content="item.name" - placement="right" - > - <img :src="item.icon" alt="" /> + <el-tooltip class="box-item" effect="dark" :content="item.name" placement="right"> + <div class="imgBox"> + <img :src="item.icon" alt="" /> + </div> </el-tooltip> <!-- <div class="text">{{ item.name }}</div> --> </div> @@ -704,14 +850,16 @@ v-else > <el-tooltip class="box-item" effect="dark" :content="item.name" placement="right"> - <img :src="item.icon" alt="" /> + <div class="imgBox"> + <img :src="item.icon" alt="" /> + </div> </el-tooltip> <!-- <div class="text">{{ item.name }}</div> --> </div> </div> </div> </div> - + <!-- 閫変腑宸ュ叿鏍� --> <div class="dialogToolBox" @@ -732,16 +880,15 @@ </div> </div> <div class="toolSelectBox" v-show="!(toolActive == '楂樹寒' || toolActive == '鍒掔嚎')"> - <div - v-for="item in dialogToolList" - :key="item.icon" - @click="dialogToolHandle(item)" - > - <div :class="item.name == toolActive ? 'dialogToolItem active' : 'dialogToolItem'" v-if="item.isShow"> - <el-tooltip class="box-item" effect="dark" :content="item.name" placement="bottom"> - <img :src="item.icon" alt="" /> - </el-tooltip> - </div> + <div v-for="item in dialogToolList" :key="item.icon" @click="dialogToolHandle(item)"> + <div + :class="item.name == toolActive ? 'dialogToolItem active' : 'dialogToolItem'" + v-if="item.isShow" + > + <el-tooltip class="box-item" effect="dark" :content="item.name" placement="bottom"> + <img :src="item.icon" alt="" /> + </el-tooltip> + </div> <!-- <span>{{ item.name }}</span> --> </div> </div> @@ -757,8 +904,52 @@ <!-- <el-button @click="delUserKey">鍒犻櫎</el-button> --> <div class="dialogToolItem"> <el-tooltip class="box-item" effect="dark" content="鍒犻櫎" placement="bottom"> - <img :src="trash" @click="delUserKey"/> + <img :src="trash" @click="delUserKey" /> </el-tooltip> + </div> + <div class="dialogToolItem"> + <el-tooltip class="box-item" effect="dark" content="绗旇" placement="bottom" v-if="isUpdate"> + <img :src="noteUpdate" @click="updateNote" /> + </el-tooltip> + </div> + </div> + <!-- 绗旇鎮诞妗� --> + <div + class="noteContentBox" + v-show="noteContent.show" + :style="{ + top: `${noteContent.top}px`, + left: `${noteContent.left}px`, + background: noteContent.color + }" + > + <div>{{ noteContent.note }}</div> + </div> + <!-- 鑻辨枃涔﹂�変腑鍗曡瘝璇嶅吀鍐呭 --> + <div + class="dictionaryDataBox" + v-if="dictionaryData.showContent" + :style="{ top: `${dialogToolData.top}px`, left: `${dialogToolData.left}px` }" + > + <div class="content"> + <div class="phone_con"> + <div class="per-phone"> + 鑻� /<span>{{ dictionaryData.data.ukPhone }}</span + >/ + </div> + <div class="per-phone"> + 缇� /<span>{{ dictionaryData.data.usPhone }}</span + >/ + </div> + </div> + <div class="trans"> + <div v-for="item in dictionaryData.data.trans" :key="item"> + <div class="itemList"> + <div class="pos">{{ item.pos }}.</div> + <div class="tranCn">{{ item.tranCn }}</div> + </div> + </div> + </div> </div> </div> @@ -766,9 +957,13 @@ <div class="videoBox" v-if="resourType == '瑙嗛'"> <video controls controlslist="nodownload" :src="testVideo"></video> </div> - <div class="wordBox" v-if="resourType == 'word'"> - <vue-office-docx :src="testWord" /> + <div class="videoBox" v-if="resourType == '闊抽'"> + <!-- <video controls controlslist="nodownload" :src="testVideo"></video> --> + <audio ref="audioPlayer" :src="testVideo" controls></audio> </div> + <!-- <div class="wordBox" v-if="resourType == 'word'"> + <vue-office-docx :src="testWord" /> + </div> --> </el-dialog> <!-- 鍥剧墖 --> <el-image-viewer @@ -838,15 +1033,21 @@ <iframe :src="'https://baike.baidu.com/item/' + dialogToolData.txt" frameborder="0"></iframe> </div> </el-dialog> - <el-dialog title="AI鏅鸿兘闂瓟" align-center v-model="wendaVisible" width="60%" class="myDialogs"> + <el-dialog + title="AI鏅鸿兘闂瓟" + align-center + v-model="wendaVisible" + width="60%" + class="myAnserDialogs" + > <div class="wendabox"> <iframe src="https://yiyan.baidu.com/" frameborder="0"></iframe> </div> </el-dialog> - <el-dialog title="璇嶅吀" align-center v-model="cidianVisible" width="60%" class="myDialogs"> + <el-dialog title="璇嶅吀" align-center v-model="cidianVisible" width="60%" class="myAnserDialogs"> <div class="wendabox"> <!-- <iframe src="https://www.vocabulary.com/" frameborder="0"></iframe> --> - <dictionary :searchCon="dialogToolData.txt" /> + <dictionary /> </div> </el-dialog> <el-dialog @@ -912,6 +1113,9 @@ import cjiajia from '@/assets/images/menu/C++.png' import javascript from '@/assets/images/menu/Javascript.png' import moxinggongju from '@/assets/images/menu/moxinggongju.png' +import jisuanqi from '@/assets/images/menu/jisuanqi.png' +import fanqiezhong from '@/assets/images/menu/fanqiezhong.png' +import daiban from '@/assets/images/menu/daiban.png' import shouqiR from '@/assets/images/menu/shouqi-R.png' import shouqiL from '@/assets/images/menu/shouqi-L.png' import charuziyuan from '../assets/images/operation/charuziyuan.png' @@ -920,12 +1124,12 @@ import dati_charu_blue from '../assets/images/operation/dati_charu_blue.png' import xiake from '../assets/images/operation/xiake.png' -import huabi from '../assets/images/operation/brush.svg' +import huabi from '../assets/images/operation/huabi-w.png' import wenzi2 from '../assets/images/operation/wenzi.png' -import biaoqianw from '../assets/images/operation/bookmark-plus.svg' -import baiban from '../assets/images/operation/chalkboard.svg' +import biaoqianw from '../assets/images/operation/biaoqian-w.png' +import baiban from '../assets/images/operation/baiban-w.png' import biaozhu from '../assets/images/operation/pencil-minus.svg' -import jieping from '../assets/images/operation/crop.svg' +import jieping from '../assets/images/operation/screenshot-w.png' import clearPrevious from '../assets/images/operation/clearPrevious.png' import hide from '../assets/images/operation/hide.png' import show from '../assets/images/operation/show.png' @@ -959,6 +1163,7 @@ import zoomOut from '../assets/images/operation/zoomOut.png' import huabi2 from '../assets/images/operation/huabi.svg' import trash from '../assets/images/operation/trash.svg' +import noteUpdate from '../assets/images/operation/Note-b.svg' import shanchu from '../assets/images/operation/delete.png' import bianji from '../assets/images/operation/bianji.png' @@ -984,6 +1189,7 @@ let microApp = null // 寰簲鐢ㄥ疄渚� const bookConfig = ref({}) const activeCatalog = ref() +const reMarResult = ref() onMounted(() => { getUserInfo() setTimeout(() => { @@ -1016,13 +1222,15 @@ window.qiankunActions.onGlobalStateChange((state, prev) => { console.log('鐖跺眰state鍙樺寲', state) window.qiankunState = state + if (window.qiankunState && window.qiankunState.initTestBook) { + window.qiankunState.initTestBook(localStorage.getItem('bookId') + '',localStorage.getItem('tryPageCount')) + } }) // 瀹氫箟鐖跺眰鏂规硶 - console.log(window.qiankunActions) window.qiankunActions.setGlobalState({ state: 1, // 鍔犺浇瀛愬簲鐢� - bookId: localStorage.getItem('bookId'), + windowSelection: (data) => { // 缁戝畾瀛愬簲鐢ㄩ�夋嫨鐩戝惉浜嬩欢 console.log(data, '瀛愬簲鐢ㄩ�夋嫨') @@ -1031,17 +1239,30 @@ } else { showToolBox.value = false lineDelete.showLineDelete = false + dictionaryData.showContent = false toolActive.value = '' lineDelete.top = data.y + 20 lineDelete.left = data.x } }, + chooseWords: (data) => { + console.log(data, '鑻辫鐢熻瘝') + if(data){ + dialogToolData.txt = data.word + dialogToolData.left = data.x + dialogToolData.top = data.y + 20 + getSearchResult() + } + + + }, getBookConfig: (data) => { - console.log(data, '鍥句功閰嶇疆') + console.log(data.bookConfig, '鍥句功閰嶇疆') bookConfig.value = data.bookConfig getCatalogueData() getResourceData() getTextbookComponents() + getReMarkList() }, catalogChange: (data) => { activeCatalog.value = data.showCatalogList @@ -1051,67 +1272,78 @@ pageChange: (data) => { headerData.process = Number(data.page) currentChapter.value = data.catalog + // catalogTree.value.filter(Number(data.start)) console.log(data, '椤甸潰鍒囨崲锛氱洰鍓嶆樉绀洪〉闈㈠拰瀵瑰簲鐨勭珷鑺備俊鎭�') + if (catalogTree.value) { + catalogTree.value.setCurrentKey(Number(data.page)) + } + showToolBox.value = false + lineDelete.showLineDelete = false + dictionaryData.showContent = false + reMarResult.value = reMarkData.value.find((item) => { + return item.chapterNum == data.catalog && item.page == data.page + }) + if (reMarResult.value) { + floatingToolData.activeToolData = '涔︾' + } else { + floatingToolData.activeToolData = '' + } } }) // 璋冪敤瀛愬眰鏂规硶 // if (window.qiankunState && window.qiankunState.aa) window.qiankunState.aa(1) }) - -watch( - () => screenWidth.value, - (val) => { - screenWidth.value = val - if (screenWidth.value < 1180) { - menuState.open = false - toolState.open = false - if (!menuState.open) { - floatingToolData.elLeft = 90 - } - } else { - } - } -) - +// watch( +// () => screenWidth.value, +// (val) => { +// screenWidth.value = val +// if (screenWidth.value < 1180) { +// menuState.open = false +// toolState.open = false +// if (!menuState.open) { +// floatingToolData.elLeft = 90 +// } +// } else { +// } +// } +// ) const getUserInfo = () => { MG.identity.getCurrentAppUser().then((res) => { console.log(res, '鐢ㄦ埛淇℃伅') - if(res){ + if (res) { let teacherRole = res.roleLinks.find((item) => item.role.refCode == 'teacher') let teacherInfos = res.infoList.find((item) => item.type == 'teacherInfo') let phoneInfo = res.secretList.find((item) => item.type == 'MobilePhone') let nameAndPassword = res.secretList.find((item) => item.type == 'LoginNameAndPassword') - + if (nameAndPassword) { userInfo.value = { - name: nameAndPassword.credential, + name: nameAndPassword.credential } localStorage.setItem('userInfo', JSON.stringify(userInfo.value)) - }else if(teacherRole && teacherInfos){ + } else if (teacherRole && teacherInfos) { userInfo.value = { name: teacherInfos.name, role: 'Teacher', roleId: teacherRole.role.id } localStorage.setItem('userInfo', JSON.stringify(userInfo.value)) - } else if(phoneInfo){ + } else if (phoneInfo) { userInfo.value = { - name: phoneInfo.credential, + name: phoneInfo.credential } localStorage.setItem('userInfo', JSON.stringify(userInfo.value)) } - } }) } - let menuData = [] //鑿滃崟 let teachToolsMenuData = [] //鍙充晶瀛︿範缁勪欢 let floatingToolBox = [] //涓棿鎮诞缁勪欢 -let dialogToolList =[] //閫変腑鏂囧瓧鎿嶄綔 +let dialogToolList = [] //閫変腑鏂囧瓧鎿嶄綔 //鑾峰彇褰撳墠涔︾睄鎵�闇�缁勪欢 const getTextbookComponents = () => { menuData = [] @@ -1204,6 +1436,21 @@ name: '妯″瀷宸ュ叿', icon: moxinggongju, isShow: bookConfig.value.textbookComponents.indexOf('366F6CF3') > -1 + }, + { + name: '璁$畻鍣�', + icon: jisuanqi, + isShow: bookConfig.value.textbookComponents.indexOf('E9202857') > -1 + }, + { + name: '寰呭姙浜嬮」', + icon: daiban, + isShow: bookConfig.value.textbookComponents.indexOf('FA3A4284') > -1 + }, + { + name: '鐣寗闂归挓', + icon: fanqiezhong, + isShow: bookConfig.value.textbookComponents.indexOf('E4DC9777') > -1 } ] floatingToolBox = [ @@ -1234,26 +1481,59 @@ } ] dialogToolList = [ - { icon: gaoliang,name: '楂樹寒',isShow: bookConfig.value.textbookComponents.indexOf('395B91FC') > -1 }, - { icon: huaxian,name: '鍒掔嚎',isShow: bookConfig.value.textbookComponents.indexOf('229EC161') > -1 }, - { icon: biji2,name: '绗旇',isShow: bookConfig.value.textbookComponents.indexOf('BC9B0CBD') > -1 }, - { icon: biaozhu2,name: '鏍囨敞',isShow: bookConfig.value.textbookComponents.indexOf('A63EE24F') > -1 }, - { icon: fuzhi,name: '澶嶅埗',isShow: bookConfig.value.textbookComponents.indexOf('7D5594B3') > -1 }, - { icon: AIyuedu,name: 'AI闃呰',isShow: bookConfig.value.textbookComponents.indexOf('C05AA457') > -1 }, - { icon: cidian2,name: '璇嶅吀',isShow: bookConfig.value.textbookComponents.indexOf('83FB80FD') > -1 }, - { icon: baidu,name: '鐧剧',isShow: bookConfig.value.textbookComponents.indexOf('65F95274') > -1 } + { + icon: gaoliang, + name: '楂樹寒', + isShow: bookConfig.value.textbookComponents.indexOf('395B91FC') > -1 + }, + { + icon: huaxian, + name: '鍒掔嚎', + isShow: bookConfig.value.textbookComponents.indexOf('229EC161') > -1 + }, + { + icon: biji2, + name: '绗旇', + isShow: bookConfig.value.textbookComponents.indexOf('BC9B0CBD') > -1 + }, + { + icon: biaozhu2, + name: '鏍囨敞', + isShow: bookConfig.value.textbookComponents.indexOf('A63EE24F') > -1 + }, + { + icon: fuzhi, + name: '澶嶅埗', + isShow: bookConfig.value.textbookComponents.indexOf('7D5594B3') > -1 + }, + { + icon: AIyuedu, + name: 'AI闃呰', + isShow: bookConfig.value.textbookComponents.indexOf('C05AA457') > -1 + }, + { + icon: cidian2, + name: '璇嶅吀', + isShow: bookConfig.value.textbookComponents.indexOf('83FB80FD') > -1 + }, + { + icon: baidu, + name: '鐧剧', + isShow: bookConfig.value.textbookComponents.indexOf('65F95274') > -1 + } ] } //鑾峰彇鐩綍 const catalogueData = ref([]) + const getCatalogueData = () => { axios .get(bookConfig.value.resourceUrl + '/information.json') .then(function (response) { - console.log(response.data, '鐩綍') var json = response.data // 澶勭悊鑾峰彇鍒扮殑json鏁版嵁 + console.log(json, '鐩綍') catalogueData.value = json.data headerData.totlePage = json.data[json.data.length - 1].end }) @@ -1266,6 +1546,7 @@ label: 'label', page: 'page' } + const filterNode = (value, data) => { if (!value) return true return data.label.indexOf(value) !== -1 @@ -1292,8 +1573,10 @@ const resourType = ref('') //璧勬簮绫诲瀷鍥剧墖/闊抽 const testVideo = ref('') //瑙嗛閾炬帴 const testWord = ref('') //word閾炬帴 +const showHandle = ref(null) const getResourceData = () => { + imgPreviewList.value = [] axios .get(bookConfig.value.resourceUrl + '/resource.json?t=12') .then(function (response) { @@ -1331,7 +1614,6 @@ if (activeClassify.value == 'audio') { resourceDataList.value.push(resItem) } - resourceDataList.value.push(resItem) audioCount++ } else if (resItem.resourceType == '瑙嗛') { if (activeClassify.value == 'video') { @@ -1357,6 +1639,7 @@ count: imgCount, key: 'image' }) + imgPreviewList.value = resourceDataList.value } if (audioCount > 0) { classifySelectList.value.push({ @@ -1411,7 +1694,6 @@ if (activeClassify.value == 'audio') { resourceDataList.value.push(resItem) } - resourceDataList.value.push(resItem) audioCount++ } else if (resItem.resourceType == '瑙嗛') { if (activeClassify.value == 'video') { @@ -1437,6 +1719,7 @@ count: imgCount, key: 'image' }) + imgPreviewList.value = resourceDataList.value } if (audioCount > 0) { classifySelectList.value.push({ @@ -1481,24 +1764,33 @@ console.log(error) }) } - -const goResourceDetail = (data) => { - console.log(data) +//璧勬簮鎾斁瑙嗛 +const goPlay = (data) => { resourType.value = data.resourceType - if (data.resourceType == '瑙嗛') { + if (data.resourceType == '瑙嗛' || data.resourceType == '闊抽') { resourVisble.value = true - if(data.md5){ + if (data.md5) { testVideo.value = bookConfig.value.requestCtx + '/file/api/ApiDownload?md5=' + data.md5 - }else{ + } else { testVideo.value = bookConfig.value.resourceUrl + '/' + data.resourcePath } - - } else if (data.resourceType == 'word') { - testWord.value = bookConfig.value.resourceUrl + '/' + data.resourcePath } else { - if (window.qiankunState && window.qiankunState.gotoPage) { - window.qiankunState.gotoPage(Number(data.chapterNum), Number(data.pagination)) + if (data.md5) { + window.open(bookConfig.value.requestCtx + '/file/api/ApiDownload?md5=' + data.md5) + } else if (data.resourcePath) { + window.open(bookConfig.value.resourceUrl + '/' + data.resourcePath) } + } + + // else if (data.resourceType == 'word') { + // testWord.value = bookConfig.value.resourceUrl + '/' + data.resourcePath + // } +} + +//璧勬簮璺宠浆鍒版寚瀹氫綅缃� +const JumpPosition = (data) => { + if (window.qiankunState && window.qiankunState.gotoPage) { + window.qiankunState.gotoPage(Number(data.chapterNum), Number(data.pagination)) } } @@ -1528,9 +1820,13 @@ // 鑿滃崟鐐瑰嚮 const menuItemClick = (name) => { - activeMenu.value = name searchText.value = '' - menuState.open = true + if (menuState.open && activeMenu.value == name) { + menuState.open = false + } else { + activeMenu.value = name + menuState.open = true + } switch (name) { case '鐩綍': break @@ -1640,6 +1936,18 @@ } getNotesList() } +//绗旇绔犺妭鏀惰捣 +const noteOpen =(index)=>{ + console.log(scribeData.isShow,index) + scribeData.isShow = true + scribeData.openIndex = index +} +//绗旇绔犺妭鎵撳紑 +const noteClose =(index)=>{ + scribeData.isShow = false + scribeData.openIndex = index +} + const catalogTree = ref() const searchBook = async () => { switch (activeMenu.value) { @@ -1762,7 +2070,16 @@ //娴獥宸ュ叿鏍忕偣鍑讳簨浠� const floatItemHandle = (item) => { - floatingToolData.activeToolData = item.name + console.log(floatingToolData.activeToolData, 'floatingToolData.activeToolData') + if (floatingToolData.activeToolData == '鐢荤瑪') { + floatingToolData.activeToolData = '' + } else if (floatingToolData.activeToolData == '涔︾') { + delReMark() + floatingToolData.activeToolData = '' + } else { + floatingToolData.activeToolData = item.name + } + canvasShow.value = false switch (floatingToolData.activeToolData) { case '鐢荤瑪': @@ -1863,7 +2180,7 @@ } //涔︾ -const currentChapter = ref(0) +const currentChapter = ref(1) const reMarkList = ref([]) const reMarkData = ref([]) const reMarkId = ref([]) @@ -1871,56 +2188,65 @@ const reMark = () => { let chapterData = catalogueData.value.find((item) => item.chapter == Number(currentChapter.value)) console.log(chapterData) - reMarkData.value.push({ - id: toolClass.uuid(8), - createDate: new Date(), - page: headerData.process, - chapterNum: currentChapter.value, - chapterName: chapterData.label - }) - MG.identity.setUserKey({ - setKeyRequests: [ - { - domain: 'reMark', - key: bookConfig.value.bookId, - value: JSON.stringify(reMarkData.value) - } - ] + if (chapterData) { + reMarkData.value.push({ + id: toolClass.uuid(8), + createDate: new Date(), + page: headerData.process, + chapterNum: currentChapter.value, + chapterName: chapterData.label }) - .then((res) => { - floatingToolData.activeToolData = '' - getReMarkList() - }) - .catch(function (error) {}) + MG.identity + .setUserKey({ + setKeyRequests: [ + { + domain: 'reMark', + key: bookConfig.value.bookId, + value: JSON.stringify(reMarkData.value) + } + ] + }) + .then((res) => { + floatingToolData.activeToolData = '' + ElMessage({ + message: '娣诲姞涔︾鎴愬姛!', + type: 'success' + }) + getReMarkList() + }) + .catch(function (error) {}) + } } const getReMarkList = () => { reMarkList.value = [] reMarkData.value = [] - MG.identity.getUserKey({ + MG.identity + .getUserKey({ domain: 'reMark', keys: [bookConfig.value.bookId] - }).then((res) => { - if (res && res.length > 0 && res[0].value) { - reMarkData.value = JSON.parse(res[0].value) - let list = JSON.parse(res[0].value) - list.forEach((item) => { - let text = searchText.value.replace(/^\s*|\s*$/g, '') - if (searchText.value) { - if (item.name.indexOf(text) > -1) { + }) + .then((res) => { + if (res && res.length > 0 && res[0].value) { + reMarkData.value = JSON.parse(res[0].value) + let list = JSON.parse(res[0].value) + list.forEach((item) => { + let text = searchText.value.replace(/^\s*|\s*$/g, '') + if (searchText.value) { + if (item.name.indexOf(text) > -1) { + reMarkList.value.push(item) + } + } else { reMarkList.value.push(item) } - } else { - reMarkList.value.push(item) - } - }) - console.log(reMarkList.value, '124') - } - }) + }) + } + }) } -//鍒犻櫎涔︾ -const deleteReMark = (item) => { - let list = reMarkList.value.filter((itemData) => itemData.id !== item.id) - MG.identity.setUserKey({ +// 鍐呭椤靛垹闄や功绛� +const delReMark = () => { + let list = reMarkList.value.filter((itemData) => itemData.id !== reMarResult.value.id) + MG.identity + .setUserKey({ setKeyRequests: [ { domain: 'reMark', @@ -1928,13 +2254,35 @@ value: JSON.stringify(list) } ] - }).then((res) => { - ElMessage({ - message: '鍒犻櫎涔︾鎴愬姛!', - type: 'success' }) - getReMarkList() - }) + .then((res) => { + ElMessage({ + message: '鍒犻櫎涔︾鎴愬姛!', + type: 'success' + }) + getReMarkList() + }) +} +//涔︾鍒楄〃鍒犻櫎涔︾ +const deleteReMark = (item) => { + let list = reMarkList.value.filter((itemData) => itemData.id !== item.id) + MG.identity + .setUserKey({ + setKeyRequests: [ + { + domain: 'reMark', + key: bookConfig.value.bookId, + value: JSON.stringify(list) + } + ] + }) + .then((res) => { + ElMessage({ + message: '鍒犻櫎涔︾鎴愬姛!', + type: 'success' + }) + getReMarkList() + }) } //鎴浘 @@ -1979,7 +2327,8 @@ } screenshotLoading.value = true - MG.identity.setUserKey({ + MG.identity + .setUserKey({ setKeyRequests: [ { domain: 'screenshot', @@ -2011,27 +2360,30 @@ const getScreenshotList = () => { screenshotData.value = [] screenshotList.value = [] - MG.identity.getUserKey({ + imgPreviewList.value = [] + MG.identity + .getUserKey({ domain: 'screenshot', keys: [bookConfig.value.bookId] - }).then((res) => { - if (res && res.length > 0 && res[0].value) { - screenshotData.value = JSON.parse(res[0].value) - let list = JSON.parse(res[0].value) - list.forEach((item) => { - let text = searchText.value.replace(/^\s*|\s*$/g, '') - if (searchText.value) { - if (item.name.indexOf(text) > -1) { + }) + .then((res) => { + if (res && res.length > 0 && res[0].value) { + screenshotData.value = JSON.parse(res[0].value) + let list = JSON.parse(res[0].value) + list.forEach((item) => { + let text = searchText.value.replace(/^\s*|\s*$/g, '') + if (searchText.value) { + if (item.name.indexOf(text) > -1) { + screenshotList.value.push(item) + imgPreviewList.value.push(item.imgUrl) + } + } else { screenshotList.value.push(item) imgPreviewList.value.push(item.imgUrl) } - } else { - screenshotList.value.push(item) - imgPreviewList.value.push(item.imgUrl) - } - }) - } - }) + }) + } + }) } //鏌ョ湅鎴浘 const getCapture = (item, index) => { @@ -2061,7 +2413,8 @@ type: 'warning' }) .then(() => { - MG.identity.setUserKey({ + MG.identity + .setUserKey({ setKeyRequests: [ { domain: 'screenshot', @@ -2069,13 +2422,14 @@ value: JSON.stringify(list) } ] - }).then((res) => { - ElMessage({ - message: '鍒犻櫎鎴浘鎴愬姛!', - type: 'success' }) - getScreenshotList() - }) + .then((res) => { + ElMessage({ + message: '鍒犻櫎鎴浘鎴愬姛!', + type: 'success' + }) + getScreenshotList() + }) }) .catch(() => {}) } @@ -2149,75 +2503,21 @@ //绗旇锛岄珮浜紝鍒掔嚎 const scribeData = reactive({ + isShow: true, + openIndex: 0, loading: false, scribeDataList: [], //鍒掔嚎鑿滃崟鍒楄〃 lineHeightList: [], //楂樹寒鑿滃崟鍒楄〃 noteList: [] //绗旇鑿滃崟鍒楄〃 }) //璇嶅吀 +const dictionaryData = reactive({ + showContent: false, + data: null, + id: '' +}) const synth = window.speechSynthesis -//宸ュ叿鏍忔柟娉� -const dialogOverHander = (item) => { - // toolActive.value = item.name - const curIndex = dialogToolList.findIndex((f) => f.name == item.name) - switch (curIndex) { - case 0: - dialogToolList[0].icon = gaoliang1 - break - case 1: - dialogToolList[1].icon = huaxian1 - break - case 2: - dialogToolList[2].icon = biji1 - break - case 3: - dialogToolList[3].icon = biaozhu3 - break - case 4: - dialogToolList[4].icon = fuzhi1 - break - case 5: - dialogToolList[5].icon = AIyuedu1 - break - case 6: - dialogToolList[6].icon = cidian1 - break - case 7: - dialogToolList[7].icon = baidu1 - break - } -} -const dialogOutHander = (item) => { - const curIndex = dialogToolList.findIndex((f) => f.name == item.name) - - switch (curIndex) { - case 0: - dialogToolList[0].icon = gaoliang - break - case 1: - dialogToolList[1].icon = huaxian - break - case 2: - dialogToolList[2].icon = biji2 - break - case 3: - dialogToolList[3].icon = biaozhu2 - break - case 4: - dialogToolList[4].icon = fuzhi - break - case 5: - dialogToolList[5].icon = AIyuedu - break - case 6: - dialogToolList[6].icon = cidian2 - break - case 7: - dialogToolList[7].icon = baidu - break - } -} const dialogToolHandle = async (item) => { toolActive.value = item.name colorActive.value = '' @@ -2256,7 +2556,10 @@ toolActive.value = '' break case '璇嶅吀': - cidianVisible.value = true + getSearchResult() + + showToolBox.value = false + // cidianVisible.value = true console.log(dialogToolData.txt) break case '鐧剧': @@ -2330,7 +2633,8 @@ break } - MG.identity.setUserKey({ + MG.identity + .setUserKey({ setKeyRequests: [ { domain: dom, @@ -2338,76 +2642,83 @@ value: JSON.stringify(data) } ] - }).then((res) => { - showToolBox.value = false - addNoteVisble.value = false - colorActive.value = '' - noteColorActive.value = '' - toolActive.value = '' - getSignData() - getNotesList() - }) + }) + .then((res) => { + showToolBox.value = false + addNoteVisble.value = false + colorActive.value = '' + noteColorActive.value = '' + toolActive.value = '' + getSignData() + getNotesList() + }) } const getSignData = () => { - MG.identity.getUserKey({ + MG.identity + .getUserKey({ domain: 'highLightData-' + bookConfig.value.bookId, keys: activeCatalog.value.map((item) => item + '') - }).then((res) => { - if (res && res.length > 0) { - for (let i = 0; i < res.length; i++) { - const item = res[i] - const data = JSON.parse(item.value) - // 鍌ㄥ�� - dialogToolData.lineHeight[item.key] = data - // 娓叉煋 - for (let j = 0; j < data.length; j++) { - const citem = data[j] - if (window.qiankunState && window.qiankunState.renderSign) - window.qiankunState.renderSign(citem.type, citem) + }) + .then((res) => { + if (res && res.length > 0) { + for (let i = 0; i < res.length; i++) { + const item = res[i] + const data = JSON.parse(item.value) + // 鍌ㄥ�� + dialogToolData.lineHeight[item.key] = data + // 娓叉煋 + for (let j = 0; j < data.length; j++) { + const citem = data[j] + if (window.qiankunState && window.qiankunState.renderSign) + window.qiankunState.renderSign(citem.type, citem) + } } } - } - }) - MG.identity.getUserKey({ + }) + MG.identity + .getUserKey({ domain: 'underline-' + bookConfig.value.bookId, keys: activeCatalog.value.map((item) => item + '') - }).then((res) => { - if (res && res.length > 0) { - for (let i = 0; i < res.length; i++) { - const item = res[i] - const data = JSON.parse(item.value) - // 鍌ㄥ�� - dialogToolData.scribeList[item.key] = data + }) + .then((res) => { + if (res && res.length > 0) { + for (let i = 0; i < res.length; i++) { + const item = res[i] + const data = JSON.parse(item.value) + // 鍌ㄥ�� + dialogToolData.scribeList[item.key] = data - // 娓叉煋 - for (let j = 0; j < data.length; j++) { - const citem = data[j] - if (window.qiankunState && window.qiankunState.renderSign) - window.qiankunState.renderSign(citem.type, citem) + // 娓叉煋 + for (let j = 0; j < data.length; j++) { + const citem = data[j] + if (window.qiankunState && window.qiankunState.renderSign) + window.qiankunState.renderSign(citem.type, citem) + } } } - } - }) - MG.identity.getUserKey({ + }) + MG.identity + .getUserKey({ domain: 'notes-' + bookConfig.value.bookId, keys: activeCatalog.value.map((item) => item + '') - }).then((res) => { - if (res && res.length > 0) { - for (let i = 0; i < res.length; i++) { - const item = res[i] - const data = JSON.parse(item.value) - // 鍌ㄥ�� - dialogToolData.notesList[item.key] = data - // 娓叉煋 - for (let j = 0; j < data.length; j++) { - const citem = data[j] - if (window.qiankunState && window.qiankunState.renderSign) - window.qiankunState.renderSign(citem.type, citem) + }) + .then((res) => { + if (res && res.length > 0) { + for (let i = 0; i < res.length; i++) { + const item = res[i] + const data = JSON.parse(item.value) + // 鍌ㄥ�� + dialogToolData.notesList[item.key] = data + // 娓叉煋 + for (let j = 0; j < data.length; j++) { + const citem = data[j] + if (window.qiankunState && window.qiankunState.renderSign) + window.qiankunState.renderSign(citem.type, citem) + } } } - } - }) + }) } //鑿滃崟绗旇鍒楄〃 @@ -2416,49 +2727,65 @@ catalogueData.value.forEach((item) => { chapterList.push(item.chapter + '') }) + let uniqueArray = [...new Set(chapterList)] scribeData.noteList = [] - MG.identity.getUserKey({ + MG.identity + .getUserKey({ domain: 'notes-' + bookConfig.value.bookId, - keys: chapterList - }).then((res) => { - if (res && res.length > 0) { - for (let i = 0; i < res.length; i++) { - const item = res[i] - // 鍌ㄥ�� - let data = catalogueData.value.find((item1) => item1.chapter == Number(item.key)) - let list = JSON.parse(item.value) - let itemList = [] - if (list.length > 0) { - list.forEach((item) => { - if (searchText.value) { - let text = searchText.value.replace(/^\s*|\s*$/g, '') - if (item.note.indexOf(text) > -1 || item.txt.indexOf(text) > -1) { + keys: uniqueArray + }) + .then((res) => { + if (res && res.length > 0) { + for (let i = 0; i < res.length; i++) { + const item = res[i] + // 鍌ㄥ�� + let data = catalogueData.value.find((item1) => item1.chapter == Number(item.key)) + // console.log(data,'666') + let dataList = [] + if(catalogueData.value.length > 0 ){ + catalogueData.value.forEach(item1 =>{ + if(item1.chapter == Number(item.key)){ + dataList.push(item1) + } + }) + } + let labels = "" + if(dataList.length > 1) + labels = dataList.map(item => item.label).join('/'); + + let list = JSON.parse(item.value) + let itemList = [] + if (list.length > 0) { + list.forEach((item) => { + if (searchText.value) { + let text = searchText.value.replace(/^\s*|\s*$/g, '') + if (item.note.indexOf(text) > -1 || item.txt.indexOf(text) > -1) { + if (menuState.notesColor == 'all') { + itemList = list + } else if (item.color == menuState.notesColor) { + itemList.push(item) + } + } + } else { if (menuState.notesColor == 'all') { itemList = list } else if (item.color == menuState.notesColor) { itemList.push(item) } } - } else { - if (menuState.notesColor == 'all') { - itemList = list - } else if (item.color == menuState.notesColor) { - itemList.push(item) - } - } - }) + }) + } + if (dataList[0].chapter == Number(item.key) && itemList.length > 0) { + scribeData.noteList.push({ + chapter: dataList[0].chapter, + chapterName: labels ? labels : dataList[0].label, + noteList: itemList + }) + } } - if (data.chapter == Number(item.key) && itemList.length > 0) { - scribeData.noteList.push({ - chapter: data.chapter, - chapterName: data.label, - noteList: itemList - }) - } + console.log(scribeData.noteList, 'scribeData.noteList') } - console.log(scribeData.noteList, 'scribeData.noteList') - } - }) + }) } //姝f枃涓垹闄ら珮浜紝鍒掔嚎锛岀瑪璁版搷浣滄 @@ -2474,21 +2801,51 @@ window.signClick = (type, id, chapterNum) => { console.log('signClick鐐瑰嚮浜嬩欢鍥炶皟鐨勫疄渚�', type, id, chapterNum) dialogToolData.chapter = chapterNum + lineDelete.deleteType = type + lineDelete.id = id + lineDelete.showLineDelete = true if (type == 'Note') { let list = dialogToolData.notesList[chapterNum] let data = list.find((item) => item.id == id) - console.log(data, 123) formData.id = id formData.desc = data.note noteColorActive.value = data.color - addNoteVisble.value = true + // addNoteVisble.value = true isUpdate.value = true - } else { - lineDelete.showLineDelete = true - lineDelete.deleteType = type - lineDelete.id = id - dialogToolData.chapter = chapterNum } +} + +const updateNote = () => { + addNoteVisble.value = true + lineDelete.showLineDelete = false +} + +// 绗旇榧犳爣绉诲叆 +const noteContent = reactive({ + show: false, + top: 0, + left: 0, + note: '', + color: '' +}) +window.noteHover = (type, id, chapterNum) => { + console.log(type, 'typetype') + let list = dialogToolData.notesList[chapterNum] + let data = list.find((item) => item.id == id) + noteContent.note = data.note + noteContent.color = data.color + document.addEventListener('mousemove', function (event) { + var x = event.offsetX + var y = event.offsetY + // console.log('榧犳爣鍧愭爣浣嶇疆锛�', x, y) + noteContent.top = event.clientY + 10 + noteContent.left = event.clientX + noteContent.show = true + }) +} +window.noteOut = () => { + console.log(123) + noteContent.show = false } const delUserKey = () => { @@ -2505,9 +2862,14 @@ dom = 'underline-' + bookConfig.value.bookId data = dialogToolData.scribeList break + case 'Note': + dom = 'notes-' + bookConfig.value.bookId + data = dialogToolData.notesList + break } let list = data[dialogToolData.chapter].filter((item) => item.id != ids) - MG.identity.setUserKey({ + MG.identity + .setUserKey({ setKeyRequests: [ { domain: dom, @@ -2515,12 +2877,17 @@ value: JSON.stringify(list) } ] - }).then((res) => { - lineDelete.showLineDelete = false - if (window.qiankunState && window.qiankunState.delSign) - window.qiankunState.delSign({ ids: [ids] }) - getSignData() - }) + }) + .then((res) => { + lineDelete.showLineDelete = false + if (window.qiankunState && window.qiankunState.delSign) { + window.qiankunState.delSign({ ids: [ids] }) + } + getSignData() + if (type == 'Note') { + getNotesList() + } + }) } //绗旇璺宠浆 @@ -2549,7 +2916,8 @@ itemNote.color = noteColorActive.value } }) - MG.identity.setUserKey({ + MG.identity + .setUserKey({ setKeyRequests: [ { domain: 'notes-' + bookConfig.value.bookId, @@ -2557,12 +2925,13 @@ value: JSON.stringify(data.noteList) } ] - }).then((res) => { - addNoteVisble.value = false - isUpdate.value = false - getNotesList() - getSignData() - }) + }) + .then((res) => { + addNoteVisble.value = false + isUpdate.value = false + getNotesList() + getSignData() + }) } //鑿滃崟鍒犻櫎绗旇 @@ -2577,7 +2946,8 @@ type: 'warning' }) .then(() => { - MG.identity.setUserKey({ + MG.identity + .setUserKey({ setKeyRequests: [ { domain: 'notes-' + bookConfig.value.bookId, @@ -2585,20 +2955,44 @@ value: JSON.stringify(list) } ] - }).then((res) => { - ElMessage({ - message: '鍒犻櫎绗旇鎴愬姛!', - type: 'success' }) - getNotesList() - if (window.qiankunState && window.qiankunState.delSign) { - window.qiankunState.delSign({ ids: [item.id] }) - } - }) + .then((res) => { + ElMessage({ + message: '鍒犻櫎绗旇鎴愬姛!', + type: 'success' + }) + getNotesList() + if (window.qiankunState && window.qiankunState.delSign) { + window.qiankunState.delSign({ ids: [item.id] }) + } + }) }) .catch(() => {}) } +//鑾峰彇閫変腑鑻辨枃璇嶅吀 +const getSearchResult = () => { + if (dialogToolData.txt) { + MG.edu + .findWords([ + { + word: dialogToolData.txt, + isFull: false + } + ]) + .then((res) => { + console.log(res[0][0],"cid") + if (res.length > 0 && res[0].length > 0) { + res[0].map((item) => { + item.trans = JSON.parse(item.trans) + }) + dictionaryData.data = res[0][0] + console.log(dictionaryData.data,"14") + dictionaryData.showContent = true + } + }) + } +} //鍐呭鍖哄煙椤堕儴鏄剧ず const headerData = reactive({ @@ -2685,12 +3079,12 @@ .userInfoBox { display: flex; align-items: center; - .userName{ + .userName { font-size: 18px; - margin-right:15px; - padding-right:15px; - border-right:1px solid #e0e0e0; - color: #2C2C2C; + margin-right: 15px; + padding-right: 15px; + border-right: 1px solid #e0e0e0; + color: #2c2c2c; } .layout { width: 69px; @@ -2740,6 +3134,7 @@ .name { text-align: center; line-height: 1; + color: #2c3e50; } } } @@ -2937,6 +3332,7 @@ .resourceItem { padding: 10px 0; align-items: center; + .resourceImg { // width: 130px; height: 80px; @@ -2946,10 +3342,32 @@ display: flex; align-items: center; justify-content: center; + position: relative; img { height: 100%; width: 100%; object-fit: contain; + } + .handleBox { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(44, 44, 44, 0.6); + text-align: center; + padding: 2px; + .delImg { + height: 100%; + display: flex; + align-items: center; + justify-content: center; + .icon { + position: static; + margin: 5px; + color: #fff; + } + } } } @@ -2991,6 +3409,7 @@ .icon { position: static; margin: 5px; + color: #fff; } } } @@ -3072,6 +3491,11 @@ } .chapterName { margin: 15px; + display: flex; + align-items: center; + span{ + margin-left:5px; + } } .reMarkItem { margin: 15px; @@ -3081,9 +3505,9 @@ display: flex; .reMarkCon { width: 240px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + // white-space: nowrap; + // overflow: hidden; + // text-overflow: ellipsis; margin-right: 8px; } .deleteReMarkImg { @@ -3237,7 +3661,7 @@ } span { - width:80px; + width: 80px; margin-left: 10px; } } @@ -3338,13 +3762,33 @@ overflow: hidden; .floatToolItem { margin: 10px 0; - height: 28px; + height: 30px; display: flex; justify-content: center; align-items: center; border-radius: 5px; color: #fff; cursor: pointer; + .imgBox { + width: 24px; + height: 24px; + margin: 0 auto; + position: relative; + img { + width: 100%; + height: 100%; + width: auto; + height: auto; + max-width: 100%; + max-height: 100%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; + } + } .text { margin-right: 5px; } @@ -3357,12 +3801,12 @@ .brushBox { position: absolute; - width:290px; + width: 290px; bottom: 40px; left: 0; right: 0; z-index: 99; - margin:auto; + margin: auto; border-radius: 5px; background: #fff; overflow: hidden; @@ -3392,8 +3836,8 @@ background-color: rgba(44, 44, 44, 0.2); } .layOutTool { - height:20px; - margin-right:5px; + height: 20px; + margin-right: 5px; border-left: 1px solid #e0e0e0; } } @@ -3410,15 +3854,15 @@ border-radius: 12px; overflow: hidden; padding: 5px; - background-color: rgba(90,90,90,0.9); + background-color: rgba(90, 90, 90, 0.9); // background-image: linear-gradient(to right, #0093ff, #005dff); .dialogToolItem { user-select: none; width: 26px; font-size: 12px; border-radius: 5px; - padding:3px; - margin:0 5px; + padding: 3px; + margin: 0 5px; cursor: pointer; text-align: center; span { @@ -3462,18 +3906,65 @@ position: fixed; z-index: 2; box-shadow: 0px 0px 6px 1px rgba(0, 0, 0, 0.3); - padding: 5px 20px; + padding: 5px 10px; background: #fff; border-radius: 5px; - .dialogToolItem{ - padding:3px; + display: flex; + .dialogToolItem { + padding: 3px; + margin: 0 10px; border-radius: 5px; display: flex; justify-content: center; align-items: center; } - .dialogToolItem:hover{ + .dialogToolItem:hover { background-color: rgba(44, 44, 44, 0.2); + } +} +.noteContentBox { + position: fixed; + z-index: 2; + padding: 10px; + border-radius: 5px; +} +.dictionaryDataBox { + position: fixed; + z-index: 2; + box-shadow: 0px 0px 6px 1px rgba(0, 0, 0, 0.3); + padding: 5px 20px; + background: #fff; + border-radius: 5px; + .phone_con { + .per-phone { + width: 150px; + align-items: center; + background: #f4f5f7; + border-radius: 15px; + box-sizing: border-box; + color: #666; + display: flex; + font-weight: 500; + margin-right: 10px; + margin-top: 10px; + padding: 8px 10px; + span { + margin: 0 10px; + } + } + } + .trans { + padding: 20px 0; + .itemList { + display: flex; + padding: 10px 0; + .index { + margin-right: 15px; + } + .pos { + margin-right: 30px; + } + } } } .wendabox { @@ -3488,7 +3979,8 @@ .myDialogs, .myNoteDialogs, .resourDialog, -.baiduDialog { +.baiduDialog, +.myAnserDialogs { padding: 0 !important; border-radius: 10px !important; overflow: hidden; @@ -3517,7 +4009,7 @@ box-sizing: border-box; } } -.myDialogs { +.myAnserDialogs { width: 628px; } .myNoteDialogs { @@ -3548,9 +4040,16 @@ } } } -.videoBox video { - width: 100%; +.videoBox { + text-align: center; + video { + width: 100%; + } + audio{ + width: 100%; + } } + .wordBox { height: 600px; } diff --git a/src/views/index.vue b/src/views/index.vue index e72055e..b524f76 100644 --- a/src/views/index.vue +++ b/src/views/index.vue @@ -6,9 +6,7 @@ <menuView /> </div> <div class="rightBox"> - <div> - <router-view /> - </div> + <router-view /> </div> </div> </div> @@ -68,6 +66,13 @@ .leftBox { background: #fff; width:80px; + flex-shrink: 0; + box-sizing: border-box; + } + .rightBox{ + width:100%; + height:100%; + flex:1; } } </style> diff --git a/src/views/login.vue b/src/views/login.vue index 302d11f..f36b347 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -144,7 +144,7 @@ overflow:hidden; display: flex; background: #FFFFFF; - box-shadow: 0px 6px 9px 1px rgba(0,0,0,0.06); + box-shadow: 0px 0px 10px 1px rgba(0,0,0,0.1); .loginForm { width: 410px; padding:40px; -- Gitblit v1.9.1