diff --git a/src/api/index.ts b/src/api/index.ts
index abab7b9..f6c0134 100644
--- a/src/api/index.ts
+++ b/src/api/index.ts
@@ -1,6 +1,6 @@
 import router from '@/router';
 import store from '@/store';
-import { LoginData, UserInfo } from '@/types';
+import { LiveList, LoginData, UserInfo } from '@/types';
 import { saveValue } from '@/utils/common';
 import { message } from 'ant-design-vue';
 import { get, post, setToken } from './base'
@@ -132,35 +132,12 @@ export async function getvideolist() {
  * 直播列表
  */
 
-interface LiveList {
-    liveid: number;
-    memberid: number;
-    title: string;
-    img: string;
-    fileid: string;
-    fileurl: string;
-    fileduration: string;
-    vodurl: string;
-    vodid: string;
-    vodduration: string;
-    dateline: string;
-    livetime: number;
-    livenumber: number;
-    status: number;
-    livestatus: number;
-    students: string;
-    desc: string;
-    deleted_at: null;
-    created_at: string;
-    updated_at: string;
-    statusname: string;
-    starttime: string;
-    begin: number;
-}
 
-export async function getlivelist() {
-    const res = await get<Array<LiveList>>('live');
-    console.log(res);
+
+export async function getlivelist(data?:any) {
+    const res = await get<Array<LiveList>>('live',data);
+    // console.log(res);
+    return res.data
 }
 
 /**
@@ -181,4 +158,16 @@ export async function getstatisticlist() {
         videoInfo:res.data?.videoInfo,
         studentInfo:res.data?.studentInfo
     }
-}
\ No newline at end of file
+}
+
+/**
+ * 发布直播
+ */
+interface Liveaddrule{
+    code:number,
+    msg:string
+ }
+ export async function liveadd(data:any) {
+    const res = await post<Liveaddrule>('live',data);
+    console.log(res)
+ }
\ No newline at end of file
diff --git a/src/components/LiveItem.vue b/src/components/LiveItem.vue
index dc886ea..9875590 100644
--- a/src/components/LiveItem.vue
+++ b/src/components/LiveItem.vue
@@ -1,34 +1,34 @@
 <template>
     <div class="videoitem" @click="navto()">
-        <img src="" alt="" class="cover">
+        <img :src="img" alt="" class="cover">
         <img src="@/static/images/play.png" alt="" class="play">
         <div class="title">
-            sadghaskghdfjkaghjkfha
-            <span class="lv">7.3分</span>
+            {{title}}
+            <span class="lv">{{score}}分</span>
         </div>
         <div class="info">
             <div class="datetime">
-                <span>2020-09-11</span>
-                <span class="time">09:30</span>
+                <span>{{date.split(" ")[0]}}</span>
+                <span class="time">{{date.split(" ")[1]}}</span>
             </div>
             <div class="feature">
                 <div>
                     <img src="@/static/images/shijian.png" alt="">
-                    <span>123</span>
+                    <span>{{takehour}}</span>
                 </div>
                 <div>
                     <img src="@/static/images/studentnum.png" alt="">
-                    <span>3</span>
+                    <span>{{livenum}}</span>
                 </div>
             </div>
         </div>
-        <div class="state audit" v-if="type==1">
+        <div class="state audit" v-if="status==0">
             还未开始
         </div>
-         <div class="state live" v-if="type==2">
+         <div class="state live" v-if="status==1">
             进入直播
         </div>
-         <div class="state over" v-if="type==3">
+         <div class="state over" v-if="status==2">
              查看回放
         </div>
     </div>
@@ -141,6 +141,27 @@ export default defineComponent({
         type: {
             type: Number,
             default:1
+        },
+        img:{
+            type:String
+        },
+        title:{
+            type:String
+        },
+        score:{
+            type:Number
+        },
+        date:{
+            type:String
+        },
+        takehour:{
+            type:String
+        },
+        livenum:{
+            type:Number
+        },
+        status:{
+            type:Number
         }
     },
     setup(props){
diff --git a/src/types/index.d.ts b/src/types/index.d.ts
index 8ec11b2..a1a0097 100644
--- a/src/types/index.d.ts
+++ b/src/types/index.d.ts
@@ -60,4 +60,31 @@ export interface UserInfo {
     video: string;
     desc: string;
     money: string;
+}
+
+
+export interface LiveList {
+    liveid: number;
+    memberid: number;
+    title: string;
+    img: string;
+    fileid: string;
+    fileurl: string;
+    fileduration: string;
+    vodurl: string;
+    vodid: string;
+    vodduration: string;
+    dateline: string;
+    livetime: number;
+    livenumber: number;
+    status: number;
+    livestatus: number;
+    students: string;
+    desc: string;
+    deleted_at: null;
+    created_at: string;
+    updated_at: string;
+    statusname: string;
+    starttime: string;
+    begin: number;
 }
\ No newline at end of file
diff --git a/src/views/mine/ReleaseWebcast.vue b/src/views/mine/ReleaseWebcast.vue
index 4ea2d54..c657ee0 100644
--- a/src/views/mine/ReleaseWebcast.vue
+++ b/src/views/mine/ReleaseWebcast.vue
@@ -1,379 +1,560 @@
 <template>
-    <div class="webcast">
-        <a-form :label-col="labelCol" :wrapper-col="wrapperCol">
-            <div class="title">直播信息</div>
-            <a-form-item label="直播标题">
-                <a-input size="small" v-model:value="form.title" placeholder="请输入您的直播标题" />
-            </a-form-item>
-            <a-form-item label="直播封面" class="item-cover">
-                <a-upload
-                    list-type="picture"
-                    @change="coverChange"
-                    action="//jsonplaceholder.typicode.com/posts/"
-                >
-                    <div class="upload-image" v-if="!viewCover">
-                        <PlusOutlined style="fontSize: 22px;" />
-                    </div>
-                    <div class="preview-image" v-else>
-                        <img style="width: 100%" :src="previewImage" />
-                    </div>
-                </a-upload>
-            </a-form-item>
-            <a-form-item label="视频介绍" class="video-introduction">
-                <a-upload
-                    list-type="picture"
-                    action="//jsonplaceholder.typicode.com/posts/"
-                >
-                    <div class="upload-image">
-                        <PlaySquareOutlined style="fontSize: 22px;" />
-                    </div>
-                </a-upload>
-                <div class="demand">
-                    <p class="one-line-hide">视频要求:</p>
-                    <p class="one-line-hide"> 1.上传视频时间要求为30s之内</p>
-                    <p class="one-line-hide">2.支持文件大小100M</p>
-                    <p class="one-line-hide">3.文件扩展名:fiv、mp4…文件扩展名:fiv、mp4…</p>
-                </div>
-            </a-form-item>
-            <a-form-item label="开始时间">
-                <a-input size="small" v-model:value="form.startTime" placeholder="请设置您的开始时间" />
-            </a-form-item>
-            <a-form-item label="直播时长" class="duration" v-bind="validateInfos.duration">
-                <a-input size="small" v-model:value="form.duration" placeholder="请输入直播时间" />
-                <span class="unit">分钟</span>
-            </a-form-item>
-            <a-form-item label="直播人数" v-bind="validateInfos.number">
-                <a-input size="small" v-model:value="form.number" placeholder="请输入直播人数" />
-            </a-form-item>
-            <a-form-item label="直播简介" class="brief">
-                <a-textarea v-model:value="form.brief" :autoSize="true" class="brief-textarea" :maxlength="200" placeholder="请输入您的直播简介" />
-                <span class="words-number">{{ form.brief.length }}/200</span>
-            </a-form-item>
-            <a-form-item :wrapper-col="{ span: 4, offset: 0 }">
-                <a-button @click="onSubmit">发布直播</a-button>
-            </a-form-item>
-        </a-form>
-        <div class="modal-container">
-            <a-modal
-                centered
-                :footer="null"
-                :getContainer="modalNode"
-                dialogClass="modal-dialog"
-                v-model:visible="isEntitled"
-                @cancel="hideNoticeModal"
-            >
-                <template v-slot:closeIcon>
-                    <img src="@/static/images/delete.png" class="close" />
-                </template>
-                <div class="notice-container report" v-if="0">
-                    <div class="title">您尚未获得直播资格</div>
-                    <div class="title sub-title">您被 学生XXX<span class="red">举报,发生违规行为</span>,如有疑问,点击反馈</div>
-                    <div class="confirm-btn">意见反馈</div>
-                </div>
-                <div class="notice-container" v-else>
-                    <div class="title">您尚未获得直播资格</div>
-                    <div class="title sub-title">上一周/月您在平台视频点击量为 <span class="red">第24名</span>,要在前 <span class="bule">20名</span> 才能获得直播资格</div>
-                    <rank-list></rank-list>
-                </div>
-            </a-modal>
+  <div class="webcast">
+    <a-form :label-col="labelCol" :wrapper-col="wrapperCol">
+      <div class="title">直播信息</div>
+      <a-form-item label="直播标题">
+        <a-input
+          size="small"
+          v-model:value="form.title"
+          placeholder="请输入您的直播标题"
+        />
+      </a-form-item>
+      <a-form-item label="直播封面" class="item-cover">
+        <a-upload list-type="picture" :customRequest="uploadspic">
+          <div class="upload-image" v-if="!viewCover && form.img.length == 0">
+            <PlusOutlined
+              style="fontsize: 22px"
+              v-if="uploadpicprogress == 0"
+            />
+            <a-progress
+              type="circle"
+              :percent="uploadpicprogress"
+              :width="80"
+              v-else
+            />
+          </div>
+          <div class="upload-image" v-else>
+            <img style="width: 100%; height: 100%" :src="form.img" />
+          </div>
+        </a-upload>
+      </a-form-item>
+      <a-form-item label="视频介绍" class="video-introduction">
+        <a-upload list-type="picture" :customRequest="uploads">
+          <div class="upload-image" v-if="form.fileurl.length == 0">
+            <PlaySquareOutlined
+              style="fontsize: 22px"
+              v-if="uploadprogress == 0"
+            />
+            <a-progress
+              type="circle"
+              :percent="uploadprogress"
+              :width="80"
+              v-else
+            />
+            <video style="display: none" :src="videofile"></video>
+          </div>
+          <div
+            class="upload-image upload"
+            style="position: relative"
+            v-show="form.fileurl.length != 0"
+          >
+            <video
+              :src="form.fileurl"
+              :ref="
+                (el) => {
+                  videos[0] = el;
+                }
+              "
+              class="upload"
+            ></video>
+            <!-- <a-progress type="circle" :percent="100" :width="80" style="position:absolute;right:35%"/> -->
+          </div>
+        </a-upload>
+        <div class="demand">
+          <p class="one-line-hide">视频要求:</p>
+          <p class="one-line-hide">1.上传视频时间要求为30s之内</p>
+          <p class="one-line-hide">2.支持文件大小100M</p>
+          <p class="one-line-hide">
+            3.文件扩展名:fiv、mp4…文件扩展名:fiv、mp4…
+          </p>
         </div>
-        <nav-bottom></nav-bottom>
+      </a-form-item>
+      <a-form-item label="开始时间">
+        <!-- <a-input
+          size="small"
+          v-model:value="form.startTime"
+          placeholder="请设置您的开始时间"
+        /> -->
+        <a-date-picker @change="startchange" placeholder="请设置您的开始时间" />
+      </a-form-item>
+      <a-form-item
+        label="直播时长"
+        class="duration"
+        v-bind="validateInfos.livetime"
+      >
+        <a-input
+          size="small"
+          v-model:value="form.livetime"
+          placeholder="请输入直播时间"
+        />
+        <span class="unit">分钟</span>
+      </a-form-item>
+      <a-form-item label="直播人数" v-bind="validateInfos.livenumber">
+        <a-input
+          size="small"
+          v-model:value="form.livenumber"
+          placeholder="请输入直播人数"
+        />
+      </a-form-item>
+      <a-form-item label="直播简介" class="brief">
+        <a-textarea
+          v-model:value="form.desc"
+          :autoSize="true"
+          class="brief-textarea"
+          :maxlength="200"
+          placeholder="请输入您的直播简介"
+        />
+        <span class="words-number">{{ form.desc.length }}/200</span>
+      </a-form-item>
+      <a-form-item :wrapper-col="{ span: 4, offset: 0 }">
+        <a-button @click="onSubmit">发布直播</a-button>
+      </a-form-item>
+    </a-form>
+    <div class="modal-container">
+      <a-modal
+        centered
+        :footer="null"
+        :getContainer="modalNode"
+        dialogClass="modal-dialog"
+        v-model:visible="isEntitled"
+        @cancel="hideNoticeModal"
+      >
+        <template v-slot:closeIcon>
+          <img src="@/static/images/delete.png" class="close" />
+        </template>
+        <div class="notice-container report" v-if="0">
+          <div class="title">您尚未获得直播资格</div>
+          <div class="title sub-title">
+            您被 学生XXX<span class="red">举报,发生违规行为</span
+            >,如有疑问,点击反馈
+          </div>
+          <div class="confirm-btn">意见反馈</div>
+        </div>
+        <div class="notice-container" v-else>
+          <div class="title">您尚未获得直播资格</div>
+          <div class="title sub-title">
+            上一周/月您在平台视频点击量为
+            <span class="red">第24名</span>,要在前
+            <span class="bule">20名</span> 才能获得直播资格
+          </div>
+          <rank-list></rank-list>
+        </div>
+      </a-modal>
     </div>
+    <nav-bottom></nav-bottom>
+  </div>
 </template>
 <script lang="ts">
-import { defineComponent, reactive, Ref, ref, toRaw } from 'vue';
-import { PlaySquareOutlined, PlusOutlined } from '@ant-design/icons-vue';
-import { useForm } from '@ant-design-vue/use';
-import NavBottom from '@/components/NavBottom.vue';
-import RankList from './RankList.vue';
-import { previewCover } from '@/utils/common';
-import { FromSend, ImgInfo } from "@/types/index"
+import {
+  defineComponent,
+  onBeforeUpdate,
+  onMounted,
+  reactive,
+  Ref,
+  ref,
+  toRaw,
+} from "vue";
+import { PlaySquareOutlined, PlusOutlined } from "@ant-design/icons-vue";
+import { useForm } from "@ant-design-vue/use";
+import NavBottom from "@/components/NavBottom.vue";
+import RankList from "./RankList.vue";
+import { previewCover } from "@/utils/common";
+import { FromSend, ImgInfo } from "@/types/index";
+import { uploadflie } from "@/utils/vod";
+import { liveadd } from "@/api";
 
 export default defineComponent({
-    name: 'ReleaseWebcast',
-    components: {
-        PlaySquareOutlined,
-        PlusOutlined,
-        NavBottom,
-        RankList,
-    },
-    setup() {
-        // 表单数据
-        const form = reactive({
-            title: '',
-            cover: '',
-            introduction: '',
-            startTime: '',
-            duration: '',
-            number: '',
-            brief: '',
-        });
-        /**
-         * 验证直播时间
-         */
-        async function validateDuration (rule: unknown, value: number): Promise<string | void> {
-            if (value < 30 || value > 120) {
-                return Promise.reject('*最短30min 最长120min');
-            } else {
-                return Promise.resolve();
-            }
-        }
-        /**
-         * 验证直播人数
-         */
-        const validateNumber = async (rule: unknown, value: number): Promise<string | void> => {
-            if (value < 1 || value > 4) {
-                return Promise.reject('**最少1人,最多4人');
-            } else {
-                return Promise.resolve();
-            }
-        };
-        // 验证规则
-        const rules = reactive({
-            duration: [
-                {
-                    validator: validateDuration,
-                    trigger: 'change',
-                },
-            ],
-            number: [
-                {
-                    validator: validateNumber,
-                    trigger: 'change',
-                },
-            ],
-        });
+  name: "ReleaseWebcast",
+  components: {
+    PlaySquareOutlined,
+    PlusOutlined,
+    NavBottom,
+    RankList,
+  },
+  setup() {
+    // 表单数据
+    const form = reactive({
+      title: "",
+      img: "",
+      fileid: "",
+      fileurl: "",
+      fileduration: 0,
+      dateline: "",
+      livetime: "",
+      livenumber: "",
+      desc: "",
+    });
 
-        // 是否显示封面预览 封面的路径
-        const viewCover: Ref<boolean> = ref(false);
-        const previewImage: Ref<string> = ref('');
-
-        /**
-         * 封面改变触发事件
-         */
-        
-        function coverChange(info: ImgInfo): void {
-            // console.log(info);
-            // 获取预览图片
-            previewCover(info.file).then(url => previewImage.value = url);
-            viewCover.value = true;
-            // form.cover = fileList;
-        }
-
-        const { resetFields, validate, validateInfos } = useForm(form, rules);
-        /**
-         * 表单提交
-         */
-        
-        const onSubmit = (e: FromSend) => {
-            e.preventDefault();
-            validate().then(() => {
-                console.log(toRaw(form));
-            }).catch((err: unknown) => {
-                console.log('error', err);
-            });
-        };
-        const isEntitled: Ref<boolean> = ref(true);
-        /**
-         * 隐藏无资格提示
-         */
-        function hideNoticeModal(): void {
-            isEntitled.value = false;
-        }
-        return {
-            labelCol: { span: 4 },
-            wrapperCol: { span: 14 },
-            modalNode: () => document.getElementsByClassName('modal-container')[0],
-            validateInfos,
-            resetFields,
-            viewCover,
-            previewImage,
-            coverChange,
-            form,
-            onSubmit,
-            isEntitled,
-            hideNoticeModal,
-        }
+    const uploadprogress: Ref<number> = ref(0);
+    const uploadpicprogress: Ref<number> = ref(0);
+    const videofile = ref<File>();
+    const videos = ref<Array<any>>([]);
+    /**
+     * 验证直播时间
+     */
+    async function validateaLivetime(
+      rule: unknown,
+      value: number
+    ): Promise<string | void> {
+      console.log(value);
+      if (value < 30 || value > 120) {
+        return Promise.reject("*最短30min 最长120min");
+      } else {
+        return Promise.resolve();
+      }
     }
-})
+    /**
+     * 验证直播人数
+     */
+    const validateLivenumber = async (
+      rule: unknown,
+      value: number
+    ): Promise<string | void> => {
+      console.log(value);
+      if (value < 1 || value > 4) {
+        return Promise.reject("**最少1人,最多4人");
+      } else {
+        return Promise.resolve();
+      }
+    };
+    // 验证规则
+    const rules = reactive({
+      livetime: [
+        {
+          validator: validateaLivetime,
+          trigger: "change",
+        },
+      ],
+      livenumber: [
+        {
+          validator: validateLivenumber,
+          trigger: "change",
+        },
+      ],
+    });
+
+    // 是否显示封面预览 封面的路径
+    const viewCover: Ref<boolean> = ref(false);
+    const previewImage: Ref<string> = ref("");
+
+    /**
+     * 封面改变触发事件
+     */
+
+    function coverChange(info: ImgInfo): void {
+      // console.log(info);
+      // 获取预览图片
+      previewCover(info.file).then((url) => (previewImage.value = url));
+      viewCover.value = true;
+      // form.cover = fileList;
+    }
+
+    const { resetFields, validate, validateInfos } = useForm(form, rules);
+
+    /**
+     * 表单提交
+     */
+
+    const subdata = reactive({
+      title: "",
+      img: "",
+      fileid: "",
+      fileurl: "",
+      fileduration: "",
+      dateline: "",
+      livetime: "",
+      livenumber: "",
+      desc: "",
+    });
+
+    const onSubmit = (e: FromSend) => {
+      e.preventDefault();
+      validate()
+        .then(() => {
+          //   console.log(toRaw(form),111);
+          let subdata = toRaw(form);
+          //   subdata.fileid=picinfo.
+          console.log(subdata);
+          liveadd(subdata);
+        })
+        .catch((err: unknown) => {
+          console.log("error", err);
+        });
+    };
+    const isEntitled: Ref<boolean> = ref(true);
+    /**
+     * 隐藏无资格提示
+     */
+    function hideNoticeModal(): void {
+      isEntitled.value = false;
+    }
+
+    /**
+     * 开始时间设置
+     */
+
+    function startchange(e: string): void {
+      let month=new Date(e).getMonth()+1
+      console.log(new Date(e).getFullYear()+"-"+month+'-'+new Date(e).getDate())
+      form.dateline =
+        new Date(e).getFullYear() +
+        "-" +
+        month +
+        "-" +
+        new Date(e).getDate();
+    }
+    /**
+     *  上传文件
+     */
+    const videoinfo = reactive({
+      fileId: "",
+      url: "",
+    });
+    const picinfo = reactive({
+      fileId: "",
+      url: "",
+    });
+    interface AntUpload {
+      action: string;
+      data: unknown;
+      file: File;
+    }
+    async function uploads(file: AntUpload) {
+      console.log(file);
+      videofile.value = file.file;
+      videos.value[0].addEventListener("durationchange", () => {
+        console.log(videos.value[0].duration);
+        form.fileduration = videos.value[0].duration;
+      });
+      let res = await uploadflie(file.file, (info: any) => {
+        console.log(info);
+        uploadprogress.value = info.percent.toFixed(2) * 100;
+      });
+      console.log(res);
+
+      form.fileid = res.fileId;
+      form.fileurl = res.video.url;
+    }
+
+    async function uploadspic(file: AntUpload) {
+      let res = await uploadflie(file.file, (info: any) => {
+        console.log(info);
+        uploadpicprogress.value = info.percent.toFixed(2) * 100;
+      });
+      console.log(res);
+
+      //  picinfo.fileId=res.fileId
+      //  picinfo.url=res.video.url
+      form.img = res.video.url;
+    }
+
+    return {
+      labelCol: { span: 4 },
+      wrapperCol: { span: 14 },
+      modalNode: () => document.getElementsByClassName("modal-container")[0],
+      validateInfos,
+      resetFields,
+      viewCover,
+      previewImage,
+      coverChange,
+      form,
+      onSubmit,
+      isEntitled,
+      hideNoticeModal,
+      uploads,
+      uploadprogress,
+      videoinfo,
+      uploadspic,
+      uploadpicprogress,
+      picinfo,
+      startchange,
+      videofile,
+      videos,
+    };
+  },
+});
 </script>
 <style lang="scss" scoped>
 .webcast {
-    width: 100%;
-    min-width: 700px;
-    background-color: #ffffff;
-    padding: 46px;
-    border-radius: 17px;
-    position: relative;
-    ::v-deep(.ant-form) {
-        .title {
-            font-size: 12px;
+  width: 100%;
+  min-width: 700px;
+  background-color: #ffffff;
+  padding: 46px;
+  border-radius: 17px;
+  position: relative;
+  ::v-deep(.ant-form) {
+    .title {
+      font-size: 12px;
+      font-weight: bold;
+      color: #111111;
+      margin-bottom: 28px;
+    }
+    .ant-row {
+      .ant-form-item-label {
+        width: 60px;
+        margin: 0 30px 0 17px;
+        > label {
+          font-size: 12px;
+          font-weight: 500;
+          color: #808080;
+          &::after {
+            content: "";
+          }
+        }
+      }
+      .upload {
+        width: 171px;
+        height: 96px;
+      }
+      .upload-image {
+        width: 171px;
+        height: 96px;
+        border: 1px solid #dcdfe0;
+        border-radius: 3px;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        margin-right: 17px;
+      }
+      .ant-input {
+        width: 171px;
+        padding: 6px 11px;
+        border-radius: 3px;
+        border: 1px solid #dcdfe0;
+        font-size: 11px;
+        color: #3f3f3f;
+        &::-webkit-input-placeholder {
+          font-size: 12px;
+          color: #808080;
+        }
+      }
+      .ant-select {
+        font-size: 12px;
+      }
+      .ant-select-dropdown {
+        font-size: 12px;
+      }
+      .ant-form-explain {
+        font-size: 10px;
+        font-weight: 500;
+        color: #d22d2e;
+      }
+      .ant-upload-list {
+        display: none;
+      }
+      .ant-btn {
+        padding: 0;
+        width: 63px;
+        height: 23px;
+        background: #08ae98;
+        border-radius: 3px;
+        font-size: 10px;
+        font-weight: 500;
+        color: #ffffff;
+      }
+    }
+    .item-cover {
+      .preview-image {
+        width: 171px;
+        height: 96px;
+      }
+    }
+    .video-introduction {
+      .ant-form-item-control-wrapper {
+        .ant-form-item-children {
+          display: flex;
+          align-items: center;
+          .demand {
+            line-height: 17px;
+            font-size: 10px;
+            font-weight: 500;
+            color: #808080;
+            width: 134px;
+            > p {
+              margin: 0;
+            }
+          }
+        }
+      }
+    }
+    .duration {
+      .unit {
+        margin-left: 18px;
+        font-size: 12px;
+        font-weight: 500;
+        color: #808080;
+      }
+    }
+    .brief {
+      position: relative;
+      .ant-input {
+        width: 359px;
+      }
+      .brief-textarea {
+        min-height: 85px;
+        padding-bottom: 30px;
+      }
+      .words-number {
+        position: absolute;
+        right: 11px;
+        bottom: -11px;
+        font-size: 11px;
+        font-weight: 500;
+        color: #7f7f7f;
+        user-select: none;
+      }
+    }
+  }
+  .modal-container {
+    ::v-deep(.modal-dialog) {
+      .close {
+        width: 14px;
+        height: 14px;
+      }
+      .ant-modal-content {
+        box-sizing: border-box;
+        padding: 25px 30px;
+        width: 569px;
+        background: #ffffff;
+        box-shadow: 0px 4px 6px 0px rgba(102, 102, 102, 0.07);
+        border-radius: 28px;
+        .notice-container {
+          .title {
+            font-size: 11px;
             font-weight: bold;
             color: #111111;
-            margin-bottom: 28px;
+            margin-bottom: 16px;
+          }
+          .sub-title {
+            .red {
+              color: #d12c2d;
+            }
+            .bule {
+              color: #0dbba3;
+            }
+          }
+          .confirm-btn {
+            display: inline-block;
+            background: #07ad97;
+            border-radius: 2px;
+            font-size: 9px;
+            font-weight: 500;
+            color: #ffffff;
+            text-align: center;
+            cursor: pointer;
+            user-select: none;
+            height: 22px;
+            line-height: 22px;
+            padding: 0 17px;
+          }
         }
-        .ant-row {
-            .ant-form-item-label {
-                width: 60px;
-                margin: 0 30px 0 17px;
-                > label {
-                    font-size: 12px;
-                    font-weight: 500;
-                    color: #808080;
-                    &::after {
-                        content: '';
-                    }
-                }
-            }
-            .upload-image {
-                width: 171px;
-                height: 96px;
-                border: 1px solid #DCDFE0;
-                border-radius: 3px;
-                display: flex;
-                align-items: center;
-                justify-content: center;
-                margin-right: 17px;
-            }
-            .ant-input {
-                width: 171px;
-                padding: 6px 11px;
-                border-radius: 3px;
-                border: 1px solid #DCDFE0;
-                font-size: 11px;
-                color: #3F3F3F;
-                &::-webkit-input-placeholder{
-                    font-size: 12px;
-                    color: #808080;
-                }
-            }
-            .ant-select {
-                font-size: 12px;
-            }
-            .ant-select-dropdown {
-                font-size: 12px;
-            }
-            .ant-form-explain {
-                font-size: 10px;
-                font-weight: 500;
-                color: #D22D2E;
-            }
-            .ant-upload-list {
-                display: none;
-            }
-            .ant-btn {
-                padding: 0;
-                width: 63px;
-                height: 23px;
-                background: #08AE98;
-                border-radius: 3px;
-                font-size: 10px;
-                font-weight: 500;
-                color: #FFFFFF;
-            }
-        }
-        .item-cover {
-            .preview-image {
-                width: 171px;
-                height: 96px;
-            }
-        }
-        .video-introduction {
-            .ant-form-item-control-wrapper {
-                .ant-form-item-children {
-                    display: flex;
-                    align-items: center;
-                    .demand {
-                        line-height: 17px;
-                        font-size: 10px;
-                        font-weight: 500;
-                        color: #808080;
-                        width: 134px;
-                        > p {
-                            margin: 0;
-                        }
-                    }
-                }
-            }
-        }
-        .duration {
-            .unit {
-                margin-left: 18px;
-                font-size: 12px;
-                font-weight: 500;
-                color: #808080;
-            }
-        }
-        .brief {
-            position: relative;
-            .ant-input {
-                width: 359px;
-            }
-            .brief-textarea {
-                min-height: 85px;
-                padding-bottom: 30px;
-            }
-            .words-number {
-                position: absolute;
-                right: 11px;
-                bottom: -11px;
-                font-size: 11px;
-                font-weight: 500;
-                color: #7F7F7F;
-                user-select: none;
-            }
-        }
-    }
-    .modal-container {
-        ::v-deep(.modal-dialog) {
-            .close {
-                width: 14px;
-                height: 14px;
-            }
-            .ant-modal-content {
-                box-sizing: border-box;
-                padding: 25px 30px;
-                width: 569px;
-                background: #FFFFFF;
-                box-shadow: 0px 4px 6px 0px rgba(102, 102, 102, 0.07);
-                border-radius: 28px;
-                .notice-container {
-                    .title {
-                        font-size: 11px;
-                        font-weight: bold;
-                        color: #111111;
-                        margin-bottom: 16px;
-                    }
-                    .sub-title {
-                        .red {
-                            color: #D12C2D;
-                        }
-                        .bule {
-                            color: #0DBBA3;
-                        }
-                    }
-                    .confirm-btn {
-                        display: inline-block;
-                        background: #07AD97;
-                        border-radius: 2px;
-                        font-size: 9px;
-                        font-weight: 500;
-                        color: #FFFFFF;
-                        text-align: center;
-                        cursor: pointer;
-                        user-select: none;
-                        height: 22px;
-                        line-height: 22px;
-                        padding: 0 17px;
-                    }
-                }
-                .report {
-                    .sub-title {
-                        margin-bottom: 50px;
-                    }
-                }
-            }
+        .report {
+          .sub-title {
+            margin-bottom: 50px;
+          }
         }
+      }
     }
+  }
 }
 </style>
\ No newline at end of file
diff --git a/src/views/regime/Live.vue b/src/views/regime/Live.vue
index 2526fd0..4115f6b 100644
--- a/src/views/regime/Live.vue
+++ b/src/views/regime/Live.vue
@@ -12,16 +12,7 @@
       </div>
     </div>
     <div class="list" v-if="tabindex==1">
-      <LiveItem :type="2"></LiveItem>
-      <LiveItem :type="2"></LiveItem>
-      <LiveItem :type="2"></LiveItem>
-      <LiveItem></LiveItem>
-      <LiveItem></LiveItem>
-      <LiveItem></LiveItem>
-      <LiveItem></LiveItem>
-      <LiveItem></LiveItem>
-      <LiveItem></LiveItem>
-      <LiveItem></LiveItem>
+      <LiveItem :type="2" v-for="(i,j) in livelist" :key="j" :img="i.img" :title="i.title" :score="i.score" :date="i.starttime" :takehour="i.vodduration" :livenum="i.livenumber" :status="i.livestatus"></LiveItem>
     </div>
 
        <div class="list" v-if="tabindex==2">
@@ -144,24 +135,29 @@
 }
 </style>
 <script lang="ts">
-import { defineComponent, ref } from "vue";
+import { defineComponent, onMounted, ref } from "vue";
 import LiveItem from "@/components/LiveItem.vue";
 import { getlivelist } from '@/api';
+import { LiveList } from '@/types';
 export default defineComponent({
   components: {
     LiveItem,
   },
   setup() {
-    const page = ref(6);
+    const page = ref(1);
     const tabindex = ref(1);
-    getlivelist()
+    const livelist=ref<Array<LiveList>>()
+    onMounted(async ()=>{
+      livelist.value= await getlivelist()
+    })
      function tabchange(e: number): void {
          tabindex.value=e
     }
     return {
       page,
       tabindex,
-      tabchange
+      tabchange,
+      livelist
     };
   },
 });