charles
2024-06-05 fefe4a3011fb472788abb2e7ffdbbc5a4f58623c
feat:更新ui界面
43个文件已删除
10个文件已修改
4323 ■■■■ 已修改文件
public/images/login/login.png 补丁 | 查看 | 原始文档 | blame | 历史
public/images/login/login2.png 补丁 | 查看 | 原始文档 | blame | 历史
src/api/index.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/modules/login.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/font/demo.css 539 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/font/demo_index.html 299 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/font/fonts/DIN.css 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/font/fonts/DIN_Alternate.ttf 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/font/iconfont.css 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/font/iconfont.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/font/iconfont.json 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/font/iconfont.svg 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/font/iconfont.ttf 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/font/iconfont.woff 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/font/iconfont.woff2 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/animate/vue-transition.scss 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/fixed/base.scss 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/fixed/element.scss 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/fixed/markdown.scss 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/fixed/n-progress.scss 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/fixed/tree-view.scss 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/fixed/vue-grid-layout.scss 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/fixed/vue-splitpane.scss 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/index.scss 904 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/public-class.scss 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/public.scss 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/theme/chester/index.scss 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/theme/chester/setting.scss 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/theme/d2/index.scss 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/theme/d2/setting.scss 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/theme/element/index.scss 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/theme/element/setting.scss 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/theme/line/index.scss 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/theme/line/setting.scss 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/theme/register.scss 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/theme/star/index.scss 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/theme/star/setting.scss 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/theme/theme-base.scss 474 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/theme/theme.scss 441 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/theme/tomorrow-night-blue/index.scss 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/theme/tomorrow-night-blue/setting.scss 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/theme/violet/index.scss 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/theme/violet/setting.scss 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/style/unit/color.scss 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/components/audioAnalysis/components/Analysis.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/components/audioAnalysis/index.vue 300 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/components/leftNav.vue 79 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/components/textManager/index.vue 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/components/topNav.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/components/uploadAudio/index.vue 304 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/index.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login/Login.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/images/login/login.png
Binary files differ
public/images/login/login2.png
Binary files differ
src/api/index.js
@@ -1,5 +1,4 @@
export * from './modules/text';
export * from './modules/audio';
export * from './modules/train';
export * from "./modules/login";
src/api/modules/login.js
File was deleted
src/assets/font/demo.css
File was deleted
src/assets/font/demo_index.html
File was deleted
src/assets/font/fonts/DIN.css
File was deleted
src/assets/font/fonts/DIN_Alternate.ttf
Binary files differ
src/assets/font/iconfont.css
File was deleted
src/assets/font/iconfont.js
File was deleted
src/assets/font/iconfont.json
File was deleted
src/assets/font/iconfont.svg
File was deleted
src/assets/font/iconfont.ttf
Binary files differ
src/assets/font/iconfont.woff
Binary files differ
src/assets/font/iconfont.woff2
Binary files differ
src/assets/style/animate/vue-transition.scss
File was deleted
src/assets/style/fixed/base.scss
File was deleted
src/assets/style/fixed/element.scss
File was deleted
src/assets/style/fixed/markdown.scss
File was deleted
src/assets/style/fixed/n-progress.scss
File was deleted
src/assets/style/fixed/tree-view.scss
File was deleted
src/assets/style/fixed/vue-grid-layout.scss
File was deleted
src/assets/style/fixed/vue-splitpane.scss
File was deleted
src/assets/style/index.scss
File was deleted
src/assets/style/public-class.scss
File was deleted
src/assets/style/public.scss
File was deleted
src/assets/style/theme/chester/index.scss
File was deleted
src/assets/style/theme/chester/setting.scss
File was deleted
src/assets/style/theme/d2/index.scss
File was deleted
src/assets/style/theme/d2/setting.scss
File was deleted
src/assets/style/theme/element/index.scss
File was deleted
src/assets/style/theme/element/setting.scss
File was deleted
src/assets/style/theme/line/index.scss
File was deleted
src/assets/style/theme/line/setting.scss
File was deleted
src/assets/style/theme/register.scss
File was deleted
src/assets/style/theme/star/index.scss
File was deleted
src/assets/style/theme/star/setting.scss
File was deleted
src/assets/style/theme/theme-base.scss
File was deleted
src/assets/style/theme/theme.scss
File was deleted
src/assets/style/theme/tomorrow-night-blue/index.scss
File was deleted
src/assets/style/theme/tomorrow-night-blue/setting.scss
File was deleted
src/assets/style/theme/violet/index.scss
File was deleted
src/assets/style/theme/violet/setting.scss
File was deleted
src/assets/style/unit/color.scss
File was deleted
src/views/home/components/audioAnalysis/components/Analysis.vue
@@ -89,7 +89,7 @@
                    {
                        title: '天空之城',
                        artist: '黄叶',
                        //url: `${publicPath}audio/test.mp3`,
                        url: `${publicPath}audio/test.mp3`,
                        pic: `${publicPath}images/audio/u230.png`,
                        lrc: '[00:12.09]作词:林夕[00:12.33]作曲:徐伟贤[00:14.40]对我好对我好'
                    }
