Explorar o código

Merge branch 'master' of http://114.244.114.158:8802/siwei/real3d-portalsite

lkk hai 9 meses
pai
achega
009dc03b87

+ 2 - 1
package.json

@@ -22,6 +22,7 @@
         "moment": "^2.30.1",
         "postcss-plugin-px2rem": "^0.8.1",
         "proj4": "^2.11.0",
+        "recorder-core": "^1.3.24040900",
         "url-loader": "^4.1.0",
         "view-design": "^4.3.2",
         "vue": "^2.7.16",
@@ -96,4 +97,4 @@
         "last 2 versions",
         "not ie <= 8"
     ]
-}
+}

+ 2 - 0
src/common/js/cockpit.js

@@ -39,6 +39,8 @@ const hidden_wall = (flag) => {
                 res.show = flag;
             }
         })
+        let wall = viewer.dataSources._dataSources.find(d => d._name == 'manager_entity')
+        if (!wall) viewer.dataSources.add(manager_entity);
     }
 }
 const pick_xzqh = (pri_name) => {

+ 2 - 6
src/views/LandscapeProject/index.vue

@@ -1,7 +1,7 @@
 <!--山水工程列表-->
 <template>
   <div class="ghzc LandscapeProject">
-    <Boxcommon :islist="islist">
+    <Boxcommon :islist="islist" ref="Boxcommon">
       <template v-slot:title>
         <span class="clearBtn" @click="changeType">
           切换到工程{{ islist ? "总览" : "列表" }}
@@ -233,11 +233,7 @@ export default {
     // activeTabs(newValue) {},
   },
   beforeDestroy() {
-    store.setCockpit_vector({
-      title: "",
-      tableData: [],
-      columns: [],
-    });
+    this.$refs.Boxcommon.close();
   },
 };
 </script>

+ 31 - 5
src/views/aiModel/index.vue

@@ -73,13 +73,19 @@
 </template>
 <script>
 import { AddFzxz } from "../../api/ghss/ghxz.js";
-
+import record from "./record.js";
 let recognition = null;
 export default {
   props: {},
   data() {
     return {
-      questionList: [],
+      questionList: [
+        {
+          type: "selectLand",
+          content: "sss",
+          data: { rwbsm: "5f3d25e556374e78966feca5a64fa887" },
+        },
+      ],
       defaultMsg:
         "我要在抱坡区进行选址,用地面积30到50亩,选择居住用地,距离幼儿园200米,距离医院300米,距离火葬场大于5000米",
       sendContent: "",
@@ -109,7 +115,7 @@ export default {
         };
         recognition.onresult = (event) => {
           this.sendContent = event.results[0][0].transcript;
-          this.send(); // 将识别结果发送到后台
+          // this.send(); // 将识别结果发送到后台
         };
         recognition.onerror = (event) => {
           this.$message.warning("语音识别出错: " + event.error);
@@ -121,6 +127,25 @@ export default {
         };
       }
     },
+    /**初始化 */
+    init() {
+      record.getPermission(function (permiss) {
+        if (permiss.status == "fail") {
+          createMessage.warning(permiss.data);
+        } else {
+          record.startRecorder();
+          // state.confLoading = true;
+        }
+      });
+    },
+    /**结束录音 */
+    stopRec() {
+      // state.loading = true;
+      // state.confLoading = true;
+      record.stopRecorder(function (res) {
+        /**处理 */
+      });
+    },
     sendDefault() {
       this.sendContent = this.defaultMsg;
       // this.send();
@@ -140,8 +165,9 @@ export default {
     voice() {
       console.log("---this.spdisabled-", this.spdisabled);
       if (!this.spdisabled) {
-        if (!recognition) this.initSpeech();
-        recognition.start(); // 开始语音识别
+        // if (!recognition) this.initSpeech();
+        // recognition.start(); // 开始语音识别
+        this.init();
       }
     },
     sendToBackend(msg, mindex) {

+ 87 - 0
src/views/aiModel/record.js

@@ -0,0 +1,87 @@
+//必须引入的核心
+import Recorder from 'recorder-core';
+//引入mp3格式支持文件;如果需要多个格式支持,把这些格式的编码引擎js文件放到后面统统引入进来即可
+import 'recorder-core/src/engine/mp3';
+import 'recorder-core/src/engine/mp3-engine';
+//录制wav格式的用这一句就行
+import 'recorder-core/src/engine/wav';
+
+const record = {
+  RecordApp: null,
+  recBlob: null,
+  /**麦克风授权 */
+  getPermission: (fn) => {
+    const newRec = Recorder({
+      type: 'wav',
+      bitRate: 16,
+      sampleRate: 16000, //阿里采样率16000
+      onProcess: function (buffers, powerLevel, duration, bufferSampleRate) {
+        console.log(buffers);
+      },
+    });
+    //打开录音,获得权限
+    newRec.open(
+      () => {
+        record.RecordApp = newRec;
+        fn({ status: 'success', data: '开启成功' });
+      },
+      (msg, isUserNotAllow) => {
+        //用户拒绝了录音权限,或者浏览器不支持录音
+        fn({ status: 'fail', data: msg });
+        console.log((isUserNotAllow ? 'UserNotAllow,' : '') + '无法录音:' + msg);
+      }
+    );
+  },
+  /**开始录音 */
+  startRecorder: () => {
+    if (record.RecordApp && Recorder.IsOpen()) {
+      record.RecordApp.start();
+    }
+  },
+  /** 停止录音 */
+  stopRecorder: (fn) => {
+    try {
+      if (!record) {
+        console.error('未打开录音');
+        return;
+      }
+      record.RecordApp.stop((blob, duration) => {
+        console.log('录音成功', blob, '时长:' + duration + 'ms');
+        if (blob) {
+          record.recBlob = blob;
+          const formData = new FormData();
+          formData.append('audio', blob);
+          fn({ loading: true });
+        }
+        /* eslint-enable */
+        record.RecordApp.close();
+        record.RecordApp = null;
+      });
+    } catch (err) {
+      fn({ err: err });
+      console.error('结束录音出错:' + err);
+      record.RecordApp.close();
+      record.RecordApp = null;
+    }
+  },
+  /**关闭录音,释放麦克风资源 */
+  destroyRecorder: () => {
+    if (record.RecordApp) {
+      record.RecordApp.close();
+      record.RecordApp = null;
+    }
+  },
+  /**暂停 */
+  pauseRecorder: () => {
+    if (record.RecordApp) {
+      record.RecordApp.pause();
+    }
+  },
+  /**恢复继续录音 */
+  resumeRecorder: () => {
+    if (record.RecordApp) {
+      record.RecordApp.resume();
+    }
+  },
+};
+export default record;

+ 4 - 0
src/views/cockpit/js/tdsy.js

@@ -38,6 +38,10 @@ export let layer = null
 export let superProvider = null
 export let layersObj = {} //添加的单个layer
 export function addLayer(obj) {
+    if (layer) {
+        viewer.imageryLayers.remove(layer);
+        layer = null
+    }
     // this.bus.$emit("checkedChange", {...obj,checked:true });
     superProvider = new Cesium.SuperMapImageryProvider({
         url: obj.url,

+ 1 - 1
src/views/modelStretch/index.vue

@@ -273,7 +273,7 @@ export default {
       // that.removeEntities();
       // //基础高度(地形高度)加入地形后可删除
       let jcgd = 0;
-      jcgd = this.getjcHigeht(geojson);
+      jcgd = this.getjcHigeht(this.form.geojson);
       //顶部高度,底部高度
       let maxH = jcgd,
         minH = jcgd;