This commit is contained in:
quantulr
2022-10-19 00:22:03 +08:00
parent 656b6ef510
commit fd5e278fa7
12 changed files with 477 additions and 139 deletions

Binary file not shown.

View File

@ -74,6 +74,6 @@ export function serviceCaseEdit(data) {
export function serviceCaseDelete(ids) { export function serviceCaseDelete(ids) {
return request({ return request({
url: `/business/solutionCase/${ids}`, url: `/business/solutionCase/${ids}`,
method: "post", method: "delete",
}); });
} }

View File

@ -28,7 +28,8 @@ import {
watch, watch,
} from "vue"; } from "vue";
import { Editor, Toolbar } from "@wangeditor/editor-for-vue"; import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
import request from "@/utils/request";
import { getToken } from "@/utils/auth";
export default { export default {
components: { Editor, Toolbar }, components: { Editor, Toolbar },
props: { props: {
@ -76,26 +77,45 @@ export default {
); );
const { height } = toRefs(props); const { height } = toRefs(props);
const toolbarConfig = { const toolbarConfig = {
toolbarKeys: [ // toolbarKeys: [
"bold", // "bold",
"underline", // "underline",
"italic", // "italic",
"through", // "through",
"color", // "color",
"bgColor", // "bgColor",
"fontSize", // "fontSize",
"fontFamily", // "fontFamily",
"lineHeight", // "lineHeight",
// "emotion", // "uploadImage",
// "redo", // // "emotion",
// "undo", // // "redo",
], // // "undo",
// ],
}; };
const editorConfig = { const editorConfig = {
placeholder: "请输入内容...", placeholder: "请输入内容...",
autoFocus: props.focus, autoFocus: props.focus,
maxLength: 140, maxLength: 140,
readOnly: props.readOnly, readOnly: props.readOnly,
MENU_CONF: {
uploadImage: {
async customUpload(file, insertFn) {
const fd = new FormData();
fd.append("file", file);
const resp = await request({
url: "/common/upload",
method: "post",
data: fd,
headers: {
Authorization: "Bearer " + getToken(),
},
});
insertFn(resp.url, "", resp.url);
},
},
},
}; };
onMounted(() => { onMounted(() => {
// console.log(editorRef.value.getConfig()); // console.log(editorRef.value.getConfig());
@ -110,6 +130,7 @@ export default {
const handleCreated = (editor) => { const handleCreated = (editor) => {
editorRef.value = editor; // 记录 editor 实例,重要! editorRef.value = editor; // 记录 editor 实例,重要!
console.log(editorRef.value.getAllMenuKeys());
}; };
const handleChange = (editor) => { const handleChange = (editor) => {

View File

@ -35,19 +35,19 @@ export const enterpriseOptions = [
]; ];
// 成果成熟度 技术 // 成果成熟度 技术
export const maturityOptions = [ export const maturityOptions = [
{ key: 1, value: "正在研发" }, { key: "1", value: "正在研发" },
{ key: 2, value: "小试阶段" }, { key: "2", value: "小试阶段" },
{ key: 3, value: "通过小试" }, { key: "3", value: "通过小试" },
{ key: 4, value: "中试阶段" }, { key: "4", value: "中试阶段" },
{ key: 5, value: "通过中试" }, { key: "5", value: "通过中试" },
{ key: 6, value: "可规模生产" }, { key: "6", value: "可规模生产" },
]; ];
// 成果领先型 领先标准 // 成果领先型 领先标准
export const leadOptions = [ export const leadOptions = [
{ key: 1, value: "国内先进" }, { key: "1", value: "国内先进" },
{ key: 2, value: "国内领先" }, { key: "2", value: "国内领先" },
{ key: 3, value: "国际先进" }, { key: "3", value: "国际先进" },
{ key: 4, value: "国际领先" }, { key: "4", value: "国际领先" },
]; ];
// 专利类型 // 专利类型
export const patentOptions = [ export const patentOptions = [
@ -57,13 +57,13 @@ export const patentOptions = [
]; ];
// 合作模式 // 合作模式
export const cooperationOptions = [ export const cooperationOptions = [
{ key: 101, value: "技术转让" }, { key: "101", value: "技术转让" },
{ key: 102, value: "技术许可" }, { key: "102", value: "技术许可" },
{ key: 103, value: "技术入股" }, { key: "103", value: "技术入股" },
{ key: 104, value: "合作开发" }, { key: "104", value: "合作开发" },
{ key: 105, value: "融资" }, { key: "105", value: "融资" },
{ key: 106, value: "公司" }, { key: "106", value: "公司" },
{ key: 107, value: "代理加盟" }, { key: "107", value: "代理加盟" },
{ key: 108, value: "市场推广" }, { key: "108", value: "市场推广" },
{ key: 109, value: "其他" }, { key: "109", value: "其他" },
]; ];

View File

@ -154,5 +154,30 @@ export function download(url, params, filename) {
downloadLoadingInstance.close(); downloadLoadingInstance.close();
}) })
} }
export function customDownload(url, params, filename) {
downloadLoadingInstance = ElLoading.service({ text: "正在下载数据,请稍候", background: "rgba(0, 0, 0, 0.7)", })
return service.get(url, params, {
baseURL:"",
transformRequest: [(params) => { return tansParams(params) }],
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
responseType: 'blob'
}).then(async (data) => {
const isLogin = await blobValidate(data);
if (isLogin) {
const blob = new Blob([data])
saveAs(blob, filename)
} else {
const resText = await data.text();
const rspObj = JSON.parse(resText);
const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
ElMessage.error(errMsg);
}
downloadLoadingInstance.close();
}).catch((r) => {
console.error(r)
ElMessage.error('下载文件出现错误,请联系管理员!')
downloadLoadingInstance.close();
})
}
export default service export default service

View File

@ -11,9 +11,9 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="企业名称:" prop="title"> <el-form-item label="企业名称:" prop="enterpriseName">
<el-input <el-input
v-model="form.title" v-model="form.enterpriseName"
placeholder="请输入企业名称" placeholder="请输入企业名称"
></el-input> ></el-input>
</el-form-item> </el-form-item>
@ -51,7 +51,7 @@
v-model="form" v-model="form"
title="应用客户" title="应用客户"
placeholder="请输入应用客户" placeholder="请输入应用客户"
fieldKey="customer" fieldKey="customers"
ref="customerForm" ref="customerForm"
:disabled="true" :disabled="true"
/> />
@ -77,9 +77,9 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="成果领先性:" prop="lead_standard"> <el-form-item label="成果领先性:" prop="leadStandard">
<el-select <el-select
v-model="form.lead_standard" v-model="form.leadStandard"
clearable clearable
placeholder="请选择成果领先性" placeholder="请选择成果领先性"
> >
@ -98,7 +98,7 @@
<el-col :span="24"> <el-col :span="24">
<el-form-item label="合作模式:"> <el-form-item label="合作模式:">
<el-select <el-select
v-model="form.cooperation_mode" v-model="form.cooperationMode"
clearable clearable
placeholder="请选择合作模式" placeholder="请选择合作模式"
> >
@ -149,7 +149,13 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="产品图片:" prop="image"> <el-form-item label="产品图片:" prop="image">
<ImageUpload v-model="form.image" :limit="1" :disabled="true" /> <!-- <ImageUpload v-model="form.image" :limit="1" :disabled="true" /> -->
<el-link
:disabled="!form.image"
type="primary"
@click="downloadProductImage"
>下载产品图片</el-link
>
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- <el-col :span="12"> <!-- <el-col :span="12">
@ -163,17 +169,23 @@
</el-form-item> </el-form-item>
</el-col> --> </el-col> -->
</el-row> </el-row>
<p> <!-- <p>
<b>图片材料上传</b> <b>图片材料上传</b>
</p> </p> -->
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="成熟度证明材料:"> <el-form-item label="成熟度证明材料:">
<FileUpload <!-- <FileUpload
v-model="form.file" v-model="form.file"
:limit="1" :limit="1"
:fileType="['doc', 'xls', 'ppt', 'txt', 'pdf', 'jpg']" :fileType="['doc', 'xls', 'ppt', 'txt', 'pdf', 'jpg']"
/> /> -->
<el-link
:disabled="!form.material"
type="primary"
@click="downloadProductMaterial"
>下载成熟度证明材料</el-link
>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -201,6 +213,7 @@ import {
} from "@/utils/parameter"; } from "@/utils/parameter";
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { customDownload } from "@/utils/request";
// import WangEditor from "@/components/WangEditor/index.vue"; // import WangEditor from "@/components/WangEditor/index.vue";
// const isAdd = ref(false); // const isAdd = ref(false);
const route = useRoute(); const route = useRoute();
@ -231,6 +244,18 @@ const getDetail = async (id) => {
if (route.query.id) { if (route.query.id) {
getDetail(route.query.id); getDetail(route.query.id);
} }
const downloadProductImage = () => {
const filename =
form.value.image.split("/")[form.value.image.split("/").length - 1];
customDownload(form.value.image, {}, filename);
};
const downloadProductMaterial = () => {
const filename =
form.value.material.split("/")[form.value.material.split("/").length - 1];
const baseUrl = import.meta.env.VITE_APP_BASE_API;
customDownload(`/file${form.value.material}`, {}, filename);
};
const submitForm = async (status) => { const submitForm = async (status) => {
await updateEnterpriseApprovalProduct({ ...form.value, status }); await updateEnterpriseApprovalProduct({ ...form.value, status });
let successMessage; let successMessage;

View File

@ -51,7 +51,7 @@
<el-table-column <el-table-column
label="所属企业" label="所属企业"
align="center" align="center"
prop="enterprise" prop="enterpriseName"
></el-table-column> ></el-table-column>
<el-table-column label="站点" align="center"> <el-table-column label="站点" align="center">
<template #default="{ row }"> <template #default="{ row }">

View File

@ -0,0 +1,132 @@
<!-- 企业需求弹框 -->
<template>
<el-dialog title="基本信息" v-model="isShow">
<el-form label-width="150px">
<el-form-item label="所属企业">
<el-input placeholder="请输入所属企业"></el-input>
</el-form-item>
<el-form-item label="所属需求名称">
<el-input
placeholder="请输入所属需求名称"
v-model="modelValue.title"
></el-input>
</el-form-item>
<el-form-item label="需求描述">
<Editor v-model="modelValue.introduce"></Editor>
</el-form-item>
<el-form-item label="行业分类">
<el-select placeholder="请输入" style="width: 100px">
<el-option></el-option>
</el-select>
<el-select placeholder="请输入" style="width: 100px">
<el-option></el-option>
</el-select>
<el-select placeholder="请输入" style="width: 100px">
<el-option></el-option>
</el-select>
<el-select placeholder="请输入" style="width: 100px">
<el-option></el-option>
</el-select>
</el-form-item>
<el-form-item label="需求类别">
<el-checkbox-group v-model="modelValue.kinds">
<el-checkbox
v-for="item in checkList"
:key="item.id"
:label="item.name"
>{{ item.name }}</el-checkbox
>
</el-checkbox-group>
<!-- <el-checkbox-group v-model="checkList">
<el-checkbox label="成果难题解决" />
<el-checkbox label="成果储备/项目投资" />
<el-checkbox label="新成果开发" />
<el-checkbox label="校验检测" />
<el-checkbox label="其他" />
</el-checkbox-group> -->
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item
label="成果需求预算:"
:prop="modelValue.budgetMode == 1 ? 'budget' : ''"
>
<el-input
v-model="modelValue.budget"
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')"
placeholder="请输入技术需求预算"
>
<template #append>万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="50px">
<el-checkbox
false-label="1"
true-label="2"
v-model="modelValue.budgetMode"
>面议</el-checkbox
>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="截至时间">
<el-input placeholder="请输入"></el-input>
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="需求联系人">
<el-input placeholder="请输入"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系人手机号码">
<el-input placeholder="请输入"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="想合作的企业及模式">
<el-input placeholder="请输入"></el-input>
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button type="primary">驳回</el-button>
<el-button type="primary">通过需求</el-button>
</el-row>
</el-dialog>
</template>
<script setup>
import Editor from "@/components/WangEditor";
import { ref, toRefs } from "vue";
const props = defineProps({
isShow: {
type: Boolean,
required: true,
},
modelValue: {
type: Object,
required: true,
},
});
const { isShow, modelValue } = toRefs(props);
const checkList = reactive([
{
id: 1,
name: "成果推广",
},
{
id: 2,
name: "关键成果解决",
},
{
id: 3,
name: "对接专家院士",
},
{
id: 4,
name: "上市辅导",
},
]);
</script>
<style></style>

View File

@ -1,60 +1,159 @@
<!-- 企业需求弹框 --> <!-- 企业需求弹框 -->
<template> <template>
<el-dialog title="基本信息" v-model="isShow"> <el-dialog title="基本信息" v-model="isShow">
<el-form label-width="150px"> <el-form ref="formRef" :model="modelValue" :label-width="labelWidth + 'px'">
<el-form-item label="所属企业"> <p><b>基本信息</b></p>
<el-input placeholder=""></el-input>
</el-form-item>
<el-form-item label="所属需求名称">
<el-input placeholder=""></el-input>
</el-form-item>
<el-form-item label="需求描述">
<Editor></Editor>
</el-form-item>
<el-form-item label="行业分类">
<el-select placeholder="" style="width: 100px;">
<el-option></el-option>
</el-select>
<el-select placeholder="" style="width: 100px;">
<el-option></el-option>
</el-select>
<el-select placeholder="" style="width: 100px;">
<el-option></el-option>
</el-select>
<el-select placeholder="" style="width: 100px;">
<el-option></el-option>
</el-select>
</el-form-item>
<el-form-item label="需求类别">
<el-checkbox-group v-model="checkList">
<el-checkbox label="成果难题解决" />
<el-checkbox label="成果储备/项目投资" />
<el-checkbox label="新成果开发" />
<el-checkbox label="校验检测" />
<el-checkbox label="其他" />
</el-checkbox-group>
</el-form-item>
<el-form-item label="成果需求预算">
<el-input style="width: 200px;" placeholder=""></el-input>万元&nbsp;<input type="checkbox">面议
</el-form-item>
<el-form-item label="截至时间">
<el-input placeholder=""></el-input>
</el-form-item>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="24">
<el-form-item label="需求联系人"> <el-form-item label="成果需求名称:" prop="title">
<el-input placeholder=""></el-input> <el-input v-model="modelValue.title"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系人手机号码">
<el-input placeholder=""></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-form-item label="想合作的企业及模式">
<el-input placeholder=""></el-input> <el-row>
<el-col :span="24">
<!-- <el-checkbox label="0" @change="handleCheck">其他</el-checkbox> -->
<el-form-item label="需求类别:">
<el-checkbox-group v-model="modelValue.kinds">
<el-checkbox
v-for="item in checkList"
:key="item.id"
:label="item.name"
>{{ item.name }}</el-checkbox
>
</el-checkbox-group>
<!-- <el-row :gutter="20">
<el-col :span="20">
<el-input
v-model="checkInput"
placeholder="请输入需求类别"
></el-input>
</el-col>
<el-col :span="4">
<el-button type="primary" @click="addCheck">添加</el-button>
</el-col>
</el-row> -->
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="需求描述:" prop="introduce">
<!-- <Editor v-model="modelValue.add" :minHeight="150" /> -->
<wangEditor
v-model="modelValue.introduce"
width="100%"
min-height="150px"
></wangEditor>
</el-form-item>
</el-col>
</el-row>
<!-- <CityOptions
v-model="form"
:labelWidth="labelWidth"
ref="cityForm"
/> -->
<FieldOptions
v-model="modelValue"
:labelWidth="labelWidth"
ref="fieldFormRef"
/>
<el-row>
<el-col :span="12">
<el-form-item
label="成果需求预算:"
:prop="modelValue.budgetMode == 1 ? 'budget' : ''"
>
<el-input
v-model="modelValue.budget"
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')"
placeholder="请输入技术需求预算"
>
<template #append>万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="50px">
<el-checkbox
false-label="1"
true-label="2"
v-model="modelValue.budgetMode"
>面议</el-checkbox
>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="截止时间:" prop="deadline">
<el-date-picker
style="width: 100%"
v-model="modelValue.deadline"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择截止时间"
>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="需求联系人:" prop="name">
<el-input
v-model="modelValue.name"
placeholder="请输入需求联系人"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系人手机号:" prop="mobile">
<el-input
v-model="modelValue.mobile"
placeholder="请输入联系人手机号"
></el-input>
</el-form-item>
</el-col>
</el-row>
<!-- <el-row>
<el-col :span="12">
<el-form-item label="需求提交人:" prop="commitUserName">
<el-input
v-model="modelValue.commitUserName"
placeholder="请输入需求提交人"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="需求提交人手机号:" prop="commitUserPhone">
<el-input
v-model="modelValue.commitUserPhone"
placeholder="请输入需求提交人手机号"
></el-input>
</el-form-item>
</el-col>
</el-row> -->
<el-row>
<el-col :span="24">
<InputBoxAdd
:labelWidth="labelWidth"
v-model="modelValue"
title="想合作的单位及模式"
placeholder=""
fieldKey="wants"
ref="directionsFormRef"
/>
</el-col>
</el-row>
</el-form> </el-form>
<el-row type="flex" justify="end"> <el-row type="flex" justify="end">
<el-button type="primary">驳回</el-button> <el-button type="primary">驳回</el-button>
@ -63,14 +162,39 @@
</el-dialog> </el-dialog>
</template> </template>
<script setup> <script setup>
import Editor from '@/components/WangEditor' import WangEditor from "@/components/WangEditor";
import { ref } from 'vue'; import FieldOptions from "@/views/components/FieldOptions";
import InputBoxAdd from "@/views/components/InputBoxAdd";
import { ref, toRefs } from "vue";
const props = defineProps({ const props = defineProps({
isShow: { isShow: {
type: Boolean, type: Boolean,
required:true required: true,
} },
}) modelValue: {
const checkList=ref([]) type: Object,
required: true,
},
});
const { isShow, modelValue } = toRefs(props);
const labelWidth = 160;
const checkList = reactive([
{
id: 1,
name: "成果推广",
},
{
id: 2,
name: "关键成果解决",
},
{
id: 3,
name: "对接专家院士",
},
{
id: 4,
name: "上市辅导",
},
]);
</script> </script>
<style></style> <style></style>

View File

@ -82,7 +82,7 @@
></el-table-column> ></el-table-column>
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-button type="text" @click="shenpi(row.id)">审批</el-button> <el-button type="text" @click="approval(row)">审批</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -96,7 +96,7 @@
/> />
<!-- 审批详情 --> <!-- 审批详情 -->
<Edialog :is-show="isShow"></Edialog> <Edialog :is-show="isShow" v-model="demandForm"></Edialog>
</div> </div>
</template> </template>
<script setup> <script setup>
@ -105,24 +105,35 @@ import Edialog from "../../views/components/Businessneeds/Approvaldetails.vue";
import SiteOptions from "@/views/components/SiteOptions"; import SiteOptions from "@/views/components/SiteOptions";
import { tenantSelect } from "@/api/subPlatform/tenant"; import { tenantSelect } from "@/api/subPlatform/tenant";
import { ref, toRefs, defineComponent } from "vue"; import { ref, toRefs, defineComponent } from "vue";
import { cloneDeep } from "lodash";
const data = reactive({ const data = reactive({
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
status: 0, status: 0,
}, },
demandForm: {},
}); });
const siteList = ref([]); const siteList = ref([]);
const dataList = ref([]); const dataList = ref([]);
const total = ref(0); const total = ref(0);
const isShow = ref(false); const isShow = ref(false);
const { queryParams } = toRefs(data); const { queryParams, demandForm } = toRefs(data);
const queryFormRef = ref();
const getList = async () => { const getList = async () => {
const resp = await businessList(queryParams.value); const resp = await businessList(queryParams.value);
dataList.value = resp.rows; dataList.value = resp.rows;
total.value = resp.total; total.value = resp.total;
}; };
const shenpi = () => { const approval = (row) => {
demandForm.value = cloneDeep(row);
if (!row.kinds) {
demandForm.value.kinds = row.kind?.split(",") ?? [];
}
// if (!row.industrys) {
// demandForm.value.industrys = row.;
// }
isShow.value = true; isShow.value = true;
}; };

View File

@ -1,27 +1,27 @@
import { defineConfig, loadEnv } from 'vite' import { defineConfig, loadEnv } from "vite";
import path from 'path' import path from "path";
import createVitePlugins from './vite/plugins' import createVitePlugins from "./vite/plugins";
// https://vitejs.dev/config/ // https://vitejs.dev/config/
export default defineConfig(({ mode, command }) => { export default defineConfig(({ mode, command }) => {
const env = loadEnv(mode, process.cwd()) const env = loadEnv(mode, process.cwd());
const { VITE_APP_ENV } = env const { VITE_APP_ENV } = env;
return { return {
// 部署生产环境和开发环境下的URL。 // 部署生产环境和开发环境下的URL。
// 默认情况下vite 会假设你的应用是被部署在一个域名的根路径上 // 默认情况下vite 会假设你的应用是被部署在一个域名的根路径上
// 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。 // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
base: VITE_APP_ENV === 'production' ? '/' : '/', base: VITE_APP_ENV === "production" ? "/" : "/",
plugins: createVitePlugins(env, command === 'build'), plugins: createVitePlugins(env, command === "build"),
resolve: { resolve: {
// https://cn.vitejs.dev/config/#resolve-alias // https://cn.vitejs.dev/config/#resolve-alias
alias: { alias: {
// 设置路径 // 设置路径
'~': path.resolve(__dirname, './'), "~": path.resolve(__dirname, "./"),
// 设置别名 // 设置别名
'@': path.resolve(__dirname, './src') "@": path.resolve(__dirname, "./src"),
}, },
// https://cn.vitejs.dev/config/#resolve-extensions // https://cn.vitejs.dev/config/#resolve-extensions
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'] extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"],
}, },
// vite 相关配置 // vite 相关配置
server: { server: {
@ -30,30 +30,30 @@ export default defineConfig(({ mode, command }) => {
// open: true, // open: true,
proxy: { proxy: {
// https://cn.vitejs.dev/config/#server-proxy // https://cn.vitejs.dev/config/#server-proxy
'/dev-api': { "/dev-api": {
// target: 'http://120.26.107.74:1618', // target: 'http://120.26.107.74:1618',
target: 'http://172.18.3.127:1618', target: "http://101.34.131.16:1618",
changeOrigin: true, changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, '') rewrite: (p) => p.replace(/^\/dev-api/, ""),
} },
} },
}, },
//fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file //fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file
css: { css: {
postcss: { postcss: {
plugins: [ plugins: [
{ {
postcssPlugin: 'internal:charset-removal', postcssPlugin: "internal:charset-removal",
AtRule: { AtRule: {
charset: (atRule) => { charset: (atRule) => {
if (atRule.name === 'charset') { if (atRule.name === "charset") {
atRule.remove(); atRule.remove();
} }
} },
} },
} },
] ],
} },
} },
} };
}) });

Binary file not shown.