Commit db714491 by haojie

1

parent 77a60532
......@@ -29,7 +29,7 @@
:class="{ active: item.value == Current_btn }"
@click="onBtnChange(item)"
>
<div class="img-size-text">{{ item.size }}</div>
<div class="img-size-text">{{ item.value }}</div>
<div class="label-text">{{ item.label }}</div>
</div>
</template>
......
<template>
<div class="custom-select-model">
<CustomInput
v-model="InputValue"
:placeholder="placeholder"
@inputChange="InputChange"
align="left"
class="select-model-input"
>
<template #rightIcon>
<span class="right-input-icon">
<ChevronDown></ChevronDown>
</span>
</template>
</CustomInput>
<div class="search-area-box narrow-scrollbar">
<OnWaitVue
v-if="SearchStatus == 'wait'"
label="未有图片,快去上方输入模特样式吧"
></OnWaitVue>
<OnLoading
v-else-if="SearchStatus == 'loading'"
label="搜索中"
></OnLoading>
<div class="search-result-image" v-else-if="SearchList.list.length">
<img
v-for="item in SearchList.list"
:key="item.image"
:src="item.image"
@click="ChoseModel(item)"
:class="{ 'image-active': item.image == SearchList.image }"
/>
<template
v-for="(item, index) in SearchList.list"
:key="item.image + '1'"
>
<i v-if="index !== SearchList.list.length - 1"></i>
<div class="select-model-btns">
<ResetButton
class="model-btn"
v-for="item in options"
:key="item.label"
>{{ item.label }}</ResetButton
>
</div>
<div class="model-dialog-box">
<CustomInput
v-model="InputValue"
:placeholder="placeholder"
@inputChange="InputChange"
align="left"
class="select-model-input"
>
<template #rightIcon>
<span class="right-input-icon">
<ChevronDown></ChevronDown>
</span>
</template>
</CustomInput>
<div class="search-area-box narrow-scrollbar">
<OnWaitVue
v-if="SearchStatus == 'wait'"
label="未有图片,快去上方输入模特样式吧"
></OnWaitVue>
<OnLoading
v-else-if="SearchStatus == 'loading'"
label="搜索中"
></OnLoading>
<div class="search-result-image" v-else-if="SearchList.list.length">
<img
v-for="item in SearchList.list"
:key="item.image"
:src="item.image"
@click="ChoseModel(item)"
:class="{ 'image-active': item.image == SearchList.image }"
/>
<template
v-for="(item, index) in SearchList.list"
:key="item.image + '1'"
>
<i v-if="index !== SearchList.list.length - 1"></i>
</template>
</div>
<OnWaitVue v-else label="未搜索到模特"></OnWaitVue>
</div>
<OnWaitVue v-else label="未搜索到模特"></OnWaitVue>
</div>
</div>
</template>
......@@ -52,10 +63,12 @@ import { debounce } from '@/utils/tool';
import request from '@/utils/request';
import { show_message } from '@/utils/tdesign_tool';
import { getUserCookie } from '@/utils/api/userApi';
import ResetButton from '@/components/custom/resetbutton.vue';
const props = withDefaults(
defineProps<{
tool_url: string;
placeholder?: string;
options: any[];
}>(),
{
placeholder: '请输入',
......@@ -144,46 +157,61 @@ const InputChange = debounce(Search, 1000);
@import '@/style/variables.less';
.custom-select-model {
width: 100%;
.select-model-input {
width: 100% !important;
height: auto !important;
.right-input-icon {
padding-right: 12px;
.select-model-btns {
display: flex;
justify-content: space-between;
.model-btn {
width: 48% !important;
&:hover {
border: 1px solid #00f9f9 !important;
background: #181818 !important;
color: white;
}
}
}
.search-area-box {
width: 100%;
height: 389px;
background: #181818;
border: @main-border;
border-radius: 8px;
.model-dialog-box {
margin-top: 6px;
display: flex;
justify-content: center;
align-items: center;
overflow-y: auto;
.search-result-image {
.select-model-input {
width: 100% !important;
height: auto !important;
.right-input-icon {
padding-right: 12px;
}
}
.search-area-box {
width: 100%;
height: 100%;
padding: 12px;
height: 389px;
background: #181818;
border: @main-border;
border-radius: 8px;
margin-top: 6px;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
row-gap: 12px;
i {
width: 150px;
}
img {
width: 150px;
height: 150px;
border-radius: 8px;
cursor: pointer;
border: 1.5px solid transparent;
transition: border 0.2s;
}
.image-active {
border: 1.5px solid #00f9f9;
transition: border 0.2s;
justify-content: center;
align-items: center;
overflow-y: auto;
.search-result-image {
width: 100%;
height: 100%;
padding: 12px;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
row-gap: 12px;
i {
width: 150px;
}
img {
width: 150px;
height: 150px;
border-radius: 8px;
cursor: pointer;
border: 1.5px solid transparent;
transition: border 0.2s;
}
.image-active {
border: 1.5px solid #00f9f9;
transition: border 0.2s;
}
}
}
}
......
<template>
<div class="custom-chose-model-dialog">
<t-dialog
class="chose-model-dialog"
v-model:visible="visible"
placement="center"
:cancelBtn="null"
>
<template #confirmBtn>
<ResetButton @click="ConfirmEnvent">确认</ResetButton>
</template>
<template #header>
{{ dialog_title }}
</template>
<template #body>
<div class="model-dialog-box">
<CustomInput
v-model="InputValue"
:placeholder="placeholder"
@inputChange="InputChange"
align="left"
class="select-model-input"
>
<template #rightIcon>
<span class="right-input-icon">
<ChevronDown></ChevronDown>
</span>
</template>
</CustomInput>
<div class="search-area-box narrow-scrollbar">
<OnWaitVue
v-if="SearchStatus == 'wait'"
label="未有图片,快去上方输入模特样式吧"
></OnWaitVue>
<OnLoading
v-else-if="SearchStatus == 'loading'"
label="搜索中"
></OnLoading>
<div class="search-result-image" v-else-if="SearchList.list.length">
<img
v-for="item in SearchList.list"
:key="item.image"
:src="item.image"
@click="ChoseModel(item)"
:class="{ 'image-active': item.image == SearchList.image }"
/>
<template
v-for="(item, index) in SearchList.list"
:key="item.image + '1'"
>
<i v-if="index !== SearchList.list.length - 1"></i>
</template>
</div>
<OnWaitVue v-else label="未搜索到模特"></OnWaitVue>
</div>
</div>
</template>
</t-dialog>
<ResetButton class="open-dialog-btn" @click="visible = true">{{
label
}}</ResetButton>
</div>
</template>
<script lang="ts" setup>
import ResetButton from '@/components/custom/resetbutton.vue';
import { Dialog as TDialog } from 'tdesign-vue-next';
import { reactive, ref, watch } from 'vue';
import CustomInput from '@/components/custom/input/index.vue';
import ChevronDown from '@/assets/svg/select/chevron-down.svg';
import OnWaitVue from './ImgLoadingStatus/OnWait.vue';
import OnLoading from './ImgLoadingStatus/OnLoading.vue';
import { debounce } from '@/utils/tool';
import request from '@/utils/request';
import { show_message } from '@/utils/tdesign_tool';
import { getUserCookie } from '@/utils/api/userApi';
const props = withDefaults(
defineProps<{
modelValue: boolean;
dialog_title?: string;
label?: string;
placeholder?: string;
tool_url: string;
}>(),
{
placeholder: '请输入',
label: '选择模特',
dialog_title: '请选择',
}
);
const emit = defineEmits(['update:modelValue', 'SubmitImage']);
const visible = ref(props.modelValue);
const InputValue = ref('');
// 当前搜索状态
const SearchStatus = ref('wait');
const SearchList = reactive({
list: [],
// 当前选择的图片
image: '',
});
// 确认事件
const ConfirmEnvent = () => {
if (!SearchList.image) {
show_message('未选择图片');
return;
}
// 关闭弹窗并提交图片
visible.value = false;
emit('SubmitImage');
};
const Search = async () => {
console.log('开始搜索');
try {
if (!InputValue.value) {
return;
}
if (!props.tool_url) {
show_message('未配置搜索功能');
return;
}
const res: any = await request.post(
props.tool_url,
{
key: InputValue.value,
},
{
headers: {
authorization: `Bearer ${getUserCookie()}`,
},
}
);
// const res:any = await dddd();
// 搜索成功
SearchStatus.value = 'loading';
setTimeout(() => {
SearchList.list = [
{
image:
'data:image/jpeg;base64,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',
},
{
image:
'data:image/jpeg;base64,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',
},
{
image:
'data:image/jpeg;base64,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',
},
{
image:
'data:image/jpeg;base64,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',
},
{
image:
'data:image/jpeg;base64,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',
},
{
image:
'data:image/jpeg;base64,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',
},
];
// success
SearchStatus.value = 'success';
}, 2000);
} catch (e) {
console.log(e);
}
};
// 选择模特
const ChoseModel = (item: any) => {
if (item.image != SearchList.image) {
SearchList.image = item.image;
// 提交图片链接
emit('SubmitModel', SearchList.image);
}
};
// 防抖
const InputChange = debounce(Search, 1000);
watch(
() => props.modelValue,
(v) => {
visible.value = v;
}
);
watch(
() => visible.value,
(v) => {
emit('update:modelValue', v);
}
);
</script>
<style lang="less">
@import '@/style/variables.less';
.custom-chose-model-dialog {
width: 48%;
.open-dialog-btn {
width: 100% !important;
}
.chose-model-dialog {
.t-dialog {
background: #2d2d2d;
border: none;
width: 600px;
.t-dialog__header-content {
color: white;
}
.t-dialog__close {
color: #ddd;
&:hover {
color: #2d2d2d;
}
}
}
.model-dialog-box {
margin-top: 6px;
.select-model-input {
width: 100% !important;
height: auto !important;
color: white;
.right-input-icon {
padding-right: 12px;
}
}
.search-area-box {
width: 100%;
height: 389px;
background: #181818;
border: @main-border;
border-radius: 8px;
margin-top: 6px;
display: flex;
justify-content: center;
align-items: center;
overflow-y: auto;
.search-result-image {
width: 100%;
height: 100%;
padding: 12px;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
row-gap: 12px;
i {
width: 150px;
}
img {
width: 150px;
height: 150px;
border-radius: 8px;
cursor: pointer;
border: 1.5px solid transparent;
transition: border 0.2s;
}
.image-active {
border: 1.5px solid #00f9f9;
transition: border 0.2s;
}
}
}
}
}
}
</style>
......@@ -4,22 +4,36 @@ import { TASKTYPE } from '@/utils/api/Task';
// 跳转产品详情页
export const JumpDetailPage = (item: any) => {
// 本地写死
// item.type = TASKTYPE.MODEL_GENERATION;
item.type = TASKTYPE.MODEL_GENERATION;
// 模板选择
// item.type = TASKTYPE.MODELTEMPLATE;
item.type = TASKTYPE.MODELTEMPLATE;
let path = '';
if (item.type == TASKTYPE.CHAT) {
// if (item.type == TASKTYPE.CHAT) {
// // 文案1
// path = '/CopywritingGeneration';
// } else if (item.type == TASKTYPE.PAINTING) {
// // 绘图2
// path = '/ImageGeneration';
// } else if (item.type == TASKTYPE.MODEL_GENERATION) {
// // 模特生成+换衣 4
// path = '/ModelGeneration';
// } else if (item.type == TASKTYPE.MODELTEMPLATE) {
// // 选择模特模板
// path = '/ModelTemplate';
// }
item.url = 'ModelTemplate';
if (item.url.indexOf('ModelTemplate') !== -1) {
// 选择模特模板
path = '/ModelTemplate';
} else if (item.url.indexOf('ModelGeneration') !== -1) {
// 模特生成
path = '/ModelGeneration';
} else if (item.url.indexOf('CopywritingGeneration') !== -1) {
// 文案1
path = '/CopywritingGeneration';
} else if (item.type == TASKTYPE.PAINTING) {
} else if (item.url.indexOf('ImageGeneration') !== -1) {
// 绘图2
path = '/ImageGeneration';
} else if (item.type == TASKTYPE.MODEL_GENERATION) {
// 模特生成+换衣 4
path = '/ModelGeneration';
} else if (item.type == TASKTYPE.MODELTEMPLATE) {
// 选择模特模板
path = '/ModelTemplate';
}
if (path) {
const url = router.resolve({
......
......@@ -103,7 +103,10 @@ const columns = [
];
// 图片链接
const getImage = (row: any) => {
if (row.response && row.response.url && row.response.url[0]) {
const res = row.response;
// 必须是数组
const is_array = Object.prototype.toString.call(res.url) === '[object Array]';
if (res && res.url && res.url[0] && is_array) {
return row.response.url[0];
}
return imgs.empty;
......
......@@ -29,14 +29,14 @@
flex-direction: column;
.result-img-box {
display: flex;
justify-content: center;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
row-gap: 20px;
width: 100%;
.result-img {
width: 80%;
height: 100%;
width: 48%;
height: 330px;
border-radius: 8px;
.img {
width: 100%;
......@@ -51,7 +51,7 @@
justify-content: space-between;
align-items: flex-end;
.reset-down-load-btn {
width: 48% !important;
width: 100% !important;
border: 2px solid #00dddd !important;
font-weight: 600 !important;
font-size: @font-size-16;
......
......@@ -4,34 +4,18 @@ import CustomResetButton from '@/components/custom/resetbutton.vue';
import OnWait from '@/components/custom/ImgLoadingStatus/OnWait.vue';
import OnLoading from '@/components/custom/ImgLoadingStatus/OnLoading.vue';
import RadioGroup from '@/components/custom/RadioGroup.vue';
import request from '@/utils/request';
export default defineComponent({
props: {
list: Object as any,
SelectImageGroup: Object as any,
status: String,
page_module: Number,
edit_image: String,
},
emits: ['update:page_module', 'update:status', 'update:edit_image'],
emits: ['update:page_module', 'update:status', 'update:edit_image', 'submit'],
setup(props, { emit }) {
// 按钮组
const btn_list = [
{
label: 1,
value: 1,
},
{
label: 2,
value: 2,
},
{
label: 3,
value: 3,
},
{
label: 4,
value: 4,
},
];
const SplitImage = reactive({
// 选择切割第几张图片
value: 1,
......@@ -50,7 +34,6 @@ export default defineComponent({
// 接口回调中提交要修改的图片链接
emit(
'update:edit_image',
// ' https://img1.baidu.com/it/u=1210516829,3619266924&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=750'
new URL('../../../../assets/img/mote2.png', import.meta.url).href
);
resolve('三秒后出现');
......@@ -60,6 +43,10 @@ export default defineComponent({
console.log(e);
}
};
// 提交图片
const SubmitImage = () => {
emit('submit', SplitImage.value);
};
// 图片切割并打开图片合并模块
const Composition = async () => {
// 提交图片切割任务
......@@ -81,7 +68,6 @@ export default defineComponent({
return (
<div class="load-success-box">
<div class="result-img-box narrow-scrollbar">
{/* 结果可选择 */}
{props.list
? props.list.map((item: any) => (
<div class="result-img">
......@@ -90,17 +76,21 @@ export default defineComponent({
))
: ''}
</div>
<RadioGroup
v-model={SplitImage.value}
list={btn_list}
class="chose-img-group"
></RadioGroup>
{Object.keys(props.SelectImageGroup).length ? (
<RadioGroup
v-model={SplitImage.value}
list={props.SelectImageGroup.options}
class="chose-img-group"
></RadioGroup>
) : (
''
)}
<div class="download-img-box">
<CustomResetButton class="reset-next-btn" onClick={Composition}>
图片合成
</CustomResetButton>
<CustomResetButton class="reset-down-load-btn">
下载
<CustomResetButton
class="reset-down-load-btn"
onClick={SubmitImage}
>
提交
</CustomResetButton>
</div>
</div>
......
......@@ -68,7 +68,9 @@
v-model:status="AdminData.status"
v-model:page_module="AdminData.page_module"
v-model:edit_image="AdminData.edit_image"
:list="test_list"
:SelectImageGroup="SelectImageGroup"
:list="AdminData.callback_list"
@submit="SubmitModel"
></GenerateResult>
</div>
</div>
......@@ -91,6 +93,7 @@ import CustomTextArea from '@/components/custom/textarea.vue';
import CustomInput from '@/components/custom/input/index.vue';
import CustomResetButton from '@/components/custom/resetbutton.vue';
import GenerateResult from './components/GenerateResult';
import { useRequest } from '@/utils/http/http';
import {
onBeforeMount,
nextTick,
......@@ -111,35 +114,32 @@ import { Validationrules, ChangePageHeight } from '@/utils/tool';
import { useRoute } from 'vue-router';
import { show_message } from '@/utils/tdesign_tool';
import CompositeImage from './components/CompositeImage.vue';
import request from '@/utils/request';
const loading = ref(false);
const route = useRoute();
// 当前
const id = route.query.id;
// 模特生成测试列表
const test_list = [
'https://img1.baidu.com/it/u=1210516829,3619266924&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=750',
];
// el
const GenerationBox = ref();
// 定时器
let IntervalImg: any = null;
// 本次提交的数量
const CurSubmitNum = ref(0);
// 上传策略状态
const StrategyStatus = ref(false);
// 右侧选择图片按钮组
const SelectImageGroup = ref({});
// 上传策略
const StrategyConfig = ref({});
const AdminData = reactive({
list: [],
// 回调图片列表
callback_list: [],
callback_list: ['http://11', 'http://11', 'http://11', 'http://11'],
/**
* 模特生成状态
* loading-生成中
* success-结束
*/
status: 'success',
status: '',
/**
* 当前显示的模块
* 1--模特生成
......@@ -152,6 +152,8 @@ const AdminData = reactive({
reset_num: 1,
});
const scenario_id = ref();
//当前prompt
const current_prompt = ref('');
// 元素高度和页面高度比较
const getElementHeight = () => {
if (GenerationBox.value) {
......@@ -168,8 +170,6 @@ const getAdminComponent = async () => {
// 取id
scenario_id.value = res.data.id;
let list = res.data.form;
// 测试用的数据
list = FormExample3;
if (list.length) {
// 修改数据
list.forEach((item: any) => {
......@@ -198,6 +198,10 @@ const getAdminComponent = async () => {
if (!it.value) {
it.value = '';
}
if (it.name == 'select_image') {
// 将列表传给右侧模块
SelectImageGroup.value = it;
}
});
});
} else {
......@@ -234,6 +238,24 @@ watch(
}
}
);
// 提交模特
const SubmitModel = async (index: number) => {
const url = SelectImageGroup.value.tool_url;
if (!url) {
show_message('tool_url empty');
}
let params: any = {};
params.prompt = current_prompt.value;
const newIndex = parseInt(index + '') - 1;
params.url = AdminData.callback_list[newIndex];
try {
// 提交
const res: any = await useRequest('post', url, params);
console.log(res);
} catch (e) {
console.log(e);
}
};
// 获取图片回调
const ImageCallback = async (uuid: string) => {
try {
......@@ -247,10 +269,7 @@ const ImageCallback = async (uuid: string) => {
if (res.data.image.length > AdminData.callback_list.length) {
AdminData.callback_list = res.data.image;
}
if (
res.data.image.length == 4 ||
res.data.image.length == CurSubmitNum.value
) {
if (res.data.image.length == 4) {
// 关闭定时器
closeInterval();
}
......@@ -300,10 +319,10 @@ const onSubmit = async (params: any) => {
parameters: params,
});
if (res.code == 0) {
// 记录本次提交的数量
CurSubmitNum.value = params.number;
// 开启定时器
openInterval(res.data.uuid);
// 保存prompt
current_prompt.value = res.data.prompt;
AdminData.status = 'loading';
}
console.log(res);
......
......@@ -48,11 +48,19 @@
></CustomInput>
</template>
<template v-else-if="it.component_type == 'select_model'">
<SelectModel
<!-- -->
<SelectModelDialog
v-model="it.dialog_visible"
:label="it.label"
:dialog_title="it.dialog_title"
:placeholder="it.placeholder"
:tool_url="it.tool_url"
@SubmitModel="SubmitModel"
></SelectModel>
></SelectModelDialog>
</template>
<template v-else-if="it.component_type == 'button'">
<CustomResetButton width="48%">{{
it.label
}}</CustomResetButton>
</template>
<template v-else-if="it.component_type == 'local_upload'">
<LocalUpload @SubmitImg="SubmitImg"></LocalUpload>
......@@ -96,9 +104,9 @@ import CustomSelect from '@/components/custom/Select.vue';
import CustomTextArea from '@/components/custom/textarea.vue';
import CustomInput from '@/components/custom/input/index.vue';
import CustomResetButton from '@/components/custom/resetbutton.vue';
import SelectModel from '@/components/custom/SelectModel.vue';
import CustomGenerateResult from './components/GenerateResult';
import LocalUpload from '@/components/custom/LocalUpload.vue';
import SelectModelDialog from '@/components/custom/SelectModelDialog.vue';
import {
nextTick,
onBeforeMount,
......@@ -173,7 +181,6 @@ const getAdminComponent = async () => {
// 取id
scenario_id.value = res.data.id;
let list = res.data.form;
list = FormExample4;
if (list.length) {
// 修改数据
list.forEach((item: any) => {
......@@ -196,6 +203,8 @@ const getAdminComponent = async () => {
it.component_type = 'select_model';
} else if (it.type == 'local_upload') {
it.component_type = 'local_upload';
} else if (it.type == 'button') {
it.component_type = 'button';
}
// 判断value的值
if (!it.value) {
......
import axios from 'axios';
import { MessagePlugin } from 'tdesign-vue-next';
const instance = axios.create({
timeout: 6000000,
// withCredentials: mode == 'development' ? false : true,
withCredentials: false,
});
// 请求头
instance.interceptors.request.use((config: any) => {
return config;
});
instance.interceptors.response.use(
(response) => {
const { data } = response;
if (data.code === 0) {
return data;
} else {
MessagePlugin.error(data.msg || '请求错误');
return Promise.reject(data.msg);
}
},
(err) => {
console.log(err);
if ('response' in err) {
const { message: msg } = err.response.data;
MessagePlugin.error(msg || '请求错误');
return err.response;
}
}
);
export default instance;
......@@ -207,12 +207,10 @@ export const FormExample2 = [
placeholder: '详细描述产品细节,生成的文案更加完美。',
options: [
{
size: '1600x1600',
label: '亚马逊产品图尺寸',
value: '1600x1600',
},
{
size: '600x180',
label: '亚马逊a+主图',
value: '600x180',
},
......@@ -325,15 +323,17 @@ export const FormExample4 = [
name: '模特样式',
lists: [
{
// 选择模特
// 选择模特弹窗
type: 'select_model',
name: 'model_1',
label: '模特样式',
value: null,
label: '选择模特',
value: '',
span: 24,
tool_url: 'http://ai-gpt.test/api/users/photo/search',
dialog_title: '请选择一个模特',
placeholder:
'输入模特性别、区域、服装类别 “例如:女模特、亚洲、连衣裙”',
tool_url: '',
dialog_visible: false,
rules: [
{
type: 'required',
......@@ -341,6 +341,17 @@ export const FormExample4 = [
},
],
},
{
// 跳转到生成页面
type: 'button',
name: 'model_2',
label: '模特生成',
value: '',
span: 24,
tool_url: '',
dialog_title: '请选择一个模特',
rules: [],
},
],
},
// 图片尺寸
......@@ -357,12 +368,10 @@ export const FormExample4 = [
placeholder: '详细描述产品细节,生成的文案更加完美。',
options: [
{
size: '1600x1600',
label: '亚马逊产品图尺寸',
value: '1600x1600',
},
{
size: '600x180',
label: '亚马逊a+主图',
value: '600x180',
},
......
import { RequestMethodResponse } from 'tdesign-vue-next';
import { v4 } from 'uuid';
import request from '@/utils/otherRequest';
import request2 from '@/utils/OutsideRequest';
import { getUserCookie } from '../api/userApi';
/**
* 可复用的http请求
......@@ -53,3 +55,30 @@ export const UploadImageToAly = (config: any, file: File) => {
}, 1000);
});
};
// 请求外部链接
export const useRequest = (
type: 'get' | 'post',
url: string,
data: any,
needToken: boolean = true
) => {
if (type == 'get') {
return request2.get(url, {
params: data,
headers: needToken
? {
authorization: `Bearer ${getUserCookie()}`,
}
: {},
});
} else if (type == 'post') {
return request2.post(url, data, {
headers: needToken
? {
authorization: `Bearer ${getUserCookie()}`,
}
: {},
});
}
};
......@@ -13,7 +13,7 @@ export default defineConfig(({ mode }) => {
const newDate = `${date.getFullYear()}-${
date.getMonth() + 1
}-${date.getDate()}--${date.getHours()}.${date.getMinutes()}`;
const api = 1 ? 'http://45.207.61.22:91' : 'http://ai-gpt.test';
const api = 0 ? 'http://45.207.61.22:91' : 'http://ai-gpt.test';
return {
base: '/',
resolve: {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment