浏览代码

Merge branch 'new-feature-tianyong' into kt-dev

TIANYONG 1 年之前
父节点
当前提交
7335d13629

+ 10 - 0
src/page-instrument/api.ts

@@ -56,3 +56,13 @@ export const getSubjectList = (data: any) => {
     requestType: "json",
   });
 };
+
+/**
+ * 获取意见类型
+ */
+export const getSuggestionList = (params: any) => {
+  return request.post('/sysSuggestionType/page', {
+    data: params,
+    requestType: "json",
+  });
+};

+ 4 - 2
src/page-instrument/custom-plugins/helper-model/recommendation/index.module.less

@@ -61,7 +61,7 @@
     flex-wrap: wrap;
     padding: 0 var(--van-cell-horizontal-padding) var(--van-cell-vertical-padding) var(--van-cell-horizontal-padding);
     >span {
-        margin: 3px 0;
+        margin: 3px 12px 3px 0;
         border-radius: 3PX;
         display: block;
         width: 30%;
@@ -70,7 +70,9 @@
         background-color: #F8F8F8;
         color: #999999;
         border: 1PX solid #F8F8F8;
-
+        &:nth-child(3n+3) {
+            margin-right: 0px;
+        }
         &.active {
             color: var(--van-primary-color);
             border-color: var(--van-primary-color);

+ 29 - 9
src/page-instrument/custom-plugins/helper-model/recommendation/index.tsx

@@ -1,26 +1,39 @@
-import { defineComponent, reactive, ref } from "vue";
+import { defineComponent, reactive, ref, onMounted } from "vue";
 import styles from "./index.module.less";
 import iconClose from "../icons/close2.svg";
 import { Button, Cell, Field, Tab, Tabs, showToast } from "vant";
 import iconSubmit from "../icons/icon-submit.svg";
-import { sysSuggestionAdd } from "/src/page-instrument/api";
+import { sysSuggestionAdd, getSuggestionList } from "/src/page-instrument/api";
+import { storeData } from "/src/store";
 
 export default defineComponent({
 	name: "recommendation",
 	emits: ["close"],
 	setup(props, { emit }) {
+		const suggestionTypeList = ref([] as any);
 		const tags = ["识别不准", "无法评测", "不出评测结果", "曲谱不一致", "指法错误", "其他"];
 		const recommenData = reactive({
 			loading: false,
 			active: "识别不准",
 			message: "",
+			suggestId: null,
 		});
+		// 获取建议类别
+		const getTypeList = async () => {
+			try {
+				const res = await getSuggestionList({ rows: 9999, page: 1 });
+				suggestionTypeList.value = res.data.rows || [];
+			} catch (e) {
+				//
+			}
+		};
 
 		/** 提交意见反馈 */
 		const handleSubmit = async () => {
-			if (!recommenData.message) {
+			if (!recommenData.message || !recommenData.suggestId) {
+				const desc = !recommenData.suggestId ? '请先选择问题类型' : '请先填写意见反馈'
 				showToast({
-					message: "请先填写意见反馈",
+					message: desc,
 					position: "top",
 				});
 				return;
@@ -28,30 +41,37 @@ export default defineComponent({
 			recommenData.loading = true;
 			try {
 				await sysSuggestionAdd({
-					content: recommenData.message + "#" + recommenData.active,
+					content: recommenData.message,
 					type: "SMART_PRACTICE",
+					suggestionTypeId: recommenData.suggestId,
+					mobileNo: storeData.user?.phone
 				});
 				showToast({
 					message: "意见反馈已提交",
 					position: "top",
 				});
 				emit("close");
+				recommenData.suggestId = null
+				recommenData.message = ''
 			} catch (error) {}
 			recommenData.loading = false;
 		};
 
+		onMounted(() => {
+			getTypeList();
+		});
 		return () => (
 			<div class={styles.content}>
 				<Tabs lineHeight={0} color="#1A1A1A">
 					<Tab title="意见反馈">
 						<Cell border={false} title="请选择问题类型" />
 						<div class={styles.tags}>
-							{tags.map((text) => (
+							{suggestionTypeList.value.map((item: any) => (
 								<span
-									class={[styles.tag, recommenData.active === text && styles.active]}
-									onClick={() => (recommenData.active = text)}
+									class={[styles.tag, recommenData.suggestId === item.id && styles.active]}
+									onClick={() => (recommenData.suggestId = item.id)}
 								>
-									{text}
+									{item.name}
 								</span>
 							))}
 						</div>

+ 17 - 3
src/page-instrument/view-figner/index.tsx

@@ -92,6 +92,7 @@ export default defineComponent({
       fingeringMode: query.type || ("scaleMode" as "fingeringMode" | "listenMode" | "scaleMode"), // 模式
       noteType: "all" as "#c" | "all", // 音调
       loadingDom: false, // 切换乐器时需要重置
+      loadingImg: false, // 切换模式,加载图片
     });
     const fingerData = reactive({
       relationshipIndex: 0,
@@ -215,6 +216,7 @@ export default defineComponent({
       //
       if (playAction.listenLock) return;
       if (playAction.showAnswerLoading) return;
+      data.loadingImg = true
       if (data.fingeringMode === "scaleMode") {
         if (["pan-flute", "ocarina"].includes(data.subject)) {
           data.viewIndex = 1;
@@ -277,6 +279,7 @@ export default defineComponent({
       }
 
       data.loadingDom = false;
+      data.loadingImg = false;
     };
 
     // 获取声部
@@ -385,12 +388,21 @@ export default defineComponent({
       api_back();
     };
 
+    // 排箫,默认0.9显示
+    const setDefaultScale = () => {
+      if (data.subject === "pan-flute") {
+        data.transform.scale = 0.9
+        data.transform.startScale = 0.9
+      }
+    }
+
     onMounted(() => {
       loadElement();
       api_setStatusBarVisibility();
     });
     const loadElement = () => {
       const fingeringContainer = document.getElementById("fingeringContainer");
+      setDefaultScale()
       // console.log("🚀 ~ fingeringContainer:", fingeringContainer);
       const mc = new Hammer.Manager(fingeringContainer as HTMLElement);
       mc.add(new Hammer.Pan({ threshold: 0, pointers: 0 }));
@@ -425,10 +437,10 @@ export default defineComponent({
     const resetElement = () => {
       data.transform.transition = "all 0.3s";
       nextTick(() => {
-        data.transform.scale = 1;
+        data.transform.scale = data.subject === "pan-flute" ? 0.9 : 1;
         data.transform.x = 0;
         data.transform.y = 0;
-        data.transform.startScale = 1;
+        data.transform.startScale = data.subject === "pan-flute" ? 0.9 : 1;
         data.transform.startX = 0;
         data.transform.startY = 0;
       });
@@ -983,7 +995,9 @@ export default defineComponent({
                   class={[styles.fingeringContainer]}
                 >
                   <div class={styles.imgs}>
-                    <img src={data.fingeringMode === "scaleMode" ? fingerData.subject?.json?.full : fingerData.subject?.json?.full1} />
+                    {
+                      !data.loadingImg && <img src={data.fingeringMode === "scaleMode" ? fingerData.subject?.json?.full : fingerData.subject?.json?.full1} />
+                    }
                     {rs.map((key: number | string, index: number) => {
                       const nk: string = typeof key === "string" ? key.replace("active-", "") : String(key);
                       return <img data-index={nk} src={fingerData.subject?.json?.[nk]} />;

+ 1 - 0
src/store.ts

@@ -19,6 +19,7 @@ type IUser = {
   clientType?: "BACKEND" | "SCHOOL" | "TEACHER" | "STUDENT";
   /** 是否是VIP */
   vipMember?: boolean;
+  phone?: string;
 };
 type IStatus = "init" | "login" | "logout" | "error";
 type IPlatformType = "STUDENT" | "TEACHER" | "WEB" | "";

文件差异内容过多而无法显示
+ 0 - 0
src/view/fingering/fingering-img/pan-flute/index.json


文件差异内容过多而无法显示
+ 0 - 0
src/view/fingering/fingering-img/pan-flute1/index.json


文件差异内容过多而无法显示
+ 0 - 0
src/view/fingering/fingering-img/pan-flute2/index.json


文件差异内容过多而无法显示
+ 0 - 0
src/view/fingering/fingering-img/pan-flute3/index.json


+ 1 - 1
src/view/selection/index.module.less

@@ -239,6 +239,6 @@
 .linePC {
     .line {
         min-height: 94Px;
-        transform: translateX(8.5Px);
+        transform: translateX(8.5Px,-50%);
     } 
 }

部分文件因为文件数量过多而无法显示