Переглянути джерело

Merge branch 'iteration-1.0.2'

liushengqiang 1 рік тому
батько
коміт
9b006b27f2

Різницю між файлами не показано, бо вона завелика
+ 1 - 0
dist/assets/index-06261a38.css


Різницю між файлами не показано, бо вона завелика
+ 1 - 0
dist/assets/index-9d9d283f.css


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
dist/assets/index-a96c286b.js


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
dist/assets/index-legacy-a7ac79c8.js


+ 9 - 0
dist/index.html

@@ -12,8 +12,13 @@
   <script src="./flexible.js"></script>
   <script src="./abc2svg/xml2abc.js"></script>
   <script src="./abc2svg/jquery-1.11.1.min.js"></script>
+<<<<<<< HEAD
   <script type="module" crossorigin src="./assets/index-bfface45.js"></script>
   <link rel="stylesheet" href="./assets/index-9d9d283f.css">
+=======
+  <script type="module" crossorigin src="./assets/index-a96c286b.js"></script>
+  <link rel="stylesheet" href="./assets/index-06261a38.css">
+>>>>>>> iteration-1.0.2
   <script type="module">import.meta.url;import("_").catch(()=>1);async function* g(){};window.__vite_is_modern_browser=true;</script>
   <script type="module">!function(){if(window.__vite_is_modern_browser)return;console.warn("vite: loading legacy chunks, syntax error above and the same error below should be ignored");var e=document.getElementById("vite-legacy-polyfill"),n=document.createElement("script");n.src=e.src,n.onload=function(){System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))},document.body.appendChild(n)}();</script>
 </head>
@@ -23,7 +28,11 @@
   
   <script nomodule>!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script>
   <script nomodule crossorigin id="vite-legacy-polyfill" src="./assets/polyfills-legacy-fd0ec7ac.js"></script>
+<<<<<<< HEAD
   <script nomodule crossorigin id="vite-legacy-entry" data-src="./assets/index-legacy-d3cb4315.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+=======
+  <script nomodule crossorigin id="vite-legacy-entry" data-src="./assets/index-legacy-a7ac79c8.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+>>>>>>> iteration-1.0.2
 </body>
 
 </html>

+ 15 - 1
src/pc/App.tsx

@@ -12,7 +12,8 @@ import {
 	NNotificationProvider,
 	darkTheme,
 } from "naive-ui";
