Browse Source

新增:修复订单等功能

dev
科技小王子 4 months ago
parent
commit
e185960629
  1. 1
      .idea/modules.xml
  2. 1
      .idea/mp.iml
  3. 1
      .idea/vcs.xml
  4. 1
      src/api/bszx/bszxBm/model/index.ts
  5. 14
      src/api/shop/shopOrder/index.ts
  6. 323
      src/views/bszx/bszxBm/components/bszxBmEdit.vue
  7. 12
      src/views/bszx/bszxBm/components/search.vue
  8. 4
      src/views/bszx/bszxBm/index.vue
  9. 1
      src/views/bszx/bszxOrder/index.vue
  10. 2
      src/views/cms/cmsMpPages/index.vue
  11. 2
      src/views/cms/cmsProduct/index.vue
  12. 2
      src/views/cms/cmsProductComment/index.vue
  13. 241
      src/views/cms/file/components/video-edit.vue
  14. 307
      src/views/cms/file/index.vue
  15. 131
      src/views/cms/file/player/index.vue
  16. 70
      src/views/cms/photo/components/Extra.vue
  17. 4
      src/views/cms/photo/index.vue
  18. 6
      src/views/cms/photo/list.vue
  19. 579
      src/views/cms/video/index.vue
  20. 201
      src/views/cms/video/player/index.vue
  21. 2
      src/views/hjm/hjmCar/index.vue
  22. 12
      src/views/shop/shopOrder/components/orderInfo.vue
  23. 27
      src/views/shop/shopOrder/index.vue
  24. 448
      yarn.lock

1
.idea/modules.xml

@ -2,7 +2,6 @@
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$USER_HOME$/NutUI/bszx-react/.idea/bszx-react.iml" filepath="$USER_HOME$/NutUI/bszx-react/.idea/bszx-react.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/mp.iml" filepath="$PROJECT_DIR$/.idea/mp.iml" />
</modules>
</component>

1
.idea/mp.iml

@ -8,6 +8,5 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="bszx-react" />
</component>
</module>

1
.idea/vcs.xml

@ -2,6 +2,5 @@
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
<mapping directory="$USER_HOME$/NutUI/bszx-react" vcs="Git" />
</component>
</project>

1
src/api/bszx/bszxBm/model/index.ts