src/views/home/components/audioAnalysis/index.vue
@@ -1,6 +1,242 @@
<template>
    <div>
      <el-card class="top-container">
        <div class="search">
          <el-form :inline="true" class="demo-form-inline">
            <el-form-item label="">
              <el-date-picker
                  v-model="searchDateTime"
                  type="daterange"
                  size="small"
                  align="right"
                  unlink-panels
                  range-separator="至"
                  start-placeholder="开始日期"
                  end-placeholder="结束日期"
                  :picker-options="pickerOptions">
              </el-date-picker>
            </el-form-item>
            <el-form-item label="">
              <el-input v-model="whereTrain.keyword" size="small" placeholder="请输入司机,车次,车号等关键字进行搜索" style="width: 340px;position: relative;top:5px">
                <el-button slot="append" @click="searchCar" icon="el-icon-search" type="primary"></el-button>
              </el-input>
            </el-form-item>
          </el-form>
        </div>
        <div class="show-sel-tag">
          <div>
            <span style="font-size: 14px">已筛选条件:</span>
            <span v-if="tagList.length>0">
                    <el-tag  class="tag-cla" effect="plain" closable v-for="(tag,index) in tagList" @close="closeTag(index)">
                        <span>{{tag.label}}:</span> <span style="color: red">{{tag.value}}</span>
                    </el-tag>
                </span>
            <span v-else style="color: lightgray;font-size: 12px">还未选择筛选条件</span>
          </div>
          <div>
            <el-button size="mini" @click="cancelSel">取消选择</el-button>
          </div>
        </div>
        <div class="sel-filter-body1">
          <div class="sel-filter">
            <div class="item-car-no">
              <div>
                <img src="@/assets/locomotiveNumber.svg" style="vertical-align: middle;width: 26px">
                <span class="title">&nbsp;&nbsp;机车号:</span>
              </div>
              <div class="list">
                <div class="default">
                  <div  @click="selTrain(carNo)" v-for="(carNo,index) in carNoList" v-if="index<=(carNoBtn.moreStatus?carNoList.length-1:9)">
                    <el-checkbox v-show="carNoBtn.manySel" checked/>{{carNo.name}}
                  </div>
                  <div style="width: 100%;text-align: center" v-show="carNoBtn.manySel">
                    <el-button type="primary" size="mini">确定</el-button>
                    <el-button size="mini" @click="cancelManySel">取消</el-button>
                  </div>
                </div>
                <div class="btn">
                  <el-button size="mini" :disabled="carNoList.length<=10" @click="carNoBtn.moreStatus=!carNoBtn.moreStatus">更多<i :class="carNoBtn.moreStatus?'el-icon-arrow-up':'el-icon-arrow-down'"></i></el-button>
<!--                  <el-button size="mini" @click="manySelect">多选<i class="el-icon-plus"></i></el-button>-->
                </div>
              </div>
            </div>
          </div>
          <div class="sel-filter">
            <div class="item-car-no">
              <div class="title">
                <div>
                  <img src="@/assets/locomotiveNumber.svg" style="vertical-align: middle;width: 26px">
                  <span class="title">&nbsp;&nbsp;车次:</span>
                </div>
              </div>
              <div class="list" style="border-top: none">
                <div class="default">
                  <div @click="selTrain(carTime)"  v-for="(carTime,index) in carTimeList" v-if="index<=(carTimeBtn?carTimeList.length-1:9)">
                    {{carTime.name}}
                  </div>
                </div>
                <div class="btn">
                  <el-button size="mini" :disabled="carTimeList.length<=10" @click="carTimeBtn=!carTimeBtn">更多<i :class="carTimeBtn?'el-icon-arrow-up':'el-icon-arrow-down'"></i></el-button>
                </div>
              </div>
            </div>
          </div>
          <div class="sel-filter">
            <div class="item-car-no">
              <div class="title">
                <div>
                  <img src="@/assets/locomotiveNumber.svg" style="vertical-align: middle;width: 26px">
                  <span class="title">&nbsp;&nbsp;车站号:</span>
                </div>
              </div>
              <div class="list" style="border-top: none">
                <div class="default">
                  <div @click="selTrain(carState)" v-for="(carState,index) in carStateList" v-if="index<=(carStateBtn?carStateList.length-1:9)">{{carState.name}}</div>
                </div>
                <div class="btn">
                  <el-button size="mini" :disabled="carStateList.length<=10" @click="carStateBtn=!carStateBtn">更多<i :class="carStateBtn?'el-icon-arrow-up':'el-icon-arrow-down'"></i></el-button>
                </div>
              </div>
            </div>
          </div>
<!--            <div class="item-car-no">
              <div class="title">车次:</div>
              <div class="list" style="border-top: none">
                <div class="default">
                  <div @click="selTrain(carTime)"  v-for="(carTime,index) in carTimeList" v-if="index<=(carTimeBtn?carTimeList.length-1:9)">
                    {{carTime.name}}
                  </div>
                </div>
                <div class="btn">
                  <el-button size="mini" :disabled="carTimeList.length<=10" @click="carTimeBtn=!carTimeBtn">更多<i :class="carTimeBtn?'el-icon-arrow-up':'el-icon-arrow-down'"></i></el-button>
                </div>
              </div>
            </div>-->
<!--            <div class="item-car-no">
              <div class="title">车站号:</div>
              <div class="list" style="border-top: none">
                <div class="default">
                  <div @click="selTrain(carState)" v-for="(carState,index) in carStateList" v-if="index<=(carStateBtn?carStateList.length-1:9)">{{carState.name}}</div>
                </div>
                <div class="btn">
                  <el-button size="mini" :disabled="carStateList.length<=10" @click="carStateBtn=!carStateBtn">更多<i :class="carStateBtn?'el-icon-arrow-up':'el-icon-arrow-down'"></i></el-button>
                </div>
              </div>
            </div>-->
        </div>
      </el-card>
      <el-card class="bottom-container">
        <div class="audio-filter">
          <div>
            <el-select size="mini" v-model="whereTrain.isFollowed">
              <el-option :value="0" label="全部"></el-option>
              <el-option :value="1" label="已关注"></el-option>
              <el-option :value="2" label="未关注"></el-option>
            </el-select>
