浏览代码

no message

DESKTOP-SVI9JE1\muzen 1 年之前
父节点
当前提交
adc16bf403

+ 26 - 44
src/components/GanttChart/index.vue

@@ -23,8 +23,8 @@
       <div class="line" />
     </div>
     <div class="grid">
-      <draggable class="label_box" v-model="data.list" group="componentGroup" item-key="item" :move="onMove"
-        @end="onEnd" chosen-class="chosenClass">
+      <draggable class="label_box" v-model="data.list" group="componentGroup" item-key="item"
+        chosen-class="chosenClass">
         <template #item="{ element, index }">
           <div :style="{
         display: getDisplay(element), top: getTop(element), left: getLeft(element),
@@ -41,7 +41,8 @@
                       v-hasPermi="['content:setting:edit', 'content:scene:edit', 'content:insert:edit']">
                       <Edit />
                     </el-icon>
-                    <el-icon @click="getDelete(element)" v-hasPermi="['content:setting:delete', 'content:scene:delete', 'content:insert:delete']">
+                    <el-icon @click="getDelete(element)"
+                      v-hasPermi="['content:setting:delete', 'content:scene:delete', 'content:insert:delete']">
                       <Delete />
                     </el-icon>
                   </div>
@@ -136,7 +137,8 @@ const modal = (res) => {
           status: i.status,
           storeId: i.storeId,
           sort: 0,
-          index: 0
+          index: 0,
+          request: true
         })
       })
     })
@@ -171,30 +173,6 @@ watch(() => props.date, (val) => {
   getTimeList()
 })
 
