hookehuyr

✨ feat(审核视频): 审核流程新增调整方言类型功能

/*
* @Date: 2022-06-20 16:33:35
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-06-20 16:35:56
* @FilePath: /tswj/src/api/B/audit.js
* @Description: 文件描述
*/
import { fn, fetch } from '@/api/fn';
const Api = {
CHECK_PROD: '/srv/?a=check_prod',
}
/**
* @description 审核作品
* @param {*} prod_id
* @param {*} status
* @param {*} check_note
* @returns {*} data
*/
export const checkProdAPI = (params) => fn(fetch.post(Api.CHECK_PROD, params));
......@@ -18,7 +18,10 @@
<span style="font-size: 1.05rem; vertical-align: middle;">{{ item.name }}</span>
</van-col>
<van-col span="16">
<div style="color: #999999; text-align: right;">{{ item.book_name }} | {{ item.localism_type }}</div>
<div style="color: #999999; text-align: right;">
{{ item.book_name }} |
<span style="color: #11D2B1;" @click="setLocalism">{{ item.localism_type }}</span>
</div>
</van-col>
</van-row>
</div>
......@@ -37,8 +40,7 @@
</div>
</div>
<div v-if="status === 'PROCESS'">
<div v-if="item.status === 'DISABLE'" class="van-hairline--top"
style="padding: 1rem; font-size: 0.85rem;">
<div v-if="item.status === 'DISABLE'" class="van-hairline--top" style="padding: 1rem; font-size: 0.85rem;">
<p style="color: #999999; margin-bottom: 0.25rem;">老师留言:</p>
<p>{{ item.check_note }}</p>
</div>
......@@ -50,7 +52,7 @@
<van-icon name="close" />&nbsp;不通过
</div>
</van-col>
<van-col style="padding: 1rem;" @click="onPass()">
<van-col style="padding: 1rem;" @click="onPass('pass')">
<div class="agree-btn" style="">
<van-icon name="passed" />&nbsp;通过
</div>
......@@ -72,8 +74,7 @@
</div>
<div>
<van-field v-model="message" rows="2" autosize label="" type="textarea" maxlength="200"
placeholder="请填写您对小朋友的温馨鼓励" show-word-limit @focus="focusInput"
@blur="blurInput" />
placeholder="请填写您对小朋友的温馨鼓励" show-word-limit @focus="focusInput" @blur="blurInput" />
</div>
<div style="margin-top: 3rem;">
<my-button type="primary" @on-click="handleAudit('disable')">确定</my-button>
......@@ -86,29 +87,26 @@
@confirm="handleAudit('enable')" @cancel="onCancel">
<div style="padding: 1rem; text-align: center;">是否确认审核通过该视频 ?</div>
</van-dialog>
<localism-box :id="item.id" :title="localism_title" :type="trigger_type" :show-localism="showLocalism"
:localism="item.localism_type" @on-close="closeLocalism" @on-submit="submitLocalism" />
</template>
<script setup>
import icon_up from '@images/icon-guanbi@2x.png'
import icon_down from '@images/icon-zhankai@2x.png'
import icon_refuse from '@images/icon-jujue@2x.png'
import icon_apply from '@images/icon-shenhe@2x.png'
import icon_enable from '@images/icon-tongguo@2x.png'
import { icon_up, icon_down, icon_refuse, icon_apply, icon_enable } from '@/utils/generateIcons'
import MyButton from '@/components/MyButton/index.vue'
import { ref, reactive, onMounted, nextTick, watch, onUpdated } from 'vue'
import LocalismBox from '@/components/LocalismBox/index.vue'
import { checkProdAPI } from '@/api/B/audit'
import { ref, onMounted } from 'vue'
import 'mui-player/dist/mui-player.min.css'
import MuiPlayer from 'mui-player'
import axios from '@/utils/axios';
import _ from 'lodash';
import tools from '@/common/tool'
import { styleColor } from '@/constant.js';
import { useRoute, useRouter } from 'vue-router'
import { Toast } from 'vant';
const $route = useRoute();
const $router = useRouter();
const props = defineProps({
item: Object,
......@@ -131,12 +129,16 @@ onMounted(() => {
}, 500);
})
const localism_title = ref('')
// 审核视频通过/不通过弹框
const showNotice = ref(false);
const show = ref(false);
const message = ref('');
const onPass = () => { // 通过审核
show.value = true;
const trigger_type = ref(''); // 点击入口判断,pass为点击通过按钮进入,空值为直接点击语言栏
const onPass = (type) => { // 通过审核
showLocalism.value = true;
localism_title.value = '请确认您的方言类别是否正确'
trigger_type.value = type;
}
const onCancel = () => {
show.value = false;
......@@ -148,53 +150,40 @@ const closeNotice = () => {
const onRefuse = () => { // 不通过审核
showNotice.value = true;
}
const handleAudit = (status) => {
axios.post('/srv/?a=check_prod', {
prod_id: props.item.id,
status,
check_note: message.value,
})
.then(res => {
if (res.data.code === 1) {
const handleAudit = async (status) => {
const { code } = await checkProdAPI({ prod_id: props.item.id, status, check_note: message.value, })
if (code === 1) {
Toast.success('操作成功');
message.value = '';
showNotice.value = false;
show.value = false;
emit('on-click', props.item.id);
} else {
console.warn(res);
if (!res.data.show) return false;
Toast({
icon: 'close',
message: res.data.msg
});
}
})
.catch(err => {
console.error(err);
})
}
// 优化处理输入框弹出遮挡问题
let interval = ''
const focusInput = () => {
window.addEventListener("resize", function () {
if (
document.activeElement.tagName === "INPUT" ||
document.activeElement.tagName === "TEXTAREA"
) {
interval = window.setTimeout(function () {
if ("scrollIntoView" in document.activeElement) {
document.activeElement.scrollIntoView();
} else {
document.activeElement.scrollIntoViewIfNeeded();
}
}, 0);
}
});
}
const blurInput = () => {
clearInterval(interval);
}
// 修改语言种类
const showLocalism = ref(false);
const setLocalism = () => {
trigger_type.value = ''
localism_title.value = '设置方言类别'
showLocalism.value = true;
}
const closeLocalism = () => {
showLocalism.value = false;
}
const submitLocalism = (localism) => {
// 接口保存成功后,静态修改语言类型
props.item.localism_type = localism;
showLocalism.value = false;
// 通过按钮点击进入,需要走通过审核流程。
if (trigger_type.value) {
show.value = true;
}
}
</script>
......
......@@ -2,7 +2,7 @@
* @Author: hookehuyr hookehuyr@gmail.com
* @Date: 2022-05-17 11:34:35
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-06-01 13:49:40
* @LastEditTime: 2022-06-20 16:31:28
* @FilePath: /tswj/src/utils/generateIcons.js
* @Description: 图标集合
*/
......@@ -27,6 +27,9 @@ import icon_ranking1 from '@images/1@2x.png'
import icon_ranking2 from '@images/2@2x.png'
import icon_ranking3 from '@images/3@2x.png'
import icon_flower from '@images/xiaohua@2x.png'
import icon_refuse from '@images/icon-jujue@2x.png'
import icon_apply from '@images/icon-shenhe@2x.png'
import icon_enable from '@images/icon-tongguo@2x.png'
export {
icon_video,
......@@ -50,4 +53,7 @@ export {
icon_ranking2,
icon_ranking3,
icon_flower,
icon_refuse,
icon_apply,
icon_enable,
}
......
/*
* @Date: 2022-05-17 11:26:03
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-06-20 14:00:13
* @FilePath: /tswj/src/utils/generatePackage.js
* @Description: 文件描述
*/
import Cookies from 'js-cookie'
import $ from 'jquery'
import _ from 'lodash'
import axios from '@/utils/axios';
import { storeToRefs } from 'pinia'
import { mainStore } from '@/store'
import { Toast } from 'vant';
import { Toast, Dialog } from 'vant';
import { wxInfo, hasEllipsis } from '@/utils/tools';
import { useTitle } from '@vueuse/core'
......@@ -16,6 +23,7 @@ export {
storeToRefs,
mainStore,
Toast,
Dialog,
wxInfo,
hasEllipsis,
useTitle
......