bug fix and performance improvements

This commit is contained in:
quantulr
2023-08-08 14:28:14 +08:00
parent 7958e48512
commit 45ed576dfa
31 changed files with 111968 additions and 222 deletions

File diff suppressed because one or more lines are too long

111599
src/assets/world.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -216,7 +216,7 @@ watch(
pagePath.value = route.path; pagePath.value = route.path;
const switchLocale = () => { const switchLocale = () => {
settingsStore.toggleLocale() settingsStore.toggleLocale();
// if (settingsStore.locale === "zh") { // if (settingsStore.locale === "zh") {
// settingsStore.setLocale("ru"); // settingsStore.setLocale("ru");
// } else if (settingsStore.locale === "ru") { // } else if (settingsStore.locale === "ru") {

View File

@ -15,13 +15,16 @@
<script setup> <script setup>
import { getCodeImg } from "@/api/login"; import { getCodeImg } from "@/api/login";
import { computed } from "vue";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const props = defineProps({ const props = defineProps({
mobile: String, mobile: String,
}); });
const disabled = ref(true); const disabled = ref(true);
const buttonName = ref("获取验证码"); const buttonName = ref(t("login.getVerificationCode"));
const isDisabled = ref(false); const isDisabled = ref(false);
const time = ref(60); const time = ref(60);
@ -56,11 +59,13 @@ function getCode() {
width: 30%; width: 30%;
height: 38px; height: 38px;
float: right; float: right;
img { img {
cursor: pointer; cursor: pointer;
vertical-align: middle; vertical-align: middle;
} }
} }
.login-code-img { .login-code-img {
height: 36px; height: 36px;
} }

View File

@ -866,7 +866,8 @@ export const laboratoryRoutes = [
}, },
{ {
path: "release", path: "release",
component: () => import("@/views/admin/laboratory/research/achievement/release"), component: () =>
import("@/views/admin/laboratory/research/achievement/release"),
hidden: true, hidden: true,
name: "Release", name: "Release",
meta: { meta: {

View File

@ -362,3 +362,36 @@ export const cooperationOptions = [
ru: "Другие", ru: "Другие",
}, },
]; ];
export const countryOptions = [
{
key: "zh",
zh: "中国",
ru: "Китай",
},
{
key: "ru",
zh: "俄罗斯",
ru: "Россия",
},
{
key: "tj",
zh: "塔吉克斯坦",
ru: "Таджикистан",
},
{
key: "kg",
zh: "土库曼斯坦",
ru: "Туркменистан",
},
{
key: "uz",
zh: "乌兹别克斯坦",
ru: "Узбекистан",
},
{
key: "kz",
zh: "哈萨克斯坦",
ru: "Казахстан",
},
];

View File

@ -86,6 +86,7 @@
</el-col> </el-col>
</el-row> </el-row>
<!-- COMPLETED:-->
<!-- <CityOptions <!-- <CityOptions
v-model="form" v-model="form"
:labelWidth="labelWidth" :labelWidth="labelWidth"

View File

@ -90,6 +90,21 @@
:labelWidth="labelWidth" :labelWidth="labelWidth"
ref="cityFormRef" ref="cityFormRef"
></city-options>--> ></city-options>-->
<!-- TODO:-->
<!-- <el-form-item :label="t('admin.form.country')" prop="country">
<el-select
v-model="form.country"
:placeholder="
t('admin.form.pleaseSelect', { type: t('admin.form.country') })
"
>
<el-option
v-for="option in countryOptions"
:label="option[locale]"
:value="option.key"
/>
</el-select>
</el-form-item>-->
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
@ -241,8 +256,9 @@ import {
updateTechnologyDemand, updateTechnologyDemand,
} from "@/api/admin/enterprise/demand"; } from "@/api/admin/enterprise/demand";
import tab from "@/plugins/tab"; import tab from "@/plugins/tab";
import { countryOptions } from "@/utils/parameter";
const { t } = useI18n(); const { t, locale } = useI18n();
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
const data = reactive({ const data = reactive({

View File

@ -92,15 +92,15 @@
@click="handleResults(row)" @click="handleResults(row)"
>{{ t("webSearch.viewMatchingResults") }} >{{ t("webSearch.viewMatchingResults") }}
</el-button> </el-button>
<!-- <el-button--> <!-- <el-button-->
<!-- v-if="queryParams.status == 1"--> <!-- v-if="queryParams.status == 1"-->
<!-- disabled--> <!-- disabled-->
<!-- size="small"--> <!-- size="small"-->
<!-- type="text"--> <!-- type="text"-->
<!-- icon="View"--> <!-- icon="View"-->
<!-- @click="checkEnterpriseInfo(row.id)"--> <!-- @click="checkEnterpriseInfo(row.id)"-->
<!-- >{{ t("tips.browseEnterpriseInformation") }}--> <!-- >{{ t("tips.browseEnterpriseInformation") }}-->
<!-- </el-button>--> <!-- </el-button>-->
<el-button <el-button
v-if="queryParams.status == 0" v-if="queryParams.status == 0"
size="small" size="small"

View File

@ -98,20 +98,21 @@
:title="t('webSearch.applicationCustomers')" :title="t('webSearch.applicationCustomers')"
/> />
<!-- <CityOptions-->
<!-- ref="cityFormRef"-->
<!-- v-model="modelValue"-->
<!-- :labelWidth="labelWidth"-->
<!-- ></CityOptions>-->
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item :label="t('admin.form.country')" prop="country"> <el-form-item :label="t('admin.form.country')" prop="country">
<el-input <el-select
v-model="modelValue.country" v-model="modelValue.country"
:placeholder=" :placeholder="
t('admin.form.placeholder', { type: t('admin.form.country') }) t('admin.form.pleaseSelect', { type: t('admin.form.country') })
" "
></el-input> >
<el-option
v-for="option in countryOptions"
:label="option[locale]"
:value="option.key"
/>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -288,6 +289,7 @@ import FieldOptions from "@/views/components/FieldOptions";
import InputBoxAdd from "@/views/components/InputBoxAdd"; import InputBoxAdd from "@/views/components/InputBoxAdd";
import { import {
cooperationOptions, cooperationOptions,
countryOptions,
leadOptions, leadOptions,
maturityOptions, maturityOptions,
} from "@/utils/parameter"; } from "@/utils/parameter";

View File

@ -85,11 +85,21 @@
</el-col> </el-col>
</el-row> </el-row>
<!-- <CityOptions <!--COMPLETED-->
v-model="formData" <!-- <el-form-item :label="t('admin.form.country')" prop="country">
:labelWidth="labelWidth" <el-select
ref="cityFormRef" v-model="formData.country"
/> --> :placeholder="
t('admin.form.pleaseSelect', { type: t('admin.form.country') })
"
>
<el-option
v-for="option in countryOptions"
:label="option[locale]"
:value="option.key"
/>
</el-select>
</el-form-item>-->
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
@ -153,7 +163,7 @@ import {
insertDemand, insertDemand,
updateDemand, updateDemand,
} from "@/api/admin/expert/demand"; } from "@/api/admin/expert/demand";
import { demandCategoryList } from "@/utils/parameter"; import { countryOptions, demandCategoryList } from "@/utils/parameter";
import { uniqueId } from "lodash"; import { uniqueId } from "lodash";
import tab from "@/plugins/tab"; // import CityOptions from "@/views/components/CityOptions"; import tab from "@/plugins/tab"; // import CityOptions from "@/views/components/CityOptions";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";

View File

@ -116,6 +116,7 @@
" "
/> />
</el-form-item> </el-form-item>
<!-- COMPLETED -->
<!-- <div class="hide_required"> <!-- <div class="hide_required">
<CityOptions v-model="form" :labelWidth="100" :is_required="false" /> <CityOptions v-model="form" :labelWidth="100" :is_required="false" />
</div> --> </div> -->

View File

@ -31,7 +31,7 @@ import { useRoute, useRouter } from "vue-router";
import { updateCount } from "@/api/admin/count"; import { updateCount } from "@/api/admin/count";
import ReleaseForm from "../components/ReleaseForm"; import ReleaseForm from "../components/ReleaseForm";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
import {updateAchievement} from "@/api/admin/laboratory/achievement"; import { updateAchievement } from "@/api/admin/laboratory/achievement";
const labelWidth = 140; const labelWidth = 140;

View File

@ -1,63 +1,63 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-card style="width: 55%; margin: 0 auto"> <el-card style="width: 55%; margin: 0 auto">
<!-- <p>--> <!-- <p>-->
<!-- <b> {{ t("admin.form.basicData") }}</b>--> <!-- <b> {{ t("admin.form.basicData") }}</b>-->
<!-- </p>--> <!-- </p>-->
<!-- <el-form--> <!-- <el-form-->
<!-- ref="personFormRef"--> <!-- ref="personFormRef"-->
<!-- :model="personForm"--> <!-- :model="personForm"-->
<!-- :rules="rules"--> <!-- :rules="rules"-->
<!-- label-width="100px"--> <!-- label-width="100px"-->
<!-- >--> <!-- >-->
<!-- <el-form-item :label="t('admin.form.fullName')" prop="nickName">--> <!-- <el-form-item :label="t('admin.form.fullName')" prop="nickName">-->
<!-- <el-input--> <!-- <el-input-->
<!-- v-model="personForm.nickName"--> <!-- v-model="personForm.nickName"-->
<!-- :placeholder="--> <!-- :placeholder="-->
<!-- t('admin.form.placeholder', { type: t('admin.form.fullName') })--> <!-- t('admin.form.placeholder', { type: t('admin.form.fullName') })-->
<!-- "--> <!-- "-->
<!-- />--> <!-- />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- <el-form-item :label="t('admin.form.mobile')" prop="mobile">--> <!-- <el-form-item :label="t('admin.form.mobile')" prop="mobile">-->
<!-- &lt;!&ndash; :maxlength="11"&ndash;&gt;--> <!-- &lt;!&ndash; :maxlength="11"&ndash;&gt;-->
<!-- <el-input--> <!-- <el-input-->
<!-- v-model="personForm.mobile"--> <!-- v-model="personForm.mobile"-->
<!-- oninput="value = value.replace(/\D/,'')"--> <!-- oninput="value = value.replace(/\D/,'')"-->
<!-- :placeholder="--> <!-- :placeholder="-->
<!-- t('admin.form.placeholder', { type: t('admin.form.mobile') })--> <!-- t('admin.form.placeholder', { type: t('admin.form.mobile') })-->
<!-- "--> <!-- "-->
<!-- />--> <!-- />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- <el-form-item :label="t('admin.form.email')" prop="email">--> <!-- <el-form-item :label="t('admin.form.email')" prop="email">-->
<!-- <el-input--> <!-- <el-input-->
<!-- v-model="personForm.email"--> <!-- v-model="personForm.email"-->
<!-- :placeholder="--> <!-- :placeholder="-->
<!-- t('admin.form.placeholder', { type: t('admin.form.email') })--> <!-- t('admin.form.placeholder', { type: t('admin.form.email') })-->
<!-- "--> <!-- "-->
<!-- />--> <!-- />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- <el-form-item :label="t('admin.form.position')" prop="post">--> <!-- <el-form-item :label="t('admin.form.position')" prop="post">-->
<!-- <el-input--> <!-- <el-input-->
<!-- v-model="personForm.post"--> <!-- v-model="personForm.post"-->
<!-- :placeholder="--> <!-- :placeholder="-->
<!-- t('admin.form.placeholder', { type: t('admin.form.position') })--> <!-- t('admin.form.placeholder', { type: t('admin.form.position') })-->
<!-- "--> <!-- "-->
<!-- />--> <!-- />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- <el-form-item :label="t('admin.form.phone')" prop="phone">--> <!-- <el-form-item :label="t('admin.form.phone')" prop="phone">-->
<!-- <el-input--> <!-- <el-input-->
<!-- v-model="personForm.phone"--> <!-- v-model="personForm.phone"-->
<!-- :placeholder="--> <!-- :placeholder="-->
<!-- t('admin.form.placeholder', { type: t('admin.form.phone') })--> <!-- t('admin.form.placeholder', { type: t('admin.form.phone') })-->
<!-- "--> <!-- "-->
<!-- />--> <!-- />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- <el-form-item>--> <!-- <el-form-item>-->
<!-- <el-button type="primary" @click="submitPersonalInfo"--> <!-- <el-button type="primary" @click="submitPersonalInfo"-->
<!-- >{{ t("admin.common.submit") }}--> <!-- >{{ t("admin.common.submit") }}-->
<!-- </el-button>--> <!-- </el-button>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- </el-form>--> <!-- </el-form>-->
<p> <p>
<b>{{ t("admin.form.data", { type: t("admin.common.lab") }) }}</b> <b>{{ t("admin.form.data", { type: t("admin.common.lab") }) }}</b>
</p> </p>

View File

@ -64,12 +64,20 @@
</el-col> </el-col>
</el-row> </el-row>
<!-- <CityOptions--> <!-- <el-form-item :label="t('admin.form.country')" prop="country">
<!-- ref="cityForm"--> <el-select
<!-- v-model="formData"--> v-model="formData.country"
<!-- :labelWidth="labelWidth"--> :placeholder="
<!-- />--> t('admin.form.pleaseSelect', { type: t('admin.form.country') })
"
>
<el-option
v-for="option in countryOptions"
:label="option[locale]"
:value="option.key"
/>
</el-select>
</el-form-item>-->
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="t('admin.form.demandContact')" prop="name"> <el-form-item :label="t('admin.form.demandContact')" prop="name">
@ -133,8 +141,9 @@ import { useRoute } from "vue-router";
import tab from "@/plugins/tab"; import tab from "@/plugins/tab";
import { serviceDemandInfo } from "@/api/admin/laboratory/service-demand"; import { serviceDemandInfo } from "@/api/admin/laboratory/service-demand";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
import { countryOptions } from "@/utils/parameter";
const { t } = useI18n(); const { t, locale } = useI18n();
const data = reactive({ const data = reactive({
formData: { formData: {

View File

@ -1,66 +1,66 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-card style="width: 55%; margin: 0 auto"> <el-card style="width: 55%; margin: 0 auto">
<p> <!-- <p>-->
<b> {{ t("admin.form.basicData") }}</b> <!-- <b> {{ t("admin.form.basicData") }}</b>-->
</p> <!-- </p>-->
<el-form <!-- <el-form-->
ref="personFormRef" <!-- ref="personFormRef"-->
:model="personForm" <!-- :model="personForm"-->
:rules="rules" <!-- :rules="rules"-->
label-width="100px" <!-- label-width="100px"-->
> <!-- >-->
<el-form-item :label="t('admin.form.fullName')" prop="nickName"> <!-- <el-form-item :label="t('admin.form.fullName')" prop="nickName">-->
<el-input <!-- <el-input-->
v-model="personForm.nickName" <!-- v-model="personForm.nickName"-->
:placeholder=" <!-- :placeholder="-->
t('admin.form.placeholder', { type: t('admin.form.fullName') }) <!-- t('admin.form.placeholder', { type: t('admin.form.fullName') })-->
" <!-- "-->
/> <!-- />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item :label="t('admin.form.mobile')" prop="mobile"> <!-- <el-form-item :label="t('admin.form.mobile')" prop="mobile">-->
<el-input <!-- <el-input-->
v-model="personForm.mobile" <!-- v-model="personForm.mobile"-->
:placeholder=" <!-- :placeholder="-->
t('admin.form.placeholder', { type: t('admin.form.mobile') }) <!-- t('admin.form.placeholder', { type: t('admin.form.mobile') })-->
" <!-- "-->
/> <!-- />-->
<!-- oninput="value=value.replace(/\D/,'')"--> <!-- &lt;!&ndash; oninput="value=value.replace(/\D/,'')"&ndash;&gt;-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item :label="t('admin.form.email')" prop="email"> <!-- <el-form-item :label="t('admin.form.email')" prop="email">-->
<el-input <!-- <el-input-->
v-model="personForm.email" <!-- v-model="personForm.email"-->
:placeholder=" <!-- :placeholder="-->
t('admin.form.placeholder', { type: t('admin.form.email') }) <!-- t('admin.form.placeholder', { type: t('admin.form.email') })-->
" <!-- "-->
/> <!-- />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item :label="t('admin.form.position')" prop="post"> <!-- <el-form-item :label="t('admin.form.position')" prop="post">-->
<el-input <!-- <el-input-->
v-model="personForm.post" <!-- v-model="personForm.post"-->
:placeholder=" <!-- :placeholder="-->
t('admin.form.placeholder', { type: t('admin.form.position') }) <!-- t('admin.form.placeholder', { type: t('admin.form.position') })-->
" <!-- "-->
/> <!-- />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item :label="t('admin.form.phone')" prop="phone"> <!-- <el-form-item :label="t('admin.form.phone')" prop="phone">-->
<el-input <!-- <el-input-->
v-model="personForm.phone" <!-- v-model="personForm.phone"-->
:placeholder=" <!-- :placeholder="-->
t('admin.form.placeholder', { type: t('admin.form.phone') }) <!-- t('admin.form.placeholder', { type: t('admin.form.phone') })-->
" <!-- "-->
/> <!-- />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item> <!-- <el-form-item>-->
<el-button type="primary" @click="submitPersonalInfo" <!-- <el-button type="primary" @click="submitPersonalInfo"-->
>{{ t("admin.common.submit") }} <!-- >{{ t("admin.common.submit") }}-->
</el-button> <!-- </el-button>-->
</el-form-item> <!-- </el-form-item>-->
</el-form> <!-- </el-form>-->
<p> <p>
<b>{{ t("admin.form.data", { type: t("admin.common.research") }) }}</b> <b>{{ t("admin.form.data", { type: t("admin.common.research") }) }}</b>
</p> </p>
<research-form ref="researchFormRef" v-model="form" :is-add="false" /> <research-form ref="researchFormRef" v-model="form" :is-add="true" />
<div :style="{ marginLeft: labelWidth + 'px' }"> <div :style="{ marginLeft: labelWidth + 'px' }">
<el-button type="primary" @click="submitExpertForm" <el-button type="primary" @click="submitExpertForm"
>{{ t("admin.common.submit") }} >{{ t("admin.common.submit") }}

View File

@ -65,11 +65,21 @@
</el-col> </el-col>
</el-row> </el-row>
<CityOptions <!--COMPLETED-->
ref="cityForm" <el-form-item :label="t('admin.form.country')" prop="country">
v-model="formData" <el-select
:labelWidth="labelWidth" v-model="formData.country"
/> :placeholder="
t('admin.form.pleaseSelect', { type: t('admin.form.country') })
"
>
<el-option
v-for="option in countryOptions"
:label="option[locale]"
:value="option.key"
/>
</el-select>
</el-form-item>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
@ -135,8 +145,9 @@ import { useRoute } from "vue-router";
import tab from "@/plugins/tab"; import tab from "@/plugins/tab";
import { serviceDemandInfo } from "@/api/admin/research/service-demand"; import { serviceDemandInfo } from "@/api/admin/research/service-demand";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
import { countryOptions } from "@/utils/parameter";
const { t } = useI18n(); const { t, locale } = useI18n();
const data = reactive({ const data = reactive({
formData: { formData: {
check: [], check: [],

View File

@ -111,12 +111,18 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item :label="t('admin.form.country')" prop="country"> <el-form-item :label="t('admin.form.country')" prop="country">
<el-input <el-select
v-model="modelValue.country" v-model="modelValue.country"
:placeholder=" :placeholder="
t('admin.form.placeholder', { type: t('admin.form.country') }) t('admin.form.pleaseSelect', { type: t('admin.form.country') })
" "
></el-input> >
<el-option
v-for="option in countryOptions"
:label="option[locale]"
:value="option.key"
/>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -216,7 +222,7 @@
import FieldOptions from "../FieldOptions"; import FieldOptions from "../FieldOptions";
import InputBoxAdd from "../InputBoxAdd"; import InputBoxAdd from "../InputBoxAdd";
// import { researchSelect, laboratorySelect } from "@/api/identity/index"; // import { researchSelect, laboratorySelect } from "@/api/identity/index";
import { enterpriseOptions } from "@/utils/parameter"; import { countryOptions, enterpriseOptions } from "@/utils/parameter";
import { computed, reactive, ref, toRefs } from "vue"; import { computed, reactive, ref, toRefs } from "vue";
import ImageUpload from "@/components/ImageUpload/index.vue"; import ImageUpload from "@/components/ImageUpload/index.vue";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";

View File

@ -68,13 +68,19 @@
</el-col> </el-col>
</el-row> --> </el-row> -->
<!-- <CityOptions-->
<!-- v-model="modelValue"-->
<!-- :labelWidth="labelWidth"-->
<!-- ref="cityFormRef"-->
<!-- />-->
<el-form-item :label="t('admin.form.country')" prop="country"> <el-form-item :label="t('admin.form.country')" prop="country">
<el-input v-model="modelValue.country"></el-input> <el-select
v-model="modelValue.country"
:placeholder="
t('admin.form.pleaseSelect', { type: t('admin.form.country') })
"
>
<el-option
v-for="option in countryOptions"
:label="option[locale]"
:value="option.key"
/>
</el-select>
</el-form-item> </el-form-item>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
@ -216,7 +222,7 @@
<script name="ExpertForm" setup> <script name="ExpertForm" setup>
import FieldOptions from "@/views/components/FieldOptions"; import FieldOptions from "@/views/components/FieldOptions";
import InputBoxAdd from "@/views/components/InputBoxAdd"; import InputBoxAdd from "@/views/components/InputBoxAdd";
import { educationOptions } from "@/utils/parameter"; import { countryOptions, educationOptions } from "@/utils/parameter";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
import { computed, toRefs } from "vue"; import { computed, toRefs } from "vue";

View File

@ -75,11 +75,21 @@
:title="t('admin.form.keywords')" :title="t('admin.form.keywords')"
/> />
<!-- <CityOptions--> <!-- COMPLETED-->
<!-- ref="cityFormRef"--> <!-- <el-form-item :label="t('admin.form.country')" prop="country">
<!-- v-model="modelValue"--> <el-select
<!-- :labelWidth="labelWidth"--> v-model="modelValue.country"
<!-- />--> :placeholder="
t('admin.form.pleaseSelect', { type: t('admin.form.country') })
"
>
<el-option
v-for="option in countryOptions"
:label="option[locale]"
:value="option.key"
/>
</el-select>
</el-form-item>-->
<!-- <el-row>--> <!-- <el-row>-->
<!-- <el-col :span="24">--> <!-- <el-col :span="24">-->
@ -215,8 +225,9 @@ import FieldOptions from "@/views/components/FieldOptions";
import InputBoxAdd from "@/views/components/InputBoxAdd"; import InputBoxAdd from "@/views/components/InputBoxAdd";
import { computed, reactive, ref, toRefs } from "vue"; import { computed, reactive, ref, toRefs } from "vue";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
import { countryOptions } from "@/utils/parameter";
const { t } = useI18n(); const { t, locale } = useI18n();
const props = defineProps({ const props = defineProps({
modelValue: Object, modelValue: Object,
isAdd: { isAdd: {

View File

@ -60,21 +60,22 @@
:labelWidth="labelWidth" :labelWidth="labelWidth"
ref="fieldFormRef" ref="fieldFormRef"
/> />
<!-- <city-options-->
<!-- v-model="modelValue"-->
<!-- :labelWidth="labelWidth"-->
<!-- ref="cityFormRef"-->
<!-- ></city-options>-->
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item :label="t('admin.form.country')" prop="country"> <el-form-item :label="t('admin.form.country')" prop="country">
<el-input <el-select
v-model="modelValue.country" v-model="modelValue.country"
:placeholder=" :placeholder="
t('admin.form.placeholder', { type: t('admin.form.country') }) t('admin.form.pleaseSelect', { type: t('admin.form.country') })
" "
></el-input> >
<el-option
v-for="option in countryOptions"
:label="option[locale]"
:value="option.key"
/>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -215,6 +216,7 @@ import FieldOptions from "@/views/components/FieldOptions";
import InputBoxAdd from "@/views/components/InputBoxAdd"; import InputBoxAdd from "@/views/components/InputBoxAdd";
import { import {
cooperationOptions, cooperationOptions,
countryOptions,
leadOptions, leadOptions,
maturityOptions, maturityOptions,
} from "@/utils/parameter"; } from "@/utils/parameter";

View File

@ -43,11 +43,20 @@
</el-col> </el-col>
</el-row> </el-row>
<!-- <CityOptions--> <el-form-item :label="t('admin.form.country')" prop="country">
<!-- ref="cityFormRef"--> <el-select
<!-- v-model="modelValue"--> v-model="modelValue.country"
<!-- :labelWidth="labelWidth"--> :placeholder="
<!-- />--> t('admin.form.pleaseSelect', { type: t('admin.form.country') })
"
>
<el-option
v-for="option in countryOptions"
:label="option[locale]"
:value="option.key"
/>
</el-select>
</el-form-item>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
@ -113,8 +122,9 @@ import { computed, reactive, ref } from "vue";
import FieldOptions from "../FieldOptions"; import FieldOptions from "../FieldOptions";
import InputBoxAdd from "../InputBoxAdd"; import InputBoxAdd from "../InputBoxAdd";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
import { countryOptions } from "@/utils/parameter";
const { t } = useI18n(); const { t, locale } = useI18n();
const formRef = ref(); const formRef = ref();
// const cityFormRef = ref(); // const cityFormRef = ref();
const fieldFormRef = ref(); const fieldFormRef = ref();
@ -160,6 +170,17 @@ const rules = reactive({
trigger: "change", trigger: "change",
}, },
], ],
country: [
{
required: true,
message: computed(() =>
t("admin.form.pleaseSelect", {
type: t("admin.form.country"),
})
),
trigger: "change",
},
],
code: [ code: [
{ {
required: true, required: true,

View File

@ -21,7 +21,7 @@ import RegionPagine from "@/views/website/home/comp/RegionPagine.vue";
import html2canvas from "html2canvas"; import html2canvas from "html2canvas";
import anime from "animejs"; import anime from "animejs";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
import geoJSONRU from "@/assets/custom.geo.json"; import geoJSONRU from "@/assets/world.json";
const { t, locale } = useI18n(); const { t, locale } = useI18n();
const leftBoxPageNum = ref(1); const leftBoxPageNum = ref(1);
@ -205,7 +205,15 @@ const loadChinaDistrict = (adcode) => {
}; };
const loadRussiaDistrict = () => { const loadRussiaDistrict = () => {
mapData.value = geoJSONRU.features.map((el) => {
const areaProp = el.properties;
return {
name: areaProp.name,
value: 0,
};
});
registerMap("map", { geoJSON: geoJSONRU, specialAreas: {} }); registerMap("map", { geoJSON: geoJSONRU, specialAreas: {} });
options.series[0].data = mapData.value;
myEcharts.value.setOption(options); myEcharts.value.setOption(options);
// TODO:get count // TODO:get count
}; };
@ -216,14 +224,14 @@ const backMap = () => {
}; };
onMounted(async () => { onMounted(async () => {
await loadAMap(); // await loadAMap();
myEcharts.value = init(mapRef.value); myEcharts.value = init(mapRef.value);
myEcharts.value.on("click", mapClick); // myEcharts.value.on("click", mapClick);
if (locale.value === "zh") { // if (locale.value === "zh") {
loadChinaDistrict("100000"); // loadChinaDistrict("100000");
} else { // } else {
loadRussiaDistrict(); // }
} loadRussiaDistrict();
}); });
/** /**
@ -317,21 +325,21 @@ watch(mapIndex, (newVal, oldVal) => {
isScrolling.value = true; isScrolling.value = true;
const direction = newVal > oldVal ? "down" : "up"; const direction = newVal > oldVal ? "down" : "up";
playScrollAnimation(direction, () => {}); playScrollAnimation(direction, () => {});
if (locale.value === "zh") { // if (locale.value === "zh") {
loadChinaDistrict("100000"); // loadChinaDistrict("100000");
} else { // } else {
loadRussiaDistrict(); loadRussiaDistrict();
} // }
}); });
watch(locale, (newVal) => { // watch(locale, (newVal) => {
console.log(newVal); // console.log(newVal);
if (newVal === "zh") { // // if (newVal === "zh") {
loadChinaDistrict("100000"); // // loadChinaDistrict("100000");
} else if (newVal === "ru") { // // } else if (newVal === "ru") {
loadRussiaDistrict(); // loadRussiaDistrict();
} // // }
}); // });
</script> </script>
<template> <template>
@ -341,7 +349,7 @@ watch(locale, (newVal) => {
<div class="title">{{ methods[mapIndex].title.value }}</div> <div class="title">{{ methods[mapIndex].title.value }}</div>
<div v-if="loading" class="loading-modal"></div> <div v-if="loading" class="loading-modal"></div>
<!-- 返回上一级按钮 --> <!-- 返回上一级按钮 -->
<div class="back-btn" @click="backMap"> <div class="back-btn" @click="">
<img :src="backBtnPng" alt="back" /> <img :src="backBtnPng" alt="back" />
</div> </div>
<!-- 人数表格 --> <!-- 人数表格 -->
@ -470,7 +478,7 @@ watch(locale, (newVal) => {
> .title { > .title {
position: absolute; position: absolute;
top: 75px; top: 20px;
width: 100%; width: 100%;
text-align: center; text-align: center;
font-size: 36px; font-size: 36px;

View File

@ -138,7 +138,7 @@
</div> </div>
<!-- 底部 --> <!-- 底部 -->
<div class="foot">Copyright © 2007-2021 {{ t('footer.copyRight') }}</div> <div class="foot">Copyright © 2007-2021 {{ t("footer.copyRight") }}</div>
</div> </div>
</template> </template>
@ -146,6 +146,7 @@
import Cookies from "js-cookie"; // import { encrypt, decrypt } from "@/utils/jsencrypt"; import Cookies from "js-cookie"; // import { encrypt, decrypt } from "@/utils/jsencrypt";
import md5 from "js-md5"; import md5 from "js-md5";
import Retrieve from "../retrieve"; import Retrieve from "../retrieve";
import Register from "../register";
import WebGetCode from "@/components/webGetCode"; import WebGetCode from "@/components/webGetCode";
import useUserStore from "@/store/modules/user"; import useUserStore from "@/store/modules/user";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";

View File

@ -12,7 +12,7 @@
<industrySelect @industryChange="industryChange"></industrySelect> <industrySelect @industryChange="industryChange"></industrySelect>
<div class="total"> <div class="total">
{{ t("webSearch.findNum") }} {{ t("webSearch.findNum") }}
<span>{{ state.total }}</span> {{t('webSearch.findLabNum')}} <span>{{ state.total }}</span> {{ t("webSearch.findLabNum") }}
</div> </div>
<div v-loading="loading"> <div v-loading="loading">
<section v-for="item in state.list" :key="item.id"> <section v-for="item in state.list" :key="item.id">

View File

@ -11,7 +11,8 @@
<div style="position: relative"> <div style="position: relative">
<!-- <industrySelect @industryChange="industryChange"></industrySelect> --> <!-- <industrySelect @industryChange="industryChange"></industrySelect> -->
<div class="total"> <div class="total">
{{ t("webSearch.findNum") }} <span>{{ total }}</span> {{t('webSearch.findLabNum')}} {{ t("webSearch.findNum") }} <span>{{ total }}</span>
{{ t("webSearch.findLabNum") }}
</div> </div>
<div v-loading="loading"> <div v-loading="loading">
<section v-for="item in searchResults" :key="item.id"> <section v-for="item in searchResults" :key="item.id">

View File

@ -122,8 +122,9 @@
</div> </div>
<section> <section>
{{ {{
patentOptions.find((el) => el.key == state.patentDetail.kind) patentOptions.find(
?.[locale] (el) => el.key == state.patentDetail.kind
)?.[locale]
}} }}
</section> </section>
<div style="padding: 20px 0"> <div style="padding: 20px 0">
@ -233,7 +234,7 @@ import { useRoute, useRouter } from "vue-router";
import docking from "./components/docking.vue"; import docking from "./components/docking.vue";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const showDocking = ref(false); const showDocking = ref(false);
const { t,locale } = useI18n(); const { t, locale } = useI18n();
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
const loading = ref(true); const loading = ref(true);