<!--           <el-select size="mini" style="margin-left: 10px" v-model="whereTrain.audioStatus">
            <el-option :value="0" label="全部"></el-option>
            <el-option :value="1" label="正常"></el-option>
            <el-option :value="4" label="异常"></el-option>
          </el-select>-->
          </div>
          <div class="icon">
            <div @click="audioListType='table'" :class="{'border-cla':audioListType==='table'}">
              <img :src="`${publicPath}images/audio/u167.png`" width="13px"/>
            </div>
            <div @click="audioListType='menu'" :class="{'border-cla':audioListType==='menu'}">
              <img :src="`${publicPath}images/audio/u168.png`" />
            </div>
          </div>
        </div>
        <div v-if="audioListType=='table'" class="audio-list-table">
          <div class="item"   v-for="audio in pageInfo.audioList" :key="audio.ID">
            <div class="head" @click="processAudio(audio)">
              <img :src="`${publicPath}images/audio/u230.png`"/>
<!--              <img :src="`${publicPath}images/audio/u231.png`" class="player"/>-->
<!--              <div class="time">06:20</div>-->
            </div>
            <div class="body">
              <div class="carNo">
                <div class="carNo-body">
                  <div><span class="carNo-sty1">车号:</span><span class="carNo-sty2">{{audio.locomotiveNumber}}</span></div>
                  <div><span class="carNo-sty1">车次:</span><span class="carNo-sty2">{{audio.trainNumber}}</span></div>
                  <div><span class="carNo-sty1">时间:</span><span class="carNo-sty2">{{audio.occurrenceTime}}</span></div>
                  <div><span class="carNo-sty1">司机:</span><span class="carNo-sty2">{{audio.driverNumber}}</span></div>
                </div>
<!--                <div>
                  车号:{{audio.locomotiveNumber}}<br/>
                  车次:{{audio.trainNumber}}<br>
                  时间:{{audio.occurrenceTime}}<br/>
                  司机:{{audio.driverNumber}}<br>
                </div>-->
<!--                <div class="status">
                  <span>{{audio.score}}</span>
                  <span v-if="audio.audioStatus===0">上传中</span>
                  <span v-else-if="audio.audioStatus===1" style="color: green">正常</span>
                  <span v-else-if="audio.audioStatus===2">处理中</span>
                  <span v-else-if="audio.audioStatus===3">异常</span>
                </div>-->
              </div>
              <div style="text-align: right;margin-right: 10px;">
                <el-rate :max="1" :value="audio.IsFollowed===1?1:0" @change="isFollowChange(audio)"></el-rate>
              </div>
              <div class="tag" v-if="Array.isArray(audio.words)">
                <div v-for="item in audio.words">{{item}}</div>
              </div>
              <div class="tag-no" v-else>
                <div>&nbsp;</div>
                <div>&nbsp;</div>
                <div>&nbsp;</div>
              </div>
            </div>
          </div>
        </div>
        <div v-else class="audio-list-menu">
          <el-table :data="pageInfo.audioList">
            <el-table-column prop="name" label="名称" align="center" min-width="220px"></el-table-column>
            <el-table-column prop="size" label="大小" align="center" width="100px"></el-table-column>
            <el-table-column prop="tag" label="标签" align="center">
              <template slot-scope="scope">
                <span v-if="scope.row.words">{{scope.row.words.join(',')}}</span>
                <span v-else>暂无标签</span>
              </template>
            </el-table-column>
            <el-table-column prop="UpdatedAt" label="修改时间" align="center">
              <template slot-scope="scope">
                {{$moment(scope.row.UpdateAt).format('YYYY-MM-DD HH:mm:ss')}}
              </template>
            </el-table-column>
            <el-table-column prop="CreatedAt" label="创建时间" align="center">
              <template slot-scope="scope">
                {{$moment(scope.row.CreateAt).format('YYYY-MM-DD HH:mm:ss')}}
              </template>
            </el-table-column>
            <el-table-column  label="操作" align="center">
              <template slot-scope="scope">
                <el-rate :max="1" :value="scope.row.IsFollowed===1?1:0" @change="isFollowChange(scope.row)"></el-rate>
              </template>
            </el-table-column>
          </el-table>
        </div>
        <div class="audio-pagination">
          <div class="total">共计{{pageInfo.total}}条记录 第{{pageData.page}}/{{lastPage}}页</div>
          <div class="page">
            <el-pagination
                background
                @size-change="handleSizeChange"
                @current-change="handleCurrentChange"
                :current-page.sync="pageData.page"
                :page-size="pageData.pageSize"
                layout="prev, pager, next,sizes, jumper"
                :total="pageInfo.total">
            </el-pagination>
          </div>
        </div>
        <Analysis ref="analysis" :modal-audio.sync="modalAudio" :look-audio="lookAudio"></Analysis>
      </el-card>
<!--        <div class="search">
            <el-form :inline="true" class="demo-form-inline">
                <el-form-item label="">
                    <el-date-picker
@@ -22,6 +258,7 @@
                </el-form-item>
            </el-form>
        </div>
        <div class="show-sel-tag">
            <div>
                已选条件:
@@ -36,6 +273,7 @@
                <el-button size="mini" @click="cancelSel">取消选择</el-button>
            </div>
        </div>
        <div class="sel-filter">
            <div class="item-car-no">
                <div class="title">车号:</div>
@@ -51,7 +289,7 @@
                    </div>
                    <div class="btn">
                        <el-button size="mini" :disabled="carNoList.length<=10" @click="carNoBtn.moreStatus=!carNoBtn.moreStatus">更多<i :class="carNoBtn.moreStatus?'el-icon-arrow-up':'el-icon-arrow-down'"></i></el-button>
                        <!--<el-button size="mini" @click="manySelect">多选<i class="el-icon-plus"></i></el-button>-->
                        &lt;!&ndash;<el-button size="mini" @click="manySelect">多选<i class="el-icon-plus"></i></el-button>&ndash;&gt;
                    </div>
                </div>
            </div>
@@ -81,18 +319,19 @@
            </div>
        </div>
        <div class="audio-filter">
      -->