-import { lighten, setToken } from "../utils";
+import { browser, lighten, setToken } from "../utils";
+import { showToast } from "vant";
 
 export default defineComponent({
 	name: "App",
@@ -39,6 +40,19 @@ export default defineComponent({
 		};
 		const setUser = async () => {
 			const res = await getUserInfo();
+			// 重新登录
+			if (res.code === 5000) {
+				const browserInfo = browser();
+				showToast(res.message);
+				if (browserInfo.isApp) {
+					postMessage({ api: "login" });
+				} else {
+					window.location.href = `${
+						/(192|localhost)/.test(location.origin) ? "https://test.lexiaoya.cn" : location.origin
+					}/classroom`;
+				}
+				return;
+			}
 			const info = res?.data || {};
 			setUserInfo(info);
 			// console.log("🚀 ~ res:", res);

+ 1 - 1
src/pc/home/index.module.less

@@ -185,7 +185,7 @@
     
 
     .ABCJS-cursor {
-        background: rgba(25, 140, 254, 0.6);
+        stroke: rgba(25, 140, 254, 0.6);
         border-radius: 5px;
     }
 }

+ 70 - 40
src/pc/home/index.tsx

@@ -38,6 +38,7 @@ import instrumentsNames from "/src/constant/instrmentsNames.json";
 import { ALL_NOTES, NOTE_DOT } from "./noteData";
 import { Close } from "@vicons/ionicons5";
 import { UseDraggable } from "@vueuse/components";
+import { getQuery } from "/src/utils/queryString";
 
 const allPitches = [
   "C,,,,",
@@ -299,7 +300,7 @@ export default defineComponent({
 				selectTypes: ["note"],
 				visualTranspose: 0,
 				wrap: {
-					minSpacing: 1.8,
+					minSpacing: 0.1,
 					maxSpacing: 2.7,
 					preferredMeasuresPerLine: 4,
 				},
@@ -1090,7 +1091,8 @@ export default defineComponent({
 			}));
 		});
 		const getDetailData = async () => {
-			const res = await api_musicSheetCreationDetail(route.query.id);
+			const query: any = getQuery();
+			const res = await api_musicSheetCreationDetail(query.id);
 			if (res?.code == 200) {
 				data.musicId = res.data.id || "";
 				data.musicName = res.data.name || "";
@@ -1219,7 +1221,20 @@ export default defineComponent({
 				}
 				abcData.abc.measures.splice(data.active.measureIndex, 1);
 			} else if (data.deleteMearseType === "finish") {
-				abcData.abc.measures.splice(abcData.abc.measures.length - 1, 1);
+				let len = abcData.abc.measures.length;
+				for (let i = len; i > 0; i--) {
+					if (
+						abcData.abc.measures[i - 1].notes.length === 1 &&
+						abcData.abc.measures[i - 1].notes[0].content === "z"
+					) {
+						if (abcData.abc.measures.length === 1) {
+							break;
+						}
+						abcData.abc.measures.splice(i - 1, 1);
+					} else {
+						break;
+					}
+				}
 			}
 			popup.mearseDeleteShow = false;
 			handleResetRender();
@@ -1658,6 +1673,7 @@ export default defineComponent({
 							v-model:value={popup.speedShow}
 							trigger="click"
 							placement="bottom"
+							displayDirective="show"
 						>
 							{{
 								trigger: () => (
@@ -1993,43 +2009,57 @@ export default defineComponent({
                 </div>
               </CollapseItem>
 
-              <CollapseItem title="谱号" name="clef">
-                <div class={styles.wrapBox}>
-                  {ABC_DATA.clef.map((item) => (
-                    <div class={styles.topBtn} onClick={() => handleChange({ type: "clef", value: item.value })}>
-                      <div class={[styles.btnImg]}>
-                        <TheIcon iconClassName={item.icon} />
-                      </div>
-                      <div>{item.name}</div>
-                    </div>
-                  ))}
-                </div>
-              </CollapseItem>
-              <CollapseItem title="调号" name="key">
-                <div class={styles.wrapBox}>
-                  {ABC_DATA.key.map((item) => (
-                    <div class={styles.topBtn} onClick={() => handleChange({ type: "key", value: item.value })}>
-                      <div class={[styles.btnImg]}>
-                        <TheIcon iconClassName={item.icon} />
-                      </div>
-                      <div>{item.name}</div>
-                    </div>
-                  ))}
-                </div>
-              </CollapseItem>
-            </Collapse>
-          </div>
-          <div class={styles.box}>
-            <div class={styles.titleBox}>
-              <div class={styles.titleName} style={{ width: "50%", margin: "0 auto" }}>
-                <NInput onKeyup={(e: Event) => e.stopPropagation()} v-model:value={data.musicName} placeholder="乐谱名称" />
-              </div>
-              <div style={{ width: "30%", margin: "10px 0 0 auto" }}>
-                <NInput onKeyup={(e: Event) => e.stopPropagation()} v-model:value={data.creator} placeholder="曲谱作者" />
-              </div>
-            </div>
-            <div id="paper"></div>
-            <Keys show={data.active ? true : false} onClick={(val) => handleChange(val)} />
+							<CollapseItem title="谱号" name="clef">
+								<div class={styles.wrapBox}>
+									{ABC_DATA.clef.map((item) => (
+										<div
+											class={styles.topBtn}
+											onClick={() => handleChange({ type: "clef", value: item.value })}
+										>
+											<div class={[styles.btnImg]}>
+												<TheIcon iconClassName={item.icon} />
+											</div>
+											<div>{item.name}</div>
+										</div>
+									))}
+								</div>
+							</CollapseItem>
+							<CollapseItem title="调号" name="key">
+								<div class={styles.wrapBox}>
+									{ABC_DATA.key.map((item) => (
+										<div
+											class={styles.topBtn}
+											onClick={() => handleChange({ type: "key", value: item.value })}
+										>
+											<div class={[styles.btnImg]}>
+												<TheIcon iconClassName={item.icon} />
+											</div>
+											<div>{item.name}</div>
+										</div>
+									))}
+								</div>
+							</CollapseItem>
+						</Collapse>
+					</div>
+					<div class={styles.box}>
+						<div class={styles.titleBox}>
+							<div class={styles.titleName} style={{ width: "50%", margin: "0 auto" }}>
+								<NInput
+									onKeyup={(e: Event) => e.stopPropagation()}
+									v-model:value={data.musicName}
+									placeholder="曲谱名称"
+								/>
+							</div>
+							<div style={{ width: "30%", margin: "10px 0 0 auto" }}>
+								<NInput
+									onKeyup={(e: Event) => e.stopPropagation()}
+									v-model:value={data.creator}
+									placeholder="曲谱作者"
+								/>
+							</div>
+						</div>
+						<div id="paper"></div>
+						<Keys show={data.active ? true : false} onClick={(val) => handleChange(val)} />
 
 						{/* <textarea ref={textAreaRef} class={styles.value} id="abc"></textarea> */}
 						<div id="audio" style={{ opacity: 0 }}></div>

+ 1 - 1
src/utils/queryString.ts

@@ -7,7 +7,7 @@ export const getQuery = () => {
             ...qs.parse(location.hash.split('?')[1]),
         }
     } catch (error) {
-        
+        console.log("解析query错误:", error)
     }
     return {
         ...search,

+ 3 - 9
src/utils/request.ts

@@ -53,18 +53,12 @@ request.interceptors.response.use(
 
 		if (data.code !== 200 && data.errCode !== 0) {
 			const msg = data.msg || data.message || "处理失败,请重试";
+			if (data.code === 5000){
+				return data
+			}
 			if (!(data.code === 403 || data.code === 401)) {
-				// storeData.status = 'error'
 				showToast(msg);
 			}
-			// if (data.code === 403) {
-			// 	if (browserInfo.isApp) {
-			// 		postMessage({ api: "login" });
-			// 	} else {
-			// 		storeData.status = "error";
-			// 		showToast("登录过期");
-			// 	}
-			// }
 			throw new Error(msg);
 		}
 		return data;

Деякі файли не було показано, через те що забагато файлів було змінено