-// 拖拽内容
-function onMove(params) {
-  if (params.from.className === params.to.className) {
-    return false
-  } else {
-    return true
-  }
-}
-
-// 拖拽结束
-function onEnd(params) {
-  if (checkPermi(['content:setting:add', 'content:scene:add', 'content:insert:add'])) {
-    if (params.from.className !== params.to.className) {
-      proxy.$modal.confirm(`是否要添加?`).then(() => {
-        getDetail({ audioList: JSON.stringify(params.item.__draggable_context.element), disabled: true })
-      }).catch(() => {
-        params.to.firstChild.remove()
-      })
-    }
-  } else {
-    proxy.$modal.msgError('暂无权限')
-  }
-}
-
 // 删除
 const getDelete = (row) => {
   let name = row.name ? row.name : row.takeName
@@ -266,32 +244,36 @@ const storeName = (val) => {
   return e ? e.name : val
 }
 
-const getHeight = (val) => {
-  if (val.startTime) {
-    return (proxy.hoursToSeconds(val.endTime) - proxy.hoursToSeconds(val.startTime)) / 3600 * 60 + 'px'
-  }
+const getDisplay = (val) => {
+  return val.startTime ? '' : 'none'
 }
 
 const getTop = (val) => {
-  if (val.startTime) {
+  if (val.startTime && val.request) {
     return proxy.hoursToSeconds(val.startTime) / 3600 * 60 + 'px'
   }
 }
 
-const getDisplay = (val) => {
-  return val.startTime ? '' : 'none'
+const getLeft = (val) => {
+  if (val.startTime && val.request) {
+    return val.index * (100 / data.number[val.sort].length) + '%'
+  }
 }
 
-const getWidth = (val) => {
-  if (val.startTime) {
-    let e = 100 / data.number[val.sort].length + '%'
-    return `calc(${e} - 10px)`
+const getHeight = (val) => {
+  if (val.request) {
+    if (val.startTime) {
+      return (proxy.hoursToSeconds(val.endTime) - proxy.hoursToSeconds(val.startTime)) / 3600 * 60 + 'px'
+    }
+  } else {
+    return 0
   }
 }
 
-const getLeft = (val) => {
-  if (val.startTime) {
-    return val.index * (100 / data.number[val.sort].length) + '%'
+const getWidth = (val) => {
+  if (val.startTime && val.request) {
+    let e = 100 / data.number[val.sort].length + '%'
+    return `calc(${e} - 10px)`
   }
 }
 </script>
@@ -337,7 +319,7 @@ const getLeft = (val) => {
     width: calc(100% - 50px);
 
     .label_box {
-      height: 1440px
+      height: 1440px;
     }
 
     .grid-item {
@@ -396,6 +378,6 @@ const getLeft = (val) => {
 }
 
 .chosenClass {
-  background: none !important;
+  background: rgba(57, 121, 249, 0.1) !important;
 }
 </style>

+ 0 - 15
src/views/business/list/index.vue

@@ -38,7 +38,6 @@
       <el-table-column label="操作" align="center">
         <template #default="scope">
           <el-button type="primary" link @click="getDialog(scope.row.id, '编辑')"  v-hasPermi="['business:list:edit']">编辑</el-button>
-          <el-button type="primary" link @click="getDialogHistory">操作日志</el-button>
           <el-button type="primary" link @click="getReset(scope.row)" v-hasPermi="['business:list:refresh']">重置密码</el-button>
           <el-button type="danger" link @click="getDelete(scope.row)" v-hasPermi="['business:list:delete']">删除</el-button>
         </template>
@@ -86,13 +85,6 @@
         <el-button type="primary" @click="getSubmit">确定</el-button>
       </template>
     </el-dialog>
-
-    <el-dialog v-model="dialogVisible_history" title="操作日志" width="500">
-      <el-table>
-        <el-table-column label="账号名称" align="center"></el-table-column>
-        <el-table-column label="操作时间" align="center"></el-table-column>
-      </el-table>
-    </el-dialog>
   </div>
 </template>
 
@@ -225,8 +217,6 @@ function beforeChange(row) {
 
 // 弹窗
 const dialogVisible = ref(false)
-// 操作日志弹窗
-const dialogVisible_history = ref(false)
 // 弹窗标题
 const title = ref("新增")
 
@@ -316,11 +306,6 @@ function getSubmit() {
   })
 }
 
-// 操作日志
-function getDialogHistory() {
-  dialogVisible_history.value = true
-}
-
 // 删除
 function getDelete(row) {
   proxy.$modal.confirm(`是否删除企业名称为:${row.name}的数据?`).then(() => {

+ 49 - 27
src/views/content/insert/detail.vue

@@ -2,13 +2,17 @@
   <div class='app-container'>
     <el-form class="form" label-width="100px" ref="form" :model="data.form" :rules="data.rules">
       <el-form-item class="chooseAudio" label="插播音频:" prop="audioList">
-        <div class="audioList" v-for="(item, index) in data.form.audioList" :key="item.id"
-          :style="{ 'height': item.type !== 2 ? '45px' : '' }">
-          <el-tag size="large" :closable="checkClose()"
-            @close="handleClose(index)">
-            {{ item.audioName }}
-          </el-tag>
+        <div :class="['audio_box', audioListHidden ? 'audio_box_hidden' : '']">
+          <div class="audioList" v-for="(item, index) in data.form.audioList" :key="item.id"
+            :style="{ 'height': item.type !== 2 ? '45px' : '' }">
+            <el-tag size="large" :closable="checkClose()" @close="handleClose(index)">
+              {{ item.audioName }}
+            </el-tag>
+          </div>
         </div>
+        <el-button type="primary" link v-if="data.form.audioList.length >= 15"
+          :icon="audioListHidden ? 'ArrowDown' : 'ArrowUp'" style="width: 100%; height: 20px; margin-bottom: 10px"
+          @click="handleHidden" />
         <div style="width: 100%;">
           <el-button v-if="checkClose()" icon="Plus" @click="getDialog">新增</el-button>
         </div>
@@ -52,19 +56,20 @@
             <el-option v-for="item in data.radioOptions" :key="item.value" :value="item.value" :label="item.label" />
           </el-select>
         </el-form-item>
-        <el-form-item label="名称:">
+        <el-form-item v-show="audioData.form.type !== 2" label="音频ID:">
+          <el-input v-model="audioData.form.id" placeholder="请输入音频ID" />
+        </el-form-item>
+        <el-form-item label="音频名称:">
           <el-input v-model="audioData.form.name" placeholder="请输入名称" />
         </el-form-item>
-        <el-form-item label="分类:">
+        <el-form-item v-show="audioData.form.type === 1" label="歌手名称:">
+          <el-input v-model="audioData.form.singerName" placeholder="请输入歌手名称" />
+        </el-form-item>
+        <el-form-item v-show="audioData.form.type === 0" label="音频分类:">
           <el-select v-model="audioData.form.sceneId" placeholder="请选择分类">
             <el-option v-for="item in audioClassData.options" :key="item.id" :value="item.id" :label="item.name" />
           </el-select>
         </el-form-item>
-        <el-form-item label="当前状态:">
-          <el-select v-model="audioData.form.status" placeholder="请选择当前状态">
-            <el-option v-for="item in sys_change_status" :key="item.value" :value="item.value" :label="item.label" />
-          </el-select>
-        </el-form-item>
         <el-form-item>
           <el-button type="primary" icon="Search" @click="getSearch">搜索</el-button>
           <el-button icon="Refresh" @click="getRefresh">重置</el-button>
@@ -72,17 +77,19 @@
       </el-form>
       <el-table ref="table" :data="audioData.tableData" :row-key="rowKey" @selection-change="handleSelectionChange"
         v-loading="audioData.loading">
-        <el-table-column type="selection" width="55" />
-        <el-table-column label="ID" prop="id" align="center" show-overflow-tooltip />
-        <el-table-column label="名称" prop="name" align="center" show-overflow-tooltip />
-        <el-table-column label="时长" prop="playTime" align="center">
+        <el-table-column type="selection" width="55" key="selection" />
+        <el-table-column label="ID" prop="id" align="center" key="id" show-overflow-tooltip />
+        <el-table-column label="音频名称" prop="name" align="center" key="name" show-overflow-tooltip />
+        <el-table-column v-if="audioData.form.type == 1" label="歌手名称" prop="singerName" key="singerName"
+          align="center" />
+        <el-table-column v-if="audioData.form.type !== 1" label="时长" prop="playTime" align="center" key="playTime">
           <template #default="scope">
             {{ playTime(scope.row.playTime) }}
           </template>
         </el-table-column>
-        <el-table-column label="分类" prop="sceneId" align="center" :formatter="sceneFormatter" />
-        <el-table-column label="当前状态" prop="status" align="center" :formatter="statusFormatter" />
-        <el-table-column label="更新时间" prop="updateTime" align="center" show-overflow-tooltip />
+        <el-table-column label="分类" prop="sceneId" align="center" key="sceneId" :formatter="sceneFormatter" />
+        <el-table-column label="当前状态" prop="status" align="center" key="status" :formatter="statusFormatter" />
+        <el-table-column label="更新时间" prop="updateTime" align="center" key="updateTime" show-overflow-tooltip />
       </el-table>
       <pagination v-show="audioData.total > 0" :total="audioData.total" v-model:page="audioData.form.pageNum"
         v-model:limit="audioData.form.pageSize" @pagination="getAudio" />
@@ -269,7 +276,7 @@ const getRefresh = () => {
   audioData.form = {
     pageNum: 1,
     pageSize: 10,
-    type: 0
+    type: audioData.form.type
   }
   getAudio()
 }
@@ -303,12 +310,20 @@ const handleCheckTime = (e) => {
   dialogVisible_content.value = false
 }
 
+// 插播音频过多隐藏
+const audioListHidden = ref(false)
 // 确定
 const getPush = () => {
   data.form.audioList = []
   data.form.audioList = JSON.parse(JSON.stringify(data.selectionList))
   proxy.$modal.msgSuccess('选择成功!')
   dialogVisible_audio.value = false
+  audioListHidden.value = data.form.audioList.length >= 15 ? true : false
+}
+
+// 展开隐藏
+const handleHidden = () => {
+  audioListHidden.value = audioListHidden.value ? false : true
 }
 
 // 删除音频
@@ -414,9 +429,7 @@ const statusFormatter = (row) => {
 
 const sceneFormatter = (row) => {
   let e = audioClassData.options.find(i => i.id === row.sceneId)
-  if (row.sceneId && e) {
-    return audioClassData.options.find(i => i.id === row.sceneId).name
-  }
+  return row.sceneId && e ? audioClassData.options.find(i => i.id === row.sceneId).name : '/'
 }
 
 // 监听
@@ -440,12 +453,21 @@ watch(() => audioData.form.type, (val) => {
 }
 
 .chooseAudio {
-  .audioList {
-    margin-right: 10px;
-    height: 45px;
+  .audio_box {
+    display: flex;
+    flex-wrap: wrap;
+
+    .audioList {
+      margin-right: 10px;
+    }
   }
 }
 
+.audio_box_hidden {
+  height: 135px;
+  overflow: hidden;
+}
+
 .audio {
   width: 200px;
   height: 200px;

+ 3 - 1
src/views/content/scene/detail.vue

@@ -67,7 +67,8 @@
       </el-form-item>
       <el-form-item v-if="data.form.id" label="当前状态:" prop="status">
         <el-select v-model="data.form.status" placeholder="请选择当前状态">
-          <el-option v-for="item in sys_change_status" :key="item.value" :value="Number(item.value)" :label="item.label" />
+          <el-option v-for="item in sys_change_status" :key="item.value" :value="Number(item.value)"
+            :label="item.label" />
         </el-select>
       </el-form-item>
     </el-form>
@@ -85,6 +86,7 @@
           </div>
         </el-form-item>
       </el-form>
+      <el-empty v-show="data.tableData.length === 0" description="暂无数据" />
     </el-dialog>
   </div>
 </template>

+ 65 - 35
src/views/content/setting/detail.vue

@@ -2,16 +2,22 @@
   <div class='app-container'>
     <el-form class="form" label-width="100px" ref="form" :model="data.form" :rules="data.rules">
       <el-form-item class="chooseAudio" label="选择音频:" prop="audioList">
-        <div class="audioList" v-for="(item, index) in data.form.audioList" :key="item.id" :style="{'height': item.type !== 2 ? '45px' : ''}">
-          <el-tag v-if="item.type === 0 || item.type === 1" size="large" :closable="checkClose()"
-            @close="handleClose(index)">
-            {{ item.audioName }}
-          </el-tag>
-          <div v-if="item.type === 2" class="audio">
-            <img src="@/assets/icons/svg/file.svg" width="70" height="70" />
-            <span>{{ item.audioName }}</span>
+        <div :class="['audio_box', audioListHidden ? 'audio_box_hidden' : '']">
+          <div class="audioList" v-for="(item, index) in data.form.audioList" :key="item.id"
+            :style="{ 'height': item.type !== 2 ? '45px' : '' }">
+            <el-tag v-if="item.type === 0 || item.type === 1" size="large" :closable="checkClose()"
+              @close="handleClose(index)">
+              {{ item.audioName }}
+            </el-tag>
+            <div v-if="item.type === 2" class="audio">
+              <img src="@/assets/icons/svg/file.svg" width="70" height="70" />
+              <span>{{ item.audioName }}</span>
+            </div>
           </div>
         </div>
+        <el-button type="primary" link v-if="data.form.audioList.length >= 15"
+          :icon="audioListHidden ? 'ArrowDown' : 'ArrowUp'" style="width: 100%; height: 20px; margin-bottom: 10px"
+          @click="handleHidden" />
         <div style="width: 100%;">
           <el-button v-if="checkClose()" icon="Plus" @click="getDialog">新增</el-button>
         </div>
@@ -79,7 +85,8 @@
       </el-form-item>
       <el-form-item v-if="data.form.id" label="当前状态:" prop="status">
         <el-select v-model="data.form.status" placeholder="请选择当前状态">
-          <el-option v-for="item in sys_change_status" :key="item.value" :value="Number(item.value)" :label="item.label" />
+          <el-option v-for="item in sys_change_status" :key="item.value" :value="Number(item.value)"
+            :label="item.label" />
         </el-select>
       </el-form-item>
     </el-form>
@@ -95,43 +102,49 @@
             <el-option v-for="item in data.radioOptions" :key="item.value" :value="item.value" :label="item.label" />
           </el-select>
         </el-form-item>
-        <el-form-item label="名称:">
+        <el-form-item v-show="audioData.form.type !== 2" label="音频ID:">
+          <el-input v-model="audioData.form.id" placeholder="请输入音频ID" />
+        </el-form-item>
+        <el-form-item label="音频名称:">
           <el-input v-model="audioData.form.name" placeholder="请输入名称" />
         </el-form-item>
-        <el-form-item label="分类:">
+        <el-form-item v-show="audioData.form.type === 1" label="歌手名称:">
+          <el-input v-model="audioData.form.singerName" placeholder="请输入歌手名称" />
+        </el-form-item>
+        <el-form-item v-show="audioData.form.type === 0" label="音频分类:">
           <el-select v-model="audioData.form.sceneId" placeholder="请选择分类">
             <el-option v-for="item in audioClassData.options" :key="item.id" :value="item.id" :label="item.name" />
           </el-select>
         </el-form-item>
-        <el-form-item label="当前状态:">
-          <el-select v-model="audioData.form.status" placeholder="请选择当前状态">
-            <el-option v-for="item in sys_change_status" :key="item.value" :value="item.value" :label="item.label" />
-          </el-select>
-        </el-form-item>
         <el-form-item>
           <el-button type="primary" icon="Search" @click="getSearch">搜索</el-button>
           <el-button icon="Refresh" @click="getRefresh">重置</el-button>
         </el-form-item>
       </el-form>
-      <el-table v-if="audioData.form.type !== 2" ref="table" :data="audioData.tableData" :row-key="rowKey"
+      <el-table v-show="audioData.form.type !== 2" ref="table" :data="audioData.tableData" :row-key="rowKey"
         @selection-change="handleSelectionChange" v-loading="audioData.loading">
-        <el-table-column type="selection" width="55" />
-        <el-table-column label="ID" prop="id" align="center" show-overflow-tooltip />
-        <el-table-column label="名称" prop="name" align="center" show-overflow-tooltip />
-        <el-table-column label="时长" prop="playTime" align="center">
+        <el-table-column type="selection" width="55" key="selection" />
+        <el-table-column label="ID" prop="id" align="center" key="id" show-overflow-tooltip />
+        <el-table-column label="音频名称" prop="name" align="center" key="name" show-overflow-tooltip />
+        <el-table-column v-if="audioData.form.type == 1" label="歌手名称" prop="singerName" key="singerName"
+          align="center" />
+        <el-table-column v-if="audioData.form.type !== 1" label="时长" prop="playTime" align="center" key="playTime">
           <template #default="scope">
             {{ playTime(scope.row.playTime) }}
           </template>
         </el-table-column>
-        <el-table-column label="分类" prop="sceneId" align="center" :formatter="sceneFormatter" />
-        <el-table-column label="当前状态" prop="status" align="center" :formatter="statusFormatter" />
-        <el-table-column label="更新时间" prop="updateTime" align="center" show-overflow-tooltip />
+        <el-table-column label="分类" prop="sceneId" align="center" key="sceneId" :formatter="sceneFormatter" />
+        <el-table-column label="当前状态" prop="status" align="center" key="status" :formatter="statusFormatter" />
+        <el-table-column label="更新时间" prop="updateTime" align="center" key="updateTime" show-overflow-tooltip />
       </el-table>
-      <div class="audio_table" v-else>
-        <div class="audio" v-for="item in audioData.tableData" :key="item.id" @click="handleChooseAudio(item)">
-          <img src="@/assets/icons/svg/file.svg" width="70" height="70" />
-          <span>{{ item.name }}</span>
+      <div v-show="audioData.form.type === 2" v-loading="audioData.loading">
+        <div class="audio_table">
+          <div class="audio" v-for="item in audioData.tableData" :key="item.id" @click="handleChooseAudio(item)">
+            <img src="@/assets/icons/svg/file.svg" width="70" height="70" />
+            <span>{{ item.name }}</span>
+          </div>
         </div>
+        <el-empty v-show="audioData.tableData.length === 0" description="暂无数据" />
       </div>
       <pagination v-show="audioData.total > 0" :total="audioData.total" v-model:page="audioData.form.pageNum"
         v-model:limit="audioData.form.pageSize" @pagination="getAudio" />
@@ -268,7 +281,7 @@ function getDialog() {
         if (val && data.selectionList.length > 0) {
           data.selectionList.map(i => {
             let row = val.find(j => j.id === i.audioId)
-            if(row) {
+            if (row) {
               proxy.$refs.table.toggleRowSelection(row, true)
             }
           })
@@ -289,7 +302,7 @@ const getRefresh = () => {
   audioData.form = {
     pageNum: 1,
     pageSize: 10,
-    type: 0
+    type: audioData.form.type
   }
   getAudio()
 }
@@ -329,14 +342,23 @@ const handleChooseAudio = (e) => {
   dialogVisible.value = false
 }
 
+// 插播音频过多隐藏
+const audioListHidden = ref(false)
 // 确定
 const getPush = () => {
   data.form.audioList = []
   data.form.audioList = JSON.parse(JSON.stringify(data.selectionList))
   proxy.$modal.msgSuccess('选择成功!')
   dialogVisible.value = false
+  audioListHidden.value = data.form.audioList.length >= 15 ? true : false
 }
 
+// 展开隐藏
+const handleHidden = () => {
+  audioListHidden.value = audioListHidden.value ? false : true
+}
+
+
 // 删除音频
 const handleClose = (index) => {
   data.form.audioList.splice(index, 1)
@@ -457,9 +479,7 @@ const statusFormatter = (row) => {
 
 const sceneFormatter = (row) => {
   let e = audioClassData.options.find(i => i.id === row.sceneId)
-  if (row.sceneId && e) {
-    return audioClassData.options.find(i => i.id === row.sceneId).name
-  }
+  return row.sceneId && e ? audioClassData.options.find(i => i.id === row.sceneId).name : '/'
 }
 
 // 监听
@@ -483,11 +503,21 @@ watch(() => audioData.form.type, (val) => {
 }
 
 .chooseAudio {
-  .audioList {
-    margin-right: 10px;
+  .audio_box {
+    display: flex;
+    flex-wrap: wrap;
+
+    .audioList {
+      margin-right: 10px;
+    }
   }
 }
 
+.audio_box_hidden {
+  height: 135px;
+  overflow: hidden;
+}
+
 .audio_table {
   display: flex;
   flex-wrap: wrap;

+ 1 - 2
src/views/content/setting/index.vue

@@ -17,8 +17,7 @@
         <el-tabs v-model="activeName" @tab-click="handleChangeTabs">
           <el-tab-pane v-for="item in data.tabOptions" :key="item.value" :name="item.value" :label="item.label"
             v-loading="audioData.loading">
-            <el-empty v-if="audioData.tableData.length === 0" description="暂无数据" />
-            <el-scrollbar v-else :height="260">
+            <el-scrollbar :height="260">
               <draggable class="contentList" :style="[activeName !== 2 ? 'flex-direction: column' : 'flex-wrap: wrap;']"
                 v-model="audioData.tableData" item-key="id" chosen-class="chosenClass" data-id="content"
                 :group="{ name: 'componentGroup', pull: 'clone', put: false }" :sort="false" @end="onEnd">

+ 8 - 4
src/views/store/list/index.vue

@@ -37,14 +37,18 @@
           <span v-if="item.areaName"> - {{ item.areaName }}</span>
         </el-descriptions-item>
         <el-descriptions-item>
-          <el-dropdown class="dropdown" v-hasPermi="['store:list:edit, store:list:delete']">
-            <el-icon>
+          <el-dropdown class="dropdown" v-hasPermi="['store:list:edit', 'store:list:delete']">
+            <el-icon >
               <MoreFilled />
             </el-icon>
             <template #dropdown>
               <el-dropdown-menu>
-                <el-dropdown-item @click="getDialog(item.id)" v-hasPermi="['store:list:edit']">编辑</el-dropdown-item>
-                <el-dropdown-item @click="getDelete(item)" v-hasPermi="['store:list:delete']">删除</el-dropdown-item>
+                <el-dropdown-item>
+                  <el-button link @click="getDialog(item.id)" v-hasPermi="['store:list:edit']">编辑</el-button>
+                </el-dropdown-item>
+                <el-dropdown-item>
+                  <el-button link @click="getDelete(item)" v-hasPermi="['store:list:delete']">删除</el-button>
+                </el-dropdown-item>
               </el-dropdown-menu>
             </template>
           </el-dropdown>