<!--        <div class="audio-filter">
            <div>
                <el-select size="mini" v-model="whereTrain.isFollowed">
                    <el-option :value="0" label="全部"></el-option>
                    <el-option :value="1" label="已关注"></el-option>
                    <el-option :value="2" label="未关注"></el-option>
                </el-select>
               <!-- <el-select size="mini" style="margin-left: 10px" v-model="whereTrain.audioStatus">
               &lt;!&ndash; <el-select size="mini" style="margin-left: 10px" v-model="whereTrain.audioStatus">
                    <el-option :value="0" label="全部"></el-option>
                    <el-option :value="1" label="正常"></el-option>
                    <el-option :value="4" label="异常"></el-option>
                </el-select>-->
                </el-select>&ndash;&gt;
            </div>
            <div class="icon">
                <div @click="audioListType='table'" :class="{'border-cla':audioListType==='table'}">
@@ -120,10 +359,10 @@
                        </div>
                        <div class="status">
                            <span>{{audio.score}}</span>
                            <!--<span v-if="audio.audioStatus===0">上传中</span>
                            &lt;!&ndash;<span v-if="audio.audioStatus===0">上传中</span>
                            <span v-else-if="audio.audioStatus===1" style="color: green">正常</span>
                            <span v-else-if="audio.audioStatus===2">处理中</span>
                            <span v-else-if="audio.audioStatus===3">异常</span>-->
                            <span v-else-if="audio.audioStatus===3">异常</span>&ndash;&gt;
                        </div>
                    </div>
                    <div style="text-align: right;margin-right: 10px;">
@@ -181,7 +420,7 @@
                </el-pagination>
            </div>
        </div>
        <Analysis ref="analysis" :modal-audio.sync="modalAudio" :look-audio="lookAudio"></Analysis>
        <Analysis ref="analysis" :modal-audio.sync="modalAudio" :look-audio="lookAudio"></Analysis>-->
    </div>
</template>
@@ -306,12 +545,14 @@
                }else{
                    this.tagList.splice(searchIndex,1,obj);
                }
                this.searchCar();
            },
            async processAudio(audio){
                const {code,data} =await audioInfoApi(audio.ID);
                if(code===200){
                    this.$refs.analysis.audio[0].title=data.name;
                    this.$refs.analysis.audio[0].artist=data.driverNumber;
                    this.$refs.analysis.audio[0].url=`http://smartai.com:7013/api-sa/v1/audio/download?id=${audio.ID}`;
                    this.modalAudio=true;
                    this.lookAudio={...data};
                }else{
@@ -380,15 +621,50 @@
            },
            cancelSel(){
                this.tagList=[];
                this.searchCar();
            },
            closeTag(index){
                this.tagList.splice(index,1);
                this.searchCar();
            }
        }
    }