@ -12,6 +12,7 @@ export interface BszxBm {
name?: string;
// 性别 1男 2女
sex?: number;
sexName?: string;
// 手机号码
phone?: string;
// 手机号码(脱敏)

14
src/api/shop/shopOrder/index.ts

@ -104,3 +104,17 @@ export async function getShopOrder(id: number) {
}
return Promise.reject(new Error(res.data.message));
}
/**
*
*/
export async function repairOrder(data: ShopOrder) {
const res = await request.put<ApiResult<unknown>>(
MODULES_API_URL + '/shop/shop-order/repair',
data
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

323
src/views/bszx/bszxBm/components/bszxBmEdit.vue

@ -5,7 +5,7 @@
:visible="visible"
:maskClosable="false"
:maxable="maxable"
:title="isUpdate ? '编辑报名记录' : '添加报名记录'"
:title="isUpdate ? '编辑报名记录' : '添加报名'"
:body-style="{ paddingBottom: '28px' }"
@update:visible="updateVisible"
@ok="save"
@ -22,19 +22,34 @@
<a-form-item label="姓名" name="name">
<a-input
allow-clear
disabled
placeholder="请输入姓名"
v-model:value="form.name"
/>
</a-form-item>
<a-form-item label="类型" name="type">
<a-radio-group v-model:value="form.type">
<a-radio :value="0">校友</a-radio>
<a-radio :value="1">单位</a-radio>
<a-radio :value="2">爱心人士</a-radio>
</a-radio-group>
</a-form-item>
<a-form-item label="性别" name="sex">
<DictSelect
dict-code="sex"
:placeholder="`请选择性别`"
v-model:value="form.sexName"
@done="chooseSex"
/>
</a-form-item>
<a-form-item label="性别" name="sex">
{{ form }}
{{ form.sex == 1 ? '男' : '' }}
{{ form.sex == 2 ? '女' : '' }}
</a-form-item>
<a-form-item label="手机号码" name="mobile">
<a-input
allow-clear
disabled
:disabled="form.mobile"
placeholder="请输入手机号码"
v-model:value="form.mobile"
/>
@ -83,22 +98,22 @@
v-model:value="form.present"
/>
</a-form-item>
<!-- <a-form-item label="邀请函" name="certificate">-->
<!-- <a-input-->
<!-- allow-clear-->
<!-- placeholder="请输入邀请函"-->
<!-- v-model:value="form.certificate"-->
<!-- />-->
<!-- </a-form-item>-->
<!-- <a-form-item label="排序" name="sortNumber">-->
<!-- <a-input-number-->
<!-- :min="0"-->
<!-- :max="9999"-->
<!-- class="ele-fluid"-->
<!-- placeholder="请输入排序号"-->
<!-- v-model:value="form.sortNumber"-->
<!-- />-->
<!-- </a-form-item>-->
<!-- <a-form-item label="邀请函" name="certificate">-->
<!-- <a-input-->
<!-- allow-clear-->
<!-- placeholder="请输入邀请函"-->
<!-- v-model:value="form.certificate"-->
<!-- />-->
<!-- </a-form-item>-->
<!-- <a-form-item label="排序" name="sortNumber">-->
<!-- <a-input-number-->
<!-- :min="0"-->
<!-- :max="9999"-->
<!-- class="ele-fluid"-->
<!-- placeholder="请输入排序号"-->
<!-- v-model:value="form.sortNumber"-->
<!-- />-->
<!-- </a-form-item>-->
<a-form-item label="备注" name="comments">
<a-textarea
:rows="4"
@ -107,152 +122,162 @@
v-model:value="form.comments"
/>
</a-form-item>
<!-- <a-form-item label="状态" name="status">-->
<!-- <a-radio-group v-model:value="form.status">-->
<!-- <a-radio :value="0">显示</a-radio>-->
<!-- <a-radio :value="1">隐藏</a-radio>-->
<!-- </a-radio-group>-->
<!-- </a-form-item>-->
<!-- <a-form-item label="状态" name="status">-->
<!-- <a-radio-group v-model:value="form.status">-->
<!-- <a-radio :value="0">显示</a-radio>-->
<!-- <a-radio :value="1">隐藏</a-radio>-->
<!-- </a-radio-group>-->
<!-- </a-form-item>-->
</a-form>
</ele-modal>
</template>
<script lang="ts" setup>
import { ref, reactive, watch } from 'vue';
import { Form, message } from 'ant-design-vue';
import { assignObject, uuid } from 'ele-admin-pro';
import { addBszxBm, updateBszxBm } from '@/api/bszx/bszxBm';
import { BszxBm } from '@/api/bszx/bszxBm/model';
import { useThemeStore } from '@/store/modules/theme';
import { storeToRefs } from 'pinia';
import { ItemType } from 'ele-admin-pro/es/ele-image-upload/types';
import { FormInstance } from 'ant-design-vue/es/form';
import {ref, reactive, watch} from 'vue';
import {Form, message} from 'ant-design-vue';
import {assignObject, uuid} from 'ele-admin-pro';
import {addBszxBm, updateBszxBm} from '@/api/bszx/bszxBm';
import {BszxBm} from '@/api/bszx/bszxBm/model';
import {useThemeStore} from '@/store/modules/theme';
import {storeToRefs} from 'pinia';
import {ItemType} from 'ele-admin-pro/es/ele-image-upload/types';
import {FormInstance} from 'ant-design-vue/es/form';
//
const isUpdate = ref(false);
const useForm = Form.useForm;
//
const themeStore = useThemeStore();
const { styleResponsive } = storeToRefs(themeStore);
//
const isUpdate = ref(false);
const useForm = Form.useForm;
//
const themeStore = useThemeStore();
const {styleResponsive} = storeToRefs(themeStore);
const props = defineProps<{
//
visible: boolean;
//
data?: BszxBm | null;
}>();
const props = defineProps<{
//
visible: boolean;
//
data?: BszxBm | null;
}>();
const emit = defineEmits<{
(e: 'done'): void;
(e: 'update:visible', visible: boolean): void;
}>();
const emit = defineEmits<{
(e: 'done'): void;
(e: 'update:visible', visible: boolean): void;
}>();
//
const loading = ref(false);
//
const maxable = ref(true);
//
const formRef = ref<FormInstance | null>(null);
const images = ref<ItemType[]>([]);
//
const loading = ref(false);
//
const maxable = ref(true);
//
const formRef = ref<FormInstance | null>(null);
const images = ref<ItemType[]>([]);
//
const form = reactive<BszxBm>({
id: undefined,
name: undefined,
sex: undefined,
phone: undefined,
mobile: undefined,
className: undefined,
gradeName: undefined,
address: undefined,
workUnit: undefined,
position: undefined,
present: undefined,
age: undefined,
number: undefined,
extra: undefined,
certificate: undefined,
dateTime: undefined,
formData: undefined,
formId: undefined,
userId: undefined,
comments: undefined,
status: undefined,
deleted: undefined,
tenantId: undefined,
createTime: undefined,
sortNumber: 100
});
//
const form = reactive<BszxBm>({
id: undefined,
name: undefined,
sex: undefined,
sexName: undefined,
phone: undefined,
mobile: undefined,
className: undefined,
gradeName: undefined,
address: undefined,
workUnit: undefined,
position: undefined,
present: undefined,
age: undefined,
number: undefined,
extra: undefined,
certificate: undefined,
dateTime: undefined,
formData: undefined,
formId: undefined,
userId: undefined,
comments: undefined,
status: undefined,
deleted: undefined,
tenantId: undefined,
createTime: undefined,
sortNumber: 100
});
/* 更新visible */
const updateVisible = (value: boolean) => {
emit('update:visible', value);
};
/* 更新visible */
const updateVisible = (value: boolean) => {
emit('update:visible', value);
};
//
const rules = reactive({
appBszxBmName: [
{
required: true,
type: 'string',
message: '请填写应用-百色中学-报名记录名称',
trigger: 'blur'
}
]
});
//
const rules = reactive({
appBszxBmName: [
{
required: true,
type: 'string',
message: '请填写应用-百色中学-报名记录名称',
trigger: 'blur'
}
]
});
const { resetFields } = useForm(form, rules);
const chooseSex = (data: any) => {
form.sex = data.key;
form.sexName = data.label;
};
/* 保存编辑 */
const save = () => {
if (!formRef.value) {
return;
}
formRef.value
.validate()
.then(() => {
loading.value = true;
const formData = {
...form
};
const saveOrUpdate = isUpdate.value ? updateBszxBm : addBszxBm;
saveOrUpdate(formData)
.then((msg) => {
loading.value = false;
message.success(msg);
updateVisible(false);
emit('done');
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
})
.catch(() => {});
};
const {resetFields} = useForm(form, rules);
/* 保存编辑 */
const save = () => {
if (!formRef.value) {
return;
}
formRef.value
.validate()
.then(() => {
loading.value = true;
const formData = {
...form
};
const saveOrUpdate = isUpdate.value ? updateBszxBm : addBszxBm;
saveOrUpdate(formData)
.then((msg) => {
loading.value = false;
message.success(msg);
updateVisible(false);
emit('done');
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
})
.catch(() => {
});
};
watch(
() => props.visible,
(visible) => {
if (visible) {
images.value = [];
if (props.data) {
assignObject(form, props.data);
if(props.data.image){
images.value.push({
uid: uuid(),
url: props.data.image,
status: 'done'
})
}
isUpdate.value = true;
} else {
isUpdate.value = false;
watch(
() => props.visible,
(visible) => {
if (visible) {
images.value = [];
if (props.data) {
assignObject(form, props.data);
if(props.data.sex){
form.sexName = props.data.sexName;
}
if (props.data.image) {
images.value.push({
uid: uuid(),
url: props.data.image,
status: 'done'
})
}
isUpdate.value = true;
} else {
resetFields();
isUpdate.value = false;
}
},
{ immediate: true }
);
} else {
resetFields();
}
},
{immediate: true}
);
</script>

12
src/views/bszx/bszxBm/components/search.vue

@ -1,6 +1,12 @@
<!-- 搜索表单 -->
<template>
<a-space :size="10" style="flex-wrap: wrap">
<!-- <a-button type="primary" class="ele-btn-icon" @click="add">-->
<!-- <template #icon>-->
<!-- <PlusOutlined />-->
<!-- </template>-->
<!-- <span>添加</span>-->
<!-- </a-button>-->
<a-radio-group v-model:value="where.branchId" @change="reload">
<a-radio-button :value="1">初中部</a-radio-button>
<a-radio-button :value="2">高中部</a-radio-button>
@ -46,6 +52,7 @@ import {listBszxBm} from "@/api/bszx/bszxBm";
import {BszxClassParam} from "@/api/bszx/bszxClass/model";
import {listBszxGrade} from "@/api/bszx/bszxGrade";
import {listBszxClass} from "@/api/bszx/bszxClass";
import { PlusOutlined } from '@ant-design/icons-vue';
const props = withDefaults(
defineProps<{
@ -83,6 +90,11 @@ const reload = () => {
emit('search', where);
};
//
const add = () => {
emit('add');
};
const getGradeList = () => {
listBszxGrade({branch: where.branchId}).then(res => {
gradeList.value = res.map(d => {

4
src/views/bszx/bszxBm/index.vue

@ -127,7 +127,7 @@ const columns = ref<ColumnItem[]>([
key: 'type',
width: 120,
align: 'center',
customRender: ({text}) => ['校友', '单位'][text]
customRender: ({text}) => ['校友', '单位', '爱心人士'][text]
},
{
title: '姓名',
@ -290,7 +290,7 @@ const customRow = (record: BszxBm) => {
},
//
onDblclick: () => {
// openEdit(record);
openEdit(record);
}
};
};

1
src/views/bszx/bszxOrder/index.vue

@ -18,7 +18,6 @@
@search="reload"
:selection="selection"
@add="openEdit"
@remove="removeBatch"
@batchMove="openMove"
/>
</template>

2
src/views/cms/cmsMpPages/index.vue

@ -122,7 +122,7 @@
import {createVNode, ref} from 'vue';
import {message, Modal} from 'ant-design-vue';
import {ExclamationCircleOutlined, PlusOutlined} from '@ant-design/icons-vue';
import {EleProTable, toTreeData} from 'ele-admin-pro';
import type {EleProTable, toTreeData} from 'ele-admin-pro';
import {toDateString} from 'ele-admin-pro';
import type {
DatasourceFunction,

2
src/views/cms/cmsProduct/index.vue

@ -87,7 +87,7 @@
import {createVNode, ref} from 'vue';
import {message, Modal} from 'ant-design-vue';
import {CheckOutlined, CloseOutlined, ExclamationCircleOutlined} from '@ant-design/icons-vue';
import {EleProTable, toTreeData} from 'ele-admin-pro';
import type {EleProTable, toTreeData} from 'ele-admin-pro';
import {toDateString} from 'ele-admin-pro';
import type {
DatasourceFunction,

2
src/views/cms/cmsProductComment/index.vue

@ -50,7 +50,7 @@
import { createVNode, ref } from 'vue';
import { message, Modal } from 'ant-design-vue';
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import {EleProTable, toTreeData} from 'ele-admin-pro';
import type {EleProTable, toTreeData} from 'ele-admin-pro';
import { toDateString } from 'ele-admin-pro';
import type {
DatasourceFunction,

241
src/views/cms/file/components/video-edit.vue

@ -0,0 +1,241 @@
<!-- 角色编辑弹窗 -->
<template>
<ele-modal
:width="600"
:visible="visible"
:confirm-loading="loading"
:title="isUpdate ? '编辑内容' : '上传视频'"
:body-style="{ paddingBottom: '8px' }"
@update:visible="updateVisible"
@ok="save"
>
<a-form
ref="formRef"
:model="form"
:rules="rules"
:label-col="styleResponsive ? { md: 4, sm: 5, xs: 24 } : { flex: '90px' }"
:wrapper-col="
styleResponsive ? { md: 19, sm: 19, xs: 24 } : { flex: '1' }
"
>
<a-form-item label="视频文件" name="fileName" v-if="!isUpdate">
<span
class="ele-text-success"
v-if="fileName"
style="margin-right: 10px"
>
{{ fileName }}
</span>
<a-upload
:show-upload-list="false"
:accept="'video/*'"
v-if="!fileName"
:customRequest="onUpload"
>
<a-button type="primary" class="ele-btn-icon">
<template #icon>
<UploadOutlined />
</template>
<span>上传视频</span>
</a-button>
</a-upload>
</a-form-item>
<a-form-item label="文件名称" name="name">
<a-input
allow-clear
:maxlength="20"
placeholder="请输入文件名称"
v-model:value="form.name"
/>
</a-form-item>
<a-form-item label="视频描述" name="comments">
<a-textarea
:rows="4"
:maxlength="200"
placeholder="这一刻的想法.."
v-model:value="form.comments"
/>
</a-form-item>
<!-- <a-form-item label="封面图" name="images">-->
<!-- <ele-image-upload-->
<!-- v-model:value="images"-->
<!-- :limit="1"-->
<!-- :drag="true"-->
<!-- :item-style="{ width: '60px', height: '60px' }"-->
<!-- :accept="'image/*'"-->
<!-- :upload-handler="uploadHandler"-->
<!-- @upload="onUpload"-->
<!-- />-->
<!-- </a-form-item>-->
</a-form>
</ele-modal>
</template>
<script lang="ts" setup>
import { ref, reactive, watch } from 'vue';
import { message } from 'ant-design-vue/es';
import type { FormInstance, Rule } from 'ant-design-vue/es/form';
import { storeToRefs } from 'pinia';
import { useThemeStore } from '@/store/modules/theme';
import useFormData from '@/utils/use-form-data';
import type { FileRecord } from '@/api/system/file/model';
import { messageLoading } from 'ele-admin-pro';
import { addFiles, updateFiles, uploadFile } from '@/api/system/file';
import { UploadOutlined } from '@ant-design/icons-vue';
import { RuleObject } from 'ant-design-vue/es/form';
//
const themeStore = useThemeStore();
const { styleResponsive } = storeToRefs(themeStore);
const emit = defineEmits<{
(e: 'done'): void;
(e: 'update:visible', visible: boolean): void;
}>();
const props = defineProps<{
//
visible: boolean;
//
data?: FileRecord | null;
}>();
//
const formRef = ref<FormInstance | null>(null);
const fileName = ref('');
//
const isUpdate = ref(false);
//
const loading = ref(false);
//
const { form, resetFields, assignFields } = useFormData<FileRecord>({
id: 0,
name: '',
comments: ''
});
//
const rules = reactive<Record<string, Rule[]>>({
fileName: [
{
required: true,
message: '请上传视频文件',
type: 'string',
trigger: 'blur',
validator: async (_rule: RuleObject, value: string) => {
if (!isUpdate.value && fileName.value.length == 0) {
return Promise.reject('请上传视频文件' + value);
}
return Promise.resolve();
}
}
],
name: [
{
required: true,
message: '请输入文件名称',
type: 'string',
trigger: 'blur'
}
]
});
/* 上传事件 */
// const uploadHandler = (file: File) => {
// const item: ItemType = {
// file,
// uid: (file as any).uid,
// name: file.name
// };
// if (!file.type.startsWith('video')) {
// message.error('');
// return;
// }
// if (file.size / 1024 / 1024 > 100) {
// message.error(' 100MB');
// return;
// }
// onUpload(item);
// };
//
const onUpload = (item) => {
const { file } = item;
if (!file.type.startsWith('video')) {
message.error('只能选择视频文件');
return;
}
if (file.size / 1024 / 1024 > 100) {
message.error('大小不能超过 100MB');
return;
}
const hide = messageLoading({
content: '上传中..',
duration: 0,
mask: true
});
uploadFile(file)
.then((data) => {
hide();
fileName.value = String(data.name);
// images.value.push({
// uid: data.id,
// url: FILE_THUMBNAIL + data.path,
// status: 'done'
// });
message.success('上传成功');
})
.catch((e) => {
message.error(e.message);
hide();
});
};
/* 保存编辑 */
const save = () => {
if (!formRef.value) {
return;
}
formRef.value
.validate()
.then(() => {
loading.value = true;
const saveOrUpdate = isUpdate.value ? updateFiles : addFiles;
saveOrUpdate(form)
.then((msg) => {
loading.value = false;
message.success(msg);
updateVisible(false);
emit('done');
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
})
.catch(() => {});
};
/* 更新visible */
const updateVisible = (value: boolean) => {
emit('update:visible', value);
};
watch(
() => props.visible,
(visible) => {
if (visible) {
if (props.data) {
assignFields(props.data);
isUpdate.value = true;
} else {
isUpdate.value = false;
}
} else {
resetFields();
formRef.value?.clearValidate();
}
}
);
</script>

307
src/views/cms/file/index.vue

@ -0,0 +1,307 @@
<template>
<a-page-header :title="getPageTitle()" @back="() => $router.go(-1)">
<template #extra>
<Extra/>
</template>
<a-card :bordered="false">
<!-- 表格 -->
<ele-pro-table
ref="tableRef"
row-key="id"
:columns="columns"
:datasource="datasource"
v-model:selection="selection"
:scroll="{ x: 800 }"
cache-key="proCmsFileTable"
>
<template #toolbar>
<a-space>
<a-upload
:show-upload-list="false"
:accept="'application/*'"
:customRequest="onUpload"
>
<a-button type="primary" class="ele-btn-icon">
<template #icon>
<UploadOutlined/>
</template>
<span>上传文件</span>
</a-button>
</a-upload>
<a-button
danger
type="primary"
class="ele-btn-icon"
v-if="selection.length > 0"
@click="removeBatch"
>
<template #icon>
<delete-outlined/>
</template>
<span>删除</span>
</a-button>
<a-input-search
allow-clear
v-model:value="searchText"
placeholder="请输入关键词"
@search="reload"
@pressEnter="reload"
>
<template #addonBefore>
<a-select
v-model:value="type"
style="width: 100px; margin: -5px -12px"
>
<a-select-option value="name">文件名称</a-select-option>
<a-select-option value="createNickname">
上传人
</a-select-option>
</a-select>
</template>
</a-input-search>
</a-space>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'path'">
<span class="text-gray-400">[文件]</span>
</template>
<template v-if="column.key === 'name'">
<div>{{ record.name }}
<copy-outlined
style="padding-left: 4px"
@click="copyText(record.downloadUrl)"
/>
</div>
</template>
<template v-if="column.key === 'action'">
<div>
<a :href="record.downloadUrl" target="_blank">下载</a>
<a-divider type="vertical"/>
<a @click="openEdit(record)">修改</a>
<a-divider type="vertical"/>
<a-popconfirm
placement="topRight"
title="确定要删除此评价吗?"
@confirm="remove(record)"
>
<a class="ele-text-danger">删除</a>
</a-popconfirm>
</div>
</template>
</template>
</ele-pro-table>
</a-card>
<!-- 编辑弹窗 -->
<video-edit v-model:visible="showEdit" :data="current" @done="reload"/>
</a-page-header>
</template>
<script lang="ts" setup>
import {createVNode, ref} from 'vue';
import {message, Modal} from 'ant-design-vue/es';
import {
UploadOutlined,
DeleteOutlined,
ExclamationCircleOutlined, CopyOutlined
} from '@ant-design/icons-vue';
import type {EleProTable} from 'ele-admin-pro/es';
import type {
DatasourceFunction,
ColumnItem
} from 'ele-admin-pro/es/ele-pro-table/types';
import {messageLoading, toDateString} from 'ele-admin-pro/es';
import VideoEdit from './components/video-edit.vue';
import {
pageFiles,
removeFile,
removeFiles,
uploadOss
} from '@/api/system/file';
import type {
FileRecord,
FileRecordParam
} from '@/api/system/file/model';
import {copyText, getPageTitle} from "@/utils/common";
import Extra from "@/views/cms/photo/components/Extra.vue";
//
const tableRef = ref<InstanceType<typeof EleProTable> | null>(null);
//
const selection = ref<FileRecord[]>([]);
//
const current = ref<FileRecord | null>(null);
//
const showEdit = ref(false);
const type = ref('name');
const searchText = ref('');
//
const columns = ref<ColumnItem[]>([
{
key: 'index',
width: 48,
align: 'center',
fixed: 'left',
hideInSetting: true,
customRender: ({index}) => index + (tableRef.value?.tableIndex ?? 0)
},
{
title: '类型',
dataIndex: 'path',
align: 'center',
width: 90,
key: 'path'
},
{
title: '文件名称',
dataIndex: 'name',
key: 'name'
},
{
title: '描述',
dataIndex: 'comments',
ellipsis: true
},
{
title: '文件大小',
dataIndex: 'length',
sorter: true,
align: 'center',
showSorterTooltip: false,
ellipsis: true,
customRender: ({text}) => {
if (text < 1024) {
return text + 'B';
} else if (text < 1024 * 1024) {
return (text / 1024).toFixed(1) + 'KB';
} else if (text < 1024 * 1024 * 1024) {
return (text / 1024 / 1024).toFixed(1) + 'M';
} else {
return (text / 1024 / 1024 / 1024).toFixed(1) + 'G';
}
},
width: 120
},
{
title: '发布者',
width: 120,
dataIndex: 'createNickname'
},
{
title: '发布时间',
dataIndex: 'createTime',
sorter: true,
width: 180,
showSorterTooltip: false,
ellipsis: true,
customRender: ({text}) => toDateString(text)
},
{
title: '操作',
key: 'action',
width: 200,
align: 'center'
}
]);
//
const datasource: DatasourceFunction = ({page, limit, where, orders}) => {
where = {};
if (type.value == 'name') {
where.name = searchText.value;
}
if (type.value == 'createNickname') {
where.createNickname = searchText.value;
}
where.contentType = 'application';
return pageFiles({...where, ...orders, page, limit});
};
/* 搜索 */
const reload = (where?: FileRecordParam) => {
selection.value = [];
tableRef?.value?.reload({page: 1, where});
};
/* 打开编辑弹窗 */
const openEdit = (row?: FileRecord) => {
current.value = row ?? null;
showEdit.value = true;
};
/* 删除单个 */
const remove = (row: FileRecord) => {
const hide = messageLoading('请求中..', 0);
removeFile(row.id)
.then((msg) => {
hide();
message.success(msg);
reload();
})
.catch((e) => {
hide();
message.error(e.message);
});
};
/* 批量删除 */
const removeBatch = () => {
if (!selection.value.length) {
message.error('请至少选择一条数据');
return;
}
Modal.confirm({
title: '提示',
content: '确定要删除选中的评价吗?',
icon: createVNode(ExclamationCircleOutlined),
maskClosable: true,
onOk: () => {
const hide = messageLoading('请求中..', 0);
removeFiles(selection.value.map((d) => d.id))
.then((msg) => {
hide();
message.success(msg);
reload();
})
.catch((e) => {
hide();
message.error(e.message);
});
}
});
};
//
const onUpload = (item) => {
const {file} = item;
if (!file.type.startsWith('application')) {
message.error('只能选择视频文件');
return;
}
if (file.size / 1024 / 1024 > 100) {
message.error('大小不能超过 100MB');
return;
}
const hide = messageLoading({
content: '上传中..',
duration: 0,
mask: true
});
uploadOss(file)
.then((data) => {
hide();
message.success('上传成功');
reload();
})
.catch((e) => {
message.error(e.message);
hide();
});
};
</script>
<script lang="ts">
export default {
name: 'FileIndex'
};
</script>

131
src/views/cms/file/player/index.vue

@ -0,0 +1,131 @@
<!-- 角色编辑弹窗 -->
<template>
<a-page-header :title="getPageTitle()" @back="() => $router.go(-1)">
<a-card :bordered="false">
<div class="w-[700px]">
<ele-xg-player
:config="{
id: 'demoPlayer1',
lang: 'zh-cn',
fluid: true,
//
url: form.path,
//
poster: '',
//
playbackRate: [0.5, 1, 1.5, 2],
//
pip: true
}"
@player="onPlayer1"
/>
</div>
<a-space direction="vertical" class="mt-5">
<div class="ele-text-secondary">
文件名称{{ form.name }}
</div>
<div class="ele-text-secondary">
文件路径{{ form.path }}
</div>
<div class="ele-text-secondary">
视频描述{{ form.comments }}
</div>
</a-space>
</a-card>
</a-page-header>
</template>
<script lang="ts" setup>
import {ref, reactive, watch, unref} from 'vue';
import Player from 'xgplayer';
import {useRouter} from 'vue-router';
import {toDateString} from 'ele-admin-pro';
import {setPageTabTitle} from '@/utils/page-tab-util';
import {message} from 'ant-design-vue/es';
import useFormData from '@/utils/use-form-data';
import {FileRecord} from '@/api/system/file/model';
import {getFile} from '@/api/system/file';
const {currentRoute} = useRouter();
import {getPageTitle} from "@/utils/common";
const ROUTE_PATH = '/cms/video/player';
//
let player1: Player;
//
const ready1 = ref(false);
//
const config1 = reactive({
id: 'demoPlayer1',
lang: 'zh-cn',
fluid: true,
//
url: 'https://file.wsdns.cn/20221126/cf17ef352db54bf28efeda268107714f.mp4',
//
poster:
'https://file.wsdns.cn/20221125/49f0c461d61e48f28b324366a0a63a2e.jpg',
//
playbackRate: [0.5, 1, 1.5, 2],
//
pip: true
});
/* 播放器一渲染完成 */
const onPlayer1 = (player: Player) => {
player1 = player;
player1.on('play', () => {
ready1.value = true;
});
};
//
const {form, assignFields} = useFormData<FileRecord>({
id: 0,
name: '',
url: '',
path: '',
comments: '',
createNickname: '',
createTime: ''
});
//
const loading = ref(true);
/* */
const query = () => {
const {query} = unref(currentRoute);
const id = query.id;
if (!id || form.id === Number(id)) {
return;
}
loading.value = true;
getFile(Number(id))
.then((data) => {
loading.value = false;
assignFields({
...data,
createTime: toDateString(data.createTime)
});
//
if (unref(currentRoute).path === ROUTE_PATH) {
setPageTabTitle(String(data.comments));
}
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
};
watch(
currentRoute,
(route) => {
const {path} = unref(route);
if (path !== ROUTE_PATH) {
return;
}
query();
},
{immediate: true}
);
</script>

70
src/views/cms/photo/components/Extra.vue

@ -0,0 +1,70 @@
<!-- 搜索表单 -->
<template>
<a-space style="flex-wrap: wrap" v-if="hasRole('superAdmin') || hasRole('admin') || hasRole('foundation')">
<a-button
type="text"
@click="openUrl('/website/photo')"
>图片
</a-button>
<a-button
type="text"
@click="openUrl('/website/video')"
>视频
</a-button>
<a-button
type="text"
@click="openUrl('/website/file')"
>文件
</a-button>
</a-space>
</template>
<script lang="ts" setup>
import {watch,nextTick} from 'vue';
import {CmsWebsite} from '@/api/cms/cmsWebsite/model';
import {openUrl} from "@/utils/common";
import {message} from 'ant-design-vue';
import {removeSiteInfoCache} from "@/api/cms/cmsWebsite";
import {hasRole} from "@/utils/permission";
const props = withDefaults(
defineProps<{
//
selection?: [];
website?: CmsWebsite;
count?: 0;
}>(),
{}
);
const emit = defineEmits<{
(e: 'add'): void;
}>();
const add = () => {
emit('add');
};
//
const clearSiteInfoCache = () => {
removeSiteInfoCache('SiteInfo:' + localStorage.getItem('TenantId') + "*").then(
(msg) => {
if (msg) {
message.success(msg);
}
}
);
};
nextTick(() => {
if(localStorage.getItem('NotActive')){
// IsActive.value = false
}
})
watch(
() => props.selection,
() => {
}
);
</script>

4
src/views/cms/photo/index.vue

@ -1,5 +1,8 @@
<template>
<a-page-header :title="getPageTitle()" @back="() => $router.go(-1)">
<template #extra>
<Extra />
</template>
<a-space style="margin-bottom: 10px" v-if="activeKey == '2'">
<a-upload
:show-upload-list="false"
@ -73,6 +76,7 @@ import {message} from 'ant-design-vue/es';
import {DictData} from '@/api/system/dict-data/model';
import {getMerchantId} from "@/utils/merchant";
import {getPageTitle} from "@/utils/common";
import Extra from "./components/Extra.vue";
const type = ref('name');
const searchText = ref('');

6
src/views/cms/photo/list.vue

@ -83,9 +83,9 @@
<!-- path -->
<template v-else>
<a-image
src="https://file.wsdns.cn/20230218/550e610d43334dd2a7f66d5b20bd58eb.svg"
:src="`${record.domain}${record.downloadUrl}`"
:preview="{
src: `https://file.wsdns.cn${record.downloadUrl}`
src: `${record.domain}${record.downloadUrl}`
}"
:width="80"
/>
@ -239,7 +239,7 @@
where = {};
}
where.merchantId = getMerchantId();
console.log(where,'where');
where.contentType = 'image';
return pageFiles({ ...where, ...orders, page, limit });
};

579
src/views/cms/video/index.vue

@ -1,314 +1,321 @@
<template>
<div class="page">
<a-page-header :ghost="false" title="视频库">
<div class="ele-text-secondary"> 上传分享存档有价值的视频素材 </div>
</a-page-header>
<div class="ele-body">
<a-card :bordered="false">
<!-- 表格 -->
<ele-pro-table
ref="tableRef"
row-key="id"
:columns="columns"
:datasource="datasource"
v-model:selection="selection"
:scroll="{ x: 800 }"
cache-key="proCmsVideoTable"
>
<template #toolbar>
<a-space>
<a-upload
:show-upload-list="false"
:accept="'video/*'"
:customRequest="onUpload"
>
<a-button type="primary" class="ele-btn-icon">
<template #icon>
<UploadOutlined />
</template>
<span>上传视频</span>
</a-button>
</a-upload>
<a-button
danger
type="primary"
class="ele-btn-icon"
v-if="selection.length > 0"
@click="removeBatch"
>
<a-page-header :title="getPageTitle()" @back="() => $router.go(-1)">
<template #extra>
<Extra />
</template>
<a-card :bordered="false">
<!-- 表格 -->
<ele-pro-table
ref="tableRef"
row-key="id"
:columns="columns"
:datasource="datasource"
v-model:selection="selection"
:scroll="{ x: 800 }"
cache-key="proCmsVideoTable"
>
<template #toolbar>
<a-space>
<a-upload
:show-upload-list="false"
:accept="'video/*'"
:customRequest="onUpload"
>
<a-button type="primary" class="ele-btn-icon">
<template #icon>
<delete-outlined />
<UploadOutlined/>
</template>
<span>删除</span>
<span>上传视频</span>
</a-button>
<a-input-search
allow-clear
v-model:value="searchText"
placeholder="请输入关键词"
@search="reload"
@pressEnter="reload"
>
<template #addonBefore>
<a-select
v-model:value="type"
style="width: 100px; margin: -5px -12px"
>
<a-select-option value="name">文件名称</a-select-option>
<a-select-option value="createNickname">
上传人
</a-select-option>
</a-select>
</template>
</a-input-search>
</a-space>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'path'">
<router-link :to="'/cms/video/player?id=' + record.id">
<div
class="video"
style="
</a-upload>
<a-button
danger
type="primary"
class="ele-btn-icon"
v-if="selection.length > 0"
@click="removeBatch"
>
<template #icon>
<delete-outlined/>
</template>
<span>删除</span>
</a-button>
<a-input-search
allow-clear
v-model:value="searchText"
placeholder="请输入关键词"
@search="reload"
@pressEnter="reload"
>
<template #addonBefore>
<a-select
v-model:value="type"
style="width: 100px; margin: -5px -12px"
>
<a-select-option value="name">文件名称</a-select-option>
<a-select-option value="createNickname">
上传人
</a-select-option>
</a-select>
</template>
</a-input-search>
</a-space>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'path'">
<a :href="record.downloadUrl" target="_blank">
<div
class="video"
style="
background-color: #000000;
display: flex;
width: 160px;
height: 100px;
justify-content: center;
"
>
<video
:src="FILE_SERVER + record.path"
:width="150"
:height="100"
></video>
</div>
</router-link>
</template>
<template v-if="column.key === 'action'">
<a-space>
<a :href="record.url" target="_blank">下载</a>
<a-divider type="vertical" />
<a @click="openEdit(record)">修改</a>
<a-divider type="vertical" />
<a-popconfirm
placement="topRight"
title="确定要删除此评价吗?"
@confirm="remove(record)"
>
<a class="ele-text-danger">删除</a>
</a-popconfirm>
</a-space>
</template>
>
<video
:src="`${record.path}`"
:width="150"
:height="100"
></video>
</div>
</a>
</template>
</ele-pro-table>
</a-card>
<!-- 编辑弹窗 -->
<video-edit v-model:visible="showEdit" :data="current" @done="reload" />
</div>
</div>
<template v-if="column.key === 'name'">
<div>{{ record.name }}<copy-outlined
style="padding-left: 4px"
@click="copyText(record.downloadUrl)"
/></div>
</template>
<template v-if="column.key === 'action'">
<div>
<a :href="record.downloadUrl" target="_blank">下载</a>
<a-divider type="vertical"/>
<a @click="openEdit(record)">修改</a>
<a-divider type="vertical"/>
<a-popconfirm
placement="topRight"
title="确定要删除此评价吗?"
@confirm="remove(record)"
>
<a class="ele-text-danger">删除</a>
</a-popconfirm>
</div>
</template>
</template>
</ele-pro-table>
</a-card>
<!-- 编辑弹窗 -->
<video-edit v-model:visible="showEdit" :data="current" @done="reload"/>
</a-page-header>
</template>
<script lang="ts" setup>
import { createVNode, ref } from 'vue';
import { message, Modal } from 'ant-design-vue/es';
import {
UploadOutlined,
DeleteOutlined,
ExclamationCircleOutlined
} from '@ant-design/icons-vue';
import type { EleProTable } from 'ele-admin-pro/es';
import type {
DatasourceFunction,
ColumnItem
} from 'ele-admin-pro/es/ele-pro-table/types';
import { messageLoading, toDateString } from 'ele-admin-pro/es';
import VideoEdit from './components/video-edit.vue';
import {
pageFiles,
removeFile,
removeFiles,
uploadFile
} from '@/api/system/file/index';
import type {
FileRecord,
FileRecordParam
} from '@/api/system/file/model/index';
import { FILE_SERVER } from '@/config/setting';
import {createVNode, ref} from 'vue';
import {message, Modal} from 'ant-design-vue/es';
import {
UploadOutlined,
DeleteOutlined,
ExclamationCircleOutlined, CopyOutlined
} from '@ant-design/icons-vue';
import type {EleProTable} from 'ele-admin-pro/es';
import type {
DatasourceFunction,
ColumnItem
} from 'ele-admin-pro/es/ele-pro-table/types';
import {messageLoading, toDateString} from 'ele-admin-pro/es';
import VideoEdit from './components/video-edit.vue';
import {
pageFiles,
removeFile,
removeFiles,
uploadFile, uploadOss
} from '@/api/system/file/index';
import type {
FileRecord,
FileRecordParam
} from '@/api/system/file/model/index';
import {FILE_SERVER} from '@/config/setting';
import {copyText, getPageTitle} from "@/utils/common";
import Extra from "@/views/cms/photo/components/Extra.vue";
//
const tableRef = ref<InstanceType<typeof EleProTable> | null>(null);
//
const selection = ref<FileRecord[]>([]);
//
const current = ref<FileRecord | null>(null);
//
const showEdit = ref(false);
const type = ref('name');
const searchText = ref('');
//
const columns = ref<ColumnItem[]>([
{
key: 'index',
width: 48,
align: 'center',
fixed: 'left',
hideInSetting: true,
customRender: ({ index }) => index + (tableRef.value?.tableIndex ?? 0)
},
{
title: '封面图',
dataIndex: 'path',
width: 180,
key: 'path'
},
{
title: '文件名称',
dataIndex: 'name',
ellipsis: true
},
{
title: '描述',
dataIndex: 'comments',
ellipsis: true
},
{
title: '文件大小',
dataIndex: 'length',
sorter: true,
showSorterTooltip: false,
ellipsis: true,
customRender: ({ text }) => {
if (text < 1024) {
return text + 'B';
} else if (text < 1024 * 1024) {
return (text / 1024).toFixed(1) + 'KB';
} else if (text < 1024 * 1024 * 1024) {
return (text / 1024 / 1024).toFixed(1) + 'M';
} else {
return (text / 1024 / 1024 / 1024).toFixed(1) + 'G';
}
},
width: 120
},
{
title: '发布者',
width: 120,
dataIndex: 'createNickname'
},
{
title: '发布时间',
dataIndex: 'createTime',
sorter: true,
width: 180,
showSorterTooltip: false,
ellipsis: true,
customRender: ({ text }) => toDateString(text)
//
const tableRef = ref<InstanceType<typeof EleProTable> | null>(null);
//
const selection = ref<FileRecord[]>([]);
//
const current = ref<FileRecord | null>(null);
//
const showEdit = ref(false);
const type = ref('name');
const searchText = ref('');
//
const columns = ref<ColumnItem[]>([
{
key: 'index',
width: 48,
align: 'center',
fixed: 'left',
hideInSetting: true,
customRender: ({index}) => index + (tableRef.value?.tableIndex ?? 0)
},
{
title: '封面图',
dataIndex: 'path',
width: 180,
key: 'path'
},
{
title: '文件名称',
dataIndex: 'name',
key: 'name'
},
{
title: '描述',
dataIndex: 'comments',
ellipsis: true
},
{
title: '文件大小',
dataIndex: 'length',
sorter: true,
showSorterTooltip: false,
ellipsis: true,
customRender: ({text}) => {
if (text < 1024) {
return text + 'B';
} else if (text < 1024 * 1024) {
return (text / 1024).toFixed(1) + 'KB';
} else if (text < 1024 * 1024 * 1024) {
return (text / 1024 / 1024).toFixed(1) + 'M';
} else {
return (text / 1024 / 1024 / 1024).toFixed(1) + 'G';
}
},
{
title: '操作',
key: 'action',
width: 200,
align: 'center'
}
]);
width: 120
},
{
title: '发布者',
width: 120,
dataIndex: 'createNickname'
},
{
title: '发布时间',
dataIndex: 'createTime',
sorter: true,
width: 180,
showSorterTooltip: false,
ellipsis: true,
customRender: ({text}) => toDateString(text)
},
{
title: '操作',
key: 'action',
width: 200,
align: 'center'
}
]);
//
const datasource: DatasourceFunction = ({ page, limit, where, orders }) => {
where = {};
if (type.value == 'name') {
where.name = searchText.value;
}
if (type.value == 'createNickname') {
where.createNickname = searchText.value;
}
where.contentType = 'video';
return pageFiles({ ...where, ...orders, page, limit });
};
//
const datasource: DatasourceFunction = ({page, limit, where, orders}) => {
where = {};
if (type.value == 'name') {
where.name = searchText.value;
}
if (type.value == 'createNickname') {
where.createNickname = searchText.value;
}
where.contentType = 'video';
return pageFiles({...where, ...orders, page, limit});
};
/* 搜索 */
const reload = (where?: FileRecordParam) => {
selection.value = [];
tableRef?.value?.reload({ page: 1, where });
};
/* 搜索 */
const reload = (where?: FileRecordParam) => {
selection.value = [];
tableRef?.value?.reload({page: 1, where});
};
/* 打开编辑弹窗 */
const openEdit = (row?: FileRecord) => {
current.value = row ?? null;
showEdit.value = true;
};
/* 打开编辑弹窗 */
const openEdit = (row?: FileRecord) => {
current.value = row ?? null;
showEdit.value = true;
};
/* 删除单个 */
const remove = (row: FileRecord) => {
const hide = messageLoading('请求中..', 0);
removeFile(row.id)
.then((msg) => {
hide();
message.success(msg);
reload();
})
.catch((e) => {
hide();
message.error(e.message);
});
};
/* 批量删除 */
const removeBatch = () => {
if (!selection.value.length) {
message.error('请至少选择一条数据');
return;
}
Modal.confirm({
title: '提示',
content: '确定要删除选中的评价吗?',
icon: createVNode(ExclamationCircleOutlined),
maskClosable: true,
onOk: () => {
const hide = messageLoading('请求中..', 0);
removeFiles(selection.value.map((d) => d.id))
.then((msg) => {
hide();
message.success(msg);
reload();
})
.catch((e) => {
hide();
message.error(e.message);
});
}
/* 删除单个 */
const remove = (row: FileRecord) => {
const hide = messageLoading('请求中..', 0);
removeFile(row.id)
.then((msg) => {
hide();
message.success(msg);
reload();
})
.catch((e) => {
hide();
message.error(e.message);
});
};
};
//
const onUpload = (item) => {
const { file } = item;
if (!file.type.startsWith('video')) {
message.error('只能选择视频文件');
return;
}
if (file.size / 1024 / 1024 > 100) {
message.error('大小不能超过 100MB');
return;
/* 批量删除 */
const removeBatch = () => {
if (!selection.value.length) {
message.error('请至少选择一条数据');
return;
}
Modal.confirm({
title: '提示',
content: '确定要删除选中的评价吗?',
icon: createVNode(ExclamationCircleOutlined),
maskClosable: true,
onOk: () => {
const hide = messageLoading('请求中..', 0);
removeFiles(selection.value.map((d) => d.id))
.then((msg) => {
hide();
message.success(msg);
reload();
})
.catch((e) => {
hide();
message.error(e.message);
});
}
const hide = messageLoading({
content: '上传中..',
duration: 0,
mask: true
});
};
//
const onUpload = (item) => {
const {file} = item;
if (!file.type.startsWith('video')) {
message.error('只能选择视频文件');
return;
}
if (file.size / 1024 / 1024 > 100) {
message.error('大小不能超过 100MB');
return;
}
const hide = messageLoading({
content: '上传中..',
duration: 0,
mask: true
});
uploadOss(file)
.then((data) => {
hide();
message.success('上传成功');
reload();
})
.catch((e) => {
message.error(e.message);
hide();
});
uploadFile(file)
.then((data) => {
hide();
message.success('上传成功');
reload();
})
.catch((e) => {
message.error(e.message);
hide();
});
};
};
</script>
<script lang="ts">
export default {
name: 'VideoIndex'
};
export default {
name: 'VideoIndex'
};
</script>

201
src/views/cms/video/player/index.vue

@ -1,21 +1,15 @@
<!-- 角色编辑弹窗 -->
<template>
<div class="page">
<a-page-header :ghost="false" :title="form.name">
<div class="ele-text-secondary">
{{ form.comments }}
</div>
</a-page-header>
<div class="ele-body">
<a-card :bordered="false" style="width: 70%">
<a-page-header :title="getPageTitle()" @back="() => $router.go(-1)">
<a-card :bordered="false">
<div class="w-[700px]">
<ele-xg-player
:config="{
id: 'demoPlayer1',
lang: 'zh-cn',
fluid: true,
//
url: FILE_SERVER + form.path,
url: form.path,
//
poster: '',
//
@ -25,100 +19,113 @@
}"
@player="onPlayer1"
/>
</a-card>
</div>
</div>
</div>
<a-space direction="vertical" class="mt-5">
<div class="ele-text-secondary">
文件名称{{ form.name }}
</div>
<div class="ele-text-secondary">
文件路径{{ form.path }}
</div>
<div class="ele-text-secondary">
视频描述{{ form.comments }}
</div>
</a-space>
</a-card>
</a-page-header>
</template>
<script lang="ts" setup>
import { ref, reactive, watch, unref } from 'vue';
import Player from 'xgplayer';
import { useRouter } from 'vue-router';
import { toDateString } from 'ele-admin-pro';
import { setPageTabTitle } from '@/utils/page-tab-util';
import { message } from 'ant-design-vue/es';
import useFormData from '@/utils/use-form-data';
import { FileRecord } from '@/api/system/file/model';
import { getFile } from '@/api/system/file';
const { currentRoute } = useRouter();
import { FILE_SERVER } from '@/config/setting';
const ROUTE_PATH = '/cms/video/player';
import {ref, reactive, watch, unref} from 'vue';
import Player from 'xgplayer';
import {useRouter} from 'vue-router';
import {toDateString} from 'ele-admin-pro';
import {setPageTabTitle} from '@/utils/page-tab-util';
import {message} from 'ant-design-vue/es';
import useFormData from '@/utils/use-form-data';
import {FileRecord} from '@/api/system/file/model';
import {getFile} from '@/api/system/file';
//
let player1: Player;
//
const ready1 = ref(false);
const {currentRoute} = useRouter();
import {getPageTitle} from "@/utils/common";
//
const config1 = reactive({
id: 'demoPlayer1',
lang: 'zh-cn',
fluid: true,
//
url: 'https://file.wsdns.cn/20221126/cf17ef352db54bf28efeda268107714f.mp4',
//
poster:
'https://file.wsdns.cn/20221125/49f0c461d61e48f28b324366a0a63a2e.jpg',
//
playbackRate: [0.5, 1, 1.5, 2],
//
pip: true
});
const ROUTE_PATH = '/cms/video/player';
/* 播放器一渲染完成 */
const onPlayer1 = (player: Player) => {
player1 = player;
player1.on('play', () => {
ready1.value = true;
});
};
//
const { form, assignFields } = useFormData<FileRecord>({
id: 0,
name: '',
url: '',
path: '',
comments: '',
createNickname: '',
createTime: ''
//
let player1: Player;
//
const ready1 = ref(false);
//
const config1 = reactive({
id: 'demoPlayer1',
lang: 'zh-cn',
fluid: true,
//
url: 'https://file.wsdns.cn/20221126/cf17ef352db54bf28efeda268107714f.mp4',
//
poster:
'https://file.wsdns.cn/20221125/49f0c461d61e48f28b324366a0a63a2e.jpg',
//
playbackRate: [0.5, 1, 1.5, 2],
//
pip: true
});
/* 播放器一渲染完成 */
const onPlayer1 = (player: Player) => {
player1 = player;
player1.on('play', () => {
ready1.value = true;
});
//
const loading = ref(true);
/* */
const query = () => {
const { query } = unref(currentRoute);
const id = query.id;
if (!id || form.id === Number(id)) {
return;
}
loading.value = true;
getFile(Number(id))
.then((data) => {
loading.value = false;
assignFields({
...data,
createTime: toDateString(data.createTime)
});
//
if (unref(currentRoute).path === ROUTE_PATH) {
setPageTabTitle(String(data.comments));
}
})
.catch((e) => {
loading.value = false;
message.error(e.message);
};
//
const {form, assignFields} = useFormData<FileRecord>({
id: 0,
name: '',
url: '',
path: '',
comments: '',
createNickname: '',
createTime: ''
});
//
const loading = ref(true);
/* */
const query = () => {
const {query} = unref(currentRoute);
const id = query.id;
if (!id || form.id === Number(id)) {
return;
}
loading.value = true;
getFile(Number(id))
.then((data) => {
loading.value = false;
assignFields({
...data,
createTime: toDateString(data.createTime)
});
};
watch(
currentRoute,
(route) => {
const { path } = unref(route);
if (path !== ROUTE_PATH) {
return;
//
if (unref(currentRoute).path === ROUTE_PATH) {
setPageTabTitle(String(data.comments));
}
query();
},
{ immediate: true }
);
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
};
watch(
currentRoute,
(route) => {
const {path} = unref(route);
if (path !== ROUTE_PATH) {
return;
}
query();
},
{immediate: true}
);
</script>

2
src/views/hjm/hjmCar/index.vue

@ -61,7 +61,7 @@
import {createVNode, ref, watch} from 'vue';
import {message, Modal} from 'ant-design-vue';
import {ExclamationCircleOutlined} from '@ant-design/icons-vue';
import {EleProTable} from 'ele-admin-pro';
import type {EleProTable} from 'ele-admin-pro';
import {toDateString} from 'ele-admin-pro';
import type {
DatasourceFunction,

12
src/views/shop/shopOrder/components/orderInfo.vue

@ -28,7 +28,9 @@
:labelStyle="{ width: '90px', color: '#808080' }"
>
<a-space class="flex items-center">
<a-avatar :src="form.avatar" size="small"/>
<a-tooltip :title="`${form.userId}`">
<a-avatar :src="form.avatar" size="small"/>
</a-tooltip>
{{ form.realName }}
</a-space>
</a-descriptions-item>
@ -90,7 +92,11 @@
:labelStyle="{ width: '90px', color: '#808080' }"
>
<a-tag v-if="form.deliveryStatus == 10">未核销</a-tag>
<a-tag v-if="form.deliveryStatus == 20" color="green">已核销</a-tag>
<a-tag v-if="form.deliveryStatus == 20" color="green">
<a-tooltip :title="form.deliveryTime">
已核销
</a-tooltip>
</a-tag>
<a-tag v-if="form.deliveryStatus == 30" color="bule">部分核销</a-tag>
</a-descriptions-item>
<!-- 第五排-->
@ -194,7 +200,7 @@
label="交易流水号"
:labelStyle="{ width: '90px', color: '#808080' }"
>
<a-tooltip :title="form.payTime">{{ form.transactionId }}</a-tooltip>
{{ form.transactionId }}
</a-descriptions-item>
<a-descriptions-item
label="结算状态"

27
src/views/shop/shopOrder/index.vue

@ -110,7 +110,7 @@ import Extra from "@/views/bszx/extra.vue";
import {pageBszxOrder} from "@/api/bszx/bszxOrder";
import OrderInfo from './components/orderInfo.vue';
import {ShopOrder, ShopOrderParam} from "@/api/shop/shopOrder/model";
import {updateShopOrder} from "@/api/shop/shopOrder";
import {repairOrder, updateShopOrder} from "@/api/shop/shopOrder";
import {message} from "ant-design-vue";
import {updateUser} from "@/api/system/user";
import {getPayType} from '@/utils/shop';
@ -259,22 +259,17 @@ const openMove = () => {
* 修复订单支付状态
*/
const updatePayStatus = (record: ShopOrder) => {
if (record.deliveryStatus == 20) {
//
updateShopOrder({
...record,
payStatus: 20,
deliveryStatus: 20,
orderStatus: 1
}).then(() => {
message.success('修复成功');
})
}
//
updateUser({
userId: record.userId,
realName: record.realName
//
repairOrder({
...record
}).then(() => {
if(!record.realName){
//
updateUser({
userId: record.userId,
realName: record.realName
}).then(() => {})
}
reload();
})
}

448
yarn.lock

@ -197,16 +197,6 @@
"@antv/util" "^3.3.5"
tslib "^2.5.3"
"@antv/g@^6.0.0", "@antv/g@^6.0.5":
version "6.0.10"
resolved "https://registry.npmmirror.com/@antv/g/-/g-6.0.10.tgz"
integrity sha512-VH45ddgHQhEzWZ4aDpHHcu6f77vIVKhfEMgHZzUL9bnMTmJ2P4qf0DtarhP6BKvxcHlFFpJcSyYSxTurNHvW5w==
dependencies:
"@antv/g-camera-api" "2.0.9"
"@antv/g-dom-mutation-observer-api" "2.0.6"
"@antv/g-lite" "2.0.6"
"@antv/g-web-animations-api" "2.0.7"
"@antv/g2@^5.1.22":
version "5.2.1"
resolved "https://registry.npmmirror.com/@antv/g2/-/g2-5.2.1.tgz"
@ -235,6 +225,16 @@
fmin "^0.0.2"
pdfast "^0.2.0"
"@antv/g@^6.0.0", "@antv/g@^6.0.5":
version "6.0.10"
resolved "https://registry.npmmirror.com/@antv/g/-/g-6.0.10.tgz"
integrity sha512-VH45ddgHQhEzWZ4aDpHHcu6f77vIVKhfEMgHZzUL9bnMTmJ2P4qf0DtarhP6BKvxcHlFFpJcSyYSxTurNHvW5w==
dependencies:
"@antv/g-camera-api" "2.0.9"
"@antv/g-dom-mutation-observer-api" "2.0.6"
"@antv/g-lite" "2.0.6"
"@antv/g-web-animations-api" "2.0.7"
"@antv/path-util@^3.0.1":
version "3.0.1"
resolved "https://registry.npmmirror.com/@antv/path-util/-/path-util-3.0.1.tgz"
@ -280,7 +280,7 @@
resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz"
integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
"@babel/parser@^7.15.8", "@babel/parser@^7.25.3":
"@babel/parser@^7.25.3":
version "7.26.9"
resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.9.tgz"
integrity sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==
@ -659,6 +659,11 @@
resolved "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz"
integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==
"@esbuild/linux-loong64@0.14.54":
version "0.14.54"
resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028"
integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==
"@eslint/eslintrc@^1.3.1":
version "1.3.1"
resolved "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.3.1.tgz"
@ -989,7 +994,7 @@
"@nodelib/fs.stat" "2.0.5"
run-parallel "^1.1.9"
"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
version "2.0.5"
resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
@ -1033,7 +1038,7 @@
resolved "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz"
integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==
"@types/codemirror@^5.0.0", "@types/codemirror@^5.60.5":
"@types/codemirror@^5.60.5":
version "5.60.5"
resolved "https://registry.npmmirror.com/@types/codemirror/-/codemirror-5.60.5.tgz"
integrity sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==
@ -1163,7 +1168,7 @@
semver "^7.3.7"
tsutils "^3.21.0"
"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.36.1":
"@typescript-eslint/parser@^5.36.1":
version "5.36.1"
resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.36.1.tgz"
integrity sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A==
@ -1293,7 +1298,7 @@
"@volar/typescript-faster" "0.40.5"
"@volar/vue-language-core" "0.40.5"
"@vue/compiler-core@^3.2.37", "@vue/compiler-core@3.5.3":
"@vue/compiler-core@3.5.3", "@vue/compiler-core@^3.2.37":
version "3.5.3"
resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.3.tgz"
integrity sha512-adAfy9boPkP233NTyvLbGEqVuIfK/R0ZsBsIOW4BZNfb4BRpRW41Do1u+ozJpsb+mdoy80O20IzAsHaihRb5qA==
@ -1304,7 +1309,7 @@
estree-walker "^2.0.2"
source-map-js "^1.2.0"
"@vue/compiler-dom@^3.2.37", "@vue/compiler-dom@3.5.3":
"@vue/compiler-dom@3.5.3", "@vue/compiler-dom@^3.2.37":
version "3.5.3"
resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.3.tgz"
integrity sha512-wnzFArg9zpvk/811CDOZOadJRugf1Bgl/TQ3RfV4nKfSPok4hi0w10ziYUQR6LnnBAUlEXYLUfZ71Oj9ds/+QA==
@ -1312,7 +1317,7 @@
"@vue/compiler-core" "3.5.3"
"@vue/shared" "3.5.3"
"@vue/compiler-sfc@^3.2.37", "@vue/compiler-sfc@^3.2.38", "@vue/compiler-sfc@3.5.3":
"@vue/compiler-sfc@3.5.3", "@vue/compiler-sfc@^3.2.37", "@vue/compiler-sfc@^3.2.38":
version "3.5.3"
resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.3.tgz"
integrity sha512-P3uATLny2tfyvMB04OQFe7Sczteno7SLFxwrOA/dw01pBWQHB5HL15a8PosoNX2aG/EAMGqnXTu+1LnmzFhpTQ==
@ -1340,13 +1345,6 @@
resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.2.1.tgz"
integrity sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==
"@vue/reactivity@^3.2.37", "@vue/reactivity@3.5.3":
version "3.5.3"
resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.3.tgz"
integrity sha512-2w61UnRWTP7+rj1H/j6FH706gRBHdFVpIqEkSDAyIpafBXYH8xt4gttstbbCWdU3OlcSWO8/3mbKl/93/HSMpw==
dependencies:
"@vue/shared" "3.5.3"
"@vue/reactivity@3.2.37":
version "3.2.37"
resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz"
@ -1354,6 +1352,13 @@
dependencies:
"@vue/shared" "3.2.37"
"@vue/reactivity@3.5.3", "@vue/reactivity@^3.2.37":
version "3.5.3"
resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.3.tgz"
integrity sha512-2w61UnRWTP7+rj1H/j6FH706gRBHdFVpIqEkSDAyIpafBXYH8xt4gttstbbCWdU3OlcSWO8/3mbKl/93/HSMpw==
dependencies:
"@vue/shared" "3.5.3"
"@vue/runtime-core@3.5.3":
version "3.5.3"
resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.3.tgz"
@ -1380,16 +1385,16 @@
"@vue/compiler-ssr" "3.5.3"
"@vue/shared" "3.5.3"
"@vue/shared@^3.2.37", "@vue/shared@3.5.3":
version "3.5.3"
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.3.tgz"
integrity sha512-Jp2v8nylKBT+PlOUjun2Wp/f++TfJVFjshLzNtJDdmFJabJa7noGMncqXRM1vXGX+Yo2V7WykQFNxusSim8SCA==
"@vue/shared@3.2.37":
version "3.2.37"
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.37.tgz"
integrity sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==
"@vue/shared@3.5.3", "@vue/shared@^3.2.37":
version "3.5.3"
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.3.tgz"
integrity sha512-Jp2v8nylKBT+PlOUjun2Wp/f++TfJVFjshLzNtJDdmFJabJa7noGMncqXRM1vXGX+Yo2V7WykQFNxusSim8SCA==
"@wecom/jssdk@^1.3.1":
version "1.3.2"
resolved "https://registry.npmmirror.com/@wecom/jssdk/-/jssdk-1.3.2.tgz"
@ -1400,7 +1405,7 @@ acorn-jsx@^5.3.2:
resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.5.0, acorn@^8.8.0:
acorn@^8.5.0, acorn@^8.8.0:
version "8.8.0"
resolved "https://registry.npmmirror.com/acorn/-/acorn-8.8.0.tgz"
integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
@ -1514,7 +1519,7 @@ ansi-styles@^6.1.0:
resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz"
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
ant-design-vue@^3.2.11, ant-design-vue@>=3.1.0:
ant-design-vue@^3.2.11:
version "3.2.11"
resolved "https://registry.npmmirror.com/ant-design-vue/-/ant-design-vue-3.2.11.tgz"
integrity sha512-QKCAcOY5EJF0PepiVGA4X5PzUetYUvG5qALmA+2TON40pc2+brOEiVTwr3kjF9N+f7q4MpyiLPu4pIErwoajOQ==
@ -1742,7 +1747,7 @@ braces@^3.0.2, braces@~3.0.2:
dependencies:
fill-range "^7.0.1"
browserslist@^4.23.0, "browserslist@>= 4.21.0":
browserslist@^4.23.0:
version "4.23.2"
resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.23.2.tgz"
integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==
@ -1785,7 +1790,7 @@ builtin-status-codes@^3.0.0:
resolved "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz"
integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==
bytemd@^1.17.2, bytemd@^1.5.0:
bytemd@^1.17.2:
version "1.17.2"
resolved "https://registry.npmmirror.com/bytemd/-/bytemd-1.17.2.tgz"
integrity sha512-t8TljTgRU1+OPPbxBPjvnvh8Nti9FAirmKQhgSDYMQnXs9SGw6tTRJy3f8ZZoD+rnYt8hyf035ADDfU1/bTJhQ==
@ -1974,16 +1979,16 @@ color-convert@^2.0.1:
dependencies:
color-name "~1.1.4"
color-name@^1.0.0, color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz"
integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
color-name@^1.0.0, color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
color-string@^1.5.5:
version "1.9.1"
resolved "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz"
@ -2004,6 +2009,11 @@ comma-separated-tokens@^2.0.0:
resolved "https://registry.npmmirror.com/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz"
integrity sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==
commander@7:
version "7.2.0"
resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
commander@^2.15.1, commander@^2.20.0, commander@^2.20.3:
version "2.20.3"
resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
@ -2014,11 +2024,6 @@ commander@^4.0.0:
resolved "https://registry.npmmirror.com/commander/-/commander-4.1.1.tgz"
integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
commander@7:
version "7.2.0"
resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
compress-commons@^4.1.0:
version "4.1.1"
resolved "https://registry.npmmirror.com/compress-commons/-/compress-commons-4.1.1.tgz"
@ -2135,22 +2140,14 @@ csstype@^3.0.8, csstype@^3.1.3:
resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz"
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
d@^1.0.1, d@1:
version "1.0.1"
resolved "https://registry.npmmirror.com/d/-/d-1.0.1.tgz"
integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
dependencies:
es5-ext "^0.10.50"
type "^1.0.1"
d3-array@^3.2.4, "d3-array@2.5.0 - 3":
"d3-array@2.5.0 - 3", d3-array@^3.2.4:
version "3.2.4"
resolved "https://registry.npmmirror.com/d3-array/-/d3-array-3.2.4.tgz"
integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==
dependencies:
internmap "1 - 2"
d3-color@^3.1.0, "d3-color@1 - 3":
"d3-color@1 - 3", d3-color@^3.1.0:
version "3.1.0"
resolved "https://registry.npmmirror.com/d3-color/-/d3-color-3.1.0.tgz"
integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==
@ -2237,6 +2234,14 @@ d3-voronoi@^1.1.4:
resolved "https://registry.npmmirror.com/d3-voronoi/-/d3-voronoi-1.1.4.tgz"
integrity sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==
d@1, d@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/d/-/d-1.0.1.tgz"
integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
dependencies:
es5-ext "^0.10.50"
type "^1.0.1"
danmu.js@^0.5.9:
version "0.5.10"
resolved "https://registry.npmmirror.com/danmu.js/-/danmu.js-0.5.10.tgz"
@ -2457,7 +2462,7 @@ echarts-wordcloud@^2.0.0:
resolved "https://registry.npmmirror.com/echarts-wordcloud/-/echarts-wordcloud-2.0.0.tgz"
integrity sha512-K7l6pTklqdW7ZWzT/1CS0KhBSINr/cd7c5N1fVMzZMwLQHEwT7x+nivK7g5hkVh7WNcAv4Dn6/ZS5zMKRozC1g==
echarts@^5.0.1, echarts@^5.1.2, echarts@^5.3.3:
echarts@^5.3.3:
version "5.3.3"
resolved "https://registry.npmmirror.com/echarts/-/echarts-5.3.3.tgz"
integrity sha512-BRw2serInRwO5SIwRviZ6Xgm5Lb7irgz+sLiFMmy/HOaf4SQ+7oYqxKzRHAKp4xHQ05AuHw1xvoQWJjDQq/FGw==
@ -2645,12 +2650,107 @@ es6-symbol@^3.1.1, es6-symbol@^3.1.3:
d "^1.0.1"
ext "^1.1.2"
esbuild-android-64@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be"
integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==
esbuild-android-arm64@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771"
integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==
esbuild-darwin-64@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25"
integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==
esbuild-darwin-arm64@0.14.54:
version "0.14.54"
resolved "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz"
integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==
esbuild@^0.14.47, esbuild@>=0.13:
esbuild-freebsd-64@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d"
integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==
esbuild-freebsd-arm64@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48"
integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==
esbuild-linux-32@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5"
integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==
esbuild-linux-64@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652"
integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==
esbuild-linux-arm64@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b"
integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==
esbuild-linux-arm@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59"
integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==
esbuild-linux-mips64le@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34"
integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==
esbuild-linux-ppc64le@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e"
integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==
esbuild-linux-riscv64@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8"
integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==
esbuild-linux-s390x@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6"
integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==
esbuild-netbsd-64@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81"
integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==
esbuild-openbsd-64@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b"
integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==
esbuild-sunos-64@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da"
integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==
esbuild-windows-32@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31"
integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==
esbuild-windows-64@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4"
integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==
esbuild-windows-arm64@0.14.54:
version "0.14.54"
resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982"
integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==
esbuild@^0.14.47:
version "0.14.54"
resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.14.54.tgz"
integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==
@ -2687,12 +2787,7 @@ escape-html@^1.0.3:
resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz"
integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
escape-string-regexp@^1.0.2:
version "1.0.5"
resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
escape-string-regexp@^1.0.5:
escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
@ -2770,7 +2865,7 @@ eslint-visitor-keys@^3.3.0:
resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz"
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
eslint@*, "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.2.0 || ^7.0.0 || ^8.0.0", eslint@^8.23.0, eslint@>=5, eslint@>=6.0.0, eslint@>=7.0.0, eslint@>=7.28.0:
eslint@^8.23.0:
version "8.23.0"
resolved "https://registry.npmmirror.com/eslint/-/eslint-8.23.0.tgz"
integrity sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==
@ -2848,12 +2943,7 @@ estraverse@^4.1.1:
resolved "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
estraverse@^5.1.0:
version "5.3.0"
resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz"
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
estraverse@^5.2.0:
estraverse@^5.1.0, estraverse@^5.2.0:
version "5.3.0"
resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz"
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
@ -3203,7 +3293,7 @@ gl-matrix@^3.1.0, gl-matrix@^3.3.0, gl-matrix@^3.4.3:
resolved "https://registry.npmmirror.com/gl-matrix/-/gl-matrix-3.4.3.tgz"
integrity sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==
glob-parent@^5.1.2:
glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
@ -3217,13 +3307,6 @@ glob-parent@^6.0.1, glob-parent@^6.0.2:
dependencies:
is-glob "^4.0.3"
glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
glob@^10.3.10:
version "10.4.5"
resolved "https://registry.npmmirror.com/glob/-/glob-10.4.5.tgz"
@ -3489,6 +3572,13 @@ humanize-ms@^1.2.0, humanize-ms@^1.2.1:
dependencies:
ms "^2.0.0"
iconv-lite@0.6, iconv-lite@^0.6.3:
version "0.6.3"
resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz"
integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
iconv-lite@^0.4.15:
version "0.4.24"
resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz"
@ -3496,13 +3586,6 @@ iconv-lite@^0.4.15:
dependencies:
safer-buffer ">= 2.1.2 < 3"
iconv-lite@^0.6.3, iconv-lite@0.6:
version "0.6.3"
resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz"
integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
ieee754@^1.1.13:
version "1.2.1"
resolved "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz"
@ -3544,7 +3627,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3, inherits@~2.0.4, inherits@2:
inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3, inherits@~2.0.4:
version "2.0.4"
resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@ -3901,7 +3984,7 @@ lazystream@^1.0.0:
dependencies:
readable-stream "^2.0.5"
less@*, less@^4.1.3:
less@^4.1.3:
version "4.1.3"
resolved "https://registry.npmmirror.com/less/-/less-4.1.3.tgz"
integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==
@ -4137,7 +4220,7 @@ markdown-it-sup@^2.0.0:
resolved "https://registry.npmmirror.com/markdown-it-sup/-/markdown-it-sup-2.0.0.tgz"
integrity sha512-5VgmdKlkBd8sgXuoDoxMpiU+BiEt3I49GItBzzw7Mxq9CxvnhE/k09HFli09zgfFDRixDQDfDxi0mgBCXtaTvA==
markdown-it@*, markdown-it@^14.0.0:
markdown-it@^14.0.0:
version "14.1.0"
resolved "https://registry.npmmirror.com/markdown-it/-/markdown-it-14.1.0.tgz"
integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==
@ -4627,12 +4710,7 @@ mime@^1.4.1:
resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz"
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
mime@^2.4.5:
version "2.6.0"
resolved "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz"
integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==
mime@^2.5.2:
mime@^2.4.5, mime@^2.5.2:
version "2.6.0"
resolved "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz"
integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==
@ -4673,7 +4751,7 @@ mitt@^3.0.1:
resolved "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz"
integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==
mkdirp@^0.5.1, "mkdirp@>=0.5 0":
"mkdirp@>=0.5 0", mkdirp@^0.5.1:
version "0.5.6"
resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz"
integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
@ -4697,16 +4775,16 @@ mri@^1.1.0:
resolved "https://registry.npmmirror.com/mri/-/mri-1.2.0.tgz"
integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==
ms@^2.0.0, ms@^2.1.1, ms@2.1.2:
version "2.1.2"
resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
ms@2.0.0:
version "2.0.0"
resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz"
integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
ms@2.1.2, ms@^2.0.0, ms@^2.1.1:
version "2.1.2"
resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
mz@^2.7.0:
version "2.7.0"
resolved "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz"
@ -5022,7 +5100,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0:
resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
postcss@^8.0.0, postcss@^8.1.0, postcss@^8.2.14, postcss@^8.4.16, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.39, postcss@^8.4.44, postcss@>=8.0.9:
postcss@^8.4.16, postcss@^8.4.23, postcss@^8.4.39, postcss@^8.4.44:
version "8.5.3"
resolved "https://registry.npmmirror.com/postcss/-/postcss-8.5.3.tgz"
integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==
@ -5043,7 +5121,7 @@ prettier-linter-helpers@^1.0.0:
dependencies:
fast-diff "^1.1.2"
prettier@^2.7.1, prettier@>=2.0.0:
prettier@^2.7.1:
version "2.7.1"
resolved "https://registry.npmmirror.com/prettier/-/prettier-2.7.1.tgz"
integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
@ -5112,46 +5190,7 @@ read-cache@^1.0.0:
dependencies:
pify "^2.3.0"
readable-stream@^2.0.0:
version "2.3.8"
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz"
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
isarray "~1.0.0"
process-nextick-args "~2.0.0"
safe-buffer "~5.1.1"
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readable-stream@^2.0.2:
version "2.3.8"
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz"
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
isarray "~1.0.0"
process-nextick-args "~2.0.0"
safe-buffer "~5.1.1"
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readable-stream@^2.0.5:
version "2.3.8"
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz"
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
isarray "~1.0.0"
process-nextick-args "~2.0.0"
safe-buffer "~5.1.1"
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readable-stream@^2.3.6:
readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.3.6, readable-stream@~2.3.6:
version "2.3.8"
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz"
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
@ -5173,19 +5212,6 @@ readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
readable-stream@~2.3.6:
version "2.3.8"
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz"
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
isarray "~1.0.0"
process-nextick-args "~2.0.0"
safe-buffer "~5.1.1"
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readdir-glob@^1.0.0:
version "1.1.3"
resolved "https://registry.npmmirror.com/readdir-glob/-/readdir-glob-1.1.3.tgz"
@ -5328,6 +5354,13 @@ right-align@^0.1.1:
dependencies:
align-text "^0.1.1"
rimraf@2:
version "2.7.1"
resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz"
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
dependencies:
glob "^7.1.3"
rimraf@^3.0.0, rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz"
@ -5335,12 +5368,12 @@ rimraf@^3.0.0, rimraf@^3.0.2:
dependencies:
glob "^7.1.3"
rimraf@2:
version "2.7.1"
resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz"
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
dependencies:
glob "^7.1.3"
"rollup@>=2.75.6 <2.77.0 || ~2.77.0":
version "2.77.3"
resolved "https://registry.npmmirror.com/rollup/-/rollup-2.77.3.tgz"
integrity sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==
optionalDependencies:
fsevents "~2.3.2"
rollup@^0.25.8:
version "0.25.8"
@ -5351,13 +5384,6 @@ rollup@^0.25.8:
minimist "^1.2.0"
source-map-support "^0.3.2"
rollup@^2.50.0, "rollup@>=2.75.6 <2.77.0 || ~2.77.0":
version "2.77.3"
resolved "https://registry.npmmirror.com/rollup/-/rollup-2.77.3.tgz"
integrity sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==
optionalDependencies:
fsevents "~2.3.2"
run-parallel@^1.1.9:
version "1.2.0"
resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz"
@ -5365,7 +5391,7 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"
rw@^1.3.2, rw@1:
rw@1, rw@^1.3.2:
version "1.3.3"
resolved "https://registry.npmmirror.com/rw/-/rw-1.3.3.tgz"
integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==
@ -5411,7 +5437,7 @@ safe-regex-test@^1.0.3:
resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
sax@^1.2.4, sax@>=0.6.0:
sax@>=0.6.0, sax@^1.2.4:
version "1.2.4"
resolved "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
@ -5547,16 +5573,16 @@ socket.io-parser@~4.2.4:
"@socket.io/component-emitter" "~3.1.0"
debug "~4.3.1"
sortablejs@^1.15.0:
version "1.15.0"
resolved "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz"
integrity sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==
sortablejs@1.14.0:
version "1.14.0"
resolved "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz"
integrity sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==
sortablejs@^1.15.0:
version "1.15.0"
resolved "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz"
integrity sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==
source-map-js@^1.2.0, source-map-js@^1.2.1:
version "1.2.1"
resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz"
@ -5577,7 +5603,14 @@ source-map-support@~0.5.20:
buffer-from "^1.0.0"
source-map "^0.6.0"
source-map@^0.6.0, source-map@~0.6.0, source-map@0.6.1:
source-map@0.1.32:
version "0.1.32"
resolved "https://registry.npmmirror.com/source-map/-/source-map-0.1.32.tgz"
integrity sha512-htQyLrrRLkQ87Zfrir4/yN+vAUd6DNjVayEjTSHXu29AYQJw57I4/xEL/M6p6E/woPNJwvZt6rVlzc7gFEJccQ==
dependencies:
amdefine ">=0.0.4"
source-map@0.6.1, source-map@^0.6.0, source-map@~0.6.0:
version "0.6.1"
resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
@ -5594,13 +5627,6 @@ source-map@~0.5.1:
resolved "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz"
integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
source-map@0.1.32:
version "0.1.32"
resolved "https://registry.npmmirror.com/source-map/-/source-map-0.1.32.tgz"
integrity sha512-htQyLrrRLkQ87Zfrir4/yN+vAUd6DNjVayEjTSHXu29AYQJw57I4/xEL/M6p6E/woPNJwvZt6rVlzc7gFEJccQ==
dependencies:
amdefine ">=0.0.4"
sourcemap-codec@^1.4.8:
version "1.4.8"
resolved "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz"
@ -5639,20 +5665,6 @@ stream-wormhole@^1.0.4:
resolved "https://registry.npmmirror.com/stream-wormhole/-/stream-wormhole-1.1.0.tgz"
integrity sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==
string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz"
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
dependencies:
safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
"string-width-cjs@npm:string-width@^4.2.0":
version "4.2.3"
resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz"
@ -5708,6 +5720,20 @@ string.prototype.trimstart@^1.0.8:
define-properties "^1.2.1"
es-object-atoms "^1.0.0"
string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz"
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
dependencies:
safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
stringify-entities@^4.0.2:
version "4.0.3"
resolved "https://registry.npmmirror.com/stringify-entities/-/stringify-entities-4.0.3.tgz"
@ -5869,7 +5895,7 @@ tar-stream@^2.2.0:
inherits "^2.0.3"
readable-stream "^3.1.1"
terser@^5.15.0, terser@^5.4.0:
terser@^5.15.0:
version "5.15.0"
resolved "https://registry.npmmirror.com/terser/-/terser-5.15.0.tgz"
integrity sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==
@ -5959,22 +5985,17 @@ ts-interface-checker@^0.1.9:
resolved "https://registry.npmmirror.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz"
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
tslib@^1.8.1:
version "1.14.1"
resolved "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tslib@^2.0.3, tslib@^2.3.0, tslib@2.3.0:
tslib@2.3.0, tslib@^2.0.3, tslib@^2.3.0:
version "2.3.0"
resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz"
integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
tslib@^2.3.1:
version "2.6.3"
resolved "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz"
integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==
tslib@^1.8.1:
version "1.14.1"
resolved "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tslib@^2.5.3:
tslib@^2.3.1, tslib@^2.5.3:
version "2.6.3"
resolved "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz"
integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==
@ -6052,7 +6073,7 @@ typed-array-length@^1.0.6:
is-typed-array "^1.1.13"
possible-typed-array-names "^1.0.0"
typescript@*, typescript@^4.8.2, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", typescript@>=4.4.4:
typescript@^4.8.2:
version "4.8.2"
resolved "https://registry.npmmirror.com/typescript/-/typescript-4.8.2.tgz"
integrity sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==
@ -6330,7 +6351,7 @@ vite-plugin-compression@^0.5.1:
debug "^4.3.3"
fs-extra "^10.0.0"
"vite@^2.3.0 || ^3.0.0-0", vite@^3.0.0, vite@^3.0.9, vite@>=2.0.0:
vite@^3.0.9:
version "3.0.9"
resolved "https://registry.npmmirror.com/vite/-/vite-3.0.9.tgz"
integrity sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==
@ -6342,12 +6363,7 @@ vite-plugin-compression@^0.5.1:
optionalDependencies:
fsevents "~2.3.2"
vue-demi@*:
version "0.13.11"
resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz"
integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==
vue-demi@^0.13.2:
vue-demi@*, vue-demi@^0.13.2:
version "0.13.11"
resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz"
integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==
@ -6405,7 +6421,7 @@ vue-types@^3.0.0:
dependencies:
is-plain-object "3.0.1"
"vue@^2.6.12 || ^3.1.1", "vue@^2.6.14 || ^3.2.0", vue@^3.0.0, "vue@^3.0.0-0 || ^2.6.0", vue@^3.0.1, vue@^3.2.0, vue@^3.2.25, vue@^3.5.3, vue@>=3.0.1, vue@>=3.0.3, vue@>=3.1.0, vue@>=3.2.0, "vue@2 || 3", vue@3.5.3:
vue@3.5.3:
version "3.5.3"
resolved "https://registry.npmmirror.com/vue/-/vue-3.5.3.tgz"
integrity sha512-xvRbd0HpuLovYbOHXRHlSBsSvmUJbo0pzbkKTApWnQGf3/cu5Z39mQeA5cZdLRVIoNf3zI6MSoOgHUT5i2jO+Q==

Loading…
Cancel
Save