pansl hai 1 ano
pai
achega
fc3cf3c6f1

+ 7 - 1
src/api/wxDeliver/index.ts

@@ -9,7 +9,13 @@ export function videoStockWechatCheckList(params: object) {
  * 添加微信提审
  */
 export function videoStockWechatCheckAdd(params: object) {
-  return http.post('/videoStock/wechatCheck/ad', params);
+  return http.post('/videoStock/wechatCheck/add', params);
+}
+/**
+ * 一键提审
+ */
+export function videoStockWechatCheckCheck(params: object) {
+  return http.post('/videoStock/wechatCheck/check', params);
 }
 /**
  * 提审记录-更新

+ 1 - 1
src/views/pageLayout/viewpagerPageManage/form/create.vue

@@ -13,7 +13,7 @@
       <el-input v-model.number="formCallback.sort" min="1" type="number" size="default" clearable></el-input>
     </el-form-item>
     <el-form-item label="封面图" prop="img_url" :rules="[{ required: true, message: '请上传封面图' }]">
-      <my-upload acceptType=".png,.jpg,.jpeg" :isCheckMM="false" :isMultiple="true" @fileRemove="fileRemove"
+      <my-upload acceptType=".png,.jpg,.jpeg" :isCheckMM="false" :isMultiple="false" @fileRemove="fileRemove"
         @fileSuccess="fileSuccess" :fileList="formCallback.fileList" action="/qiniu/upload/image"></my-upload>
     </el-form-item>
     <el-form-item label="链接短剧信息" prop="duanjus" :rules="[{ required: false, message: '选择链接短剧信息', trigger: 'change' }]">

+ 1 - 1
src/views/settleManage/settlementCenter/tabs/rechargeSettle/withdrawalRecord/form/create.vue

@@ -3,7 +3,7 @@
     <div class="flex flex-row justify-between">
       <div class="w-full">
         <el-form-item label="电子发票" prop="ticket">
-          <my-upload acceptType=".png,.jpg,.jpeg" :isMultiple="true" :maxFileSize="2" @fileRemove="fileRemove"
+          <my-upload acceptType=".png,.jpg,.jpeg" :isMultiple="false" :maxFileSize="2" @fileRemove="fileRemove"
             @fileSuccess="fileSuccess" :fileList="fileList" action="/qiniu/upload/image"></my-upload>
         </el-form-item>
       </div>

+ 4 - 2
src/views/videoManage/videoLibraryList/form/create.vue

@@ -56,7 +56,7 @@
           </el-radio-group>
         </el-form-item>
         <el-form-item label="封面" prop="cover_image">
-          <my-upload acceptType=".png,.jpg,.jpeg" :isMultiple="true" @fileRemove="fileRemove" @fileSuccess="fileSuccess"
+          <my-upload acceptType=".png,.jpg,.jpeg" :isMultiple="false" @fileRemove="fileRemove" @fileSuccess="fileSuccess"
             :fileList="formData.fileList" action="/qiniu/upload/image"></my-upload>
         </el-form-item>
         <el-form-item label="简介" prop="note">
@@ -78,7 +78,7 @@ import type { FormInstance, FormRules } from 'element-plus'
 const ruleForm = ref<FormInstance>()
 import { onMounted, ref } from 'vue';
 const props = defineProps({
-  primary: String | Number,
+  primary: String | Number | Object,
 });
 const cooperations = ref([]);
 const categoryList = ref([])
@@ -226,6 +226,8 @@ if (props.primary) {
   formData.value = JSON.parse(JSON.stringify(props.primary))
   formData.value.fileList = [{ uid: props.primary.id, url: props.primary.cover_image }]
   selectType.value = formData.value.category_id
+} else {
+  formData.value.fileList = []
 }
 const initType = () => {
   videoStockVideoCategoryList().then(res => {

+ 1 - 4
src/views/videoManage/videoLibraryList/index.vue

@@ -140,7 +140,7 @@
     </div>
 
     <Dialog v-model="visible" :title="title" destroy-on-close>
-      <Create @close="close(search)" :primary="id" :eidapi="addApi" :addapi="addApi" :ismulSet="ismulSet" />
+      <Create @close="close(search)" :primary="id" />
     </Dialog>
     <Dialog v-model="videoDLVisible" width="80%" title="视频下载" destroy-on-close>
       <videoDL @close="closeType('videoDLVisible')" :primary="depotsData"></videoDL>
@@ -176,9 +176,7 @@ import moment from 'moment';
 import { videoStockVideoUpdate, videoStockVideoAdd, videoStockVideoCategoryList } from '@/api/video/index'
 import { useUserStore } from '@/stores/modules/user/index'
 import Cache from '@/support/cache';
-const ismulSet = ref(false)
 const api = 'videoStock/video/list';
-const addApi = 'contentManage/book/edit_author';
 const multipleSelection = ref([]);
 const { data, query, search, reset, loading } = useGetList(api);
 const { deleted } = useDestroy();
@@ -303,7 +301,6 @@ const mulSet = () => {
       cancelButtonText: '取消',
       beforeClose: (action, instance, done) => {
         if (action === 'confirm') {
-          ismulSet.value = true
           let ids = multipleSelection.value.map(el => el.id);
           console.log(ids);
           open(ids);

+ 0 - 176
src/views/videoManage/wechatAudit/tabs/wechatAuditList/detail.vue

@@ -1,176 +0,0 @@
-<template>
-  <el-card class="box-card">
-    <template #header>
-      <div class="card-header">
-        <span>简介</span>
-      </div>
-    </template>
-    <div class="flex">
-      <div>
-        <el-image class="mr-2 rounded-sm" :src="props.primary.cover_image" style="width:128px;height:160px;" fit="cover"
-          :lazy="true"></el-image>
-      </div>
-      <div>
-        <div class="flex items-center">
-          <span class="text-lg font-bold text-blue-400">
-            {{ props.primary.name }}
-          </span>
-          <div class="ml-3">
-            剧号:
-            <span class="font-bold">{{ props.primary.id }}</span>
-          </div>
-        </div>
-        <div class="flex items-center mt-2">
-          <span>
-            集数:
-          </span>
-          <div class="flex items-center font-bold">
-            <div v-if="props.primary.update_type == 1">
-              <span class="">
-                {{ props.primary.updated_episode_num }}
-              </span>
-              <span>/</span>
-            </div>
-            <div>
-              <span class="">
-                {{ props.primary.total_episode_num }}
-              </span>
-            </div>
-            <span>
-              【 {{ props.primary.update_type_str }} 】
-            </span>
-          </div>
-        </div>
-        <div class="mt-2">
-          简介:
-          <span class="font-bold note">{{ props.primary.note }}</span>
-        </div>
-      </div>
-    </div>
-  </el-card>
-
-  <div class="flex flex-col justify-between w-full sm:flex-row" style="width:100%;">
-    <div class="table-default" style="width:100%;">
-      <el-table :data="tableData" class="w-full mt-3" style="width:100%;">
-        <el-table-column prop="series_name" label="章节名称" />
-        <el-table-column prop="is_charge" label="是否付费">
-          <template #default="scope">
-            <span :class="scope.row.is_charge ? 'text-red-600' : 'text-green-300'">
-              {{ scope.row.is_charge ? '【付费】' : '【免费】' }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="duration_str" label="章节时长" />
-        <el-table-column label="操作" width="200">
-          <template #default="scope">
-            <el-button link type="primary" size="small" @click="play(scope.row)">播放</el-button>
-            <el-button link type="primary" size="small" @click="createLink(scope.row)" v-if="isShowCreatePromotion"
-              v-action="'tuiguang.Promotion.add'">创建推广链接</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <Paginate />
-    </div>
-  </div>
-  <Dialog v-model="playVisible" title="视频" destroy-on-close height="100%">
-    <video id="my-player" class="video-js" controls autoplay preload="auto" ref="myVideo">
-      <source :src="current.public_video_url" type="video/mp4">
-    </video>
-  </Dialog>
-
-  <Dialog v-model="linkVisible" title="创建推广链接" destroy-on-close>
-    <el-form :model="formDataForm" label-width="120px" ref="form" v-loading="loading" class="pr-4">
-      <el-form-item label="推广名称" prop="name" :rules="[{ required: true, message: '推广名称必须填写' }]">
-        <el-input v-model="formDataForm.name" name="name" clearable />
-      </el-form-item>
-      <el-form-item label="入口章节" prop="series_sequence" :rules="[{ required: false, message: '入口章节必须填写' }]">
-        <el-input disabled v-model="current.series_name" name="author" clearable />
-      </el-form-item>
-      <div class="flex justify-end">
-        <el-button type="primary" @click="submitForm(form)">{{
-          $t('system.confirm')
-        }}</el-button>
-      </div>
-    </el-form>
-  </Dialog>
-</template>
-
-<script lang="ts" setup>
-// import router from '@/router'
-import Cache from '@/support/cache';
-import { computed, onMounted, ref } from 'vue';
-import { useGetList } from '@/hook/curd/useGetList';
-import { useOpen } from '@/hook/curd/useOpen';
-import { FormInstance } from 'element-plus';
-import { tuiguangPromotionAdd } from '@/api/promotion/index'
-const api = 'videoStock/episode/list';
-const props = defineProps({
-  primary: String | Number,
-});
-const isShowCreatePromotion = computed(
-  () => JSON.parse(Cache.get('nav_data'))?.advertiser?.miniProgramIds
-    && JSON.parse(Cache.get('nav_data'))?.app
-)
-const router = useRouter()
-const form = ref()
-const formDataForm = ref({})
-const current = ref({})
-const playVisible = ref(false)
-const linkVisible = ref(false)
-const { data, query, search, reset, loading } = useGetList(api);
-const { open, close, title, visible, id } = useOpen();
-if (props.primary) {
-  query.value.video_id = props.primary.id
-  formDataForm.value.video_id = props.primary.id
-  formDataForm.value.miniprogram_id = JSON.parse(Cache.get('nav_data'))?.app?.id
-}
-const tableData = computed(() => data.value?.data);
-const play = (e: object) => {
-  current.value = e;
-  playVisible.value = true;
-}
-const createLink = (e: object) => {
-  current.value = e;
-  formDataForm.value.series_sequence = e.series_sequence
-  linkVisible.value = true;
-}
-
-const submitForm = (formEl: FormInstance | undefined) => {
-  loading.value = true;
-  if (!formEl) return;
-  formEl
-    .validate(valid => {
-      if (valid) {
-        tuiguangPromotionAdd(formDataForm.value).then(res => {
-          console.log(res, 'tuiguangPromotionAddtuiguangPromotionAdd');
-          ElMessage.success(res.message)
-          loading.value = false;
-          linkVisible.value = false;
-          router.push({ path: '/promotion/promotionList', query: { tab: 0 } })
-        })
-      } else {
-        loading.value = false;
-      }
-    })
-    .then(() => { });
-}
-
-onMounted(() => {
-  search();
-});
-</script>
-
-<style lang="scss" scoped>
-//播放器样式
-video#my-player.video-js {
-  width: 80%;
-  height: 500px;
-  background-color: #000;
-}
-
-.note {
-  font-size: 16px;
-  width: fit-content;
-  word-wrap: break-word;
-  word-break: break-all;
-}
-</style>

+ 70 - 82
src/views/videoManage/wechatAudit/tabs/wechatAuditList/form/create.vue

@@ -2,28 +2,35 @@
   <el-form :model="formData" label-width="150px" ref="ruleForm" :rules="rules" v-loading="loading" class="pr-4">
     <div class="flex flex-row justify-between">
       <div class="w-full">
-        <el-form-item label="剧目名称" prop="name">
-          <el-input v-model="formData.name" placeholder="请输入剧目名称" />
+        <el-form-item label="剧目名称" prop="video_id">
+          <el-input v-model="formData.name" :disabled="props.primary?.id" v-if="props.primary?.id"
+            placeholder="请输入剧目制作方名称" />
+          <el-select v-model="formData.video_id" v-else class="w-full" clearable filterable remote
+            :remote-method="remoteMethod" placeholder="请选择剧目名称">
+            <el-option v-for="item in videoList" :key="item.id" :label="item.name" :value="item.id" />
+          </el-select>
         </el-form-item>
-        <el-form-item label="剧目制作方名称" prop="name">
-          <el-input v-model="formData.name" placeholder="请输入剧目制作方名称" />
+        <el-form-item label="剧目制作方名称" prop="producer">
+          <el-input v-model="formData.producer" placeholder="请输入剧目制作方名称" />
         </el-form-item>
-        <el-form-item label="编剧姓名" prop="name">
-          <el-input v-model="formData.name" placeholder="请输入编剧姓名" />
+        <el-form-item label="编剧姓名" prop="playwright">
+          <el-input v-model="formData.playwright" placeholder="请输入编剧姓名" />
         </el-form-item>
-        <el-form-item label="剧目备案号" prop="name">
-          <el-input v-model="formData.name" placeholder="请输入剧目备案号" />
+        <el-form-item label="剧目备案号" prop="registration_number">
+          <el-input v-model="formData.registration_number" placeholder="请输入剧目备案号" />
         </el-form-item>
-        <el-form-item label-width="300px" label="剧目制作方的《广播电视节目制作许可证》" prop="cover_image" class="flex flex-col">
+        <el-form-item label-width="300px" label="剧目制作方的《广播电视节目制作许可证》" prop="production_license_img" class="flex flex-col">
           <div style="margin-left:150px;">
-            <my-upload acceptType=".png,.jpg,.jpeg" :isMultiple="false" @fileRemove="fileRemove"
-              @fileSuccess="fileSuccess" :fileList="formData.fileList" action="/qiniu/upload/image"></my-upload>
+            <my-upload :key="Math.random()" acceptType=".png,.jpg,.jpeg" :maxFileSize="20" :isMultiple="false"
+              @fileRemove="fileRemove" @fileSuccess="fileSuccess" :fileList="formData.fileList"
+              action="/qiniu/upload/image"></my-upload>
           </div>
         </el-form-item>
-        <el-form-item label-width="300px" label="剧目制作方的《广播电视节目制作许可证》" prop="cover_image" class="flex flex-col">
+        <el-form-item label-width="150px" label="剧目播放授权材料" prop="authorized_img" class="flex flex-col">
           <div style="margin-left:150px;">
-            <my-upload acceptType=".png,.jpg,.jpeg" :isMultiple="false" @fileRemove="fileRemoveTwo"
-              @fileSuccess="fileSuccessTwo" :fileList="formData.fileListTwo" action="/qiniu/upload/image"></my-upload>
+            <my-upload :key="Math.random()" acceptType=".png,.jpg,.jpeg" :maxFileSize="20" :isMultiple="false"
+              @fileRemove="fileRemoveTwo" @fileSuccess="fileSuccessTwo" :fileList="formData.fileListTwo"
+              action="/qiniu/upload/image"></my-upload>
           </div>
         </el-form-item>
       </div>
@@ -36,99 +43,81 @@
 
 <script lang="ts" setup>
 import { InfoFilled } from '@element-plus/icons-vue';
-import { videoStockVideoUpdate, videoStockVideoAdd, videoStockVideoCategoryList } from '@/api/video/index'
+import { videoStockWechatCheckAdd, videoStockWechatCheckUpdate } from '@/api/wxDeliver/index'
 import type { FormInstance, FormRules } from 'element-plus'
 const ruleForm = ref<FormInstance>()
 import { onMounted, ref } from 'vue';
+import { videoStockVideoList } from '@/api/video/index'
 const props = defineProps({
-  primary: String | Number,
+  primary: Object,
 });
 const emit = defineEmits(['close']);
 const formData = ref({})
 const rules = reactive({
-  name: [{ required: true, message: '请输入短剧名称', trigger: 'blur' }],
-  note: [{ required: true, message: '请输入简介', trigger: 'blur' }],
-  total_episode_num: [
+  registration_number: [{ required: true, message: '请输入剧目备案号', trigger: 'blur' }],
+  producer: [{ required: true, message: '请输入剧目制作方名称', trigger: 'blur' }],
+  playwright: [
     {
       required: true,
-      message: '请输入集数',
+      message: '请输入编剧姓名',
       trigger: 'blur'
     }
   ],
-  update_type: [
+  video_id: [
     {
       required: true,
-      message: '请选择完结状态',
+      message: '请选择剧目名称',
       trigger: 'change'
     }
   ],
-  category_id: [
+  production_license_img: [
     {
       required: true,
-      message: '请选择频道',
-      trigger: 'change'
-    }
-  ],
-  shelf_type: [
-    {
-      required: true,
-      message: '请选择上架状态',
-      trigger: 'change'
-    }
-  ],
-  d_charge_sequence: [
-    {
-      required: true,
-      message: '请输入起始集',
-      trigger: 'blur'
+      message: '请上传剧目制作方的《广播电视节目制作许可证》',
     }
   ],
-  d_charge_coin: [
+  authorized_img: [
     {
       required: true,
-      message: '请输入默认定价',
-      trigger: 'blur'
-    }
-  ],
-  cp_name: [
-    {
-      required: true,
-      message: '请选择所属CP方',
-      trigger: 'change'
-    }
-  ],
-  cp_share_type: [
-    {
-      required: true,
-      message: '请选择分成模式',
-      trigger: 'change'
-    }
-  ],
-  cover_image: [
-    {
-      required: true,
-      message: '请上传封面',
+      message: '请上传剧目播放授权材料',
     }
   ],
 });
 const loading = ref(false)
+const videoList = ref([])
+
+const initVideoList = (params?: object) => {
+  videoStockVideoList({ limit: 999, ...params }).then(res => {
+    console.log(res);
+    videoList.value = res.data
+  })
+}
+const remoteMethod = (query: string) => {
+  if (query) {
+    initVideoList({ videoName: query })
+  } else {
+    initVideoList()
+  }
+}
 
 const fileSuccess = (e) => {
   console.log(e);
-  formData.value.cover_image = e;
+  formData.value.production_license_img = e;
+  formData.value.fileList = [{ uid: props.primary.id, url: e }]
 }
 const fileRemove = (e) => {
   console.log(e);
-  formData.value.cover_image = '';
+  formData.value.production_license_img = '';
 }
 
 const fileSuccessTwo = (e) => {
   console.log(e);
-  formData.value.cover_image = e;
+  formData.value.authorized_img = e;
+  formData.value.fileListTwo = [{ uid: props.primary.id, url: e }]
 }
 const fileRemoveTwo = (e) => {
   console.log(e);
-  formData.value.cover_image = '';
+  formData.value.authorized_img = '';
 }
 
 const submitForm = (formEl: FormInstance | undefined) => {
@@ -139,23 +128,18 @@ const submitForm = (formEl: FormInstance | undefined) => {
       if (valid) {
         let api;
         let params = {
-          "name": formData.value.name,
-          "total_episode_num": formData.value.total_episode_num,
-          "update_type": formData.value.update_type,
-          "category_id": formData.value.category_id,
-          "shelf_type": formData.value.shelf_type,
-          "d_charge_sequence": formData.value.d_charge_sequence,
-          "d_charge_coin": formData.value.d_charge_coin,
-          "cp_name": formData.value.cp_name,
-          "cp_share_type": formData.value.cp_share_type,
-          "cover_image": formData.value.cover_image,
-          "note": formData.value.note
+          "video_id": formData.value.video_id,
+          "producer": formData.value.producer,
+          "playwright": formData.value.playwright,
+          "production_license_img": formData.value.production_license_img,
+          "authorized_img": formData.value.authorized_img,
+          "registration_number": formData.value.registration_number,
         };
         if (props.primary) {
-          api = videoStockVideoUpdate
+          api = videoStockWechatCheckUpdate
           params.id = formData.value.id
         } else {
-          api = videoStockVideoAdd
+          api = videoStockWechatCheckAdd
         }
         api(params).then(res => {
           console.log(res);
@@ -170,11 +154,15 @@ const submitForm = (formEl: FormInstance | undefined) => {
 }
 
 if (props.primary) {
+  console.log(props.primary, 'primary,primaryprimary');
   formData.value = JSON.parse(JSON.stringify(props.primary))
-  formData.value.fileList = [{ uid: props.primary.id, url: props.primary.cover_image }]
+  formData.value.fileList = [{ uid: props.primary.id, url: props.primary.production_license_img }]
+  formData.value.fileListTwo = [{ uid: props.primary.id, url: props.primary.authorized_img }]
+} else {
+  formData.value.fileList = []
+  formData.value.fileListTwo = []
 }
-
 onMounted(() => {
-
+  initVideoList()
 });
 </script>

+ 24 - 11
src/views/videoManage/wechatAudit/tabs/wechatAuditList/form/videoSync.vue

@@ -1,5 +1,4 @@
 <template>
-  <el-alert title="注:如需批量下载,则多选目标集数,点击下载按钮即可" type="warning" show-icon :closable="false" />
   <div class="wrapper">
     <!-- :poster="videoImg"视频封面 -->
     <video id="my-player" style="width:500px;" :key="current.public_video_url" class="video-js" controls autoplay
@@ -31,14 +30,14 @@
         </el-popover>
       </div>
       <div>
-        <el-checkbox v-model="checkAll" border :indeterminate="isIndeterminate" @change="handleCheckAllChange">
+        <el-checkbox v-model="checkAll" border @change="handleCheckAllChange">
           全选
         </el-checkbox>
       </div>
       <mytabs :meta="meta" v-if="meta.total" @change="handChange">
         <template v-slot:content>
           <el-checkbox-group v-model="videoChoose" size="large" class="flex items-center" v-if="viewStatus">
-            <el-checkbox border class="video-item" @change="videoShow(source)" v-for="(source, index) in videoUrlList"
+            <el-checkbox border class="video-item" @change="videoShowWx(source)" v-for="(source, index) in videoUrlList"
               :key="index" :label="source" :style="{ backgroundColor: colorType(source) }">
               {{ source.series_sequence }}
             </el-checkbox>
@@ -57,6 +56,7 @@
 <script lang="ts" setup>
 import { ref } from 'vue'
 import { videoStockEpisodeList } from '@/api/video/index'
+import { videoStockWechatCheckVideoSeriesSyncWechat, videoStockWechatCheckVideoSeriesMedialink } from '@/api/wxDeliver/index'
 const myVideo = ref()
 const videoChoose = ref([])
 const changeForm = ref({ page: 1, limit: 100 })
@@ -71,29 +71,36 @@ if (props.primary) {
 }
 const meta = ref({})
 const colorType = (data: object) => {
-  console.log(data, 'datacolorTypecolorType');
-  const type = data.series_sequence
+  const type = data.wechat_check_status
   switch (type) {
     case 1:
       return '#f18e00'
-    case 2:
-      return '#28c445'
     case 3:
+      return '#28c445'
+    case 2:
       return '#ed0b0b'
   }
 }
 const current = ref({})
-const videoChooseUrls = ref([])
 // 查看状态
 const viewStatusChange = () => {
+  current.value = {}
   viewStatus.value = true
+  checkAll.value = false
+  videoChoose.value = []
 }
 // 同步视频
 const syncVideoChange = () => {
+  const series_ids = videoChoose.value.map(e => e.id)
+  videoStockWechatCheckVideoSeriesSyncWechat({ series_ids }).then(res => {
+    console.log(res);
+    ElMessage.success(res.message)
+  })
   viewStatus.value = false
+  console.log(videoChoose.value, series_ids, 'videoChoosevideoChoose');
 }
 const initVideoList = (params: object) => {
-  videoStockEpisodeList({ video_id: props.primary.id, ...params }).then(res => {
+  videoStockEpisodeList({ video_id: props.primary.id, need_wechat_status: 1, ...params }).then(res => {
     videoUrlList.value = res.data;
     meta.value = { limit: res.limit, total: res.total }
   })
@@ -112,8 +119,14 @@ const handChange = (e) => {
 const videoShow = (source: object) => {
   console.log(source);
   current.value = videoChoose.value.find(el => el.public_video_url == source.public_video_url) ?? {}
-  videoChooseUrls.value = videoChoose.value
-  console.log(videoChooseUrls.value, 'videoChooseUrls.value');
+}
+const videoShowWx = (source: object) => {
+  console.log(source);
+  videoStockWechatCheckVideoSeriesMedialink({ series_id: source.id }).then(res => {
+    console.log(res);
+    current.value = videoChoose.value.find(el => el.public_video_url == source.public_video_url) ?? {}
+    current.value.public_video_url = res.data
+  })
 }
 
 onMounted(() => {

+ 71 - 66
src/views/videoManage/wechatAudit/tabs/wechatAuditList/index.vue

@@ -2,8 +2,11 @@
   <div>
     <Search :search="search" :reset="resetQuery">
       <template v-slot:body>
-        <el-form-item label="剧目" prop="name">
-          <el-input v-model="query.videoName" placeholder="请输入剧目名称" clearable />
+        <el-form-item label="剧目名称" prop="video_id">
+          <el-select v-model="query.video_id" class="w-full" clearable filterable remote :remote-method="remoteMethod"
+            placeholder="请选择剧目名称">
+            <el-option v-for="item in videoList" :key="item.id" :label="item.name" :value="item.id" />
+          </el-select>
         </el-form-item>
         <el-form-item label="制作方" prop="producer">
           <el-input v-model="query.producer" placeholder="请输入制作方名称" clearable />
@@ -15,9 +18,11 @@
     </Search>
     <div class="table-default">
       <div class="set-warpper">
-        <el-button type="primary" @click="mulSet" size="default" v-action="'video.video.mulSet'">批量提审</el-button>
+        <div>
+          <Operate :show="open" />
+        </div>
+        <el-button @click="mulSet" size="default">批量提审</el-button>
       </div>
-      <Operate :show="open" v-action="'video.video.add'" />
       <el-table :data="tableData" class="mt-3" v-loading="loading" @selection-change="handleSelectionChange">
         <el-table-column type="selection" />
         <el-table-column label="剧目名称" prop="name" show-overflow-tooltip min-width="150">
@@ -61,9 +66,9 @@
           <template #default="scope">
             <el-button @click="open(scope.row)" link type="primary" size="small"
               v-action="'video.video.update'">编辑</el-button><br />
-            <el-button link type="primary" size="small" @click="openType('uploadVisible', scope.row)"
+            <el-button link type="primary" size="small" @click="deliverDelete(scope.row)"
               v-action="'video.episode.add'">删除</el-button><br />
-            <el-button @click="openType('takeVisible', scope.row)" link type="primary" size="small"
+            <el-button @click="deliverChange(scope.row)" link type="primary" size="small"
               v-action="'video.video.setChargeConfig'">一键提审</el-button><br />
             <el-button link type="primary" size="small" @click="openType('videoSyncVisible', scope.row)"
               v-action="'video.episode.downloadList'">同步视频</el-button>
@@ -76,51 +81,86 @@
     <Dialog v-model="visible" :title="title" destroy-on-close>
       <Create @close="close(search)" :primary="id" />
     </Dialog>
-    <Dialog v-model="videoSyncVisible" width="80%" title="视频下载" destroy-on-close>
+    <Dialog v-model="videoSyncVisible" width="80%" title="同步视频" destroy-on-close>
       <videoSync @close="closeType('videoSyncVisible')" :primary="depotsData"></videoSync>
     </Dialog>
   </div>
 </template>
 
 <script lang="ts" setup>
-import { downloadImage } from '@/utils/index'
 import { InfoFilled } from '@element-plus/icons-vue';
-import { provide } from 'vue'
+import { videoStockVideoList } from '@/api/video/index'
+import { videoStockWechatCheckCheck, videoStockWechatCheckDelete } from '@/api/wxDeliver/index'
 import Create from './form/create.vue';
 import videoSync from './form/videoSync.vue';
 import { useGetList } from '@/hook/curd/useGetList';
 import { useDestroy } from '@/hook/curd/useDestroy';
 import { useOpen } from '@/hook/curd/useOpen';
-import { shortcuts } from '@/utils/shortcuts';
-import moment from 'moment';
-import { videoStockVideoUpdate, videoStockVideoAdd, videoStockVideoCategoryList } from '@/api/video/index'
 import { useUserStore } from '@/stores/modules/user/index'
-import Cache from '@/support/cache';
-const ismulSet = ref(false)
 const api = 'videoStock/wechatCheck/list';
 const multipleSelection = ref([]);
 const { data, query, search, reset, loading } = useGetList(api);
 const { deleted } = useDestroy();
-const uploadBooksVisible = ref(false)
 const videoSyncVisible = ref(false)
 const depotsData = ref({})
-const uploadVisible = ref(false)
-const uploadData = ref({})
-const takeVisible = ref(false)
-const takeData = ref({})
 const current = ref({})
 const selectType = ref([])
-const cooperations = ref([]);
 const rolesIdentify = ref([]);
-const isShowCreatePromotion = computed(() => JSON.parse(Cache.get('nav_data'))?.advertiser?.miniProgramIds && JSON.parse(Cache.get('nav_data'))?.app)
-
-
 const userStore = useUserStore()
 
+const videoList = ref([])
+
+const initVideoList = (params?: object) => {
+  videoStockVideoList({ limit: 999, ...params }).then(res => {
+    console.log(res);
+    videoList.value = res.data
+  })
+}
+const remoteMethod = (query: string) => {
+  if (query) {
+    initVideoList({ videoName: query })
+  } else {
+    initVideoList()
+  }
+}
 const resetQuery = () => {
   reset()
   selectType.value = []
 }
+const deliverChange = (row: object) => {
+  console.log(row);
+  videoStockWechatCheckCheck({ ids: [row.id] }).then(res => {
+    console.log(res);
+    ElMessage.success(res.message)
+    search()
+  })
+}
+
+const deliverDelete = (row: object) => {
+  console.log(row);
+  ElMessageBox({
+    title: '提示',
+    message: h('p', null, [
+      h('span', null, `确认删除`),
+      h('span', null, `吗?`)
+    ]),
+    showCancelButton: true,
+    confirmButtonText: '确定',
+    type: 'warning',
+    cancelButtonText: '取消',
+    beforeClose: (action, instance, done) => {
+      if (action === 'confirm') {
+        videoStockWechatCheckDelete({ id: row.id }).then(res => {
+          console.log(res);
+          ElMessage.success(res.message)
+          search()
+        })
+      }
+      done();
+    }
+  });
+}
+
 const openType = (type: string, data: object) => {
   current.value = data;
   switch (type) {
@@ -128,28 +168,8 @@ const openType = (type: string, data: object) => {
       videoSyncVisible.value = true
       depotsData.value = data
       break;
-    case 'takeVisible':
-      takeVisible.value = true
-      takeData.value = data
-      break;
-    case 'uploadVisible':
-      uploadVisible.value = true
-      uploadData.value = data
-      break;
   }
 }
-provide('video', current)
-const initType = () => {
-  videoStockVideoCategoryList().then(res => {
-    console.log(res);
-    cooperations.value = res.data
-  })
-}
-// 下载封面
-const dowload = (e: object) => {
-  downloadImage(e.cover_image, e.name)
-}
-
 const tableData = computed(() => data.value?.data);
 const { open, close, title, visible, id } = useOpen();
 
@@ -164,12 +184,6 @@ const closeType = (type) => {
     case 'videoSyncVisible':
       videoSyncVisible.value = false
       break;
-    case 'takeVisible':
-      takeVisible.value = false
-      break;
-    case 'uploadVisible':
-      uploadVisible.value = false
-      break;
   }
   search()
 }
@@ -184,12 +198,7 @@ const mulSet = () => {
     ElMessageBox({
       title: '提示',
       message: h('p', null, [
-        h('span', null, `确认批量设置`),
-        h(
-          'span',
-          { style: 'color:red' },
-          multipleSelection.value.map(el => el.name).join(',')
-        ),
+        h('span', null, `确认批量提审`),
         h('span', null, `吗?`)
       ]),
       showCancelButton: true,
@@ -198,10 +207,12 @@ const mulSet = () => {
       cancelButtonText: '取消',
       beforeClose: (action, instance, done) => {
         if (action === 'confirm') {
-          ismulSet.value = true
           let ids = multipleSelection.value.map(el => el.id);
-          console.log(ids);
-          open(ids);
+          videoStockWechatCheckCheck({ ids }).then(res => {
+            console.log(res);
+            ElMessage.success(res.message)
+            search()
+          })
         }
         done();
       }
@@ -209,12 +220,7 @@ const mulSet = () => {
   }
 };
 onMounted(() => {
-  rolesIdentify.value = userStore.getRoles?.map(el => el?.identify)
-  console.log(rolesIdentify.value, 'rolesroles');
-  if (userStore.getRoles?.some(el => (el?.identify == 'company'))) {
-    query.value.operateUserId = JSON.parse(Cache.get('nav_data'))?.advertiser?.id;
-  }
-  initType()
+  initVideoList()
   search();
 });
 </script>
@@ -226,10 +232,9 @@ onMounted(() => {
 
 .table-default {
   .set-warpper {
-    height: 60px;
     display: flex;
     align-items: center;
-    justify-content: flex-end;
+    justify-content: space-between;
   }
 
   .wrapper {

+ 0 - 86
src/views/videoManage/wechatAudit/tabs/wechatAuditStatus/excelTitle.ts

@@ -1,86 +0,0 @@
-// 导出中文/字段
-export const titleObj = {
-  0: {
-    商户名称: 'company_name',
-    商户ID: 'puser_id',
-    优化师: 'username',
-    小程序: 'xcx_name',
-    用户ID: 'uid',
-    订单号: 'trade_no',
-    订单时间: 'order_created_at',
-    染色注册时间: 'ranse_created_at',
-    申退金额: 'refund_price',
-    充值金额: 'order_price',
-    推广名称: 'promotion_name',
-    档位类型: 'tip_text',
-    支付方式: 'pay_name',
-    平台审核: 'pt_verify_status_text',
-    平台审核备注: 'pt_verify_remark',
-    商户审核: 'sh_verify_status_text',
-    商户审核备注: 'sh_verify_remark'
-  },
-  1: {
-    商户名称: 'company_name',
-    商户ID: 'puser_id',
-    优化师: 'username',
-    小程序: 'xcx_name',
-    用户ID: 'uid',
-    订单号: 'trade_no',
-    订单时间: 'order_created_at',
-    染色注册时间: 'ranse_created_at',
-    申退金额: 'refund_price',
-    充值金额: 'order_price',
-    推广名称: 'promotion_name',
-    档位类型: 'tip_text',
-    支付方式: 'pay_name',
-    退款时间: 'pay_at',
-    退款单号: 'refund_no',
-    订单状态: 'status_text'
-  }
-};
-
-export const titlePtObj = {
-	0: {
-	  商户名称: 'company_name',
-	  商户ID: 'puser_id',
-	  优化师: 'username',
-	  小程序: 'xcx_name',
-	  用户ID: 'uid',
-	  订单号: 'trade_no',
-	  订单时间: 'order_created_at',
-	  染色注册时间: 'ranse_created_at',
-	  申退金额: 'refund_price',
-	  充值金额: 'order_price',
-	  推广名称: 'promotion_name',
-	  档位类型: 'tip_text',
-	  支付方式: 'pay_name',
-	  支付名称:"pay_merchant_name",
-	  收款主体:"payee_name",
-	  支付商户号:"pay_appid",
-	  平台审核: 'pt_verify_status_text',
-	  平台审核备注: 'pt_verify_remark',
-	  商户审核: 'sh_verify_status_text',
-	  商户审核备注: 'sh_verify_remark'
-	},
-	1: {
-	  商户名称: 'company_name',
-	  商户ID: 'puser_id',
-	  优化师: 'username',
-	  小程序: 'xcx_name',
-	  用户ID: 'uid',
-	  订单号: 'trade_no',
-	  订单时间: 'order_created_at',
-	  染色注册时间: 'ranse_created_at',
-	  申退金额: 'refund_price',
-	  充值金额: 'order_price',
-	  推广名称: 'promotion_name',
-	  档位类型: 'tip_text',
-	  支付方式: 'pay_name',
-	  支付名称:"pay_merchant_name",
-	  收款主体:"payee_name",
-	  支付商户号:"pay_appid",
-	  退款时间: 'pay_at',
-	  退款单号: 'refund_no',
-	  订单状态: 'status_text'
-	}
-}

+ 168 - 0
src/views/videoManage/wechatAudit/tabs/wechatAuditStatus/form/create.vue

@@ -0,0 +1,168 @@
+<template>
+  <el-form :model="formData" label-width="150px" ref="ruleForm" :rules="rules" v-loading="loading" class="pr-4">
+    <div class="flex flex-row justify-between">
+      <div class="w-full">
+        <el-form-item label="剧目名称" prop="video_id">
+          <el-input v-model="formData.name" :disabled="props.primary?.id" v-if="props.primary?.id"
+            placeholder="请输入剧目制作方名称" />
+          <el-select v-model="formData.video_id" v-else class="w-full" clearable filterable remote
+            :remote-method="remoteMethod" placeholder="请选择剧目名称">
+            <el-option v-for="item in videoList" :key="item.id" :label="item.name" :value="item.id" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="剧目制作方名称" prop="producer">
+          <el-input v-model="formData.producer" placeholder="请输入剧目制作方名称" />
+        </el-form-item>
+        <el-form-item label="编剧姓名" prop="playwright">
+          <el-input v-model="formData.playwright" placeholder="请输入编剧姓名" />
+        </el-form-item>
+        <el-form-item label="剧目备案号" prop="registration_number">
+          <el-input v-model="formData.registration_number" placeholder="请输入剧目备案号" />
+        </el-form-item>
+        <el-form-item label-width="300px" label="剧目制作方的《广播电视节目制作许可证》" prop="production_license_img" class="flex flex-col">
+          <div style="margin-left:150px;">
+            <my-upload :key="Math.random()" acceptType=".png,.jpg,.jpeg" :maxFileSize="20" :isMultiple="false"
+              @fileRemove="fileRemove" @fileSuccess="fileSuccess" :fileList="formData.fileList"
+              action="/qiniu/upload/image"></my-upload>
+          </div>
+        </el-form-item>
+        <el-form-item label-width="150px" label="剧目播放授权材料" prop="authorized_img" class="flex flex-col">
+          <div style="margin-left:150px;">
+            <my-upload :key="Math.random()" acceptType=".png,.jpg,.jpeg" :maxFileSize="20" :isMultiple="false"
+              @fileRemove="fileRemoveTwo" @fileSuccess="fileSuccessTwo" :fileList="formData.fileListTwo"
+              action="/qiniu/upload/image"></my-upload>
+          </div>
+        </el-form-item>
+      </div>
+    </div>
+    <div class="flex justify-end">
+      <el-button type="primary" @click="submitForm(ruleForm)">{{ $t('system.confirm') }}</el-button>
+    </div>
+  </el-form>
+</template>
+
+<script lang="ts" setup>
+import { InfoFilled } from '@element-plus/icons-vue';
+import { videoStockWechatCheckAdd, videoStockWechatCheckUpdate } from '@/api/wxDeliver/index'
+import type { FormInstance, FormRules } from 'element-plus'
+const ruleForm = ref<FormInstance>()
+import { onMounted, ref } from 'vue';
+import { videoStockVideoList } from '@/api/video/index'
+const props = defineProps({
+  primary: Object,
+});
+const emit = defineEmits(['close']);
+const formData = ref({})
+const rules = reactive({
+  registration_number: [{ required: true, message: '请输入剧目备案号', trigger: 'blur' }],
+  producer: [{ required: true, message: '请输入剧目制作方名称', trigger: 'blur' }],
+  playwright: [
+    {
+      required: true,
+      message: '请输入编剧姓名',
+      trigger: 'blur'
+    }
+  ],
+  video_id: [
+    {
+      required: true,
+      message: '请选择剧目名称',
+      trigger: 'change'
+    }
+  ],
+  production_license_img: [
+    {
+      required: true,
+      message: '请上传剧目制作方的《广播电视节目制作许可证》',
+    }
+  ],
+  authorized_img: [
+    {
+      required: true,
+      message: '请上传剧目播放授权材料',
+    }
+  ],
+});
+const loading = ref(false)
+const videoList = ref([])
+
+const initVideoList = (params?: object) => {
+  videoStockVideoList({ limit: 999, ...params }).then(res => {
+    console.log(res);
+    videoList.value = res.data
+  })
+}
+const remoteMethod = (query: string) => {
+  if (query) {
+    initVideoList({ videoName: query })
+  } else {
+    initVideoList()
+  }
+}
+
+const fileSuccess = (e) => {
+  console.log(e);
+  formData.value.production_license_img = e;
+  formData.value.fileList = [{ uid: props.primary.id, url: e }]
+}
+const fileRemove = (e) => {
+  console.log(e);
+  formData.value.production_license_img = '';
+}
+
+const fileSuccessTwo = (e) => {
+  console.log(e);
+  formData.value.authorized_img = e;
+  formData.value.fileListTwo = [{ uid: props.primary.id, url: e }]
+}
+const fileRemoveTwo = (e) => {
+  console.log(e);
+  formData.value.authorized_img = '';
+}
+
+const submitForm = (formEl: FormInstance | undefined) => {
+  console.log(formData.value, 'formData.valueformData.value');
+  if (!formEl) return;
+  formEl
+    .validate(valid => {
+      if (valid) {
+        let api;
+        let params = {
+          "video_id": formData.value.video_id,
+          "producer": formData.value.producer,
+          "playwright": formData.value.playwright,
+          "production_license_img": formData.value.production_license_img,
+          "authorized_img": formData.value.authorized_img,
+          "registration_number": formData.value.registration_number,
+        };
+        if (props.primary) {
+          api = videoStockWechatCheckUpdate
+          params.id = formData.value.id
+        } else {
+          api = videoStockWechatCheckAdd
+        }
+        api(params).then(res => {
+          console.log(res);
+          ElMessage.success(res.message)
+          emit('close')
+        })
+      } else {
+        loading.value = false;
+      }
+    })
+    .then(() => { });
+}
+
+if (props.primary) {
+  console.log(props.primary, 'primary,primaryprimary');
+  formData.value = JSON.parse(JSON.stringify(props.primary))
+  formData.value.fileList = [{ uid: props.primary.id, url: props.primary.production_license_img }]
+  formData.value.fileListTwo = [{ uid: props.primary.id, url: props.primary.authorized_img }]
+} else {
+  formData.value.fileList = []
+  formData.value.fileListTwo = []
+}
+onMounted(() => {
+  initVideoList()
+});
+</script>

+ 162 - 290
src/views/videoManage/wechatAudit/tabs/wechatAuditStatus/index.vue

@@ -1,362 +1,234 @@
 <template>
   <div>
     <div class="pl-5">
-      <el-radio-group v-model="query.refund_status" @change="search">
+      <el-radio-group v-model="query.status" @change="search">
         <el-radio v-for="item in statusListTop" :label="item.value" :key="item.value">{{ item.name }}</el-radio>
       </el-radio-group>
+      <div class="w-full text-red-500">注:请仔细核对提审内容,若多次审核驳回,可能会导致提审最终失败,最终失败后,对应短剧将失去提审资格</div>
     </div>
     <div class="flex justify-between">
       <Search :search="search" :reset="resetQuery">
         <template v-slot:body>
-          <el-form-item label="订单号" prop="trade_no">
-            <el-input v-model="query.trade_no" placeholder="请输入订单号" clearable />
-          </el-form-item>
-          <el-form-item label="用户ID" prop="uid">
-            <el-input v-model="query.uid" placeholder="请输入用户ID" clearable />
-          </el-form-item>
-          <el-form-item label="充值类型" prop="order_type">
-            <el-select v-model="query.order_type" filterable clearable placeholder="选择充值类型">
-              <el-option v-for="item in channelOrderTypeList" :key="item.value" :label="item.name" :value="item.value" />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="推广名称" prop="promotion_id">
-            <el-select v-model="query.promotion_id" filterable remote clearable
-              :remote-method="(query) => { remoteMethod(query, 'channelPromotions') }" placeholder="全部推广名称">
-              <el-option v-for="item in channelPromotions" :key="item.promotion_id" :label="item.name"
-                :value="item.promotion_id" />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="小程序" v-if="!query.promotion_id" prop="miniprogram_id">
-            <el-select v-model="query.miniprogram_id" filterable remote
-              :remote-method="(query) => { remoteMethod(query, 'channelMiniprogram') }" clearable placeholder="选择小程序">
-              <el-option v-for="item in channelMiniprogram" :key="item.miniprogram_id" :label="item.name"
-                :value="item.miniprogram_id" />
+          <el-form-item label="剧目名称" prop="video_id">
+            <el-select v-model="query.video_id" class="w-full" clearable filterable remote :remote-method="remoteMethod"
+              placeholder="请选择剧目名称">
+              <el-option v-for="item in videoList" :key="item.id" :label="item.name" :value="item.id" />
             </el-select>
           </el-form-item>
-          <el-form-item label="优化师" v-if="!query.promotion_id && !rolesIdentify.includes('optimizer')" prop="user_id">
-            <el-select v-model="query.user_id" filterable remote clearable
-              :remote-method="(query) => { remoteMethod(query, 'channelPromotionsUsers') }" placeholder="选择优化师">
-              <el-option v-for="item in promotionsUsersList" :key="item.user_id" :label="item.name"
-                :value="item.user_id" />
-            </el-select>
+          <el-form-item label="制作方" prop="producer">
+            <el-input v-model="query.producer" placeholder="请输入制作方名称" clearable />
           </el-form-item>
-          <el-form-item label="订单时间">
-            <el-date-picker unlink-panels clearable @change="orderTimeChange" format="YYYY/MM/DD"
-              value-format="YYYY-MM-DD" v-model="query.orderTime" type="daterange" :shortcuts="shortcuts"
-              range-separator="To" start-placeholder="开始时间" end-placeholder="结束时间" />
+          <el-form-item label="编剧" prop="playwright">
+            <el-input v-model="query.playwright" placeholder="请输入编剧姓名" clearable />
           </el-form-item>
-		  <el-form-item label="支付名称" prop="pay_merchant_name"  v-if="rolesIdentify.includes('administrator')">
-		    <el-input v-model="query.pay_merchant_name" placeholder="请输入支付名称" clearable />
-		  </el-form-item>
-		  <el-form-item label="收款主体" prop="payee_name" v-if="rolesIdentify.includes('administrator')">
-		    <el-input v-model="query.payee_name" placeholder="请输入收款主体" clearable />
-		  </el-form-item>
-		  <el-form-item label="支付商户号" prop="pay_appid"  v-if="rolesIdentify.includes('administrator')">
-		    <el-input v-model="query.pay_appid" placeholder="请输入支付商户号" clearable />
-		  </el-form-item>
-        </template>
-        <template v-slot:extra_button>
-          <exportExcel v-if="rolesIdentify.includes('administrator')"  api="orderRefund/order_list" sheet_name="订单列表" :title_obj="titlePtObj[query.refund_status]"
-            :extro_params="{ is_all: true, ...query }">
-          </exportExcel>
-		  <exportExcel v-else="rolesIdentify.includes('administrator')"  api="orderRefund/order_list" sheet_name="订单列表" :title_obj="titleObj[query.refund_status]"
-		    :extro_params="{ is_all: true, ...query }">
-		  </exportExcel>
-		  
         </template>
       </Search>
     </div>
     <div class="table-default">
-      <el-table :data="tableData" class="mt-3" v-loading="loading">
-        <el-table-column prop="company_name" label="商户名称" min-width="200px"
-          v-if="rolesIdentify.includes('administrator')">
-          <template #default="scope">
-            <div>{{ scope.row.company_name }}</div>
-            <div>ID:{{ scope.row.puser_id }}</div>
-          </template>
+      <div class="set-warpper">
+        <el-button @click="mulSet" size="default">批量提审</el-button>
+      </div>
+      <el-table :data="tableData" class="mt-3" v-loading="loading" @selection-change="handleSelectionChange">
+        <el-table-column type="selection" />
+        <el-table-column label="剧目名称" prop="name" show-overflow-tooltip min-width="150">
         </el-table-column>
-        <el-table-column prop="username" label="优化师" show-overflow-tooltip min-width="200px"
-          v-if="!rolesIdentify.includes('optimizer')">
+        <el-table-column label="制作方名称" prop="producer" show-overflow-tooltip min-width="100">
         </el-table-column>
-        <el-table-column prop="xcx_name" show-overflow-tooltip label="小程序" min-width="200px">
-        </el-table-column>
-        <el-table-column prop="uid" label="用户ID" show-overflow-tooltip>
-        </el-table-column>
-        <el-table-column prop="trade_no" label="订单号" show-overflow-tooltip min-width="200px">
-        </el-table-column>
-        <el-table-column prop="order_created_at" label="订单时间" show-overflow-tooltip min-width="200px" />
-        <el-table-column prop="ranse_created_at" label="染色注册时间" show-overflow-tooltip min-width="200px" />
-        <el-table-column prop="refund_price" label="申退金额" show-overflow-tooltip min-width="200px" />
-        <el-table-column prop="order_price" label="充值金额" show-overflow-tooltip>
-        </el-table-column>
-        <el-table-column prop="promotion_name" label="推广名称" show-overflow-tooltip min-width="200px">
-        </el-table-column>
-        <el-table-column prop="tip_text" label="档位类型" show-overflow-tooltip min-width="150px">
-        </el-table-column>
-        <el-table-column prop="pay_name" label="支付方式" show-overflow-tooltip min-width="150px">
-        </el-table-column>
-		<el-table-column prop="pay_merchant_name" label="支付名称" show-overflow-tooltip min-width="150px"  v-if="rolesIdentify.includes('administrator')">
-		</el-table-column>
-		<el-table-column prop="payee_name" label="收款主体" show-overflow-tooltip min-width="150px"  v-if="rolesIdentify.includes('administrator')">
-		</el-table-column>
-		<el-table-column prop="pay_appid" label="支付商户号" show-overflow-tooltip min-width="150px"  v-if="rolesIdentify.includes('administrator')">
-		</el-table-column>
-        <el-table-column prop="pay_at" label="退款时间" v-if="query.refund_status == 1" show-overflow-tooltip
-          min-width="180px">
-        </el-table-column>
-        <el-table-column prop="refund_no" label="退款单号" v-if="query.refund_status == 1" show-overflow-tooltip
-          min-width="150px">
-        </el-table-column>
-        <el-table-column v-if="query.refund_status == 1" prop="status_text" label="订单状态" show-overflow-tooltip
-          min-width="150px">
+        <el-table-column prop="note" label="剧目简介" min-width="250">
           <template #default="scope">
-            <div class="wrapper">
-              <span class="text-lg font-bold content">
-                <el-text class="mx-1" type="info">{{ scope.row.status_text }}</el-text>
-              </span>
-            </div>
+            <span class="note-content">
+              {{ scope.row.note }}
+            </span>
           </template>
         </el-table-column>
-        <el-table-column v-if="query.refund_status == 0" prop="pt_verify_status_text" label="平台审核" show-overflow-tooltip
-          min-width="150px">
+        <el-table-column prop="playwright" label="编剧姓名" show-overflow-tooltip min-width="100" />
+        <el-table-column prop="total_episode_num" label="总集数" />
+        <el-table-column prop="registration_number" label="剧目备案号" show-overflow-tooltip min-width="150" />
+        <el-table-column label="剧目海报" show-overflow-tooltip min-width="150">
           <template #default="scope">
-            <div class="wrapper">
-              <span class="text-lg font-bold content">
-                <el-text class="mx-1" :type="colorType(scope.row)">{{ scope.row.pt_verify_status_text }}</el-text>
-              </span>
+            <div class="flex flex-col items-start justify-center wrapper">
+              <el-popover placement="top" :width="200" trigger="click">
+                <template #reference>
+                  <el-image :src="scope.row.cover_image" class="cursor-pointer" style="width:48px;height:48px;"
+                    fit="contain" :lazy="true"></el-image>
+                </template>
+                <el-image :src="scope.row.cover_image" style="width:100%;" fit="contain"></el-image>
+              </el-popover>
             </div>
           </template>
         </el-table-column>
-        <el-table-column v-if="query.refund_status == 0" prop="pt_verify_remark" label="平台审核备注" show-overflow-tooltip
-          min-width="150px">
-        </el-table-column>
-        <el-table-column v-if="query.refund_status == 0" prop="sh_verify_status_text" label="商户审核" show-overflow-tooltip
-          min-width="150px">
+        <el-table-column prop="shelf_type_str" label="《广播电视节目制作许可证》" show-overflow-tooltip min-width="150">
           <template #default="scope">
-            <div class="wrapper">
-              <span class="text-lg font-bold content">
-                <el-text class="mx-1" :type="colorType(scope.row)">{{ scope.row.sh_verify_status_text }}</el-text>
-              </span>
-            </div>
+            <el-link type="primary" :href="scope.row.production_license_img" target="_blank">广播电视节目制作许可证</el-link>
           </template>
         </el-table-column>
-        <el-table-column v-if="query.refund_status == 0" prop="sh_verify_remark" label="商户审核备注" show-overflow-tooltip
-          min-width="150px">
+        <el-table-column prop="shelf_type_str" label="授权材料" show-overflow-tooltip min-width="150">
+          <template #default="scope">
+            <el-link type="primary" :href="scope.row.authorized_img" target="_blank">剧目播放授权材料</el-link>
+          </template>
         </el-table-column>
-        <el-table-column v-if="query.refund_status == 0" label="操作" fixed="right">
+        <el-table-column label="操作">
           <template #default="scope">
-            <el-button link type="primary" size="small" v-action="'orderRefund.RefundOrder.platformVerify'"
-              @click="openType('noapprovedVisible', scope.row, '平台审核')">平台审核</el-button>
-            <br />
-            <el-button link type="primary" size="small" v-action="'orderRefund.RefundOrder.companyVerify'"
-              @click="openType('noapprovedVisible', scope.row, '商户审核')">商户审核</el-button>
-            <br />
-            <el-button :disabled="!scope.row.can_pay" link type="primary" size="small"
-              v-action="'orderRefund.RefundOrder.payToUser'"
-              @click="openType('approvedVisible', scope.row)">确认打款</el-button>
+            <el-button @click="open(scope.row)" link type="primary" size="small"
+              v-action="'video.video.update'">编辑</el-button><br />
+            <el-button link type="primary" size="small" @click="deliverDelete(scope.row)"
+              v-action="'video.episode.add'">删除</el-button><br />
+            <el-button @click="deliverChange(scope.row)" link type="primary" size="small"
+              v-action="'video.video.setChargeConfig'">重新提审</el-button><br />
             <br />
           </template>
         </el-table-column>
       </el-table>
       <Paginate />
     </div>
-    <el-dialog width="500px" v-model="noapprovedVisible" :title="titleDialog" destroy-on-close @close="noapprovedClose">
-      <el-form :model="form" label-width="120px">
-        <el-form-item label="审核结果">
-          <el-radio-group v-model="form.status" @change="search">
-            <el-radio v-for="item in statusList" :label="item.value" :key="item.value">{{ item.name }}</el-radio>
-          </el-radio-group>
-        </el-form-item>
-        <el-form-item label="备注">
-          <el-input v-model="form.remark" :rows="3" type="textarea" placeholder="请输入内容" autocomplete="off" />
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <span class="dialog-footer">
-          <el-button @click="noapprovedClose">取消</el-button>
-          <el-button type="primary" @click="noapproveChange">
-            确认
-          </el-button>
-        </span>
-      </template>
-    </el-dialog>
+    <Dialog v-model="visible" :title="title" destroy-on-close>
+      <Create @close="close(search)" :primary="id" />
+    </Dialog>
   </div>
 </template>
 
 <script lang="ts" setup>
-import { shortcuts } from '@/utils/shortcuts'
-import { useRouter, useRoute } from 'vue-router'
 import { InfoFilled } from '@element-plus/icons-vue';
+import { videoStockVideoList } from '@/api/video/index'
+import { videoStockWechatCheckCheck, videoStockWechatCheckDelete } from '@/api/wxDeliver/index'
+import Create from './form/create.vue';
 import { useGetList } from '@/hook/curd/useGetList';
-import {titleObj,titlePtObj} from "./excelTitle"
-import {
-  channelOrderList,
-  channelMiniprogramUseList,
-  channelPromotionsOptions,
-  channelPromotionsUsers,
-  channelOrderStatus,
-  channelOrderType,
-} from '@/api/orders/index'
-
-import { orderRefundVerifyPt, orderRefundVerifySh, orderRefundPayToUser } from '@/api/orders/index'
-import moment from 'moment';
-const form = ref({ status: 1 })
-const start_date = moment().startOf('month').format('YYYY-MM-DD')
-const end_date = moment().endOf('month').format('YYYY-MM-DD')
-const statusList = ref([
-  { name: '审核通过', value: 1 },
-  { name: '审核不通过', value: 2 },
-])
-const statusListTop = ref([
-  { name: '待审核', value: 0 },
-  { name: '已退款', value: 1 },
-])
-const api = 'orderRefund/order_list';
-const router = useRouter()
-const route = useRoute()
-const approvedVisible = ref(false)
-const noapprovedVisible = ref(false)
+import { useDestroy } from '@/hook/curd/useDestroy';
+import { useOpen } from '@/hook/curd/useOpen';
+import { useUserStore } from '@/stores/modules/user/index'
+const api = 'videoStock/wechatCheck/list';
+const multipleSelection = ref([]);
 const { data, query, search, reset, loading } = useGetList(api);
-const titleDialog = ref('')
+const { deleted } = useDestroy();
+const videoSyncVisible = ref(false)
+const depotsData = ref({})
 const current = ref({})
-const promotionsUsersList = ref([])
-const channelMiniprogram = ref([])
-const channelPromotions = ref([])
-const channelOrderStatusList = ref([])
-const channelOrderTypeList = ref([])
-const rolesIdentify = inject('rolesIdentify')
+const selectType = ref([])
+const rolesIdentify = ref([]);
+const userStore = useUserStore()
+const statusListTop = ref([
+  // { name: '待审核', value: '0' },
+  { name: '审核中', value: '1,5' },
+  { name: '审核通过', value: '3' },
+  { name: '审核驳回', value: '4' },
+  { name: '最终失败', value: '2' },
+])
 
-const colorType = (data: object) => {
-  const type = data.pt_verify_status || data.sh_verify_status
-  switch (type) {
-    case 0:
-      return 'warning'
-    case 1:
-      return 'success'
-    case 2:
-      return 'danger'
+const videoList = ref([])
+
+const initVideoList = (params?: object) => {
+  videoStockVideoList({ limit: 999, ...params }).then(res => {
+    console.log(res);
+    videoList.value = res.data
+  })
+}
+const remoteMethod = (query: string) => {
+  if (query) {
+    initVideoList({ videoName: query })
+  } else {
+    initVideoList()
   }
 }
-const noapprovedClose = () => {
-  form.value = { status: 1 };
-  noapprovedVisible.value = false;
+const resetQuery = () => {
+  reset()
+  selectType.value = []
 }
-
-const noapproveChange = () => {
-  let api;
-  if (titleDialog.value == '平台审核') {
-    api = orderRefundVerifyPt
-  } else if (titleDialog.value == '商户审核') {
-    api = orderRefundVerifySh
-  }
-  api({ refund_id: current.value.id, ...form.value }).then(res => {
-    console.log(res, 'apiapiapiapi');
+const deliverChange = (row: object) => {
+  console.log(row);
+  videoStockWechatCheckCheck({ ids: [row.id] }).then(res => {
+    console.log(res);
     ElMessage.success(res.message)
-    noapprovedVisible.value = false;
     search()
   })
 }
 
-const openType = (type: string, data?: object, title?: string) => {
-  current.value = data || {}
-  switch (type) {
-    case 'approvedVisible':
-      ElMessageBox.confirm(
-        '确认打款吗?',
-        '提示',
-        {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning',
-        }
-      )
-        .then(() => {
-          orderRefundPayToUser({ refund_id: current.value.id }).then(res => {
-            ElMessage.success(res.message)
-            search()
-          })
-        })
-        .catch(() => {
-
+const deliverDelete = (row: object) => {
+  console.log(row);
+  ElMessageBox({
+    title: '提示',
+    message: h('p', null, [
+      h('span', null, `确认删除`),
+      h('span', null, `吗?`)
+    ]),
+    showCancelButton: true,
+    confirmButtonText: '确定',
+    type: 'warning',
+    cancelButtonText: '取消',
+    beforeClose: (action, instance, done) => {
+      if (action === 'confirm') {
+        videoStockWechatCheckDelete({ id: row.id }).then(res => {
+          console.log(res);
+          ElMessage.success(res.message)
+          search()
         })
-      break;
-    case 'noapprovedVisible':
-      titleDialog.value = title || ''
-      noapprovedVisible.value = true
-      break;
-  }
+      }
+      done();
+    }
+  });
 }
 
-const orderTimeChange = (e: object) => {
-  console.log(e, 'timeChangetimeChangetimeChange');
-  if (query.value.orderTime) {
-    const timeArr = toRaw(e);
-    query.value.created_at_start = timeArr[0]
-    query.value.created_at_end = timeArr[1]
-  } else {
-    delete query.value.created_at_start
-    delete query.value.created_at_end
-  }
-}
-const remoteMethod = (query: string, type: string,) => {
-  console.log(query, 'queryquery', type);
+const openType = (type: string, data: object) => {
+  current.value = data;
   switch (type) {
-    case 'channelPromotionsUsers':
-      initRemoteOption('channelPromotionsUsers', { name: query })
-      break;
-    case 'channelMiniprogram':
-      initRemoteOption('channelMiniprogram', { name: query })
-      break;
-    case 'channelPromotions':
-      initRemoteOption('channelPromotions', { name: query })
+    case 'videoSyncVisible':
+      videoSyncVisible.value = true
+      depotsData.value = data
       break;
   }
 }
+const tableData = computed(() => data.value?.data);
+const { open, close, title, visible, id } = useOpen();
+
+const handleSelectionChange = (val: []) => {
+  console.log(toRaw(val));
+  multipleSelection.value = val;
+};
 
-const initRemoteOption = (type: string, params?: object) => {
+const closeType = (type) => {
+  console.log(type, 'typetype');
   switch (type) {
-    case 'channelPromotionsUsers':
-      channelPromotionsUsers({ limit: 30, ...params }).then(res => {
-        promotionsUsersList.value = res.data
-      })
-      break;
-    case 'channelMiniprogram':
-      channelMiniprogramUseList({ limit: 30, ...params }).then(res => {
-        channelMiniprogram.value = res.data
-      })
-      break;
-    case 'channelPromotions':
-      channelPromotionsOptions({ limit: 30, ...params }).then(res => {
-        channelPromotions.value = res.data
-      })
+    case 'videoSyncVisible':
+      videoSyncVisible.value = false
       break;
   }
-}
-
-const init = () => {
-  channelOrderStatus().then(res => {
-    console.log(res);
-    channelOrderStatusList.value = res.data
-  })
-  channelOrderType().then(res => {
-    console.log(res);
-    channelOrderTypeList.value = res.data
-  })
-}
-
-const resetQuery = () => {
-  query.value = Object.assign({ page: query.value.page, limit: query.value.limit, refund_status: 0 });
   search()
 }
-const tableData = computed(() => data.value?.data);
+
+const mulSet = () => {
+  if (multipleSelection.value.length <= 0) {
+    return ElMessage.warning({
+      message: '至少选择一条数据',
+      type: 'warning'
+    });
+  } else {
+    ElMessageBox({
+      title: '提示',
+      message: h('p', null, [
+        h('span', null, `确认批量提审`),
+        h('span', null, `吗?`)
+      ]),
+      showCancelButton: true,
+      confirmButtonText: '确定',
+      type: 'warning',
+      cancelButtonText: '取消',
+      beforeClose: (action, instance, done) => {
+        if (action === 'confirm') {
+          let ids = multipleSelection.value.map(el => el.id);
+          videoStockWechatCheckCheck({ ids }).then(res => {
+            console.log(res);
+            ElMessage.success(res.message)
+            search()
+          })
+        }
+        done();
+      }
+    });
+  }
+};
 
 onMounted(() => {
-  console.log(rolesIdentify, 'rolesIdentifyrolesIdentify');
-  initRemoteOption('channelPromotionsUsers')
-  initRemoteOption('channelMiniprogram')
-  initRemoteOption('channelPromotions')
-  init()
-  query.value.refund_status = 0;
+  query.value.status = '1,5';
+  initVideoList()
   search();
 });
 </script>