</script>
<style scoped lang="scss">
.top-container  {
  margin: 20px;
  min-height: 30vh
}
.search{
  ::v-deep .el-input-group__append button.el-button {
    background-color: #2d52d7;
    height: 34px;
  }
}
.bottom-container{
  margin: 20px;
  min-height: 40vh;
}
.carNo-body{
  margin-top: 10px;
}
.carNo-body div{
  margin-top: 3px;
}
.carNo-sty1{
  color:#95a0b9;
}
.carNo-sty2{
  color: #425277;
  font-weight: bold;
  padding-left: 6px;
}
    /*   */
    .show-sel-tag{
        display: flex;
        justify-content: space-between;
@@ -397,20 +673,24 @@
        }
    }
    .sel-filter{
      border-bottom: 1px solid lightgray;
      padding-bottom: 10px;
        margin-top: 20px;
        .item-car-no{
            display: flex;
            justify-content: space-between;
            line-height: 40px;
            .title{
                padding-left: 20px;
                //padding-left: 5px;
                width: 10%;
                background-color: lightgray;
              color:  #2d52d7;
              font-weight: bold;
                //background-color: lightgray;
            }
            .list{
                display: flex;
                width: 90%;
                border:1px solid lightgray ;
                //border:1px solid lightgray ;
                .default{
                    width: 80%;
                    display: flex;
src/views/home/components/leftNav.vue
@@ -1,18 +1,44 @@
<template>
  <div class="left-nav">
    <h1>
    <div class="left-nav-title">
      <img src="@/assets/logo2.svg" />
      <div>语音智能分析应用</div>
    </div>
    <div style="margin: 20px 0"></div>
    <div class="left-nav-body">
      <img
        class="icon"
        :src="`${publicPath}images/audio/railroad.png`"
        style="height: 30px"
          class="icon"
          :src="`${publicPath}images/audio/u606.png`"
      />
      <div v-show="!isCollapse" :class="{item:true,'is-active':$route.path==='/home/uploadAudio','span-sty':true}"  @click="$router.push('/home/uploadAudio',()=>{})">音频上传</div>
    </div>
    <div class="left-nav-body">
      <img
          class="icon"
          :src="`${publicPath}images/audio/u819.png`"
      />
      <span v-show="!isCollapse" :class="{item:true,'is-active':$route.path==='/home/audioAnalysis','span-sty':true}"  @click="$router.push('/home/audioAnalysis',()=>{})">音频分析检索</span>
    </div>
    <div class="left-nav-body">
      <img
          class="icon"
          :src="`${publicPath}images/audio/u=1143771061,298321605&fm=253&fmt=auto&app=138&f=JPEG.webp`"
      />
      <span v-show="!isCollapse" :class="{item:true,'is-active':$route.path==='/home/textManager','span-sty':true}" @click="$router.push('/home/textManager',()=>{})">文字库管理</span>
    </div>
<!--    <h1>
      <img
          class="icon"
          :src="`${publicPath}images/audio/railroad.png`"
          style="height: 30px"
      />
      <span v-show="!isCollapse" style="display:inline-block;width:180px;padding-left: 6px">语音智能分析应用</span>
    </h1>
    <div class="menu-btn" v-show="!isCollapse">
    </h1>-->
<!--    <div class="menu-btn" v-show="!isCollapse">
      <div :class="{item:true,'is-active':$route.path==='/home/uploadAudio'}"  @click="$router.push('/home/uploadAudio',()=>{})">音频上传</div>
      <div :class="{item:true,'is-active':$route.path==='/home/audioAnalysis'}"  @click="$router.push('/home/audioAnalysis',()=>{})">音频分析检索</div>
      <div :class="{item:true,'is-active':$route.path==='/home/textManager'}" @click="$router.push('/home/textManager',()=>{})">文字库管理</div>
    </div>
    </div>-->
  </div>
</template>
@@ -27,8 +53,8 @@
  computed: {
    isAdmin() {
      if (
        sessionStorage.getItem("userInfo") &&
        sessionStorage.getItem("userInfo") !== ""
          sessionStorage.getItem("userInfo") &&
          sessionStorage.getItem("userInfo") !== ""
      ) {
        let loginName = JSON.parse(sessionStorage.getItem("userInfo")).username;
        return loginName === "admin" || loginName === "basic";
@@ -59,9 +85,42 @@
</script>
<style scoped lang="scss">
.left-nav-title{
  text-align: center;
  font-weight: bold;
  font-size: 16px;
  color: white;
  padding-top: 80px;
}
.left-nav-body{
  display: flex;
  align-items: center;
  height: 50px;
  //padding: 0 20px;
  font-size: 12px;
  padding-left: 60px;
  //border-bottom: 1px solid #eee;
  color:white;
  //border: 1px solid burlywood;
}
.left-nav-body:hover{
  background-color: rgba(255, 255, 255, 0.2);}
.icon{
  background-color: white;
  width:20px;
  height:20px;
}
.span-sty{
  display:inline-block;
  width:180px;
  padding-left: 10px;
  cursor: pointer;
}
/**/
.left-nav {
  background: #fff;
  background: #03347a;
  height: 100vh;
  //width: 280px;
  h1 {
    display: flex;
    align-items: center;
src/views/home/components/textManager/index.vue
@@ -22,49 +22,61 @@
                <el-button type="primary" @click="addText">确 定</el-button>
            </span>
        </el-dialog>
        <div class="search">
            <el-row type="flex" justify="center">
                <el-col :span="18">
                    <el-form :inline="true" class="demo-form-inline">
                        <el-form-item label="文字内容/车号:">
                            <el-input v-model="keyword" size="small" placeholder="请输入"></el-input>
                        </el-form-item>
                        <el-form-item>
                            <el-button  @click="searchCar" size="mini" type="primary" style="border:none;background-color: rgba(24, 144, 255, 1)">查询</el-button>
                        </el-form-item>
                    </el-form>
                </el-col>
                <el-col :span="6" style="text-align: right">
                    <el-button  size="mini" @click="addModal=true" type="primary" style="border:none;background-color: rgba(24, 144, 255, 1)">添加</el-button>
                </el-col>
            </el-row>
        </div>
        <div>
            <el-table :data="pageInfo.textList" >
                <el-table-column prop="ID" label="序号" align="center" />
                <el-table-column prop="content" label="文字内容" align="center" />
                <el-table-column prop="locomotiveNumber" label="车号" align="center" />
                <el-table-column prop="CreatedAt" label="添加时间" align="center" >
                    <template slot-scope="scope">
                        {{$moment(scope.row.CreatedAt).format('YYYY-MM-DD HH:mm:ss')}}
                    </template>
                </el-table-column>
            </el-table>
            <div class="pagination">
                <div class="total">共计{{pageInfo.total}}条记录 第{{pageData.page}}/{{lastPage}}页</div>
                <div class="page">
                    <el-pagination
                            background
                            @size-change="handleSizeChange"
                            @current-change="handleCurrentChange"
                            :current-page.sync="pageData.page"
                            :page-size="pageData.pageSize"
                            layout="prev, pager, next,sizes, jumper"
                            :total="pageInfo.total">
                    </el-pagination>
                </div>
            </div>
        </div>
        <el-row type="flex" justify="center">
            <el-col :span="23">
                <el-card style="margin-top: 20px;height: 85vh">
                    <div class="search">
                        <el-row type="flex" justify="center">
                            <el-col :span="18">
                                <el-form :inline="true" class="demo-form-inline">
                                    <el-form-item label="文字内容/车号:">
                                        <el-input v-model="keyword" size="small" placeholder="请输入"></el-input>
                                    </el-form-item>
                                    <el-form-item>
                                        <el-button  @click="searchCar" size="mini" type="primary" style="border:none;background-color: rgba(24, 144, 255, 1)">查询</el-button>
                                    </el-form-item>
                                </el-form>
                            </el-col>
                            <el-col :span="6" style="text-align: right">
                                <el-button  size="mini" @click="addModal=true" type="primary" style="border:none;background-color: rgba(24, 144, 255, 1)">添加</el-button>
                            </el-col>
                        </el-row>
                    </div>
                    <div>
                        <el-table :data="pageInfo.textList" border>
                            <el-table-column prop="ID" label="序号" align="center" />
                            <el-table-column prop="content" width="340px" label="文字内容" align="center">
                                <template slot-scope="scope">
                                    <el-tooltip class="item" effect="dark" :content="scope.row.content" placement="bottom">
                                        <div class="content-warp">{{scope.row.content}}</div>
                                    </el-tooltip>
                                </template>
                            </el-table-column>
                            <el-table-column prop="locomotiveNumber" label="车号" align="center" />
                            <el-table-column prop="CreatedAt" label="添加时间" align="center" >
                                <template slot-scope="scope">
                                    {{$moment(scope.row.CreatedAt).format('YYYY-MM-DD HH:mm:ss')}}
                                </template>
                            </el-table-column>
                        </el-table>
                        <div class="pagination">
                            <div class="total">共计{{pageInfo.total}}条记录 第{{pageData.page}}/{{lastPage}}页</div>
                            <div class="page">
                                <el-pagination
                                        background
                                        @size-change="handleSizeChange"
                                        @current-change="handleCurrentChange"
                                        :current-page.sync="pageData.page"
                                        :page-size="pageData.pageSize"
                                        layout="prev, pager, next,sizes, jumper"
                                        :total="pageInfo.total">
                                </el-pagination>
                            </div>
                        </div>
                    </div>
                </el-card>
            </el-col>
        </el-row>
    </div>
</template>
@@ -149,4 +161,11 @@
            color: gray;
        }
    }
    .content-warp{
        margin: 0px auto;
        width: 85%;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
</style>
src/views/home/components/topNav.vue
@@ -7,8 +7,13 @@
      <i class="el-icon-bell"></i>
    </div>
    <div class="user-area" >
      <el-avatar size="small" :src="pic"></el-avatar>
      <span class="name">张三</span>
      <el-dropdown placement="bottom"  @command="clickItem">
        <el-avatar size="small" :src="pic"></el-avatar>
        <el-dropdown-menu slot="dropdown">
          <el-dropdown-item command="logout">退出登录</el-dropdown-item>
        </el-dropdown-menu>
      </el-dropdown>
      <span class="name">admin</span>
    </div>
  </div>
</template>
@@ -18,9 +23,18 @@
export default {
  data(){
    return {
    }
  },
  methods:{
      clickItem(item){
          if(item==='logout'){
              this.$message.success('退出系统成功');
              setTimeout(()=>{
                  this.$router.push('/login');
              },1000);
          }
      }
  },
  computed:{
    pic(){
      return `${publicPath}images/audio/u73.jpg`
src/views/home/components/uploadAudio/index.vue
@@ -1,96 +1,117 @@
<template>
    <div class="upload-audio-container">
        <div class="left">
            <el-form :inline="true" class="demo-form-inline">
                <el-form-item label="">
                    <el-input v-model.lazy="keyword" placeholder="请输入搜索内容" suffix-icon="el-icon-search" size="small"></el-input>
                </el-form-item>
                <el-form-item>
                    <el-button type="primary" @click="manyAnalysisAudio" icon="el-icon-video-play"  plain size="mini">批量分析</el-button>
                    <el-button type="danger" @click="deleteManyAudio" icon="el-icon-delete" plain size="mini">批量删除</el-button>
                    <el-upload
                            style="display: inline-block;margin-left: 10px"
                            action="/api-sa/v1/audio/upload"
                            :on-change="selFile"
                            accept=".mp3,.wav"
                            :show-file-list="false"
                            :on-success="upSuccess"
                            >
                        <el-button size="small" type="primary">点击上传</el-button>
                    </el-upload>
                </el-form-item>
            </el-form>
        </div>
        <div class="right">
            <el-tabs v-model="activeName">
                <el-tab-pane label="已上传" name="first">
                    <div>
                        <el-table :data="pageInfo.audioList" border @selection-change="selAudio">
                            <el-table-column label='全选' type="selection"  align="center" />
                            <el-table-column prop="name" label="文件名" min-width="200px" align="center" />
                            <el-table-column prop="size" label="大小" align="center" />
                            <el-table-column prop="occurrenceTime" label="上传时间" align="center" />
                            <el-table-column prop="audioStatus" label="处理状态" align="center" >
                                <template slot-scope="scope">
                                    <span v-if="scope.row.audioStatus===0" style="color:wheat">上传中</span>
                                    <span v-else-if="scope.row.audioStatus===1" style="color: blue">上传成功</span>
                                    <span v-else-if="scope.row.audioStatus===2" style="color: cyan">处理中</span>
                                    <span v-else-if="scope.row.audioStatus===3" style="color: green">处理完成</span>
                                    <span v-else-if="scope.row.audioStatus===4" style="color: red">处理失败</span>
                                </template>
                            </el-table-column>
                            <el-table-column label="操作" align="center" >
                                <template slot-scope="scope">
                                    <el-button icon="el-icon-video-play" @click="analysisAudio(scope.row.ID)" type="text"></el-button>
                                    <el-button icon="el-icon-delete" type="text" @click="deleteAudio(scope.row.ID)"></el-button>
                                </template>
                            </el-table-column>
                        </el-table>
                        <div class="pagination">
                            <div class="total">共计{{pageInfo.total}}条记录 第{{pageData.page}}/{{lastPage}}页</div>
                            <div class="page">
                                <el-pagination
                                        background
                                        @size-change="handleSizeChange"
                                        @current-change="handleCurrentChange"
                                        :current-page.sync="pageData.page"
                                        :page-size="pageData.pageSize"
                                        layout="prev, pager, next,sizes, jumper"
                                        :total="pageInfo.total">
                                </el-pagination>
                            </div>
                        </div>
        <el-row type="flex" justify="center">
            <el-col :span="23">
                <el-card style="margin-top: 20px;height: 85vh">
                    <div class="left">
                        <el-form :inline="true" class="demo-form-inline">
                            <el-form-item label="">
                                <el-input v-model.lazy="keyword" placeholder="请输入搜索内容" suffix-icon="el-icon-search" size="small"></el-input>
                            </el-form-item>
                            <el-form-item>
                                <el-button type="primary" @click="manyAnalysisAudio" icon="el-icon-video-play"  plain size="mini">批量分析</el-button>
                                <el-button type="danger" @click="deleteManyAudio" icon="el-icon-delete" plain size="mini">批量删除</el-button>
                                <el-upload
                                        style="display: inline-block;margin-left: 10px"
                                        action="#"
                                        :auto-upload="false"
                                        :on-change="selFile"
                                        accept=".mp3,.wav"
                                        :show-file-list="false"
                                        :on-success="upSuccess"
                                >
                                    <el-button size="small" type="primary">点击上传</el-button>
                                </el-upload>
                            </el-form-item>
                        </el-form>
                    </div>
                </el-tab-pane>
                <el-tab-pane label="正在上传" name="second">
                   <!-- <el-skeleton style="width: 100%" :loading="isUpload" animated>
                        <template slot="template">
                            <div style="padding: 14px;">
                                <el-skeleton-item variant="h3" style="width: 100%;height: 40px" />
                            </div>
                        </template>
                    </el-skeleton>-->
                    <div>
                        <el-skeleton  animated :loading="isUpload">
                            <template slot="template">
                                <div style="padding: 14px;">
                                    <el-skeleton-item  style="width: 100%;height: 40px" />
                    <div class="right">
                        <el-tabs v-model="activeName">
                            <el-tab-pane label="已上传" name="first">
                                <div>
                                    <el-table :data="pageInfo.audioList"
                                              border @selection-change="selAudio"
                                    >
                                        <el-table-column :selectable="selectable" label='全选' type="selection"  align="center" />
                                        <el-table-column prop="name" label="文件名" min-width="200px" align="center" />
                                        <el-table-column prop="size" label="大小" align="center" />
                                        <el-table-column prop="occurrenceTime" label="上传时间" align="center" />
                                        <el-table-column prop="audioStatus" label="处理状态" align="center" >
                                            <template slot-scope="scope">
                                                <span v-if="scope.row.audioStatus===0" style="color:wheat">上传中</span>
                                                <span v-else-if="scope.row.audioStatus===1" style="color: blue">上传成功</span>
                                                <span v-else-if="scope.row.audioStatus===2" style="color: cyan">处理中</span>
                                                <span v-else-if="scope.row.audioStatus===3" style="color: green">处理完成</span>
                                                <span v-else-if="scope.row.audioStatus===4" style="color: red">处理失败</span>
                                            </template>
                                        </el-table-column>
                                        <el-table-column label="操作" align="center" >
                                            <template slot-scope="scope">
                                                <el-tooltip class="item" effect="dark" content="下载" placement="bottom">
                                                    <el-button icon="el-icon-download" @click="downloadAudio(scope.row.ID)" type="text"></el-button>
                                                </el-tooltip>
                                                <el-tooltip class="item" effect="dark" content="分析" placement="bottom">
                                                    <el-button icon="el-icon-video-play" @click="analysisAudio(scope.row.ID)" type="text"></el-button>
                                                </el-tooltip>
                                                <el-tooltip v-if="scope.row.audioStatus!==3" class="item" effect="dark" content="删除" placement="bottom">
                                                    <el-button icon="el-icon-delete" type="text" @click="deleteAudio(scope.row.ID)"></el-button>
                                                </el-tooltip>
                                            </template>
                                        </el-table-column>
                                    </el-table>
                                    <div class="pagination">
                                        <div class="total">共计{{pageInfo.total}}条记录 第{{pageData.page}}/{{lastPage}}页</div>
                                        <div class="page">
                                            <el-pagination
                                                    background
                                                    @size-change="handleSizeChange"
                                                    @current-change="handleCurrentChange"
                                                    :current-page.sync="pageData.page"
                                                    :page-size="pageData.pageSize"
                                                    layout="prev, pager, next,sizes, jumper"
                                                    :total="pageInfo.total">
                                            </el-pagination>
                                        </div>
                                    </div>
                                </div>
                            </template>
                        </el-skeleton>
                            </el-tab-pane>
                            <el-tab-pane label="正在上传" name="second">
                                <!-- <el-skeleton style="width: 100%" :loading="isUpload" animated>
                                     <template slot="template">
                                         <div style="padding: 14px;">
                                             <el-skeleton-item variant="h3" style="width: 100%;height: 40px" />
                                         </div>
                                     </template>
                                 </el-skeleton>-->
                                <div v-if="progressLoad">
                                    <div style="padding: 14px;" class="right-progress">
                                        <div class="p-left">上传速度:{{ this.speed }}</div>
                                        <div class="p-right">预计时间:{{ this.leftTime }}</div>
                                    </div>
                                    <el-progress :color="customColors" :text-inside="true" :stroke-width="26" :percentage="percentage"></el-progress>
                                </div>
                            </el-tab-pane>
                        </el-tabs>
                    </div>
                </el-tab-pane>
            </el-tabs>
        </div>
                </el-card>
            </el-col>
        </el-row>
    </div>
</template>
<script>
    import {audioListApi,processAudioApi,deleteAudioApi,batchProcessAudioApi,batchDeleteAudioApi} from '@/api';
    import {request} from "@/utils";
    import axios from 'axios';
    let timer= null;
    export default {
        name: "index",
        data(){
            return {
                percentage:0,
                speed:0,
                leftTime:0,
                progressLoad:false,
                isUpload:false,
                activeName:'first',
                keyword:'',
@@ -99,7 +120,12 @@
                    total:0
                },
                pageData:{page:1,pageSize:10},
                ids:[]
                ids:[],
                customColors: [
                    {color: '#f56c6c', percentage: 20},
                    {color: '#e6a23c', percentage: 40},
                    {color: '#5cb87a', percentage: 60}
                ]
            }
        },
        watch:{
@@ -121,7 +147,22 @@
                return Math.ceil(this.pageInfo.total/this.pageData.pageSize)
            }
        },
        beforeDestroy(){
          if(timer){
              window.clearInterval(timer);
          }
        },
        methods:{
            selectable(row){
                if(row.audioStatus===3){
                    return false
                }else{
                    return true;
                }
            },
            async downloadAudio(id){
                window.location.href=`http://smartai.com:7013/api-sa/v1/audio/download?id=${id}`
            },
            upSuccess({code}){
               if(code===200){
                   this.$message.success('上传成功');
@@ -133,9 +174,88 @@
                   this.isUpload=false;
               });
            },
            selFile(file,fileList){
            async selFile(_,fileList){
                this.activeName='second';
                this.isUpload=true;
                if(fileList.length>0){
                    const file = fileList[0].raw;
                    const formData = new FormData();
                    formData.append("file", file);
                    this.progressLoad = true;
                    this.percentage=0;
                    let lastTime = 0; // 上一次计算时间
                    let lastSize = 0; // 上一次计算的文件大小
                    try{
                        const {code} = await axios.post("/api-sa/v1/audio/upload", formData,
                            {
                            onUploadProgress: (progressEvent) => {
                                console.log(progressEvent);
                                /*验证数据*/
                                if (lastTime === 0) {
                                    lastTime = new Date().getTime();
                                    lastSize = progressEvent.loaded;
                                    return;
                                }
                                /*计算间隔*/
                                let nowTime = new Date().getTime();
                                let intervalTime = (nowTime - lastTime) / 1000; // 时间单位为毫秒,需转化为秒
                                let intervalSize = progressEvent.loaded - lastSize;
                                /*重新赋值以便于下次计算*/
                                lastTime = nowTime;
                                lastSize = progressEvent.loaded;
                                /*计算速度*/
                                let speed = (intervalSize / intervalTime)/10;
                                let bSpeed = speed; // 保存以b/s为单位的速度值,方便计算剩余时间
                                let units = "b/s"; // 单位名称
                                if (speed / 1024 > 1) {
                                    speed = speed / 1024;
                                    units = "k/s";
                                }
                                if (speed / 1024 > 1) {
                                    speed = speed / 1024;
                                    units = "M/s";
                                }
                                let leftTime = (progressEvent.total) / bSpeed;
                                /*计算进度*/
                                if(timer){
                                    window.clearInterval(timer);
                                }
                                timer=window.setInterval(()=>{
                                    if(this.percentage>=90){
                                        window.clearInterval(timer);
                                        timer=null;
                                    }
                                    this.percentage+=parseInt(Math.random()*10);
                                    speed=(Math.random()*500+500).toFixed(2)
                                    this.speed = speed + "k/s";
                                    this.leftTime=(lastSize/speed/1000).toFixed(2)+ "秒";
                                },500);
                                //= parseInt((progressEvent.loaded / progressEvent.total) * 100)-1;
                               // this.speed = speed.toFixed(2) + units;
                                //this.leftTime = leftTime.toFixed(2) + "秒";
                            }
                        });
                        if (code === 200) {
                            this.$message({
                                message: "上传成功",
                                type: "success"
                            });
                        } else {
                            this.$message({
                                message: "上传失败",
                                type: "error",
                            });
                        }
                        this.$nextTick(()=>{
                            this.progressLoad = false;
                            this.percentage=100;
                            window.clearInterval(timer);
                            this.queryAudioList();
                        });
                    }catch (error) {
                        console.log(error);
                    }
                }
            },
            selAudio(rows){
                this.ids=rows.map(item=>item.ID);
@@ -153,14 +273,6 @@
                    this.pageInfo.audioList=data;
                    this.pageInfo.total=total;
                }
                /*this.pageInfo.audioList=[
                    {filename:'0_20240519_xx_01.mp3',size:'879.88k',uploadAt:'2024-05-10 10:10:10',status:0},
                    {filename:'0_20240519_xx_02.mp3',size:'879.88k',uploadAt:'2024-05-10 10:10:10',status:1},
                    {filename:'0_20240519_xx_03.mp3',size:'879.88k',uploadAt:'2024-05-10 10:10:10',status:0},
                    {filename:'0_20240519_xx_04.mp3',size:'879.88k',uploadAt:'2024-05-10 10:10:10',status:1},
                    {filename:'0_20240519_xx_05.mp3',size:'879.88k',uploadAt:'2024-05-10 10:10:10',status:2},
                    {filename:'0_20240519_xx_06.mp3',size:'879.88k',uploadAt:'2024-05-10 10:10:10',status:2},
                ]*/
            },
            analysisAudio(id){
                this.$confirm('是否进行音频分析, 是否继续?', '提示', {
@@ -247,6 +359,20 @@
            position: relative;
            top:-60px;
        }
        .right-progress{
            display: flex;
            justify-content: space-around;
            .p-left{
                width: 85%;
                text-align: center;
                position: relative;
                left: 20px;
            }
            .p-right{
                width: 15%;
                text-align: left;
            }
        }
        .pagination{
            display: flex;
            justify-content: space-between;
src/views/home/index.vue
@@ -5,15 +5,15 @@
        </div>
        <div class="right">
            <div class="top">
                <div class="collapse-trigger" @click="toggleCollapse">
                <!--<div class="collapse-trigger" @click="toggleCollapse">
                    <i :class="isCollapse ? 'el-icon-s-unfold' : 'el-icon-s-fold'"></i>
                </div>
                </div>-->
                <top-nav></top-nav>
            </div>
            <div class="body">
                <el-card style="margin: 20px 0px 0px 20px;min-height: 90vh">
<!--                <el-card style="margin: 20px 0px 0px 20px;min-height: 90vh">-->
                    <router-view></router-view>
                </el-card>
<!--                </el-card>-->
            </div>
        </div>
    </div>
src/views/login/Login.vue
@@ -81,8 +81,8 @@
                       if(this.user.name==="admin" && this.user.password==="admin"){
                           this.$message.success("登录成功");
                           setTimeout(()=>{
                               this.$router.push('/home/audioAnalysis',()=>{})
                           },500);
                               this.$router.push('/home/uploadAudio',()=>{})
                           },1000);
                       }else{
                           this.$message.error("用户名或者密码错误,请重新输入!");
                       }
vue.config.js
@@ -22,15 +22,12 @@
            }
        },
        proxy:{
            // "/api/base": {
            //     target: 'http://aps.fai365.com:9080',
            //     //注: 暂时使用====用戶权限,角色暂时用的环境
            //     // target: "http://192.168.20.119:8011",
            //     changeOrigin: true,
            // },
            [process.env.VUE_APP_BASE_API]:{
                target: process.env.VUE_APP_BASE_URL,
                changeOrigin: true,
                // pathRewrite: {
                //     ['^'+process.env.VUE_APP_BASE_API]: ''
                // }
            }
        }
    }