update i18n

This commit is contained in:
2023-07-17 15:47:45 +08:00
parent 2bc08f4a39
commit 1f3f9d7b31
94 changed files with 1215 additions and 478 deletions

View File

@ -42,8 +42,11 @@
"devDependencies": {
"@vitejs/plugin-vue": "2.3.3",
"@vue/compiler-sfc": "3.2.36",
"autoprefixer": "^10.4.14",
"postcss": "^8.4.26",
"prettier": "^2.8.8",
"sass": "1.52.1",
"tailwindcss": "^3.3.3",
"unplugin-auto-import": "0.8.5",
"vite": "2.9.16",
"vite-plugin-compression": "0.5.1",

View File

View File

@ -7,29 +7,15 @@ import activity_zh from "@/i18n/message/activity/zh";
import { admin_zh, admin_ru } from "@/i18n/message/admin";
import { routes_ru, routes_zh } from "@/i18n/message/routes";
import { tagsView_ru, tagsView_zh } from "@/i18n/message/tagsView";
import common_zh from "@/i18n/message/common/zh";
import common_ru from "@/i18n/message/common/ru";
const messages = {
zh: {
admin: admin_zh,
routes: routes_zh,
tagsView: tagsView_zh,
common: {
home: "首页",
search: "搜索",
viewDetails: "查看详情",
systemPrompt: "系统提示",
confirm: "确定",
cancel: "取消",
register: "注册",
login: "登录",
viewMore: "查看更多",
loadMore: "加载更多",
noData: "暂无数据",
complete: "完成",
congratulations: "恭喜你",
title: "数字科创大脑",
status: "{type}状态",
},
common: common_zh,
headerMenu: {
hello: "你好,世界",
home: "首页",
@ -150,23 +136,7 @@ const messages = {
admin: admin_ru,
routes: routes_ru,
tagsView: tagsView_ru,
common: {
home: "Главная",
search: "Поиск",
viewDetails: "Просмотреть детали",
systemPrompt: "Системное сообщение",
confirm: "Подтвердить",
cancel: "Отмена",
register: "Регистрация",
login: "Войти в систему",
viewMore: "Просмотреть больше",
loadMore: "Загрузить больше",
noData: "Нет данных",
complete: "Завершить",
congratulations: "Поздравляем!",
title: "Цифровой мозг науки и технологий",
status: "Статус {type}",
},
common: common_ru,
headerMenu: {
hello: "Привет мир",
home: "Главная",

View File

@ -0,0 +1,5 @@
const broker = {
// 保存当前步骤
saveCurrentStep: "Сохранить текущий шаг",
};
export default broker;

View File

@ -0,0 +1,5 @@
const broker = {
// 保存当前步骤
saveCurrentStep: "保存当前步骤",
};
export default broker;

View File

@ -1,4 +1,5 @@
const common = {
view: "Посмотреть",
add: "Добавить",
edit: "Редактировать",
delete: "Удалить",
@ -11,7 +12,6 @@ const common = {
export: "Экспорт",
operation: "Операция",
dataNumber: "Номер данных",
// 类型
type: "Тип",
expert: "Эксперт",
lab: "Лаборатория",
@ -20,14 +20,20 @@ const common = {
patent: "Патент",
research: "Исследовательский институт",
broker: "Брокер",
// 需求
demand: "Спрос",
// 科研项目
// 论文
paper: "Статья",
researchProject: "Научно-исследовательский проект",
// 设备
equipment: "Оборудование",
// 活动
activity: "Мероприятие",
nextStep: "Следующий шаг",
addSuccess: "Добавлено успешно",
editSuccess: "Изменено успешно",
deleteSuccess: "Удалено успешно",
operationSuccess: "Операция выполнена успешно",
// 是否确认{action}编号为{number}的{type}?
confirmAction: "Вы уверены, что хотите {action} {type} номер {number}?",
// Вы уверены, что хотите {action} {type} номер {number}?
};
export default common;

View File

@ -1,4 +1,5 @@
const common = {
view: "查看",
add: "新增",
edit: "编辑",
delete: "删除",
@ -11,7 +12,6 @@ const common = {
export: "导出",
operation: "操作",
dataNumber: "数据编号",
// 类型
type: "类型",
expert: "专家",
lab: "实验室",
@ -20,14 +20,19 @@ const common = {
patent: "专利",
research: "研究机构",
broker: "经纪人",
// 需求
demand: "需求",
// 科研项目
// 论文
paper: "论文",
researchProject: "科研项目",
// 设备
equipment: "设备",
// 活动
activity: "活动",
nextStep: "下一步",
addSuccess: "添加成功",
editSuccess: "修改成功",
deleteSuccess: "删除成功",
operationSuccess: "操作成功",
// 是否确认{action}编号为{number}的{type}?
confirmAction: "是否确认{action}编号为{number}的{type}?",
};
export default common;

View File

@ -1,4 +0,0 @@
const table = {
// 数据编号
dataId: "数据编号",
};

View File

@ -1,7 +1,7 @@
const form = {
address: "Подробный адрес",
basicInfo: "Основная информация",
data: "{type}Данные",
data: "{type} Данные",
basicData: "Основные данные",
businessLicense: "Бизнес-лицензия",
fullName: "Полное имя",
@ -19,15 +19,33 @@ const form = {
placeholder: "Пожалуйста, введите {type}",
pleaseSelect: "Пожалуйста, выберите {type}",
researchDirection: "Направление исследований",
// 合作企业
cooperationCompany: "Компания сотрудничества",
// 银行
bank: "Банк",
// 产品
product: "Продукт",
// 联系人
contact: "Контакт",
// 类别
category: "{type} Категория",
category: "Категория {type}",
keywords: "Ключевые слова",
inputKeywords:
"Ключевые слова сценария применения + ключевые слова технического продукта",
coreMembers: "Основные члены и их краткое описание",
idCard: "Номер удостоверения личности",
topicLeader: "Руководитель проекта",
paperTitle: "Название статьи",
belongExpert: "Принадлежит эксперту",
publishDate: "Дата публикации",
publication: "Публикация",
buyDate: "Дата покупки",
model: "Модель",
achievementParameter: "Параметр достижения",
// 设备描述
deviceDescription: "Описание оборудования",
// 发明人
inventor: "Изобретатель",
// 需求联系人
demandContact: "Контактное лицо по потребностям",
// 联系人手机号
contactPhone: "Номер мобильного телефона контактного лица",
// 申请日期
applicationDate: "Дата подачи заявки",
};
export default form;

View File

@ -19,16 +19,33 @@ const form = {
placeholder: "请输入{type}",
pleaseSelect: "请选择{type}",
researchDirection: "研究方向",
// 合作企业
cooperationCompany: "合作企业",
// 银行
bank: "银行",
// 产品
product: "产品",
// 联系人
contact: "联系人",
// 类别
category: "{type}类别",
keywords: "关键词",
inputKeywords: "应用场景关键词+技术产品关键词",
coreMembers: "核心成员及简介",
idCard: "身份证号",
topicLeader: "课题负责人",
paperTitle: "论文标题",
belongExpert: "所属专家",
publishDate: "出版日期",
publication: "刊物",
buyDate: "购买日期",
model: "型号",
achievementParameter: "成果参数",
// 设备描述
deviceDescription: "设备描述",
// 发明人
inventor: "发明人",
// 需求联系人
demandContact: "需求联系人",
// 联系人手机号
contactPhone: "联系人手机号",
// 申请日期
applicationDate: "申请日期",
};
export default form;

View File

@ -4,6 +4,10 @@ import common_zh from "./common/zh";
import common_ru from "./common/ru";
import form_zh from "./form/zh";
import form_ru from "./form/ru";
import broker_zh from "./broker/zh";
import broker_ru from "./broker/ru";
import table_zh from "./table/zh";
import table_ru from "./table/ru";
export const admin_zh = {
identity: {
@ -11,6 +15,8 @@ export const admin_zh = {
},
common: common_zh,
form: form_zh,
broker: broker_zh,
table: table_zh,
};
export const admin_ru = {
identity: {
@ -18,4 +24,6 @@ export const admin_ru = {
},
common: common_ru,
form: form_ru,
broker: broker_ru,
table: table_ru,
};

View File

@ -1,9 +0,0 @@
const table = {
operation: "Операция",
dataId: "Номер данных",
patentName: "Название патента",
patentNumber: "Номер заявки",
inventor: "Изобретатель",
applicant: "Заявитель (владелец патента)",
applicationDate: "Дата подачи заявки",
};

View File

@ -1,11 +0,0 @@
const table = {
operation: "操作",
dataId: "数据编号",
patentName: "专利名称",
patentNumber: "申请号",
inventor: "发明人",
applicant: "申请(专利权)人",
applicationDate: "申请日期",
};
export default table;

View File

@ -0,0 +1,20 @@
const table = {
// 入驻时间
enterTime: "Время входа",
// 研究领域
researchIndustry: "Область исследований",
// 关联专家
relatedExperts: "Связанные эксперты",
// 发布时间
publishTime: "Время публикации",
// 课题角色
topicRole: "Роль темы",
// 成果领域
achievementIndustry: "Область достижений",
// 取消关联
cancelRelation: "Отменить связь",
// 取消发布
cancelPublish: "Отменить публикацию",
};
export default table;

View File

@ -0,0 +1,19 @@
const table = {
// 入驻时间
enterTime: "入驻时间",
// 研究领域
researchIndustry: "研究领域",
// 关联专家
relatedExperts: "关联专家",
// 发布时间
publishTime: "发布时间",
// 课题角色
topicRole: "课题角色",
// 成果领域
achievementIndustry: "成果领域",
// 取消关联
cancelRelation: "取消关联",
// 取消发布
cancelPublish: "取消发布",
};
export default table;

View File

@ -0,0 +1,18 @@
const common = {
home: "Главная",
search: "Поиск",
viewDetails: "Просмотреть детали",
systemPrompt: "Системное сообщение",
confirm: "Подтвердить",
cancel: "Отмена",
register: "Регистрация",
login: "Войти",
viewMore: "Просмотреть больше",
loadMore: "Загрузить больше",
noData: "Нет данных",
complete: "Завершить",
congratulations: "Поздравляем",
title: "Цифровой мозг науки и технологий",
status: "{type} статус",
};
export default common;

View File

@ -1,4 +1,5 @@
export const common = {
home: "首页",
search: "搜索",
viewDetails: "查看详情",
systemPrompt: "系统提示",
@ -11,6 +12,8 @@ export const common = {
noData: "暂无数据",
complete: "完成",
congratulations: "恭喜你",
title: "数字科创大脑",
status: "{type}状态",
};
export default common;

3
src/index.css Normal file
View File

@ -0,0 +1,3 @@

View File

@ -57,6 +57,9 @@
{{ t("headerMenu.switchSystem") }}
</el-dropdown-item>
</router-link>
<el-dropdown-item command="setAvatar">
<span> 修改头像 </span>
</el-dropdown-item>
<el-dropdown-item command="setLocale">
<span>{{
// ru zh
@ -80,6 +83,7 @@
</el-dropdown>
</div>
</div>
<user-avatar ref="avatarRef" id="avatar-cropper" />
</div>
</template>
@ -91,17 +95,20 @@ import Hamburger from "@/components/Hamburger";
import Screenfull from "@/components/Screenfull";
import SizeSelect from "@/components/SizeSelect";
import HeaderSearch from "@/components/HeaderSearch";
import UserAvatar from "@/views/system/user/profile/userAvatar.vue";
import RuoYiGit from "@/components/RuoYi/Git";
import RuoYiDoc from "@/components/RuoYi/Doc";
import useAppStore from "@/store/modules/app";
import useUserStore from "@/store/modules/user";
import useSettingsStore from "@/store/modules/settings";
import { useI18n } from "vue-i18n";
import { ref } from "vue";
const appStore = useAppStore();
const userStore = useUserStore();
const settingsStore = useSettingsStore();
const { t, locale } = useI18n();
const avatarRef = ref();
function toggleSideBar() {
appStore.toggleSideBar();
@ -118,6 +125,9 @@ function handleCommand(command) {
case "setLocale":
settingsStore.toggleLocale();
break;
case "setAvatar":
avatarRef.value.editCropper();
break;
default:
break;
}
@ -232,4 +242,8 @@ function setLayout() {
}
}
}
:deep(.user-info-head) {
visibility: hidden;
}
</style>

View File

@ -16,14 +16,22 @@
:class="{ 'submenu-title-noDropdown': !isNest }"
>
<svg-icon
style="flex: 1"
:icon-class="
onlyOneChild.meta.icon || (item.meta && item.meta.icon)
"
/>
<template #title
><span
class="menu-title"
:title="hasTitle(onlyOneChild.meta.title)"
style="flex: 8"
class="menu-title flex-6"
:title="
hasTitle(
onlyOneChild.meta.i18nStr
? t(onlyOneChild.meta.i18nStr)
: onlyOneChild.meta.title
)
"
>{{
onlyOneChild.meta.i18nStr
? t(onlyOneChild.meta.i18nStr)
@ -42,10 +50,17 @@
popper-append-to-body
>
<template v-if="item.meta" #title>
<svg-icon :icon-class="item.meta && item.meta.icon" />
<span class="menu-title" :title="hasTitle(item.meta.title)">{{
item.meta.i18nStr ? t(item.meta.i18nStr) : item.meta.title
}}</span>
<svg-icon style="flex: 1" :icon-class="item.meta && item.meta.icon" />
<span
class="menu-title"
style="flex: 8"
:title="
hasTitle(item.meta.i18nStr ? t(item.meta.i18nStr) : item.meta.title)
"
>{{
item.meta.i18nStr ? t(item.meta.i18nStr) : item.meta.title
}}</span
>
</template>
<sidebar-item

View File

@ -6,6 +6,7 @@ import ElementPlus from "element-plus";
import locale from "element-plus/lib/locale/lang/zh-cn"; // 中文语言
import "@/assets/styles/index.scss"; // global css
import "@/index.css";
// import {createI18n} from "vue-i18n";
// import {messages} from '@/i18n'

View File

@ -4,7 +4,9 @@ import {
ElNotification,
ElLoading,
} from "element-plus";
import i18n from "@/i18n";
const { t } = i18n.global;
let loadingInstance;
export default {
@ -26,19 +28,21 @@ export default {
},
// 弹出提示
alert(content) {
ElMessageBox.alert(content, "系统提示");
ElMessageBox.alert(content, t("common.systemPrompt"));
},
// 错误提示
alertError(content) {
ElMessageBox.alert(content, "系统提示", { type: "error" });
void ElMessageBox.alert(content, t("common.systemPrompt"), {
type: "error",
});
},
// 成功提示
alertSuccess(content) {
ElMessageBox.alert(content, "系统提示", { type: "success" });
ElMessageBox.alert(content, t("common.systemPrompt"), { type: "success" });
},
// 警告提示
alertWarning(content) {
ElMessageBox.alert(content, "系统提示", { type: "warning" });
ElMessageBox.alert(content, t("common.systemPrompt"), { type: "warning" });
},
// 通知提示
notify(content) {
@ -58,17 +62,17 @@ export default {
},
// 确认窗体
confirm(content) {
return ElMessageBox.confirm(content, "系统提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
return ElMessageBox.confirm(content, t("common.systemPrompt"), {
confirmButtonText: t("common.confirm"),
cancelButtonText: t("common.confirm"),
type: "warning",
});
},
// 提交内容
prompt(content) {
return ElMessageBox.prompt(content, "系统提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
return ElMessageBox.prompt(content, t("common.systemPrompt"), {
confirmButtonText: t("common.confirm"),
cancelButtonText: t("common.confirm"),
type: "warning",
});
},

View File

@ -1007,6 +1007,7 @@ export const researchRoutes = [
component: () =>
import("@/views/admin/research/research/service-demand/index.vue"),
name: "ServiceDemand",
hidden: true,
meta: {
title: "服务需求列表",
icon: "list",

View File

@ -57,7 +57,7 @@
</el-form-item>
</el-form>
<p>
<b>{{ t("admin.form.data", { type: t("admin.common.lab") }) }}</b>
<b>{{ t("admin.form.data", { type: t("admin.common.broker") }) }}</b>
</p>
<!-- <laboratory-form ref="labFormRef" v-model="form" :is-add="false"/>-->
<agent-form ref="agentFormRef" v-model="form" :is-add="false" />

View File

@ -254,7 +254,9 @@ getList();
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="default" @click="handleCancel">{{ t("admin.common.cancel") }}</el-button>
<el-button type="default" @click="handleCancel">{{
t("admin.common.cancel")
}}</el-button>
<el-button type="primary" @click="submit">{{
t("admin.common.submit")
}}</el-button>

View File

@ -1,4 +1,7 @@
<script setup>
import { useI18n } from "vue-i18n";
const { t } = useI18n();
import { reactive, toRefs } from "vue";
const data = reactive({
@ -22,7 +25,7 @@ const handleSave = () => {};
<el-input v-model="form.name" placeholder="请输入" />
</el-form-item>
</el-form-item>
<el-form-item label="身份证号">
<el-form-item :label="t('admin.form.idCard')">
<el-input v-model="form.number" placeholder="请输入" />
</el-form-item>
<el-form-item label="银行卡号">

View File

@ -8,6 +8,7 @@ import {
listBrokerEnterprise,
} from "@/api/admin/agent/service/enterprise";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const router = useRouter();
@ -97,7 +98,8 @@ const cancel = () => {
};
function handleDelete(id) {
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的项目?')
modal
.confirm('是否确认删除数据编号为"' + id + '"的项目?')
.then(() => {
return deleteBrokerEnterprise(id);
})
@ -236,7 +238,9 @@ getList();
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>

View File

@ -53,7 +53,10 @@
<el-row>
<el-col :span="24">
<el-form-item label="需求描述:" prop="introduce">
<el-form-item
:label="t('webSearch.demandDescription')"
prop="introduce"
>
<wangEditor
v-model="form.introduce"
min-height="150px"
@ -120,7 +123,7 @@
<el-row>
<el-col :span="12">
<el-form-item label="需求联系人:" prop="name">
<el-form-item :label="t('admin.form.demandContact')" prop="name">
<el-input
v-model="form.name"
placeholder="请输入需求联系人"
@ -128,7 +131,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系人手机号:" prop="mobile">
<el-form-item :label="t('admin.form.contactPhone')" prop="mobile">
<el-input
v-model="form.mobile"
maxlength="11"

View File

@ -3,7 +3,8 @@ import { reactive, ref, toRefs } from "vue";
import dayjs from "dayjs";
import { useRoute, useRouter } from "vue-router";
import { technologyDemandList } from "@/api/admin/agent/service/technology-demand";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const router = useRouter();
const route = useRoute();
const dataList = ref([]);
@ -97,7 +98,11 @@ if (route.query.id) {
:label="t('admin.form.mobile')"
prop="mobile"
/>
<el-table-column align="center" label="发布时间" prop="name">
<el-table-column
align="center"
:label="t('admin.table.publishTime')"
prop="name"
>
<template #default="{ row }">
{{ dayjs(row.createTime).format("YYYY-MM-DD HH:mm:ss") }}
</template>

View File

@ -8,6 +8,9 @@ import {
import { useRoute, useRouter } from "vue-router";
import { ElMessage } from "element-plus";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const active = ref(0); /*active step index*/
const updateStatusList = ref([]); /*update status list*/
const route = useRoute();
@ -56,7 +59,6 @@ const getUpdateStatus = async (demandId) => {
const reverseIndex = updateStatusList.value.findLastIndex(
(item) => item.status === "1"
);
console.log(updateStatusList.value.length, reverseIndex);
active.value = reverseIndex === -1 ? 0 : reverseIndex;
};
@ -76,13 +78,35 @@ const close = () => {
router.go(-1);
};
const submit = () => {
console.log(updateStatusList.value[active.value]);
// 当前步骤的表单
const form = updateStatusList.value[active.value];
console.log(active.value);
console.log(form);
// 当active.value !== 4 时, files 字段不能为空
// 当 active.value ===2 或 3 时remark 字段不能为空
if (active.value !== 4 && !form.files) {
ElMessage.error("请上传文件");
return;
}
if ((active.value === 2 || active.value === 3) && !form.remark) {
ElMessage.error("请填写金额");
return;
}
if (active.value === 4 && !form.remark) {
ElMessage.error("请填写未结题原因");
return;
}
updateDemandProcess({
...updateStatusList.value[active.value],
status: "1",
})
.then((resp) => {
ElMessage.success("操作成功");
// if (active.value <= 3) {
// active.value += 1;
// }
})
.catch(() => {})
.finally(() => {
@ -178,8 +202,39 @@ if (route.query.id) {
"
type="primary"
@click="submit"
>{{ t("admin.common.submit") }}
>{{ t("admin.broker.saveCurrentStep") }}
</el-button>
<template v-if="updateStatusList[active]?.status === '1'">
<el-button
v-if="active <= 1"
@click="
() => {
active += 1;
}
"
>
{{ t("admin.common.nextStep") }}
</el-button>
<el-button
v-if="active === 2"
@click="
() => {
active = 3;
}
"
>结题
</el-button>
<el-button
v-if="active === 2"
@click="
() => {
active = 4;
}
"
>未结题
</el-button>
</template>
</div>
</div>
</div>

View File

@ -21,7 +21,10 @@
<el-row>
<el-col :span="24">
<el-form-item label="需求描述:" prop="introduce">
<el-form-item
:label="t('webSearch.demandDescription')"
prop="introduce"
>
<wangEditor
v-model="form.introduce"
min-height="150px"

View File

@ -178,7 +178,9 @@ const cancel = () => {
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>

View File

@ -22,7 +22,9 @@ import { updateEnterprise } from "@/api/admin/enterprise";
import EnterpriseForm from "@/views/components/EnterpriseForm";
import { ElMessage } from "element-plus";
import { reactive, ref, toRefs } from "vue";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const data = reactive({
PersonalInfoForm: {}, // 个人基本资料
enterpriseInfoForm: {},

View File

@ -184,7 +184,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
@ -200,6 +202,7 @@ import {
deleteCasDealLog,
} from "@/api/admin/enterprise";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { reactive } from "vue";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
@ -333,13 +336,13 @@ const submitForm = async () => {
/** 删除按钮操作 */
const handleDelete = (id) => {
const orderIds = id || ids.value;
ElMessageBox.confirm('是否确认删除订单号为"' + orderIds + '"的数据项?').then(
async () => {
modal
.confirm('是否确认删除订单号为"' + orderIds + '"的数据项?')
.then(async () => {
await deleteCasDealLog(id);
getList();
ElMessage.success("删除成功");
}
);
});
};
/** 导出按钮操作 */
// function handleExport() {

View File

@ -13,7 +13,7 @@
<!-- <el-row>
<el-col :span="24">
<el-form-item label="需求名称:" prop="title">
<el-form-item :label="t('admin.form.name', {type:t('admin.common.demand')})" prop="title">
<el-input v-model="form.title"></el-input>
</el-form-item>
</el-col>
@ -31,8 +31,8 @@
v-for="item in checkList"
:key="item.id"
:label="item.name"
>{{ item.name }}</el-checkbox
>
>{{ item.name }}
</el-checkbox>
<!-- <el-checkbox label="0" @change="handleCheck">其他</el-checkbox> -->
</el-checkbox-group>
<el-row :gutter="20">
@ -52,7 +52,10 @@
<el-row>
<el-col :span="24">
<el-form-item label="需求描述:" prop="description">
<el-form-item
:label="t('webSearch.demandDescription')"
prop="description"
>
<!-- <Editor v-model="form.description" :minHeight="150" /> -->
<wangEditor
v-model="form.description"
@ -72,7 +75,7 @@
<el-row>
<el-col :span="12">
<el-form-item label="需求联系人:" prop="name">
<el-form-item :label="t('admin.form.demandContact')" prop="name">
<el-input
v-model="form.name"
placeholder="请输入需求联系人"
@ -80,7 +83,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系人手机号:" prop="mobile">
<el-form-item :label="t('admin.form.contactPhone')" prop="mobile">
<el-input
v-model="form.mobile"
placeholder="请输入联系人手机号"
@ -109,10 +112,12 @@
</el-row>
</el-form>
<div :style="{ marginLeft: labelWidth + 'px' }">
<el-button @click="backToList">{{ t("admin.common.cancel") }}</el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.submit")
}}</el-button>
<el-button @click="backToList"
>{{ t("admin.common.cancel") }}
</el-button>
<el-button type="primary" @click="submitForm"
>{{ t("admin.common.submit") }}
</el-button>
</div>
</el-card>
</div>
@ -127,12 +132,14 @@ import {
} from "@/api/admin/enterprise/demand";
// import CityOptions from "@/views/components/CityOptions";
import { ElMessage } from "element-plus";
import { onActivated } from "vue";
import { onActivated, onMounted, reactive, toRefs } from "vue";
import { demandCategoryList } from "@/utils/parameter";
// import { onActivated } from "vue";
import { useRoute, useRouter } from "vue-router";
import { updateCount } from "../../../../api/admin/count";
import { updateCount } from "@/api/admin/count";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const router = useRouter();
const route = useRoute();
const data = reactive({
@ -192,6 +199,7 @@ const submitForm = () => {
const backToList = () => {
tab.closeOpenPage({ path: "/demand/serviceDemand" });
};
// 添加需求类别时验证
function addCheck() {
if (!checkInput.value.trim().length) return ElMessage.error("请输入");

View File

@ -48,7 +48,10 @@
<el-row>
<el-col :span="24">
<el-form-item label="需求描述:" prop="introduce">
<el-form-item
:label="t('webSearch.demandDescription')"
prop="introduce"
>
<wangEditor
v-model="form.introduce"
placeholder="请输入技术需求内容和详细的技术指标"
@ -115,7 +118,7 @@
<el-row>
<el-col :span="12">
<el-form-item label="需求联系人:" prop="name">
<el-form-item :label="t('admin.form.demandContact')" prop="name">
<el-input
v-model="form.name"
placeholder="请输入需求联系人"
@ -123,7 +126,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系人手机号:" prop="mobile">
<el-form-item :label="t('admin.form.contactPhone')" prop="mobile">
<el-input
v-model="form.mobile"
maxlength="11"
@ -181,20 +184,21 @@
</template>
<script setup>
// import { expert } from "@/api/identity/index";
// import { insertTechnologyDemand } from "@/api/admin/enterprise";
import tab from "@/plugins/tab";
import { insertTechnologyDemand } from "@/api/admin/enterprise";
import { useI18n } from "vue-i18n";
import CityOptions from "@/views/components/CityOptions";
import { useRoute, useRouter } from "vue-router";
import FieldOptions from "@/views/components/FieldOptions";
import InputBoxAdd from "@/views/components/InputBoxAdd";
import { onMounted, reactive, toRefs } from "vue";
import { ElMessage } from "element-plus";
import { useRoute, useRouter } from "vue-router";
import { updateCount } from "@/api/admin/count";
import {
getTechnologyDemand,
updateTechnologyDemand,
insertTechnologyDemand,
} from "@/api/admin/enterprise/demand";
import { onMounted } from "vue";
import { updateCount } from "../../../../api/admin/count";
import tab from "@/plugins/tab";
const { t } = useI18n();
const router = useRouter();
const route = useRoute();
const data = reactive({

View File

@ -38,7 +38,7 @@
/>
<el-table-column label="手机号" align="center" prop="mobile" />
<el-table-column
label="发布时间"
:label="t('admin.table.publishTime')"
align="center"
prop="createTime"
width="180"
@ -103,6 +103,7 @@
import { demandList } from "@/api/admin/enterprise";
import { updateDemand } from "@/api/admin/enterprise/demand";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { getCurrentInstance, onActivated } from "vue";
import { useRouter } from "vue-router";
import { useI18n } from "vue-i18n";
@ -171,7 +172,8 @@ function resetQuery() {
}
/** 删除按钮操作 */
function handleDelete(id) {
ElMessageBox.confirm('是否确认删除订单号为"' + id + '"的数据项?')
modal
.confirm('是否确认删除订单号为"' + id + '"的数据项?')
.then(function () {
return demandDelete(postIds);
})
@ -187,7 +189,8 @@ function handleEdit(id) {
// 修改为完成状态
const complete = (id) => {
ElMessageBox.confirm(`是否确认结束编号为${id}的数据项?`)
modal
.confirm(`是否确认结束编号为${id}的数据项?`)
.then(async () => {
await updateDemand({ id, status: 4 });
getList();

View File

@ -40,7 +40,7 @@
<el-table-column label="手机号" prop="mobile" align="center" />
<!-- <el-zh-column label="浏览量" prop="visit_count" align="center" /> -->
<el-table-column
label="发布时间"
:label="t('admin.table.publishTime')"
prop="createTime"
align="center"
width="180"
@ -125,8 +125,10 @@ import {
updateTechnologyDemand,
} from "@/api/admin/enterprise/demand";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { useRouter } from "vue-router";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const { proxy } = getCurrentInstance();
const router = useRouter();
@ -191,7 +193,8 @@ function handleQuery() {
// }
/** 删除按钮操作 */
function handleDelete(id) {
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的需求项?')
modal
.confirm('是否确认删除数据编号为"' + id + '"的需求项?')
.then(function () {
console.log("delete");
return deleteTechnologyDemand(id);
@ -206,7 +209,8 @@ function handleDelete(id) {
}
function handleShelf(row) {
let text = row.shelf_status == 2 ? "上架" : "下架";
ElMessageBox.confirm('确认要"' + text + '""' + row.id + '"的需求吗?')
modal
.confirm('确认要"' + text + '""' + row.id + '"的需求吗?')
.then(function () {
let status = row.shelf_status == 1 ? 2 : 1;
return achievementShelf({ id: row.id, status });
@ -228,7 +232,8 @@ function handleResults(row) {
// 修改为完成状态
const complete = (id) => {
ElMessageBox.confirm(`是否确认结束编号为${id}的数据项?`)
modal
.confirm(`是否确认结束编号为${id}的数据项?`)
.then(async () => {
await updateTechnologyDemand({ id, status: 4 });
getList();
@ -237,7 +242,8 @@ const complete = (id) => {
.catch(() => {});
};
const cancelPub = (id) => {
ElMessageBox.confirm(`是否确认取消发布编号为${id}的数据项?`)
modal
.confirm(`是否确认取消发布编号为${id}的数据项?`)
.then(async () => {
await updateTechnologyDemand({ id, status: 3 });
getList();

View File

@ -27,7 +27,11 @@
/>
<el-table-column label="产品领域" prop="industryStr" />
<!-- <el-zh-column label="浏览量" prop="visit_count" /> -->
<el-table-column label="发布时间" prop="createTime" width="180">
<el-table-column
:label="t('admin.table.publishTime')"
prop="createTime"
width="180"
>
<template #default="{ row }">
<span>{{ row.createTime }}</span>
</template>
@ -107,6 +111,7 @@ import {
updateEnterpriseProduct,
} from "@/api/admin/enterprise/product";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { onActivated } from "vue";
import { useRouter } from "vue-router";
import useUserStore from "@/store/modules/user";
@ -142,7 +147,7 @@ const getList = async () => {
// 处理删除
const handleDelete = (id) => {
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的产品项?')
modal.confirm('是否确认删除数据编号为"' + id + '"的产品项?')
.then(async () => {
await deleteEnterpriseProduct(id);
ElMessage.success("删除成功");
@ -160,7 +165,7 @@ function handleQuery() {
}
// 取消发布
const releaseCancel = (id) => {
ElMessageBox.confirm('确认要取消发布id为"' + id + '"的产品吗?')
modal.confirm('确认要取消发布id为"' + id + '"的产品吗?')
.then(async () => {
await updateEnterpriseProduct({ id, status: 3 });
ElMessage.success("取消发布成功");
@ -173,7 +178,7 @@ const releaseCancel = (id) => {
// 下架和上架
const handleShelf = (row) => {
let text = row.shelfStatus == 2 ? "上架" : "下架";
ElMessageBox.confirm('确认要"' + text + '""' + row.id + '"的产品吗?')
modal.confirm('确认要"' + text + '""' + row.id + '"的产品吗?')
.then(function () {
let status = row.shelfStatus == 1 ? 2 : 1;
return updateEnterpriseProduct({ id: row.id, shelfStatus: status });

View File

@ -28,6 +28,9 @@ import {
} from "@/api/admin/enterprise/product";
import { reactive, toRefs } from "vue";
import { updateCount } from "@/api/admin/count";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const route = useRoute();
// const router = useRouter();
const labelWidth = 140;

View File

@ -162,7 +162,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
@ -188,6 +190,7 @@ import {
import { search } from "@/api/website/home";
import dayjs from "dayjs";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { paperList } from "@/api/admin/expert/technology";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
@ -305,7 +308,7 @@ const changePattent = (val) => {
// }
/** 删除按钮操作 */
function handleDelete(id) {
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的数据项?')
modal.confirm('是否确认删除数据编号为"' + id + '"的数据项?')
.then(function () {
return deleteExpertCooperateEnterpriseByIds(id);
})

View File

@ -12,7 +12,10 @@
</p>
<el-row>
<el-col :span="24">
<el-form-item label="需求名称:" prop="title">
<el-form-item
:label="t('admin.form.name', { type: t('admin.common.demand') })"
prop="title"
>
<el-input v-model="formData.title"></el-input>
</el-form-item>
</el-col>
@ -51,7 +54,10 @@
<el-row>
<el-col :span="24">
<el-form-item label="需求描述:" prop="description">
<el-form-item
:label="t('webSearch.demandDescription')"
prop="description"
>
<!-- <Editor v-model="formData.description" :minHeight="150" /> -->
<wangEditor
ref="wangEditorRef"
@ -72,7 +78,7 @@
<el-row>
<el-col :span="12">
<el-form-item label="需求联系人:" prop="name">
<el-form-item :label="t('admin.form.demandContact')" prop="name">
<el-input
v-model="formData.name"
placeholder="请输入需求联系人"
@ -80,7 +86,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系人手机号:" prop="mobile">
<el-form-item :label="t('admin.form.contactPhone')" prop="mobile">
<el-input
v-model="formData.mobile"
placeholder="请输入联系人手机号"

View File

@ -54,7 +54,7 @@
<el-table-column align="center" label="手机号" prop="mobile" />
<el-table-column
align="center"
label="发布时间"
:label="t('admin.table.publishTime')"
prop="createTime"
width="180"
>
@ -203,7 +203,7 @@ function handleEdit(id) {
// 修改为完成状态
const complete = (id) => {
ElMessageBox.confirm(`是否确认结束编号为${id}的数据项?`)
modal.confirm(`是否确认结束编号为${id}的数据项?`)
.then(async () => {
await updateCasDemand({ id, status: 4 });
getList();

View File

@ -60,7 +60,7 @@
<!-- province--city--district -->
<el-table-column label="所属领域" prop="territoryStr" />
<el-table-column :label="t('admin.form.contact')" prop="contactUser" />
<el-table-column label="联系电话" prop="contactPhone" />
<el-table-column :label="t('webContact.phone')" prop="contactPhone" />
<!-- <el-zh-column label="创建日期" align="center" prop="created_at">
<template #default="{ row }">
<span>{{ dayjs(row.created_at).format("YYYY-MM-DD HH:mm:ss") }}</span>
@ -143,7 +143,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
@ -166,6 +168,7 @@ import {
// import dayjs from "dayjs";
import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { cloneDeep } from "lodash-unified";
const dataList = ref([]);
@ -219,7 +222,7 @@ function handleQuery() {
// }
/** 删除按钮操作 */
function handleDelete(id) {
ElMessageBox.confirm(`是否确认删除数据编号为"${id}"的数据项?`).then(
modal.confirm(`是否确认删除数据编号为"${id}"的数据项?`).then(
async () => {
await deleteExpertWantEnterpriseByIds({ ids: [id] });
getList();

View File

@ -25,9 +25,13 @@
:label="t('admin.form.name', { type: t('admin.common.achievement') })"
prop="title"
/>
<el-table-column label="成果领域" prop="industryStr" />
<el-table-column :label="t('admin.table.achievementIndustry')" prop="industryStr" />
<!-- <el-zh-column label="浏览量" prop="visitCount" /> -->
<el-table-column label="发布时间" prop="createTime" width="180">
<el-table-column
:label="t('admin.table.publishTime')"
prop="createTime"
width="180"
>
<template #default="{ row }">
<span>
{{ dayjs(row.createTime).format("YYYY-MM-DD HH:mm:ss") }}</span
@ -100,6 +104,7 @@ import {
} from "@/api/admin/expert/achievement";
import dayjs from "dayjs";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
// import { update } from "lodash-unified";
import { useRouter } from "vue-router";
import { updateExpertAchievement } from "@/api/admin/expert/achievement";
@ -141,7 +146,7 @@ const handleQuery = () => {
// }
/** 删除按钮操作 */
const handleDelete = (id) => {
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的成果项?').then(
modal.confirm('是否确认删除数据编号为"' + id + '"的成果项?').then(
async () => {
await deleteAchievementByIds({ ids: [id] });
getList();
@ -152,7 +157,7 @@ const handleDelete = (id) => {
// 上架和下架
function handleShelf(row) {
let text = row.shelfStatus == 2 ? "上架" : "下架";
ElMessageBox.confirm('确认要"' + text + '""' + row.id + '"的成果吗?').then(
modal.confirm('确认要"' + text + '""' + row.id + '"的成果吗?').then(
async () => {
const shelfStatus = row.shelfStatus == 1 ? 2 : 1;
await updateExpertAchievement({ id: row.id, shelfStatus });
@ -163,7 +168,7 @@ function handleShelf(row) {
}
// 取消发布
const handleCancelPublish = (id) => {
ElMessageBox.confirm(`确认要取消发布编号为"${id}"的成果吗?`).then(
modal.confirm(`确认要取消发布编号为"${id}"的成果吗?`).then(
async () => {
await updateExpertAchievement({ id, status: "3" });
ElMessage.success("取消发布成功");

View File

@ -31,7 +31,7 @@
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="发明人" prop="roleName">
<el-form-item :label="t('admin.form.inventor')" prop="roleName">
<el-input
v-model="queryParams.roleName"
placeholder="请输入发明人"
@ -65,13 +65,17 @@
:show-overflow-tooltip="true"
/>
<el-table-column
label="申请号"
:label="t('webSearch.applicationNumber')"
prop="applyCode"
:show-overflow-tooltip="true"
/>
<el-table-column label="发明人" prop="inventor" />
<el-table-column label="申请(专利权)人" prop="applyName" />
<el-table-column label="申请日期" align="center" prop="applyAt">
<el-table-column :label="t('admin.form.inventor')" prop="inventor" />
<el-table-column :label="t('webSearch.applicant')" prop="applyName" />
<el-table-column
:label="t('admin.form.applicationDate')"
align="center"
prop="applyAt"
>
<template #default="scope">
<span>{{ parseTime(scope.row.applyAt) }}</span>
</template>

View File

@ -7,7 +7,7 @@
:inline="true"
@submit.prevent
>
<el-form-item label="论文题目" prop="title">
<el-form-item :label="t('admin.form.paperTitle')" prop="title">
<el-input
v-model="queryParams.title"
placeholder="请输入论文题目"
@ -53,14 +53,22 @@
<el-table v-loading="loading" :data="dataList">
<el-table-column :label="t('admin.common.dataNumber')" prop="id" />
<el-table-column
label="论文题目"
:label="t('admin.form.paperTitle')"
prop="title"
:show-overflow-tooltip="true"
/>
<el-table-column label="刊物" prop="ext" :show-overflow-tooltip="true" />
<el-table-column
:label="t('admin.form.publication')"
prop="ext"
:show-overflow-tooltip="true"
/>
<el-table-column label="作者" prop="author" />
<el-table-column label="关键词" align="center" prop="keyword" />
<el-table-column label="出版日期" align="center">
<el-table-column
:label="t('admin.form.keywords')"
align="center"
prop="keyword"
/>
<el-table-column :label="t('admin.form.publishDate')" align="center">
<template #default="{ row }">
<span>{{ dayjs(row.publishTime).format("YYYY-MM-DD") }}</span>
</template>
@ -149,7 +157,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
@ -169,6 +179,7 @@ import dayjs from "dayjs";
import { cloneDeep } from "lodash";
import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const router = useRouter();
@ -234,7 +245,7 @@ function resetQuery() {
}
/** 删除按钮操作 */
function handleDelete(id) {
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的数据项?').then(
modal.confirm('是否确认删除数据编号为"' + id + '"的数据项?').then(
async () => {
await deleteCasPaper(id);
getList();

View File

@ -32,7 +32,7 @@
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="发明人" prop="inventor">
<el-form-item :label="t('admin.form.inventor')" prop="inventor">
<el-input
v-model="queryParams.inventor"
placeholder="请输入发明人"
@ -91,13 +91,17 @@
:show-overflow-tooltip="true"
/>
<el-table-column
label="申请号"
:label="t('webSearch.applicationNumber')"
prop="applyCode"
:show-overflow-tooltip="true"
/>
<el-table-column label="发明人" prop="inventor" />
<el-table-column label="申请(专利权)人" prop="applyName" />
<el-table-column label="申请日期" align="center" prop="applyAt">
<el-table-column :label="t('admin.form.inventor')" prop="inventor" />
<el-table-column :label="t('webSearch.applicant')" prop="applyName" />
<el-table-column
:label="t('admin.form.applicationDate')"
align="center"
prop="applyAt"
>
<template #default="{ row }">
<span>{{ dayjs(row.applyAt).format("YYYY-MM-DD") }}</span>
</template>
@ -164,7 +168,10 @@
"
/>
</el-form-item>
<el-form-item label="申请号:" prop="applyCode">
<el-form-item
:label="t('webSearch.applicationNumber')"
prop="applyCode"
>
<el-input v-model="form.applyCode" placeholder="请输入申请号" />
</el-form-item>
<el-form-item label="公开号:" prop="openCode">
@ -245,7 +252,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
@ -264,6 +273,7 @@ import { cloneDeep } from "lodash";
import { getInfo } from "@/api/admin/expert/account";
import dayjs from "dayjs";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { patentOptions } from "@/utils/parameter";
import { useRouter } from "vue-router";
import { useI18n } from "vue-i18n";
@ -346,7 +356,7 @@ function resetQuery() {
}
/** 删除按钮操作 */
function handleDelete(id) {
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的专利项?')
modal.confirm('是否确认删除数据编号为"' + id + '"的专利项?')
.then(function () {
return deleteCasPatentByIds(id);
})

View File

@ -69,13 +69,13 @@
:show-overflow-tooltip="true"
/>
<el-table-column :label="t('admin.common.type')" prop="kind" />
<el-table-column label="课题角色" prop="role">
<el-table-column :label="t('admin.table.topicRole')" prop="role">
<template #default="scope">
<div v-if="scope.row.role == 1">承担单位</div>
<div v-else-if="scope.row.role == 2">参与单位</div>
</template>
</el-table-column>
<el-table-column label="课题负责人" prop="director" />
<el-table-column :label="t('admin.form.topicLeader')" prop="director" />
<el-table-column label="发布日期" align="center" prop="created_at">
<template #default="scope">
<span>{{
@ -220,7 +220,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
@ -237,6 +239,7 @@ import {
} from "@/api/admin/expert/research";
import dayjs from "dayjs";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { cloneDeep } from "lodash-unified";
import { useRouter } from "vue-router";
import { useI18n } from "vue-i18n";
@ -312,7 +315,7 @@ function resetQuery() {
}
function handleShelf(row) {
const text = row.shelfStatus == 2 ? "上架" : "下架";
ElMessageBox.confirm(`确认要${text}"${row.id}"的数据吗?`)
modal.confirm(`确认要${text}"${row.id}"的数据吗?`)
.then(() => {
const shelfStatus = row.shelfStatus == 1 ? 2 : 1;
return updateTechnologyProject({ id: row.id, shelfStatus });
@ -327,7 +330,7 @@ function handleShelf(row) {
}
/** 删除按钮操作 */
function handleDelete(id) {
ElMessageBox.confirm(`是否确认删除数据编号为"${id}"的数据项?`).then(
modal.confirm(`是否确认删除数据编号为"${id}"的数据项?`).then(
async () => {
await deleteTechnologyProjectByIds({ ids: [id] });
getList();

View File

@ -1,7 +1,120 @@
<script setup></script>
<script setup>
import { User } from "@element-plus/icons-vue";
</script>
<template>
<div class="app-container">实验室后台</div>
<div class="app-container">
<!-- 数据统计, 使用不同颜色卡片展示 -->
<div class="count-cards">
<el-row :gutter="16">
<el-col :span="6">
<el-card class="count-card">
<div class="card-icon">
<el-icon>
<User />
</el-icon>
</div>
<div class="card-content">
<span class="fl">用户总数</span>
<span class="fr">123</span>
</div>
</el-card>
</el-col>
<el-col :span="6">
<el-card class="count-card">
<div class="card-icon">
<el-icon>
<User />
</el-icon>
</div>
<div class="card-content">
<span class="fl">用户总数</span>
<span class="fr">123</span>
</div>
</el-card>
</el-col>
<el-col :span="6">
<el-card class="count-card">
<div class="card-icon">
<el-icon>
<User />
</el-icon>
</div>
<div class="card-content">
<span class="fl">用户总数</span>
<span class="fr">123</span>
</div>
</el-card>
</el-col>
<el-col :span="6">
<el-card class="count-card">
<div class="card-icon">
<el-icon>
<User />
</el-icon>
</div>
<div class="card-content">
<span class="fl">用户总数</span>
<span class="fr">123</span>
</div>
</el-card>
</el-col>
</el-row>
</div>
</div>
</template>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
.count-cards {
:deep(.count-card) {
.el-card__body {
display: flex;
.card-icon {
flex: 1;
aspect-ratio: 1/1;
display: flex;
justify-content: center;
align-items: center;
font-size: 24px;
}
.card-content {
flex: 6;
display: flex;
justify-content: space-between;
align-items: start;
flex-direction: column;
height: 72px;
.fl {
//靠左对齐 加大 加粗
//align-self: start;
font-size: 20px;
font-weight: 600;
}
.fr {
}
}
}
}
// 不同颜色
& .el-col:nth-child(1) .count-card {
background-color: #409eff;
}
& .el-col:nth-child(2) .count-card {
background-color: #67c23a;
}
& .el-col:nth-child(3) .count-card {
background-color: #e6a23c;
}
& .el-col:nth-child(4) .count-card {
background-color: #f56c6c;
}
}
</style>

View File

@ -53,12 +53,19 @@
/>
<el-table-column
:show-overflow-tooltip="true"
label="成果领域"
:label="t('admin.table.achievementIndustry')"
prop="industryStr"
/>
<el-table-column label="所属专家" prop="expertName" />
<el-table-column
:label="t('admin.form.belongExpert')"
prop="expertName"
/>
<!-- <el-zh-column label="浏览量" prop="visitCount"/>-->
<el-table-column align="center" label="发布时间" prop="createTime">
<el-table-column
align="center"
:label="t('admin.table.publishTime')"
prop="createTime"
>
<template #default="{ row }">
<span>{{ dayjs(row.createTime).format("YYYY-MM-DD") }}</span>
</template>
@ -102,6 +109,8 @@
<script setup>
import dayjs from "dayjs";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { useRouter } from "vue-router";
import { getCurrentInstance, reactive, ref, toRefs } from "vue";
import {
@ -109,6 +118,7 @@ import {
deleteAchievements,
} from "@/api/admin/laboratory/achievement";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const router = useRouter();
@ -164,7 +174,14 @@ function resetQuery() {
* @param id
*/
function handleDelete(id) {
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的成果项?')
modal
.confirm(
t("admin.common.confirmAction", {
number: id,
action: t("admin.common.delete"),
type: t("admin.common.achievement"),
})
)
.then(function () {
return deleteAchievements(id);
})

View File

@ -37,9 +37,11 @@
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">-->
<!-- <el-button icon="plus" size="small" type="primary"> {{ t('admin.common.add') }}</el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button icon="plus" size="small" type="primary">
{{ t("admin.table.relatedExperts") }}
</el-button>
</el-col>
<right-toolbar
v-model:showSearch="showSearch"
@queryTable="getList"
@ -54,10 +56,17 @@
:label="t('admin.form.name', { type: t('admin.common.expert') })"
prop="title"
/>
<el-table-column label="联系电话" prop="mobile" />
<el-table-column label="研究领域" prop="industryStr" />
<!-- <el-zh-column label="申请(专利权)人" prop="applyName"/>-->
<el-table-column align="center" label="入驻时间" prop="workTime">
<el-table-column :label="t('webContact.phone')" prop="mobile" />
<el-table-column
:label="t('admin.table.researchIndustry')"
prop="industryStr"
/>
<!-- <el-zh-column :label="t('webSearch.applicant')" prop="applyName"/>-->
<el-table-column
align="center"
:label="t('admin.table.enterTime')"
prop="workTime"
>
<template #default="{ row }">
<span>{{ dayjs(row.workTime).format("YYYY-MM-DD") }}</span>
</template>
@ -81,7 +90,7 @@
size="small"
type="text"
@click="handleDeleteBind(row.id)"
>{{ t("admin.common.cancel") }}关联
>{{ t("admin.table.cancelRelation") }}
</el-button>
</template>
</el-table-column>
@ -119,7 +128,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm"
>{{ t("admin.common.confirm") }}
</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
@ -131,11 +142,13 @@
import { labPatentList } from "@/api/admin/laboratory/patent";
import dayjs from "dayjs";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { useRouter } from "vue-router";
import { reactive, ref, toRefs } from "vue";
import { computed, reactive, ref, toRefs } from "vue";
import InputBoxAdd from "@/views/components/InputBoxAdd/index.vue";
import { deleteBindExpert, expertList } from "@/api/admin/laboratory/expert";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const router = useRouter();
@ -189,7 +202,14 @@ function resetQuery() {
/** 删除按钮操作 */
function handleDeleteBind(id) {
ElMessageBox.confirm(`是否确认取消关联数据编号为"${id}"的专家?`)
modal
.confirm(
t("admin.common.confirmAction", {
number: id,
action: t("admin.table.cancelRelation"),
type: t("admin.common.expert"),
})
)
.then(function () {
return deleteBindExpert(id);
})

View File

@ -69,10 +69,14 @@
<el-table-column
:show-overflow-tooltip="true"
align="center"
label="型号"
:label="t('admin.form.model')"
prop="model"
/>
<el-table-column align="center" label="购买日期" prop="buyDate">
<el-table-column
align="center"
:label="t('admin.form.buyDate')"
prop="buyDate"
>
<template #default="{ row }">
<span>{{ dayjs(row.buyDate).format("YYYY-MM-DD") }}</span>
</template>
@ -126,10 +130,10 @@
"
/>
</el-form-item>
<el-form-item label="型号:" prop="model">
<el-form-item :label="t('admin.form.model')" prop="model">
<el-input v-model="form.model" placeholder="请输入型号" />
</el-form-item>
<el-form-item label="购买时间:" prop="buyDate">
<el-form-item :label="t('admin.form.buyDate')" prop="buyDate">
<el-date-picker
v-model="form.buyDate"
placeholder="请选择购买时间"
@ -137,20 +141,32 @@
value-format="YYYY-MM-DD HH:mm:ss"
></el-date-picker>
</el-form-item>
<el-form-item label="成果参数:" prop="param">
<el-form-item
:label="t('admin.form.achievementParameter')"
prop="param"
>
<el-input v-model="form.param" placeholder="请输入成果参数" />
</el-form-item>
<el-form-item label="设备描述:" prop="description">
<el-form-item
:label="t('admin.form.deviceDescription')"
prop="description"
>
<el-input
v-model="form.description"
placeholder="请输入设备描述"
:placeholder="
t('admin.form.placeholder', {
type: t('admin.form.deviceDescription'),
})
"
type="textarea"
></el-input>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
@ -163,6 +179,7 @@
import { reactive, ref, toRefs } from "vue";
import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import {
deleteEquipment,
equipmentList,
@ -231,7 +248,7 @@ function resetQuery() {
/** 删除按钮操作 */
function handleDelete(row) {
ElMessageBox.confirm('是否确认删除数据编号为"' + row.deviceId + '"的数据项?')
modal.confirm('是否确认删除数据编号为"' + row.deviceId + '"的数据项?')
.then(function () {
return deleteEquipment([row.deviceId]);
})

View File

@ -48,14 +48,26 @@
<el-table-column :label="t('admin.common.dataNumber')" prop="id" />
<el-table-column
:show-overflow-tooltip="true"
label="论文题目"
:label="t('admin.form.paperTitle')"
prop="title"
/>
<el-table-column :show-overflow-tooltip="true" label="刊物" prop="ext" />
<el-table-column label="所属专家" prop="author" />
<el-table-column align="center" label="关键词" prop="keyword" />
<el-table-column
:show-overflow-tooltip="true"
:label="t('admin.form.publication')"
prop="ext"
/>
<el-table-column :label="t('admin.form.belongExpert')" prop="author" />
<el-table-column
align="center"
:label="t('admin.form.keywords')"
prop="keyword"
/>
<!-- <el-zh-column align="center" label="浏览量" prop="readCount"/>-->
<el-table-column align="center" label="出版日期" prop="publishTime">
<el-table-column
align="center"
:label="t('admin.form.publishDate')"
prop="publishTime"
>
<template #default="{ row }">
<span>{{ dayjs(row.publishTime).format("YYYY-MM-DD") }}</span>
</template>
@ -99,7 +111,7 @@
<el-form-item label="论文题目:" prop="title">
<el-input v-model="form.title" placeholder="请输入论文题目" />
</el-form-item>
<el-form-item label="刊物:" prop="ext">
<el-form-item :label="t('admin.form.publication')" prop="ext">
<el-input v-model="form.ext" placeholder="请输入刊物" />
</el-form-item>
<el-form-item label="作者:" prop="author">
@ -131,7 +143,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm"
>{{ t("admin.common.confirm") }}
</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
@ -142,12 +156,14 @@
<script setup>
import dayjs from "dayjs";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import InputBoxAdd from "@/views/components/InputBoxAdd";
import { useRouter } from "vue-router";
import { getCurrentInstance, reactive, ref, toRefs } from "vue";
import { cloneDeep } from "lodash";
import { deletePaper, paperList } from "@/api/admin/laboratory/paper";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const router = useRouter();
@ -215,7 +231,14 @@ function resetQuery() {
/** 删除按钮操作 */
function handleDelete(id) {
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的论文项?')
modal
.confirm(
t("admin.common.confirmAction", {
number: id,
action: t("admin.common.delete"),
type: t("admin.common.paper"),
})
)
.then(function () {
return deletePaper(id);
})

View File

@ -73,12 +73,16 @@
/>
<el-table-column
:show-overflow-tooltip="true"
label="申请号"
:label="t('webSearch.applicationNumber')"
prop="applyCode"
/>
<el-table-column label="发明人" prop="inventor" />
<el-table-column label="申请(专利权)人" prop="applyName" />
<el-table-column align="center" label="申请日期" prop="applyAt">
<el-table-column :label="t('admin.form.inventor')" prop="inventor" />
<el-table-column :label="t('webSearch.applicant')" prop="applyName" />
<el-table-column
align="center"
:label="t('admin.form.applicationDate')"
prop="applyAt"
>
<template #default="{ row }">
<span>{{ dayjs(row.applyAt).format("YYYY-MM-DD") }}</span>
</template>
@ -141,7 +145,7 @@
<!-- <el-form-item label="专利名称:" prop="title">-->
<!-- <el-input v-model="form.title" :placeholder="t('admin.form.placeholder', {type: t('admin.common.patent')})"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="申请号:" prop="applyCode">-->
<!-- <el-form-item :label="t('webSearch.applicationNumber')" prop="applyCode">-->
<!-- <el-input v-model="form.applyCode" placeholder="请输入申请号"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="公开号:" prop="openCode">-->
@ -222,7 +226,7 @@
<!-- </el-form>-->
<!-- <template #footer>-->
<!-- <div class="dialog-footer">-->
<!-- <el-button type="primary" @click="submitForm"> </el-button>-->
<!-- <el-button type="primary" @click="submitForm">{{t("admin.common.confirm")}}</el-button>-->
<!-- <el-button @click="cancel"> </el-button>-->
<!-- </div>-->
<!-- </template>-->
@ -237,6 +241,7 @@ import {
} from "@/api/admin/laboratory/patent";
import dayjs from "dayjs";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { useRouter } from "vue-router";
import { getCurrentInstance, reactive, ref, toRefs } from "vue";
import { useI18n } from "vue-i18n";
@ -322,7 +327,11 @@ function resetQuery() {
/** 删除按钮操作 */
function handleDelete(id) {
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的专利项?')
modal.confirm(t("admin.common.confirmAction", {
number: id,
action: t("admin.common.delete"),
type: t("admin.common.patent"),
}))
.then(function () {
return deleteLabPatentByIds(id);
})

View File

@ -29,7 +29,7 @@
type="primary"
@click="handleQuery"
>
{{ t() }}
{{ t("admin.common.search") }}
</el-button>
<el-button icon="Refresh" size="small" @click="resetQuery">
{{ t("admin.common.reset") }}
@ -60,14 +60,18 @@
:label="t('admin.common.type')"
prop="kind"
/>
<!-- <el-zh-column label="所属专家" prop="inventor" />-->
<el-table-column label="课题角色">
<!-- <el-zh-column :label="t('admin.form.belongExpert')" prop="inventor" />-->
<el-table-column :label="t('admin.table.topicRole')">
<template #default="{ row }">
{{ subjectRoleDict.find((item) => item.value === row.role)?.label }}
</template>
</el-table-column>
<el-table-column label="课题负责人" prop="director" />
<el-table-column align="center" label="发布时间" prop="applyAt">
<el-table-column :label="t('admin.form.topicLeader')" prop="director" />
<el-table-column
align="center"
:label="t('admin.table.publishTime')"
prop="applyAt"
>
<template #default="{ row }">
<span>{{ dayjs(row.applyAt).format("YYYY-MM-DD") }}</span>
</template>
@ -110,6 +114,7 @@
<script setup>
import dayjs from "dayjs";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { useRouter } from "vue-router";
import { getCurrentInstance, reactive, ref, toRefs } from "vue";
import {
@ -170,7 +175,11 @@ function resetQuery() {
/** 删除按钮操作 */
function handleDelete(id) {
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的科研项目?')
modal.confirm(t("admin.common.confirmAction", {
number: id,
action: t("admin.common.delete"),
type: t("admin.common.researchProject"),
}))
.then(function () {
return deleteTechnologyProject(id);
})

View File

@ -9,7 +9,10 @@
<el-row>
<el-col :span="24">
<el-form-item label="需求名称:" prop="title">
<el-form-item
:label="t('admin.form.name', { type: t('admin.common.demand') })"
prop="title"
>
<el-input v-model="formData.title"></el-input>
</el-form-item>
</el-col>
@ -47,7 +50,10 @@
<el-row>
<el-col :span="24">
<el-form-item label="需求描述:" prop="description">
<el-form-item
:label="t('webSearch.demandDescription')"
prop="description"
>
<editor v-model="formData.description" :minHeight="150" />
</el-form-item>
</el-col>
@ -61,7 +67,7 @@
<el-row>
<el-col :span="12">
<el-form-item label="需求联系人:" prop="name">
<el-form-item :label="t('admin.form.demandContact')" prop="name">
<el-input
v-model="formData.name"
placeholder="请输入需求联系人"
@ -69,7 +75,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系人手机号:" prop="mobile">
<el-form-item :label="t('admin.form.contactPhone')" prop="mobile">
<el-input
v-model="formData.mobile"
placeholder="请输入联系人手机号"
@ -99,7 +105,9 @@
</el-form>
<el-row justify="center">
<el-col :span="1.5">
<el-button type="primary" @click="cancel">{{ t("identity.entrance.back") }}</el-button>
<el-button type="primary" @click="cancel"
>{{ t("admin.identity.entrance.back") }}
</el-button>
</el-col>
</el-row>
</el-card>
@ -112,6 +120,9 @@ import { ElMessage } from "element-plus";
import { useRoute } from "vue-router";
import tab from "@/plugins/tab";
import { serviceDemandInfo } from "@/api/admin/research/service-demand";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const data = reactive({
formData: {

View File

@ -75,7 +75,7 @@
:label="t('admin.form.mobile')"
prop="mobile"
/>
<el-table-column align="center" label="发布时间">
<el-table-column align="center" :label="t('admin.table.publishTime')">
<template #default="{ row }">
<span>{{ dayjs(row.createTime).format("YYYY-MM-DD") }}</span>
</template>
@ -87,14 +87,16 @@
>
<template #default="{ row }">
<el-button icon="FolderRemove" size="small" type="text" @click=""
>{{ t("admin.common.cancel") }}发布
>{{ t("admin.table.cancelPublish") }}
</el-button>
<el-button
icon="view"
size="small"
type="text"
@click="handleDetail(row.id)"
>查看
>{{
t('admin.common.view')
}}
</el-button>
</template>
</el-table-column>
@ -114,6 +116,7 @@
import { deleteLabPatentByIds } from "@/api/admin/laboratory/patent";
import dayjs from "dayjs";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { useRouter } from "vue-router";
import { getCurrentInstance, reactive, ref, toRefs } from "vue";
import { serviceDemandList } from "@/api/admin/laboratory/service-demand";
@ -173,7 +176,7 @@ function resetQuery() {
/** 删除按钮操作 */
function handleDelete(id) {
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的专利项?')
modal.confirm('是否确认删除数据编号为"' + id + '"的专利项?')
.then(function () {
return deleteLabPatentByIds(id);
})

View File

@ -96,14 +96,14 @@ getList();
:label="t('admin.form.name')"
prop="typeName"
></el-table-column>
<el-table-column
:label="t('admin.form.contact')"
prop="nickname"
></el-table-column>
<el-table-column
:label="t('admin.form.mobile')"
prop="phone"
></el-table-column>
<!-- <el-table-column-->
<!-- :label="t('admin.form.contact')"-->
<!-- prop="nickname"-->
<!-- ></el-table-column>-->
<!-- <el-table-column-->
<!-- :label="t('admin.form.mobile')"-->
<!-- prop="phone"-->
<!-- ></el-table-column>-->
<el-table-column label="浏览次数" prop="seeCount"></el-table-column>
<el-table-column label="浏览时间" prop="updateTime"></el-table-column>
</el-table>

View File

@ -53,12 +53,19 @@
/>
<el-table-column
:show-overflow-tooltip="true"
label="成果领域"
:label="t('admin.table.achievementIndustry')"
prop="industryStr"
/>
<el-table-column label="所属专家" prop="expertName" />
<el-table-column
:label="t('admin.form.belongExpert')"
prop="expertName"
/>
<!-- <el-zh-column label="浏览量" prop="visitCount"/>-->
<el-table-column align="center" label="发布时间" prop="createTime">
<el-table-column
align="center"
:label="t('admin.table.publishTime')"
prop="createTime"
>
<template #default="{ row }">
<span>{{ dayjs(row.createTime).format("YYYY-MM-DD") }}</span>
</template>
@ -104,11 +111,14 @@ import dayjs from "dayjs";
import { useRouter } from "vue-router";
import { reactive, ref, toRefs } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import {
achievementList,
deleteAchievements,
} from "@/api/admin/research/achievement";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const router = useRouter();
@ -162,7 +172,8 @@ function resetQuery() {
* @param id
*/
function handleDelete(id) {
ElMessageBox.confirm(`是否确认删除数据编号为"${id}"的成果项?'`)
modal
.confirm(`是否确认删除数据编号为"${id}"的成果项?'`)
.then(function () {
return deleteAchievements(id);
})

View File

@ -56,10 +56,17 @@
:label="t('admin.form.name', { type: t('admin.common.expert') })"
prop="name"
/>
<el-table-column label="联系电话" prop="mobile" />
<el-table-column label="研究领域" prop="industryStr" />
<!-- <el-zh-column label="申请(专利权)人" prop="applyName"/>-->
<el-table-column align="center" label="入驻时间" prop="workTime">
<el-table-column :label="t('webContact.phone')" prop="mobile" />
<el-table-column
:label="t('admin.table.researchIndustry')"
prop="industryStr"
/>
<!-- <el-zh-column :label="t('webSearch.applicant')" prop="applyName"/>-->
<el-table-column
align="center"
:label="t('admin.table.enterTime')"
prop="workTime"
>
<template #default="{ row }">
<span>{{ dayjs(row.workTime).format("YYYY-MM-DD") }}</span>
</template>
@ -121,7 +128,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
@ -132,6 +141,7 @@
<script setup>
import dayjs from "dayjs";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { useRouter } from "vue-router";
import { reactive, ref, toRefs } from "vue";
import InputBoxAdd from "@/views/components/InputBoxAdd/index.vue";
@ -190,7 +200,7 @@ function resetQuery() {
/** 删除按钮操作 */
function handleDeleteBind(id) {
ElMessageBox.confirm(`是否确认取消关联数据编号为"${id}"的专家?`)
modal.confirm(`是否确认取消关联数据编号为"${id}"的专家?`)
.then(function () {
return deleteBindExpert(id);
})

View File

@ -69,10 +69,14 @@
<el-table-column
:show-overflow-tooltip="true"
align="center"
label="型号"
:label="t('admin.form.model')"
prop="model"
/>
<el-table-column align="center" label="购买日期" prop="buyDate">
<el-table-column
align="center"
:label="t('admin.form.buyDate')"
prop="buyDate"
>
<template #default="{ row }">
<span>{{ dayjs(row.buyDate).format("YYYY-MM-DD") }}</span>
</template>
@ -126,10 +130,10 @@
"
/>
</el-form-item>
<el-form-item label="型号:" prop="model">
<el-form-item :label="t('admin.form.model')" prop="model">
<el-input v-model="form.model" placeholder="请输入型号" />
</el-form-item>
<el-form-item label="购买时间:" prop="buyDate">
<el-form-item :label="t('admin.form.buyDate')" prop="buyDate">
<el-date-picker
v-model="form.buyDate"
placeholder="请选择购买时间"
@ -137,20 +141,32 @@
value-format="YYYY-MM-DD HH:mm:ss"
></el-date-picker>
</el-form-item>
<el-form-item label="成果参数:" prop="param">
<el-form-item
:label="t('admin.form.achievementParameter')"
prop="param"
>
<el-input v-model="form.param" placeholder="请输入成果参数" />
</el-form-item>
<el-form-item label="设备描述:" prop="description">
<el-form-item
:label="t('admin.form.deviceDescription')"
prop="description"
>
<el-input
v-model="form.description"
placeholder="请输入设备描述"
:placeholder="
t('admin.form.placeholder', {
type: t('admin.form.deviceDescription'),
})
"
type="textarea"
></el-input>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
@ -163,6 +179,7 @@
import { reactive, ref, toRefs } from "vue";
import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import {
deleteEquipment,
equipmentList,
@ -231,7 +248,7 @@ function resetQuery() {
/** 删除按钮操作 */
function handleDelete(row) {
ElMessageBox.confirm('是否确认删除数据编号为"' + row.deviceId + '"的数据项?')
modal.confirm('是否确认删除数据编号为"' + row.deviceId + '"的数据项?')
.then(function () {
return deleteEquipment([row.deviceId]);
})

View File

@ -5,7 +5,9 @@
<el-col :span="12">
<el-row :gutter="12" justify="center">
<el-col :span="1.5">
<el-button @click="cancel">{{ t("admin.common.cancel") }}</el-button>
<el-button @click="cancel">{{
t("admin.common.cancel")
}}</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" @click="submit">{{

View File

@ -65,10 +65,14 @@
<el-table-column
:show-overflow-tooltip="true"
align="center"
label="研究领域"
:label="t('admin.table.researchIndustry')"
prop="industryStr"
/>
<el-table-column align="center" label="联系电话" prop="phone" />
<el-table-column
align="center"
:label="t('webContact.phone')"
prop="phone"
/>
<el-table-column align="center" label="实验室网址" prop="url" />
<el-table-column align="center" label="添加日期" prop="createTime">
<template #default="{ row }">
@ -122,10 +126,10 @@
"
/>
</el-form-item>
<el-form-item label="型号:" prop="model">
<el-form-item :label="t('admin.form.model')" prop="model">
<el-input v-model="form.model" placeholder="请输入型号" />
</el-form-item>
<el-form-item label="购买时间:" prop="buyDate">
<el-form-item :label="t('admin.form.buyDate')" prop="buyDate">
<el-date-picker
v-model="form.buyDate"
placeholder="请选择购买时间"
@ -133,20 +137,32 @@
value-format="YYYY-MM-DD HH:mm:ss"
></el-date-picker>
</el-form-item>
<el-form-item label="成果参数:" prop="param">
<el-form-item
:label="t('admin.form.achievementParameter')"
prop="param"
>
<el-input v-model="form.param" placeholder="请输入成果参数" />
</el-form-item>
<el-form-item label="设备描述:" prop="description">
<el-form-item
:label="t('admin.form.deviceDescription')"
prop="description"
>
<el-input
v-model="form.description"
placeholder="请输入设备描述"
:placeholder="
t('admin.form.placeholder', {
type: t('admin.form.deviceDescription'),
})
"
type="textarea"
></el-input>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
@ -158,6 +174,7 @@
import { reactive, ref, toRefs } from "vue";
import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import {
deleteEquipment,
insertEquipment,
@ -228,7 +245,7 @@ function resetQuery() {
/** 删除按钮操作 */
function handleDelete(row) {
ElMessageBox.confirm('是否确认删除数据编号为"' + row.deviceId + '"的数据项?')
modal.confirm('是否确认删除数据编号为"' + row.deviceId + '"的数据项?')
.then(function () {
return deleteEquipment([row.deviceId]);
})
@ -290,7 +307,7 @@ function submitForm() {
}
const handleCancelBind = (row) => {
ElMessageBox.confirm(`是否确认解绑实验室 : ${row.name}`, "解绑实验室")
modal.confirm(`是否确认解绑实验室 : ${row.name}`, "解绑实验室")
.then(() => {
return delBindLaboratory(row.id);
})

View File

@ -48,14 +48,26 @@
<el-table-column :label="t('admin.common.dataNumber')" prop="id" />
<el-table-column
:show-overflow-tooltip="true"
label="论文题目"
:label="t('admin.form.paperTitle')"
prop="title"
/>
<el-table-column :show-overflow-tooltip="true" label="刊物" prop="ext" />
<el-table-column label="所属专家" prop="author" />
<el-table-column align="center" label="关键词" prop="keyword" />
<el-table-column
:show-overflow-tooltip="true"
:label="t('admin.form.publication')"
prop="ext"
/>
<el-table-column :label="t('admin.form.belongExpert')" prop="author" />
<el-table-column
align="center"
:label="t('admin.form.keywords')"
prop="keyword"
/>
<!-- <el-zh-column align="center" label="浏览量" prop="readCount"/>-->
<el-table-column align="center" label="出版日期" prop="publishTime">
<el-table-column
align="center"
:label="t('admin.form.publishDate')"
prop="publishTime"
>
<template #default="{ row }">
<span>{{ dayjs(row.publishTime).format("YYYY-MM-DD") }}</span>
</template>
@ -100,7 +112,7 @@
<el-form-item label="论文题目:" prop="title">
<el-input v-model="form.title" placeholder="请输入论文题目" />
</el-form-item>
<el-form-item label="刊物:" prop="ext">
<el-form-item :label="t('admin.form.publication')" prop="ext">
<el-input v-model="form.ext" placeholder="请输入刊物" />
</el-form-item>
<el-form-item label="作者:" prop="author">
@ -132,7 +144,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
@ -143,6 +157,7 @@
<script setup>
import dayjs from "dayjs";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import InputBoxAdd from "@/views/components/InputBoxAdd";
import { useRouter } from "vue-router";
import { getCurrentInstance, reactive, ref, toRefs } from "vue";
@ -216,7 +231,7 @@ function resetQuery() {
/** 删除按钮操作 */
function handleDelete(id) {
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的论文项?')
modal.confirm('是否确认删除数据编号为"' + id + '"的论文项?')
.then(function () {
return deletePaper(id);
})

View File

@ -53,12 +53,16 @@
/>
<el-table-column
:show-overflow-tooltip="true"
label="申请号"
:label="t('webSearch.applicationNumber')"
prop="applyCode"
/>
<el-table-column label="发明人" prop="inventor" />
<el-table-column label="申请(专利权)人" prop="applyName" />
<el-table-column align="center" label="申请日期" prop="applyAt">
<el-table-column :label="t('admin.form.inventor')" prop="inventor" />
<el-table-column :label="t('webSearch.applicant')" prop="applyName" />
<el-table-column
align="center"
:label="t('admin.form.applicationDate')"
prop="applyAt"
>
<template #default="{ row }">
<span>{{ dayjs(row.applyAt).format("YYYY-MM-DD") }}</span>
</template>
@ -96,6 +100,7 @@ import dayjs from "dayjs";
import { useRouter } from "vue-router";
import { reactive, ref, toRefs } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import {
deleteResearchPatentByIds,
researchPatentList,
@ -151,7 +156,7 @@ function resetQuery() {
/** 删除按钮操作 */
function handleDelete(id) {
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的专利项?')
modal.confirm('是否确认删除数据编号为"' + id + '"的专利项?')
.then(function () {
return deleteResearchPatentByIds(id);
})

View File

@ -66,16 +66,24 @@
:label="t('admin.common.type')"
prop="kind"
/>
<!-- <el-zh-column label="所属专家" prop="inventor" />-->
<el-table-column align="center" label="课题角色">
<!-- <el-zh-column :label="t('admin.form.belongExpert')" prop="inventor" />-->
<el-table-column align="center" :label="t('admin.table.topicRole')">
<template #default="{ row }">
<span>{{
subjectRoleDict.find((item) => item.value === row.role)?.label
}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="课题负责人" prop="director" />
<el-table-column align="center" label="发布时间" prop="applyAt">
<el-table-column
align="center"
:label="t('admin.form.topicLeader')"
prop="director"
/>
<el-table-column
align="center"
:label="t('admin.table.publishTime')"
prop="applyAt"
>
<template #default="{ row }">
<span>{{ dayjs(row.applyAt).format("YYYY-MM-DD") }}</span>
</template>
@ -118,6 +126,7 @@
<script setup>
import dayjs from "dayjs";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { useRouter } from "vue-router";
import { getCurrentInstance, reactive, ref, toRefs } from "vue";
import {
@ -178,7 +187,8 @@ function resetQuery() {
/** 删除按钮操作 */
function handleDelete(id) {
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的科研项目?')
modal
.confirm('是否确认删除数据编号为"' + id + '"的科研项目?')
.then(function () {
return deleteTechnologyProject(id);
})

View File

@ -9,7 +9,10 @@
<el-row>
<el-col :span="24">
<el-form-item label="需求名称:" prop="title">
<el-form-item
:label="t('admin.form.name', { type: t('admin.common.demand') })"
prop="title"
>
<el-input v-model="formData.title"></el-input>
</el-form-item>
</el-col>
@ -47,7 +50,7 @@
<el-row>
<el-col :span="24">
<el-form-item label="需求描述:" prop="add">
<el-form-item :label="t('webSearch.demandDescription')" prop="add">
<editor v-model="formData.add" :minHeight="150" />
</el-form-item>
</el-col>
@ -61,7 +64,7 @@
<el-row>
<el-col :span="12">
<el-form-item label="需求联系人:" prop="name">
<el-form-item :label="t('admin.form.demandContact')" prop="name">
<el-input
v-model="formData.name"
placeholder="请输入需求联系人"
@ -69,7 +72,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系人手机号:" prop="mobile">
<el-form-item :label="t('admin.form.contactPhone')" prop="mobile">
<el-input
v-model="formData.mobile"
placeholder="请输入联系人手机号"
@ -99,7 +102,9 @@
</el-form>
<el-row justify="center">
<el-col :span="1.5">
<el-button type="primary" @click="cancel">{{ t("identity.entrance.back") }}</el-button>
<el-button type="primary" @click="cancel">{{
t("admin.identity.entrance.back")
}}</el-button>
</el-col>
</el-row>
</el-card>

View File

@ -75,7 +75,7 @@
:label="t('admin.form.mobile')"
prop="mobile"
/>
<el-table-column align="center" label="发布时间">
<el-table-column align="center" :label="t('admin.table.publishTime')">
<template #default="{ row }">
<span>{{ dayjs(row.createTime).format("YYYY-MM-DD") }}</span>
</template>
@ -114,6 +114,7 @@
import { deleteLabPatentByIds } from "@/api/admin/laboratory/patent";
import dayjs from "dayjs";
import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal";
import { useRouter } from "vue-router";
import { getCurrentInstance, reactive, ref, toRefs } from "vue";
import { serviceDemandList } from "@/api/admin/research/service-demand";
@ -173,7 +174,8 @@ function resetQuery() {
/** 删除按钮操作 */
function handleDelete(id) {
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的专利项?')
modal
.confirm('是否确认删除数据编号为"' + id + '"的专利项?')
.then(function () {
return deleteLabPatentByIds(id);
})

View File

@ -11,7 +11,7 @@
<el-row v-if="isAdd">
<el-col :span="24">
<el-form-item label="姓名:" prop="name">
<el-form-item :label="t('admin.form.fullName')" prop="name">
<el-input v-model="modelValue.name"></el-input>
</el-form-item>
</el-col>
@ -19,7 +19,7 @@
<el-row v-if="isAdd">
<el-col :span="24">
<el-form-item label="手机号:" prop="mobile">
<el-form-item :label="t('admin.form.mobile')" prop="mobile">
<el-input v-model="modelValue.mobile"></el-input>
</el-form-item>
</el-col>
@ -27,7 +27,7 @@
<el-row v-if="isAdd">
<el-col :span="24">
<el-form-item label="身份证号:" prop="idCard">
<el-form-item :label="t('admin.form.idCard')" prop="idCard">
<el-input v-model="modelValue.idCard"></el-input>
</el-form-item>
</el-col>
@ -60,8 +60,8 @@
v-model="modelValue"
:labelWidth="labelWidth"
fieldKey="keywords"
placeholder="应用场景关键词+技术产品关键词"
title="关键词"
:placeholder="t('admin.form.inputKeywords')"
:title="t('admin.form.keywords')"
/>
<el-row v-if="isAdd">

View File

@ -1,9 +1,9 @@
<template>
<el-form
ref="formRef"
:label-width="labelWidth + 'px'"
:model="modelValue"
:rules="rules"
ref="formRef"
:label-width="labelWidth + 'px'"
:model="modelValue"
:rules="rules"
>
<div v-if="showTitle" class="form_title">
{{ t("admin.form.basicInfo") }}
@ -13,7 +13,7 @@
<el-row>
<el-col :span="24">
<el-form-item label="企业logo:">
<ImageUpload v-model="modelValue.image" :limit="1"/>
<ImageUpload v-model="modelValue.image" :limit="1" />
</el-form-item>
</el-col>
</el-row>
@ -36,9 +36,9 @@
<el-col :span="24">
<el-form-item label="联系方式" prop="phone">
<el-input
v-model="modelValue.phone"
:maxlength="11"
oninput="
v-model="modelValue.phone"
:maxlength="11"
oninput="
value = value
.replace(/[^\d.]/g, '')
.replace(/\.{2,}/g, '.')
@ -79,10 +79,10 @@
<el-form-item label="企业类型:" prop="kind">
<el-select v-model="modelValue.kind" placeholder="请选择">
<el-option
v-for="item in enterpriseOptions"
:key="item.key"
:label="item.value"
:value="item.key"
v-for="item in enterpriseOptions"
:key="item.key"
:label="item.value"
:value="item.key"
>
</el-option>
</el-select>
@ -96,9 +96,9 @@
</el-row>
<CityOptions
ref="cityFormRef"
v-model="modelValue"
:labelWidth="labelWidth"
ref="cityFormRef"
v-model="modelValue"
:labelWidth="labelWidth"
/>
<el-row>
@ -110,27 +110,27 @@
</el-row>
<FieldOptions
ref="fieldFormRef"
v-model="modelValue"
:labelWidth="labelWidth"
ref="fieldFormRef"
v-model="modelValue"
:labelWidth="labelWidth"
/>
<InputBoxAdd
ref="keywordsFormRef"
v-model="modelValue"
:labelWidth="labelWidth"
fieldKey="keywords"
placeholder="应用场景关键词+技术产品关键词"
title="关键词"
ref="keywordsFormRef"
v-model="modelValue"
:labelWidth="labelWidth"
fieldKey="keywords"
placeholder="应用场景关键词+技术产品关键词"
title="关键词"
/>
<InputBoxAdd
v-if="isAdd"
ref="directionsFormRef"
v-model="modelValue"
:labelWidth="labelWidth"
fieldKey="directions"
placeholder="请输入生产方向"
title="生产方向"
v-if="isAdd"
ref="directionsFormRef"
v-model="modelValue"
:labelWidth="labelWidth"
fieldKey="directions"
placeholder="请输入生产方向"
title="生产方向"
/>
<el-row>
@ -149,9 +149,9 @@
<el-col :span="24">
<el-form-item :label="t('admin.form.businessLicense')" prop="license">
<image-upload
v-model="modelValue.license"
:isShowTip="false"
:limit="1"
v-model="modelValue.license"
:isShowTip="false"
:limit="1"
/>
</el-form-item>
</el-col>
@ -172,9 +172,9 @@
<el-col :span="24">
<el-form-item label="单位简介" prop="introduce">
<WangEditor
v-model="modelValue.introduce"
:minHeight="300"
@blur="formRef.validateField(`introduce`)"
v-model="modelValue.introduce"
:minHeight="300"
@blur="formRef.validateField(`introduce`)"
/>
</el-form-item>
</el-col>
@ -188,12 +188,12 @@ import FieldOptions from "../FieldOptions";
import InputBoxAdd from "../InputBoxAdd";
// import { researchSelect, laboratorySelect } from "@/api/identity/index";
import WangEditor from "@/components/WangEditor";
import {enterpriseOptions} from "@/utils/parameter";
import {reactive, ref, toRefs} from "vue";
import { enterpriseOptions } from "@/utils/parameter";
import { reactive, ref, toRefs } from "vue";
import ImageUpload from "@/components/ImageUpload/index.vue";
import {useI18n} from "vue-i18n";
import { useI18n } from "vue-i18n";
const {t} = useI18n();
const { t } = useI18n();
const props = defineProps({
modelValue: Object,
isAdd: {
@ -209,7 +209,7 @@ const props = defineProps({
default: 120,
},
});
const {modelValue, isAdd, showTitle, labelWidth} = toRefs(props);
const { modelValue, isAdd, showTitle, labelWidth } = toRefs(props);
const vNumber = {
mounted: (el, _binding, vnode, _prevVnode) => {
@ -243,9 +243,9 @@ const data = reactive({
trigger: "blur",
},
],
username: [{required: true, message: "请输入联系人", trigger: "blur"}],
username: [{ required: true, message: "请输入联系人", trigger: "blur" }],
phone: [
{required: true, message: "请输入联系方式", trigger: "blur"},
{ required: true, message: "请输入联系方式", trigger: "blur" },
{
pattern: /^1[3456789]\d{9}$/,
message: "手机号格式不正确",
@ -253,7 +253,7 @@ const data = reactive({
},
],
email: [
{required: true, message: "请输入邮箱", trigger: "blur"},
{ required: true, message: "请输入邮箱", trigger: "blur" },
{
pattern: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
message: "邮箱格式不正确",
@ -358,7 +358,7 @@ const data = reactive({
],
},
});
const {rules} = toRefs(data);
const { rules } = toRefs(data);
const formRef = ref();
const cityFormRef = ref();
@ -383,11 +383,11 @@ const validateForm = async () => {
if (isAdd.value) {
const directionsFormValid = await directionsFormRef.value.validateForm();
return (
formValid &&
cityFormValid &&
fieldFormValid &&
keywordsFormValid &&
directionsFormValid
formValid &&
cityFormValid &&
fieldFormValid &&
keywordsFormValid &&
directionsFormValid
);
} else {
return formValid && cityFormValid && fieldFormValid && keywordsFormValid;

View File

@ -18,7 +18,7 @@
</el-col>
</el-row>
<el-row v-if="isAdd">
<el-row v-if="isAdd && false">
<el-col :span="24">
<el-form-item :label="t('admin.form.organizationCode')" prop="code">
<el-row justify="space-between" type="flex">
@ -52,8 +52,8 @@
v-model="modelValue"
:labelWidth="labelWidth"
fieldKey="keywords"
placeholder="应用场景关键词+技术产品关键词"
title="关键词"
:placeholder="t('admin.form.inputKeywords')"
:title="t('admin.form.keywords')"
/>
<el-row>
<el-col :span="24">
@ -89,12 +89,92 @@
v-model="modelValue"
:labelWidth="labelWidth"
fieldKey="researchs"
placeholder="请输入研究方向"
title="研究方向"
:placeholder="
t('admin.form.placeholder', { type: t('admin.form.researchDirection') })
"
:title="t('admin.form.researchDirection')"
/>
<el-row>
<el-col :span="24">
<el-form-item label="实验室简介" prop="introduction">
<el-form-item
:label="t('webSearch.technicalApplication')"
prop="primaryTechnology"
>
<el-input
v-model="modelValue.primaryTechnology"
:autosize="{ minRows: 4 }"
:placeholder="
t('admin.form.placeholder', {
type: t('webSearch.technicalApplication'),
})
"
type="textarea"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item
:label="t('webSearch.researchProject')"
prop="researchProject"
>
<el-input
v-model="modelValue.researchProject"
:autosize="{ minRows: 4 }"
:placeholder="
t('admin.form.placeholder', {
type: t('webSearch.researchProject'),
})
"
type="textarea"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item
:label="t('webSearch.representativeAchievements')"
prop="achievement"
>
<el-input
v-model="modelValue.achievement"
:autosize="{ minRows: 4 }"
:placeholder="
t('admin.form.placeholder', {
type: t('webSearch.representativeAchievements'),
})
"
type="textarea"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="t('webContact.phone')" prop="phone">
<el-input
v-model="modelValue.phone"
:maxlength="11"
oninput="value = value.replace(/\D+/, '')"
:placeholder="
t('admin.form.placeholder', { type: t('webContact.phone') })
"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item
:label="
t('admin.form.introduction', {
type: t('admin.common.lab'),
})
"
prop="introduction"
>
<editor
ref="introduceRef"
v-model="modelValue.introduction"

View File

@ -3,8 +3,12 @@
<el-card shadow="always" style="width: 55%; margin: 0 auto">
<agent-form ref="agentFormRef" v-model="form" is-add />
<div :style="{ marginLeft: labelWidth + 'px' }">
<el-button @click="$router.go(-1)">{{ t("admin.common.cancel") }}</el-button>
<el-button type="primary" @click="submitForm">{{ t("admin.common.submit") }}</el-button>
<el-button @click="$router.go(-1)">{{
t("admin.common.cancel")
}}</el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.submit")
}}</el-button>
</div>
</el-card>
</div>

View File

@ -8,8 +8,12 @@
ref="enterpriseFormRef"
/>
<div :style="{ marginLeft: labelWidth + 'px' }">
<el-button @click="$router.go(-1)">{{ t("admin.common.cancel") }}</el-button>
<el-button type="primary" @click="submitForm">{{ t("admin.common.submit") }}</el-button>
<el-button @click="$router.go(-1)">{{
t("admin.common.cancel")
}}</el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.submit")
}}</el-button>
</div>
</el-card>
</div>
@ -17,11 +21,11 @@
<script setup>
import { insertEnterprise } from "@/api/identity/index";
import { ElMessage } from "element-plus";
import {reactive, ref, toRefs} from "vue";
import { reactive, ref, toRefs } from "vue";
import { useRouter } from "vue-router";
import EnterpriseForm from "../components/EnterpriseForm/index.vue";
import {useI18n} from "vue-i18n";
const {t} = useI18n();
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const router = useRouter();
const labelWidth = 140;

View File

@ -8,8 +8,12 @@
ref="expertFormRef"
/>
<div :style="{ marginLeft: labelWidth + 'px' }">
<el-button @click="$router.go(-1)">{{ t("admin.common.cancel") }}</el-button>
<el-button type="primary" @click="submitForm">{{ t("admin.common.submit") }}</el-button>
<el-button @click="$router.go(-1)">{{
t("admin.common.cancel")
}}</el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.submit")
}}</el-button>
</div>
</el-card>
</div>

View File

@ -3,8 +3,12 @@
<el-card shadow="always" style="width: 55%; margin: 0 auto">
<laboratory-form ref="laboratoryFormRef" v-model="form" is-add />
<div :style="{ marginLeft: labelWidth + 'px' }">
<el-button @click="$router.go(-1)">{{ t("admin.common.cancel") }}</el-button>
<el-button type="primary" @click="submitForm">{{ t("admin.common.submit") }}</el-button>
<el-button @click="$router.go(-1)">{{
t("admin.common.cancel")
}}</el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.submit")
}}</el-button>
</div>
</el-card>
</div>
@ -15,7 +19,9 @@ import LaboratoryForm from "@/views/components/LaboratoryForm";
import { reactive, ref, toRefs } from "vue";
import { ElMessage } from "element-plus";
import { useRouter } from "vue-router";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const props = defineProps({
labelWidth: {
type: Number,

View File

@ -3,8 +3,12 @@
<el-card shadow="always" style="width: 55%; margin: 0 auto">
<research-form ref="researchFormRef" v-model="form" is-add />
<div :style="{ marginLeft: labelWidth + 'px' }">
<el-button @click="router.push('/identity/index')">{{ t("admin.common.cancel") }}</el-button>
<el-button type="primary" @click="submitForm">{{ t("admin.common.submit") }}</el-button>
<el-button @click="router.push('/identity/index')">{{
t("admin.common.cancel")
}}</el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.submit")
}}</el-button>
</div>
</el-card>
</div>

View File

@ -306,7 +306,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</template>

View File

@ -222,7 +222,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>

View File

@ -167,7 +167,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系电话" prop="phone">
<el-form-item :label="t('webContact.phone')" prop="phone">
<el-input
v-model="form.phone"
placeholder="请输入联系电话"
@ -200,7 +200,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>

View File

@ -229,7 +229,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>

View File

@ -226,7 +226,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>

View File

@ -370,7 +370,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>

View File

@ -215,7 +215,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>

View File

@ -187,7 +187,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>

View File

@ -281,7 +281,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
@ -342,7 +344,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitDataScope"> </el-button>
<el-button type="primary" @click="submitDataScope">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancelDataScope"> </el-button>
</div>
</template>

View File

@ -86,7 +86,9 @@
</el-row>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="handleSelectUser"> </el-button>
<el-button type="primary" @click="handleSelectUser">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="visible = false"> </el-button>
</div>
</template>

View File

@ -59,8 +59,12 @@
<el-form label-width="100px">
<div style="text-align: center; margin-left: -120px; margin-top: 30px">
<el-button type="primary" @click="submitForm()">{{ t("admin.common.submit") }}</el-button>
<el-button @click="close()">{{ t("identity.entrance.back") }}</el-button>
<el-button type="primary" @click="submitForm()">{{
t("admin.common.submit")
}}</el-button>
<el-button @click="close()">{{
t("admin.identity.entrance.back")
}}</el-button>
</div>
</el-form>
</div>

View File

@ -428,7 +428,9 @@
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
@ -475,7 +477,9 @@
</el-upload>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitFileForm"> </el-button>
<el-button type="primary" @click="submitFileForm">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="upload.open = false"> </el-button>
</div>
</template>

View File

@ -1,67 +1,69 @@
<template>
<div class="user-info-head" @click="editCropper()">
<img :src="options.img" title="点击上传头像" class="img-circle img-lg" />
<div>
<div class="user-info-head" @click="editCropper()">
<img :src="options.img" title="点击上传头像" class="img-circle img-lg" />
</div>
<el-dialog
:title="title"
v-model="open"
width="800px"
append-to-body
@opened="modalOpened"
@close="closeDialog"
>
<el-row>
<el-col :xs="24" :md="12" :style="{ height: '350px' }">
<vue-cropper
ref="cropper"
:img="options.img"
:info="true"
:autoCrop="options.autoCrop"
:autoCropWidth="options.autoCropWidth"
:autoCropHeight="options.autoCropHeight"
:fixedBox="options.fixedBox"
@realTime="realTime"
v-if="visible"
/>
</el-col>
<el-col :xs="24" :md="12" :style="{ height: '350px' }">
<div class="avatar-upload-preview">
<img :src="options.previews.url" :style="options.previews.img" />
</div>
</el-col>
</el-row>
<br />
<el-row>
<el-col :lg="2" :md="2">
<el-upload
action="#"
:http-request="requestUpload"
:show-file-list="false"
:before-upload="beforeUpload"
>
<el-button>
选择
<el-icon class="el-icon--right"><Upload /></el-icon>
</el-button>
</el-upload>
</el-col>
<el-col :lg="{ span: 1, offset: 2 }" :md="2">
<el-button icon="Plus" @click="changeScale(1)"></el-button>
</el-col>
<el-col :lg="{ span: 1, offset: 1 }" :md="2">
<el-button icon="Minus" @click="changeScale(-1)"></el-button>
</el-col>
<el-col :lg="{ span: 1, offset: 1 }" :md="2">
<el-button icon="RefreshLeft" @click="rotateLeft()"></el-button>
</el-col>
<el-col :lg="{ span: 1, offset: 1 }" :md="2">
<el-button icon="RefreshRight" @click="rotateRight()"></el-button>
</el-col>
<el-col :lg="{ span: 2, offset: 6 }" :md="2">
<el-button type="primary" @click="uploadImg()"> </el-button>
</el-col>
</el-row>
</el-dialog>
</div>
<el-dialog
:title="title"
v-model="open"
width="800px"
append-to-body
@opened="modalOpened"
@close="closeDialog"
>
<el-row>
<el-col :xs="24" :md="12" :style="{ height: '350px' }">
<vue-cropper
ref="cropper"
:img="options.img"
:info="true"
:autoCrop="options.autoCrop"
:autoCropWidth="options.autoCropWidth"
:autoCropHeight="options.autoCropHeight"
:fixedBox="options.fixedBox"
@realTime="realTime"
v-if="visible"
/>
</el-col>
<el-col :xs="24" :md="12" :style="{ height: '350px' }">
<div class="avatar-upload-preview">
<img :src="options.previews.url" :style="options.previews.img" />
</div>
</el-col>
</el-row>
<br />
<el-row>
<el-col :lg="2" :md="2">
<el-upload
action="#"
:http-request="requestUpload"
:show-file-list="false"
:before-upload="beforeUpload"
>
<el-button>
选择
<el-icon class="el-icon--right"><Upload /></el-icon>
</el-button>
</el-upload>
</el-col>
<el-col :lg="{ span: 1, offset: 2 }" :md="2">
<el-button icon="Plus" @click="changeScale(1)"></el-button>
</el-col>
<el-col :lg="{ span: 1, offset: 1 }" :md="2">
<el-button icon="Minus" @click="changeScale(-1)"></el-button>
</el-col>
<el-col :lg="{ span: 1, offset: 1 }" :md="2">
<el-button icon="RefreshLeft" @click="rotateLeft()"></el-button>
</el-col>
<el-col :lg="{ span: 1, offset: 1 }" :md="2">
<el-button icon="RefreshRight" @click="rotateRight()"></el-button>
</el-col>
<el-col :lg="{ span: 2, offset: 6 }" :md="2">
<el-button type="primary" @click="uploadImg()"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script setup>
@ -147,6 +149,10 @@ function closeDialog() {
options.img = userStore.avatar;
options.visible = false;
}
defineExpose({
editCropper,
});
</script>
<style lang="scss" scoped>

View File

@ -147,8 +147,12 @@
</el-tabs>
<el-form label-width="100px">
<div style="text-align: center; margin-left: -100px; margin-top: 10px">
<el-button type="primary" @click="submitForm()">{{ t("admin.common.submit") }}</el-button>
<el-button @click="close()">{{ t("identity.entrance.back") }}</el-button>
<el-button type="primary" @click="submitForm()">{{
t("admin.common.submit")
}}</el-button>
<el-button @click="close()">{{
t("admin.identity.entrance.back")
}}</el-button>
</div>
</el-form>
</el-card>

View File

@ -63,7 +63,9 @@
</el-row>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="handleImportTable"> </el-button>
<el-button type="primary" @click="handleImportTable">{{
t("admin.common.confirm")
}}</el-button>
<el-button @click="visible = false"> </el-button>
</div>
</template>

View File

@ -55,7 +55,14 @@
</template>
<script setup>
import { defineComponent, getCurrentInstance, onMounted, reactive } from "vue";
import {
defineComponent,
getCurrentInstance,
onMounted,
reactive,
ref,
shallowRef,
} from "vue";
import {
countExpertByArea,
countExpertByCity,
@ -243,7 +250,7 @@ onMounted(() => {
};
state.district = new AMap.DistrictSearch(state.opts); //注意:需要使用插件同步下发功能才能这样直接使用
state.district.search("中国", (status, result) => {
if (status == "complete") {
if (status === "complete") {
getData(result.districtList[0], "", 100000);
}
});
@ -254,7 +261,7 @@ function goBack() {
state.isShowGoBack = false;
loading.value = true;
state.district.search("中国", async (status, result) => {
if (status == "complete") {
if (status === "complete") {
await getData(result.districtList[0], "", 100000);
// snapTree.value = formatData(treeData.count);
snapTree.value = treeData.count;

View File

@ -63,6 +63,7 @@ import {
countDemandByProvince,
countDemandByCity,
countDemandByArea,
banner,
} from "@/api/website/home/index";
import RegionPagine from "./RegionPagine.vue";
import { useI18n } from "vue-i18n";
@ -174,6 +175,7 @@ const state = reactive({
loading: false,
isShowGoBack: false,
nameType: "",
banner: "",
// cityName: "中国",
cityName: "china",
areaCode: 10000,
@ -460,6 +462,7 @@ function loadMap(mapName, data) {
width: 100%;
height: 100%;
position: relative;
background: linear-gradient(0deg, #010101, #041744);
.tit {
position: absolute;
@ -467,16 +470,16 @@ function loadMap(mapName, data) {
width: 100%;
text-align: center;
font-size: 36px;
font-family: Source Han Sans CN;
font-family: Source Han Sans CN, sans-serif;
font-weight: 300;
color: #333333;
color: #fff;
}
}
.map {
width: 100%;
height: 100%;
// background-image: url(./img/lightEffect.png);
background-image: url(./img/lightEffect.png);
background-size: 644px 272px;
background-repeat: no-repeat;
background-position: center top;
@ -523,21 +526,21 @@ function loadMap(mapName, data) {
min-width: 200px;
max-height: 256px;
// overflow: hidden;
border: 1px solid #dcdcdc;
color: #666666;
border: 1px solid #0054ff;
color: rgba(161, 192, 255, 1);
& > div {
display: flex;
}
.head {
border-bottom: 1px solid #dcdcdc;
color: #333333;
border-bottom: 1px solid #0054ff;
color: #ffffff;
}
.a {
flex: 1;
border-right: 1px solid #dcdcdc;
border-right: 1px solid #0054ff;
text-align: center;
line-height: 42px;
overflow: hidden;