zxl
2025-07-02 9d5a1efe45146614157f4b6caefd30ff7cccbb32
Merge remote-tracking branch 'origin/dev' into dev
13个文件已修改
78 ■■■■ 已修改文件
buyer/package.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
buyer/src/config/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
buyer/src/vuex/store.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager/package.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager/src/api/video.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager/src/config/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager/src/views/goods/goods-info/goodsDetail.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager/src/views/health/HealthVideoList.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager/src/views/kitchen/kitchenVideo.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager/src/views/video/VideoList.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
seller/package.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
seller/src/config/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
seller/src/views/goods/goods-seller/goodsOperationSec.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
buyer/package.json
@@ -1,5 +1,5 @@
{
  "name": "lilishop",
  "name": "lvmankuang",
  "version": "1.0.0",
  "private": true,
  "scripts": {
buyer/src/config/index.js
@@ -1,7 +1,7 @@
const Cookie = require('js-cookie')
module.exports = {
  title:Cookie.get('siteName') || 'lilishop', //配置显示在浏览器标签的title、底部信息、部分信息展示的值
  title:Cookie.get('siteName') || '绿满筐', //配置显示在浏览器标签的title、底部信息、部分信息展示的值
  icpCard: "", // icp证
  company: {
    href: "https://pickmall.cn",
buyer/src/vuex/store.js
@@ -12,7 +12,7 @@
    navList: [], // 首页快捷导航
    cartNum: storage.getItem('cartNum') || 0,
    logoImg: storage.getItem('logoImg') || require('@/assets/images/logo2.png'),
    siteName:storage.getItem('siteName')|| 'lilishop',
    siteName:storage.getItem('siteName')|| '绿满筐',
    hotWordsList: storage.getItem('hotWordsList'),
    category: JSON.parse(localStorage.getItem('category'))
  },
manager/package.json
@@ -1,8 +1,8 @@
{
  "name": "lilishop",
  "name": "lvmankuang",
  "version": "1.0.0",
  "private": true,
  "description": "lilishop-ui",
  "description": "绿满筐",
  "author": "lili-platform",
  "scripts": {
    "serve": "vue-cli-service serve",
manager/src/api/video.js
@@ -94,3 +94,11 @@
    data: data
  })
}
// 重新构建es索引
export const recreateIndex = () => {
  return service({
    url: "/lmk/video/recreate/es/index",
    method: "POST"
  })
}
manager/src/config/index.js
@@ -1,5 +1,5 @@
module.exports = {
  title: "lilishop", //配置显示在浏览器标签的title
  title: "绿满筐", //配置显示在浏览器标签的title
  /**
   * 高德地图申请链接
   * https://lbs.amap.com/api/javascript-api/guide/abc/prepare
manager/src/views/goods/goods-info/goodsDetail.vue
@@ -78,6 +78,8 @@
                controls
                class="player"
                :src="goods.goodsVideo"
                width="200"
                height="180"
              />
            </FormItem>
            <FormItem label="商品规格">
manager/src/views/health/HealthVideoList.vue
@@ -662,6 +662,12 @@
      this.detail = {}
      this.auditingShow = false
    },
    calculateVideoFit(width, height) {
      const videoRatio = width / height;
      // 规则2:竖屏视频(如9:16)
      if (videoRatio < 0.8) return 'cover';
      return 'contain';
    },
    // 打开审核弹窗
    openAuditing(row) {
      this.auditingShow = true
@@ -674,6 +680,13 @@
    },
    getVideoDuration(e){
      const duration = this.$refs.healthVideoInfo.duration;
      const videoWidth = this.$refs.healthVideoInfo.videoWidth;
      const videoHeight = this.$refs.healthVideoInfo.videoHeight;
      // 根据宽高比选择视频填充模式
     const fitType = this.calculateVideoFit(videoWidth, videoHeight)
      this.uploadVideoForm.videoFit = fitType
      console.log('------视频信息3------------>', videoWidth,videoHeight,fitType)
      this.uploadVideoForm.videoDuration = Math.floor(duration);
    },
    // 打开编辑弹窗
manager/src/views/kitchen/kitchenVideo.vue
@@ -252,9 +252,12 @@
        @on-selection-change="showSelect"
      >
        <template slot-scope="{ row, index }" slot="typeList">
          <div v-for="(tag, index) in row.typeList" :key="'tag' + index" style="margin-top: 5px">
            <Tag color="red">{{ tag.typeName }}</Tag>
          <div style="display: flex;flex-wrap: wrap">
            <div v-for="(tag, index) in row.typeList" :key="'tag' + index" style="margin-top: 5px">
              <Tag color="red">{{ tag.typeName }}</Tag>
            </div>
          </div>
        </template>
        <template slot-scope="{ row, index }" slot="videoFileKey">
          <div class="play-text" @click="playVideo(row.videoFileKey, row.title)">点击播放</div>
@@ -394,7 +397,7 @@
        checkKitchenType: [
          {
            required: true,
            message: '请选择厨神标签',
            message: '请选择厨神标签且不能超过5个',
            trigger: 'blur',
            validator: (rule, value, callback) => {
              console.log('验证值:-------------->', value, '类型:', typeof value);
@@ -462,7 +465,7 @@
        {
          title: "视频分类",
          key: "typeList",
          width: 180,
          width: 310,
          slot: "typeList",
        },
        {
@@ -521,6 +524,7 @@
          slot: "action",
          align: "center",
          width: 200,
          fixed: "right",
        },
      ],
      data: [], // 表单数据
@@ -581,6 +585,12 @@
      this.$set(this.uploadVideoForm, 'showCoverUrl', '');
      this.$set(this.uploadVideoForm, 'temp', new Date().getTime());
    },
    calculateVideoFit(width, height) {
      const videoRatio = width / height;
      // 规则2:竖屏视频(如9:16)
      if (videoRatio < 0.8) return 'cover';
      return 'contain';
    },
    //重新上传视频
    clearVideo() {
      this.clearCoverImage();
@@ -591,6 +601,12 @@
    },
    getVideoDuration(e){
      const duration = this.$refs.healthVideoInfo.duration;
      const videoWidth = this.$refs.healthVideoInfo.videoWidth;
      const videoHeight = this.$refs.healthVideoInfo.videoHeight;
      // 根据宽高比选择视频填充模式
      const fitType = this.calculateVideoFit(videoWidth, videoHeight)
      this.uploadVideoForm.videoFit = fitType
      console.log('------视频信息3------------>', videoWidth,videoHeight,fitType)
      this.uploadVideoForm.videoDuration = Math.floor(duration);
    },
    // 视频上架
manager/src/views/video/VideoList.vue
@@ -55,6 +55,10 @@
        >
      </Form>
      <Row class="operation padding-row">
        <Button @click="recreateEsIndex" type="primary">重新构建es索引</Button>
      </Row>
      <Modal
        v-model="playVideoShow"
        :title="playVideoTitle"
@@ -223,7 +227,7 @@
</template>
<script>
import {getVideos, recommendSet, getVideoById, auditingVideo, up, down} from "@/api/video";
import {getVideos, recommendSet, getVideoById, auditingVideo, up, down, recreateIndex} from "@/api/video";
import {getVideoTagList} from "@/api/videoTag";
import {getFilePreview} from "@/api/file";
import Editor from '@/components/editor/index.vue'
@@ -398,6 +402,11 @@
    this.getTags('')
  },
  methods: {
    recreateEsIndex() {
      recreateIndex().then(res => {
        this.$Message.success(res.msg)
      })
    },
    // 秒转x分x秒
    formatSeconds(seconds) {
      if (isNaN(seconds) || seconds < 0) return '0秒';
seller/package.json
@@ -1,8 +1,8 @@
{
  "name": "lilishop",
  "name": "lvmankuang",
  "version": "1.0.0",
  "private": true,
  "description": "lilishop-ui",
  "description": "绿满筐",
  "author": "lili-platform",
  "scripts": {
    "serve": "vue-cli-service serve",
seller/src/config/index.js
@@ -1,6 +1,6 @@
module.exports = {
  title: "lilishop", //配置显示在浏览器标签的title
  title: "绿满筐", //配置显示在浏览器标签的title
  /**
   * 高德地图申请链接
   * https://lbs.amap.com/api/javascript-api/guide/abc/prepare
seller/src/views/goods/goods-seller/goodsOperationSec.vue
@@ -155,7 +155,7 @@
              <div class="goods-video">
                <div v-if="baseInfoForm.goodsVideo">
                  <div>
                    <video :src="baseInfoForm.showGoodsVideo" class="video" controls style="max-width: 300px;"/>
                    <video :src="baseInfoForm.showGoodsVideo" class="video" controls style="max-width: 300px;max-height: 400px"/>
                  </div>
                </div>
                <Upload ref="upload" action="-" :format="['avi', 'wmv', 'mpeg', 'mp4', 'mov']"