This commit is contained in:
2023-07-19 09:22:11 +08:00
parent 248c57b338
commit 3b2fed2967
106 changed files with 959 additions and 522 deletions

View File

@ -1,8 +1,11 @@
# 页面标题 # 页面标题
VITE_APP_TITLE = 中科云 VITE_APP_TITLE=中科云
# 开发环境配置 # 开发环境配置
VITE_APP_ENV = 'development' VITE_APP_ENV='development'
# 若依管理系统/开发环境 # 若依管理系统/开发环境
VITE_APP_BASE_API = '/dev-api' VITE_APP_BASE_API='/dev-api'
# i18n语言
VITE_APP_I18N_LOCALE='zh_CN'

View File

@ -1,11 +1,14 @@
# 页面标题 # 页面标题
VITE_APP_TITLE = 中科云 VITE_APP_TITLE=中科云
# 生产环境配置 # 生产环境配置
VITE_APP_ENV = 'production' VITE_APP_ENV='production'
# 若依管理系统/生产环境 # 若依管理系统/生产环境
VITE_APP_BASE_API = '/api' VITE_APP_BASE_API='/api'
# 是否在打包时开启压缩,支持 gzip 和 brotli # 是否在打包时开启压缩,支持 gzip 和 brotli
VITE_BUILD_COMPRESS = gzip VITE_BUILD_COMPRESS=gzip
# i18n
VITE_APP_I18N_LOCALE=zh_CN

View File

@ -9,3 +9,6 @@ VITE_APP_BASE_API = '/stage-api'
# 是否在打包时开启压缩,支持 gzip 和 brotli # 是否在打包时开启压缩,支持 gzip 和 brotli
VITE_BUILD_COMPRESS = gzip VITE_BUILD_COMPRESS = gzip
# i18n语言
VITE_APP_I18N_LOCALE='zh_CN'

View File

@ -15,18 +15,22 @@
ref="upload" ref="upload"
> >
<!-- 上传按钮 --> <!-- 上传按钮 -->
<el-button type="primary">选取文件</el-button> <el-button type="primary">
{{ t("common.selectFile") }}
</el-button>
</el-upload> </el-upload>
<!-- 上传提示 --> <!-- 上传提示 -->
<div class="el-upload__tip" v-if="showTip"> <div class="el-upload__tip" v-if="showTip">
请上传 {{ t("admin.validation.pleaseUpload") }}
<template v-if="fileSize"> <template v-if="fileSize">
大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> {{ t("admin.validation.sizeNotExceed") }}
<b style="color: #f56c6c">{{ fileSize }}MB </b>
</template> </template>
<template v-if="fileType"> <template v-if="fileType">
格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> {{ t("admin.validation.formatIs") }}
<b style="color: #f56c6c">{{ fileType.join("/") }}</b>
</template> </template>
的文件 {{ t("admin.validation.file") }}
</div> </div>
<!-- 文件列表 --> <!-- 文件列表 -->
<transition-group <transition-group
@ -44,9 +48,13 @@
<span class="el-icon-document"> {{ getFileName(file.name) }} </span> <span class="el-icon-document"> {{ getFileName(file.name) }} </span>
</el-link> </el-link>
<div class="ele-upload-list__item-content-action"> <div class="ele-upload-list__item-content-action">
<el-link :underline="false" @click="handleDelete(index)" type="danger" <el-link
>删除</el-link :underline="false"
@click="handleDelete(index)"
type="danger"
> >
{{ t("common.delete") }}
</el-link>
</div> </div>
</li> </li>
</transition-group> </transition-group>
@ -55,7 +63,9 @@
<script setup> <script setup>
import { getToken } from "@/utils/auth"; import { getToken } from "@/utils/auth";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const props = defineProps({ const props = defineProps({
modelValue: [String, Object, Array], modelValue: [String, Object, Array],
// 数量限制 // 数量限制
@ -131,7 +141,10 @@ function handleBeforeUpload(file) {
}); });
if (!isTypeOk) { if (!isTypeOk) {
proxy.$modal.msgError( proxy.$modal.msgError(
`文件格式不正确, 请上传${props.fileType.join("/")}格式文件!` // `文件格式不正确, 请上传${props.fileType.join("/")}格式文件!`
t("admin.validation.fileFormatIsIncorrectPleaseUploadFormatFile", {
format: props.fileType.join("/"),
})
); );
return false; return false;
} }
@ -140,23 +153,23 @@ function handleBeforeUpload(file) {
if (props.fileSize) { if (props.fileSize) {
const isLt = file.size / 1024 / 1024 < props.fileSize; const isLt = file.size / 1024 / 1024 < props.fileSize;
if (!isLt) { if (!isLt) {
proxy.$modal.msgError(`上传文件大小不能超过 ${props.fileSize} MB!`); proxy.$modal.msgError(t("admin.validation.uploadFileSizeCannotExceed"));
return false; return false;
} }
} }
proxy.$modal.loading("正在上传文件,请稍候..."); proxy.$modal.loading(t("common.uploadingFilePleaseWait"));
number.value++; number.value++;
return true; return true;
} }
// 文件个数超出 // 文件个数超出
function handleExceed() { function handleExceed() {
proxy.$modal.msgError(`上传文件数量不能超过 ${props.limit} 个!`); proxy.$modal.msgError(t("admin.validation.uploadFileNumberCannotExceed"));
} }
// 上传失败 // 上传失败
function handleUploadError(err) { function handleUploadError(err) {
proxy.$modal.msgError("上传文件失败"); proxy.$modal.msgError(t("admin.validation.uploadFileFailed"));
} }
// 上传成功回调 // 上传成功回调
@ -206,18 +219,22 @@ function listToString(list, separator) {
.upload-file-uploader { .upload-file-uploader {
margin-bottom: 5px; margin-bottom: 5px;
} }
.upload-file-list .el-upload-list__item { .upload-file-list .el-upload-list__item {
border: 1px solid #e4e7ed; border: 1px solid #e4e7ed;
line-height: 2; line-height: 2;
margin-bottom: 10px; margin-bottom: 10px;
position: relative; position: relative;
} }
.upload-file-list .ele-upload-list__item-content { .upload-file-list .ele-upload-list__item-content {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
color: inherit; color: inherit;
padding-left: 10px;
} }
.ele-upload-list__item-content-action .el-link { .ele-upload-list__item-content-action .el-link {
margin-right: 10px; margin-right: 10px;
} }

View File

@ -27,8 +27,10 @@
<script> <script>
import "@wangeditor/editor/dist/css/style.css"; // 引入 css import "@wangeditor/editor/dist/css/style.css"; // 引入 css
import { getToken } from "@/utils/auth"; import { getToken } from "@/utils/auth";
import { onBeforeUnmount, ref, shallowRef, toRefs, watch } from "vue"; import { computed, onBeforeUnmount, ref, shallowRef, toRefs, watch } from "vue";
import { Editor, Toolbar } from "@wangeditor/editor-for-vue"; import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
import { useI18n } from "vue-i18n";
import { i18nChangeLanguage } from "@wangeditor/editor";
const baseUrl = import.meta.env.VITE_APP_BASE_API; const baseUrl = import.meta.env.VITE_APP_BASE_API;
export default { export default {
@ -47,7 +49,7 @@ export default {
}, },
placeholder: { placeholder: {
type: String, type: String,
default: "请输入内容", // default: placeholder.value,
}, },
minHeight: { minHeight: {
type: [String, Number], type: [String, Number],
@ -67,6 +69,11 @@ export default {
}, },
}, },
setup(props, context) { setup(props, context) {
const { t } = useI18n();
i18nChangeLanguage("en");
const placeholder = computed(() =>
t("admin.validation.pleaseEnterContent")
);
// 编辑器实例,必须用 shallowRef // 编辑器实例,必须用 shallowRef
const editorRef = shallowRef(); const editorRef = shallowRef();
// editorRef.value.on("blur", () => { // editorRef.value.on("blur", () => {
@ -91,8 +98,10 @@ export default {
// console.log("onBlur"); // console.log("onBlur");
// }, // },
const editorConfig = { const editorConfig = {
placeholder: props.placeholder, placeholder: props.placeholder ?? placeholder.value,
readOnly: props.readOnly, readOnly: props.readOnly,
// locale
MENU_CONF: { MENU_CONF: {
uploadImage: { uploadImage: {
server: `${baseUrl}/common/upload`, server: `${baseUrl}/common/upload`,

View File

@ -21,7 +21,6 @@ const common = {
research: "Исследовательский институт", research: "Исследовательский институт",
broker: "Брокер", broker: "Брокер",
demand: "Спрос", demand: "Спрос",
// 论文
paper: "Статья", paper: "Статья",
researchProject: "Научно-исследовательский проект", researchProject: "Научно-исследовательский проект",
equipment: "Оборудование", equipment: "Оборудование",
@ -31,9 +30,10 @@ const common = {
editSuccess: "Изменено успешно", editSuccess: "Изменено успешно",
deleteSuccess: "Удалено успешно", deleteSuccess: "Удалено успешно",
operationSuccess: "Операция выполнена успешно", operationSuccess: "Операция выполнена успешно",
// 是否确认{action}编号为{number}的{type}?
confirmAction: "Вы уверены, что хотите {action} {type} номер {number}?", confirmAction: "Вы уверены, что хотите {action} {type} номер {number}?",
// Вы уверены, что хотите {action} {type} номер {number}? updatePersonalInformationSuccess: "Персональная информация успешно обновлена",
// 需求状态
demandStatus: "Статус спроса",
}; };
export default common; export default common;

View File

@ -21,7 +21,6 @@ const common = {
research: "研究机构", research: "研究机构",
broker: "经纪人", broker: "经纪人",
demand: "需求", demand: "需求",
// 论文
paper: "论文", paper: "论文",
researchProject: "科研项目", researchProject: "科研项目",
equipment: "设备", equipment: "设备",
@ -31,8 +30,10 @@ const common = {
editSuccess: "修改成功", editSuccess: "修改成功",
deleteSuccess: "删除成功", deleteSuccess: "删除成功",
operationSuccess: "操作成功", operationSuccess: "操作成功",
// 是否确认{action}编号为{number}的{type}?
confirmAction: "是否确认{action}编号为{number}的{type}?", confirmAction: "是否确认{action}编号为{number}的{type}?",
updatePersonalInformationSuccess: "更新个人信息成功",
// 需求状态
demandStatus: "需求状态",
}; };
export default common; export default common;

View File

@ -1,63 +1,67 @@
const form = { const form = {
achievementBroker: "Сертификат квалификации брокера достижений",
achievementParameter: "Параметр достижения",
add: "Добавить {type}",
addData: "Добавить данные",
address: "Подробный адрес", address: "Подробный адрес",
basicInfo: "Основная информация", amount: "Сумма",
data: "{type} Данные", applicationDate: "Дата подачи заявки",
basicData: "Основные данные",
businessLicense: "Бизнес-лицензия",
fullName: "Полное имя",
phone: "Телефон",
email: "Эл. адрес",
mobile: "Мобильный телефон",
position: "Должность",
industry: "Отрасль",
introduction: "{type} Введение",
location: "Местоположение",
logo: "{type} логотип",
name: "{type} Название",
organization: "Организация",
organizationCode: "Код организации",
placeholder: "Пожалуйста, введите {type}",
pleaseSelect: "Пожалуйста, выберите {type}",
researchDirection: "Направление исследований",
cooperationCompany: "Компания сотрудничества",
bank: "Банк", bank: "Банк",
product: "Продукт", basicData: "Основные данные",
contact: "Контакт", basicInfo: "Основная информация",
belongExpert: "Принадлежит эксперту",
businessLicense: "Бизнес-лицензия",
buyDate: "Дата покупки",
category: "Категория {type}", category: "Категория {type}",
keywords: "Ключевые слова", companyLogo: "Логотип компании",
companyType: "Тип предприятия",
contact: "Контакт",
contactPhone: "Номер мобильного телефона контактного лица",
cooperationCompany: "Компания сотрудничества",
coreAchievementProduct: "Основной продукт",
coreMembers: "Основные члены и их краткое описание",
data: "{type} Данные",
demandContact: "Контактное лицо по потребностям",
deviceDescription: "Описание оборудования",
edit: "Изменить {type}",
editData: "Изменить данные",
email: "Эл. адрес",
expertName: "Имя эксперта",
fullName: "Полное имя",
idCard: "Номер удостоверения личности",
idCardEmblem: "Герб удостоверения личности",
idCardPortrait: "Лицо удостоверения личности",
industry: "Отрасль",
inputKeywords: inputKeywords:
"Ключевые слова сценария применения + ключевые слова технического продукта", "Ключевые слова сценария применения + ключевые слова технического продукта",
coreMembers: "Основные члены и их краткое описание",
idCard: "Номер удостоверения личности",
topicLeader: "Руководитель проекта",
paperTitle: "Название статьи",
belongExpert: "Принадлежит эксперту",
publishDate: "Дата публикации",
publication: "Публикация",
buyDate: "Дата покупки",
model: "Модель",
achievementParameter: "Параметр достижения",
// 设备描述
deviceDescription: "Описание оборудования",
// 发明人
inventor: "Изобретатель",
// 需求联系人
demandContact: "Контактное лицо по потребностям",
// 联系人手机号
contactPhone: "Номер мобильного телефона контактного лица",
// 申请日期
applicationDate: "Дата подачи заявки",
// 新增{type}
add: "Добавить {type}",
// 修改{type}
edit: "Изменить {type}",
// 添加数据
addData: "Добавить данные",
// 修改数据
editData: "Изменить данные",
// 所属院所或单位
institute: "Институт или организация", institute: "Институт или организация",
// 从业时间 introduction: "{type} Введение",
inventor: "Изобретатель",
keywords: "Ключевые слова",
location: "Местоположение",
logo: "{type} логотип",
mobile: "Мобильный телефон",
model: "Модель",
name: "{type} Название",
orderNumber: "Номер заказа",
orderType: "Тип заказа",
organization: "Организация",
organizationCode: "Код организации",
paperTitle: "Название статьи",
personalProfile: "Личный профиль",
phone: "Телефон",
placeholder: "Пожалуйста, введите {type}",
pleaseSelect: "Пожалуйста, выберите {type}",
position: "Должность",
product: "Продукт",
publication: "Публикация",
publishDate: "Дата публикации",
quantity: "Количество",
rechargeTime: "Время пополнения",
researchDirection: "Направление исследований",
topicLeader: "Руководитель проекта",
workExperience: "Опыт работы",
workLocation: "Место работы",
workingTime: "Время работы", workingTime: "Время работы",
}; };
export default form; export default form;

View File

@ -1,62 +1,66 @@
const form = { const form = {
achievementBroker: "成果经纪资格证书",
achievementParameter: "成果参数",
add: "新增{type}",
addData: "添加数据",
address: "详细地址", address: "详细地址",
basicInfo: "基本信息", amount: "金额",
data: "{type}资料", applicationDate: "申请日期",
bank: "银行",
basicData: "基本资料", basicData: "基本资料",
basicInfo: "基本信息",
belongExpert: "所属专家",
businessLicense: "营业执照", businessLicense: "营业执照",
fullName: "姓名", buyDate: "购买日期",
phone: "固定电话", category: "{type}类别",
companyLogo: "企业logo",
companyType: "企业类型",
contact: "联系人",
contactPhone: "联系人手机号",
cooperationCompany: "合作企业",
coreAchievementProduct: "核心成果核心产品",
coreMembers: "核心成员及简介",
data: "{type}资料",
demandContact: "需求联系人",
deviceDescription: "设备描述",
edit: "修改{type}",
editData: "修改数据",
email: "邮箱", email: "邮箱",
mobile: "手机号", expertName: "专家姓名",
position: "职务", fullName: "姓名",
idCard: "身份证号",
idCardEmblem: "身份证国徽面",
idCardPortrait: "身份证人像面",
industry: "所属领域", industry: "所属领域",
inputKeywords: "应用场景关键词+技术产品关键词",
institute: "所属院所或单位",
introduction: "{type}简介", introduction: "{type}简介",
inventor: "发明人",
keywords: "关键词",
location: "所在地", location: "所在地",
logo: "{type}logo", logo: "{type}logo",
mobile: "手机号",
model: "型号",
name: "{type}名称", name: "{type}名称",
orderNumber: "订单号",
orderType: "订单类型",
organization: "机构", organization: "机构",
organizationCode: "组织机构代码", organizationCode: "组织机构代码",
paperTitle: "论文标题",
personalProfile: "个人简介",
phone: "固定电话",
placeholder: "请输入{type}", placeholder: "请输入{type}",
pleaseSelect: "请选择{type}", pleaseSelect: "请选择{type}",
researchDirection: "研究方向", position: "职务",
cooperationCompany: "合作企业",
bank: "银行",
product: "产品", product: "产品",
contact: "联系人",
category: "{type}类别",
keywords: "关键词",
inputKeywords: "应用场景关键词+技术产品关键词",
coreMembers: "核心成员及简介",
idCard: "身份证号",
topicLeader: "课题负责人",
paperTitle: "论文标题",
belongExpert: "所属专家",
publishDate: "出版日期",
publication: "刊物", publication: "刊物",
buyDate: "购买日期", publishDate: "出版日期",
model: "型号", quantity: "数量",
achievementParameter: "成果参数", rechargeTime: "充值时间",
// 设备描述 researchDirection: "研究方向",
deviceDescription: "设备描述", topicLeader: "课题负责人",
// 发明人 workExperience: "工作经历",
inventor: "发明人", workLocation: "工作所在地",
// 需求联系人
demandContact: "需求联系人",
// 联系人手机号
contactPhone: "联系人手机号",
// 申请日期
applicationDate: "申请日期",
// 新增{type}
add: "新增{type}",
// 修改{type}
edit: "修改{type}",
// 添加数据
addData: "添加数据",
// 修改数据
editData: "修改数据",
// 所属院所或单位
institute: "所属院所或单位",
// 从业时间
workingTime: "从业时间", workingTime: "从业时间",
}; };

View File

@ -1,32 +1,46 @@
const table = { const table = {
// 入驻时间
enterTime: "Время входа", enterTime: "Время входа",
// 研究领域
researchIndustry: "Область исследований", researchIndustry: "Область исследований",
// 关联专家
relatedExperts: "Связанные эксперты", relatedExperts: "Связанные эксперты",
// 发布时间
publishTime: "Время публикации", publishTime: "Время публикации",
// 课题角色
topicRole: "Роль темы", topicRole: "Роль темы",
// 成果领域
achievementIndustry: "Область достижений", achievementIndustry: "Область достижений",
// 取消关联
cancelRelation: "Отменить связь", cancelRelation: "Отменить связь",
// 取消发布
cancelPublish: "Отменить публикацию", cancelPublish: "Отменить публикацию",
// 浏览单位信息
viewUnitInfo: "Просмотреть информацию об учреждении", viewUnitInfo: "Просмотреть информацию об учреждении",
// 浏览次数
viewCount: "Количество просмотров", viewCount: "Количество просмотров",
// 浏览时间
viewTime: "Время просмотра", viewTime: "Время просмотра",
// 浏览类别
viewCategory: "Категория просмотра", viewCategory: "Категория просмотра",
// 实验室网址
labWebsite: "Веб-сайт лаборатории", labWebsite: "Веб-сайт лаборатории",
// 添加日期
addDate: "Дата добавления", addDate: "Дата добавления",
serviceDemandCount: "Количество требований к обслуживанию",
finishedDemandCount: "Количество завершенных требований",
// 添加时间
addTime: "Время добавления",
// {type}管理
managementOf: "Управление {type}",
// 截止时间
deadline: "Крайний срок",
// 合作备忘录
cooperationMemo: "Совместный протокол",
// 客户确认技术解决方案
customerConfirmSolution: "Подтверждение технического решения клиентом",
// 签署服务合同(合同额)
signServiceContract: "Подписание сервисного контракта (сумма контракта)",
// 结题
endTopic: "Закрыть тему",
// 未结题
notEndTopic: "Тема не закрыта",
// 上传文件
uploadFile: "Загрузить файл",
// 上传时间
uploadTime: "Время загрузки",
// 毕业院校
graduateSchool: "Высшее учебное заведение",
// 最高学历
highestEducation: "Наивысшее образование",
// 主修专业
major: "Основная специальность",
}; };
export default table; export default table;

View File

@ -1,31 +1,45 @@
const table = { const table = {
// 入驻时间
enterTime: "入驻时间", enterTime: "入驻时间",
// 研究领域
researchIndustry: "研究领域", researchIndustry: "研究领域",
// 关联专家
relatedExperts: "关联专家", relatedExperts: "关联专家",
// 发布时间
publishTime: "发布时间", publishTime: "发布时间",
// 课题角色
topicRole: "课题角色", topicRole: "课题角色",
// 成果领域
achievementIndustry: "成果领域", achievementIndustry: "成果领域",
// 取消关联
cancelRelation: "取消关联", cancelRelation: "取消关联",
// 取消发布
cancelPublish: "取消发布", cancelPublish: "取消发布",
// 浏览单位信息
viewUnitInfo: "浏览单位信息", viewUnitInfo: "浏览单位信息",
// 浏览次数
viewCount: "浏览次数", viewCount: "浏览次数",
// 浏览时间
viewTime: "浏览时间", viewTime: "浏览时间",
// 浏览类别
viewCategory: "浏览类别", viewCategory: "浏览类别",
// 实验室网址
labWebsite: "实验室网址", labWebsite: "实验室网址",
// 添加日期
addDate: "添加日期", addDate: "添加日期",
serviceDemandCount: "正在服务需求数量",
finishedDemandCount: "已完成需求数量",
// 添加时间
addTime: "添加时间",
// {type}管理
managementOf: "{type}管理",
// 截止时间
deadline: "截止时间",
// 合作备忘录
cooperationMemo: "合作备忘录",
// 客户确认技术解决方案
customerConfirmSolution: "客户确认技术解决方案",
// 签署服务合同(合同额)
signServiceContract: "签署服务合同(合同额)",
// 结题
endTopic: "结题",
// 未结题
notEndTopic: "未结题",
// 上传文件
uploadFile: "上传文件",
// 上传时间
uploadTime: "上传时间",
// 毕业院校
graduateSchool: "毕业院校",
// 最高学历
highestEducation: "最高学历",
// 主修专业
major: "主修专业",
}; };
export default table; export default table;

View File

@ -1,10 +1,26 @@
const validation = { const validation = {
// {type}不能为空
required: "{type} не может быть пустым", required: "{type} не может быть пустым",
// 请上传 pleaseUpload: "пожалуйста загрузите",
pleaseUpload: "Пожалуйста, загрузите",
// 请输入正确格式的手机号码
pleaseEnterTheCorrectFormatOfThePhoneNumber: pleaseEnterTheCorrectFormatOfThePhoneNumber:
"Пожалуйста, введите правильный формат номера телефона", "Пожалуйста, введите правильный формат номера телефона",
incorrectFormatOf: "Неверный формат {type}",
pleaseEnterContent: "Пожалуйста, введите содержимое",
pleaseSelectAndAdd: "Пожалуйста, выберите и добавьте",
pleaseInputAndAdd: "Пожалуйста, введите и добавьте",
formatIs: "Формат",
sizeNotExceed: "Размер не превышает",
file: "файл",
uploadFileNumberCannotExceed:
"Количество загружаемых файлов не может превышать {number}",
uploadFileSizeCannotExceed:
"Размер загружаемого файла не может превышать {size} MB",
fileFormatIsIncorrectPleaseUploadFormatFile:
"Неверный формат файла, пожалуйста, загрузите файл формата {format}!",
uploadFileFailed: "Ошибка загрузки файла",
// 请输入研究方向、核心技术及产品、代表专利和论文、承担科研项目名称及项目摘要
pleaseEnterResearchDirectionCoreTechnologyAndProductRepresentativePatentsAndPapersUndertakeTheNameAndAbstractOfScientificResearchProjects:
"Пожалуйста, введите направление исследований, основные технологии и продукты, представительские патенты и статьи, название и аннотацию научно-исследовательских проектов",
// 手持身份证人像面
portraitOfTheIdCard: "Портрет удостоверения личности",
}; };
export default validation; export default validation;

View File

@ -1,10 +1,24 @@
const validation = { const validation = {
// {type}不能为空
required: "{type}不能为空", required: "{type}不能为空",
// 请上传
pleaseUpload: "请上传", pleaseUpload: "请上传",
// 请输入正确格式的手机号码
pleaseEnterTheCorrectFormatOfThePhoneNumber: "请输入正确格式的手机号码", pleaseEnterTheCorrectFormatOfThePhoneNumber: "请输入正确格式的手机号码",
incorrectFormatOf: "{type}格式不正确",
pleaseEnterContent: "请输入内容",
pleaseSelectAndAdd: "请选择并添加",
pleaseInputAndAdd: "请输入并添加",
formatIs: "格式为",
sizeNotExceed: "大小不超过",
file: "的文件",
uploadFileNumberCannotExceed: "上传文件数量不能超过{number}个",
uploadFileSizeCannotExceed: "上传文件大小不能超过 {size} MB",
fileFormatIsIncorrectPleaseUploadFormatFile:
"文件格式不正确, 请上传{format}格式文件!",
uploadFileFailed: "上传文件失败",
// 请输入研究方向、核心技术及产品、代表专利和论文、承担科研项目名称及项目摘要
pleaseEnterResearchDirectionCoreTechnologyAndProductRepresentativePatentsAndPapersUndertakeTheNameAndAbstractOfScientificResearchProjects:
"请输入研究方向、核心技术及产品、代表专利和论文、承担科研项目名称及项目摘要",
// 手持身份证人像面
portraitOfTheIdCard: "手持身份证人像面",
}; };
export default validation; export default validation;

View File

@ -14,9 +14,16 @@ const common = {
congratulations: "Поздравляем", congratulations: "Поздравляем",
title: "Цифровой мозг науки и технологий", title: "Цифровой мозг науки и технологий",
status: "{type} статус", status: "{type} статус",
// 选择
select: "Выбрать", select: "Выбрать",
// 提交
submit: "Представить", submit: "Представить",
dataIsBeingProcessedPleaseDoNotResubmit:
"Данные обрабатываются, не повторяйте отправку",
selectFile: "Выбрать файл",
close: "Закрыть",
delete: "Удалить",
uploadingFilePleaseWait: "Загрузка файла, подождите...",
unknown: "Неизвестный",
show: "Показать",
hide: "Скрыть",
}; };
export default common; export default common;

View File

@ -14,10 +14,16 @@ export const common = {
congratulations: "恭喜你", congratulations: "恭喜你",
title: "数字科创大脑", title: "数字科创大脑",
status: "{type}状态", status: "{type}状态",
// 选择
select: "选择", select: "选择",
// 提交
submit: "提交", submit: "提交",
dataIsBeingProcessedPleaseDoNotResubmit: "数据正在处理,请勿重复提交",
selectFile: "选取文件",
close: "关闭",
delete: "删除",
uploadingFilePleaseWait: "正在上传文件,请稍候...",
unknown: "未知",
show: "显示",
hide: "隐藏",
}; };
export default common; export default common;

View File

@ -81,7 +81,7 @@ const webSearch = {
publicationNumber: "Номер публикации", publicationNumber: "Номер публикации",
representativeAchievements: "Репрезентативные научные достижения", representativeAchievements: "Репрезентативные научные достижения",
researchDirection: "Направление исследований", researchDirection: "Направление исследований",
researchInstitution: "Институт", researchInstitute: "Институт",
researchProject: "Информация о научно-исследовательских проектах", researchProject: "Информация о научно-исследовательских проектах",
search: "Поиск", search: "Поиск",
serviceDemand: "Потребность в услугах", serviceDemand: "Потребность в услугах",

View File

@ -11,7 +11,9 @@ import { tansParams, blobValidate } from "@/utils/ruoyi";
import cache from "@/plugins/cache"; import cache from "@/plugins/cache";
import { saveAs } from "file-saver"; import { saveAs } from "file-saver";
import useUserStore from "@/store/modules/user"; import useUserStore from "@/store/modules/user";
import i18n from "@/i18n";
const { t } = i18n.global;
let downloadLoadingInstance; let downloadLoadingInstance;
// 是否显示重新登录 // 是否显示重新登录
export let isRelogin = { show: false }; export let isRelogin = { show: false };
@ -71,7 +73,7 @@ service.interceptors.request.use(
requestObj.time - s_time < interval && requestObj.time - s_time < interval &&
s_url === requestObj.url s_url === requestObj.url
) { ) {
const message = "数据正在处理,请勿重复提交"; const message = t("common.dataIsBeingProcessedPleaseDoNotResubmit");
console.warn(`[${s_url}]: ` + message); console.warn(`[${s_url}]: ` + message);
return Promise.reject(new Error(message)); return Promise.reject(new Error(message));
} else { } else {
@ -106,7 +108,7 @@ service.interceptors.response.use(
isRelogin.show = true; isRelogin.show = true;
ElMessageBox.confirm( ElMessageBox.confirm(
"登录状态已过期,您可以继续留在该页面,或者重新登录", "登录状态已过期,您可以继续留在该页面,或者重新登录",
"系统提示", t("common.systemPrompt"),
{ {
confirmButtonText: "重新登录", confirmButtonText: "重新登录",
cancelButtonText: "取消", cancelButtonText: "取消",

View File

@ -108,7 +108,7 @@ const submitPersonalInfo = async () => {
try { try {
await personFormRef.value.validate(); await personFormRef.value.validate();
await insertClientUser(personForm.value); await insertClientUser(personForm.value);
ElMessage.success("更新个人信息成功"); ElMessage.success(t("admin.common.updatePersonalInformationSuccess"));
const { data } = await getInfo(); const { data } = await getInfo();
personForm.value = data.user ?? {}; personForm.value = data.user ?? {};
} catch (error) { } catch (error) {
@ -121,7 +121,7 @@ const submitExpertForm = async () => {
// form.value.researchDirection = form.value.researchs?.join(",") ?? null; // form.value.researchDirection = form.value.researchs?.join(",") ?? null;
form.value.keyword = form.value.keywords?.join(",") ?? null; form.value.keyword = form.value.keywords?.join(",") ?? null;
updateCasBroker(form.value).then((res) => { updateCasBroker(form.value).then((res) => {
ElMessage.success("修改成功"); ElMessage.success(t("admin.common.editSuccess"));
getBasicInfo(); getBasicInfo();
}); });
} else { } else {

View File

@ -147,19 +147,21 @@ getList();
@submit.prevent @submit.prevent
@keydown="handleQuery" @keydown="handleQuery"
> >
<el-form-item label="订单号" prop="orderNumber"> <el-form-item :label="t('admin.form.orderNumber')" prop="orderNumber">
<el-input <el-input
v-model="queryParams.orderNumber" v-model="queryParams.orderNumber"
placeholder="请输入订单号" :placeholder="
t('admin.form.placeholder', { type: t('admin.form.orderNumber') })
"
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="handleQuery">{{ <el-button type="primary" @click="handleQuery"
t("admin.common.search") >{{ t("admin.common.search") }}
}}</el-button> </el-button>
<el-button @click="resetQuery"> <el-button @click="resetQuery">
{{ t("admin.common.reset") }}</el-button {{ t("admin.common.reset") }}
> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row class="mb8"> <el-row class="mb8">
@ -169,10 +171,14 @@ getList();
<el-table v-loading="loading" :data="tableData"> <el-table v-loading="loading" :data="tableData">
<el-table-column <el-table-column
align="center" align="center"
label="订单号" :label="t('admin.form.orderNumber')"
prop="orderNumber" prop="orderNumber"
></el-table-column> ></el-table-column>
<el-table-column align="center" label="订单类型" prop="orderType"> <el-table-column
align="center"
:label="t('admin.form.orderType')"
prop="orderType"
>
<template #default="{ row }"> <template #default="{ row }">
{{ {{
orderTypeDict.find((item) => item.value === row.orderType)?.label ?? orderTypeDict.find((item) => item.value === row.orderType)?.label ??
@ -182,15 +188,15 @@ getList();
</el-table-column> </el-table-column>
<el-table-column <el-table-column
align="center" align="center"
label="金额" :label="t('admin.form.amount')"
prop="amount" prop="amount"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
align="center" align="center"
label="数量" :label="t('admin.form.quantity')"
prop="total" prop="total"
></el-table-column> ></el-table-column>
<el-table-column align="center" label="充值时间"> <el-table-column align="center" :label="t('admin.form.rechargeTime')">
<template #default="{ row }"> <template #default="{ row }">
{{ dayjs(row.payTime).format("YYYY-MM-DD HH:mm:ss") }} {{ dayjs(row.payTime).format("YYYY-MM-DD HH:mm:ss") }}
</template> </template>
@ -256,12 +262,12 @@ getList();
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button type="default" @click="handleCancel">{{ <el-button type="default" @click="handleCancel"
t("admin.common.cancel") >{{ t("admin.common.cancel") }}
}}</el-button> </el-button>
<el-button type="primary" @click="submit">{{ <el-button type="primary" @click="submit"
t("admin.common.submit") >{{ t("admin.common.submit") }}
}}</el-button> </el-button>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>

View File

@ -101,14 +101,18 @@ const getById = (id) => {};
</el-form> </el-form>
<!-- element plus 表格 , :订单号,企业名称,所属领域,会员等级,会员金额,购买会员时间,操作--> <!-- element plus 表格 , :订单号,企业名称,所属领域,会员等级,会员金额,购买会员时间,操作-->
<el-table :data="tableData" class="withdraw-table"> <el-table :data="tableData" class="withdraw-table">
<el-table-column label="订单号" prop="id" width="180"></el-table-column> <el-table-column
:label="t('admin.form.orderNumber')"
prop="id"
width="180"
></el-table-column>
<el-table-column <el-table-column
:label="t('admin.form.name', { type: t('admin.common.company') })" :label="t('admin.form.name', { type: t('admin.common.company') })"
prop="name" prop="name"
width="180" width="180"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
label="所属领域" :label="t('admin.form.industry')"
prop="field" prop="field"
width="180" width="180"
></el-table-column> ></el-table-column>

View File

@ -42,7 +42,7 @@ const handleDelete = (id) => {};
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form ref="queryRef" :model="queryParams" inline> <el-form ref="queryRef" :model="queryParams" inline>
<el-form-item label="订单号"> <el-form-item :label="t('admin.form.orderNumber')">
<el-input v-model="queryParams.orderNo"></el-input> <el-input v-model="queryParams.orderNo"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="时间段"> <el-form-item label="时间段">

View File

@ -17,11 +17,11 @@ const handleSave = () => {};
<el-card style="width: 50%; margin: 0 auto"> <el-card style="width: 50%; margin: 0 auto">
<el-form :model="form" label-width="120px"> <el-form :model="form" label-width="120px">
<el-form-item label="身份证类型"> <el-form-item label="身份证类型">
<el-select v-model="form.type" placeholder="请选择"> <el-select v-model="form.type" :placeholder="t('admin.pleaseSelect')">
<el-option value="身份证">身份证</el-option> <el-option value="身份证">身份证</el-option>
<el-option value="护照">护照</el-option> <el-option value="护照">护照</el-option>
</el-select> </el-select>
<el-form-item label="姓名" prop="name"> <el-form-item :label="t('admin.form.fullName')" prop="name">
<el-input v-model="form.name" placeholder="请输入" /> <el-input v-model="form.name" placeholder="请输入" />
</el-form-item> </el-form-item>
</el-form-item> </el-form-item>

View File

@ -10,6 +10,7 @@ import {
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox } from "element-plus";
import modal from "@/plugins/modal"; import modal from "@/plugins/modal";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const router = useRouter(); const router = useRouter();
const dataList = ref([]); const dataList = ref([]);
@ -105,7 +106,7 @@ function handleDelete(id) {
}) })
.then(() => { .then(() => {
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);
@ -180,19 +181,27 @@ getList();
:label="t('admin.form.name', { type: t('admin.common.company') })" :label="t('admin.form.name', { type: t('admin.common.company') })"
prop="enterpriseName" prop="enterpriseName"
/> />
<el-table-column align="center" label="所属领域" prop="industryStr" />
<el-table-column align="center" label="需求数量" prop="demandCount" />
<el-table-column <el-table-column
align="center" align="center"
label="正在服务需求数" :label="t('admin.form.industry')"
prop="industryStr"
/>
<el-table-column
align="center"
:label="t('quantityOverview.demand')"
prop="demandCount"
/>
<el-table-column
align="center"
:label="t('admin.table.serviceDemandCount')"
prop="runDemandCount" prop="runDemandCount"
/> />
<el-table-column <el-table-column
align="center" align="center"
label="已完成需求数" :label="t('admin.table.finishedDemandCount')"
prop="completeDemandCount" prop="completeDemandCount"
/> />
<el-table-column align="center" label="添加时间"> <el-table-column align="center" :label="t('admin.table.addTime')">
<template #default="{ row }"> <template #default="{ row }">
{{ dayjs(row.createTime).format("YYYY-MM-DD HH:mm:ss") }} {{ dayjs(row.createTime).format("YYYY-MM-DD HH:mm:ss") }}
</template> </template>
@ -204,17 +213,27 @@ getList();
size="small" size="small"
type="text" type="text"
@click="handleTechDemand(row.enterpriseId)" @click="handleTechDemand(row.enterpriseId)"
>技术需求管理</el-button >{{
> t("admin.table.managementOf", {
<el-button link size="small" type="text">成果管理</el-button> type: t("routes.company.technicalDemand"),
})
}}
</el-button>
<el-button link size="small" type="text">
{{
t("admin.table.managementOf", {
type: t("admin.common.achievement"),
})
}}
</el-button>
<el-button <el-button
link link
size="small" size="small"
type="text" type="text"
@click="handleDelete(row.id)" @click="handleDelete(row.id)"
> >
{{ t("admin.common.delete") }}</el-button {{ t("admin.common.delete") }}
> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -238,9 +257,9 @@ getList();
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button type="primary" @click="submitForm">{{ <el-button type="primary" @click="submitForm"
t("admin.common.confirm") >{{ t("admin.common.confirm") }}
}}</el-button> </el-button>
<el-button @click="cancel">{{ t("admin.common.cancel") }}</el-button> <el-button @click="cancel">{{ t("admin.common.cancel") }}</el-button>
</div> </div>
</template> </template>

View File

@ -108,7 +108,7 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="截止时间:" prop="deadline"> <el-form-item :label="t('admin.table.deadline')" prop="deadline">
<el-date-picker <el-date-picker
v-model="form.deadline" v-model="form.deadline"
placeholder="请选择截止时间" placeholder="请选择截止时间"

View File

@ -4,6 +4,7 @@ import dayjs from "dayjs";
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
import { technologyDemandList } from "@/api/admin/agent/service/technology-demand"; import { technologyDemandList } from "@/api/admin/agent/service/technology-demand";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
@ -81,13 +82,21 @@ if (route.query.id) {
<el-table :data="dataList"> <el-table :data="dataList">
<!-- 编号 --> <!-- 编号 -->
<el-table-column align="center" label="编号" prop="id" /> <el-table-column
align="center"
:label="t('admin.common.dataNumber')"
prop="id"
/>
<el-table-column <el-table-column
align="center" align="center"
:label="t('admin.form.name', { type: t('admin.common.demand') })" :label="t('admin.form.name', { type: t('admin.common.demand') })"
prop="title" prop="title"
/> />
<el-table-column align="center" label="所属领域" prop="industryStr" /> <el-table-column
align="center"
:label="t('admin.form.industry')"
prop="industryStr"
/>
<el-table-column <el-table-column
align="center" align="center"
:label="t('admin.form.contact')" :label="t('admin.form.contact')"
@ -107,7 +116,11 @@ if (route.query.id) {
{{ dayjs(row.createTime).format("YYYY-MM-DD HH:mm:ss") }} {{ dayjs(row.createTime).format("YYYY-MM-DD HH:mm:ss") }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="截止时间" prop="name"> <el-table-column
align="center"
:label="t('admin.table.deadline')"
prop="name"
>
<template #default="{ row }"> <template #default="{ row }">
{{ dayjs(row.deadline).format("YYYY-MM-DD HH:mm:ss") }} {{ dayjs(row.deadline).format("YYYY-MM-DD HH:mm:ss") }}
</template> </template>
@ -115,11 +128,11 @@ if (route.query.id) {
<el-table-column align="center" label=""> <el-table-column align="center" label="">
<template #default="{ row }"> <template #default="{ row }">
<el-button size="small" type="text"> <el-button size="small" type="text">
{{ t("admin.common.delete") }}</el-button {{ t("admin.common.delete") }}
> </el-button>
<el-button size="small" type="text" @click="handleResults(row)" <el-button size="small" type="text" @click="handleResults(row)"
>查看匹配结果</el-button >查看匹配结果
> </el-button>
<el-button size="small" type="text" @click="handleUpdateStatus(row)" <el-button size="small" type="text" @click="handleUpdateStatus(row)"
>更新状态 >更新状态
</el-button> </el-button>

View File

@ -1,5 +1,5 @@
<script setup> <script setup>
import { ref } from "vue"; import { computed, reactive, ref } from "vue";
import FileUpload from "@/components/FileUpload/index.vue"; import FileUpload from "@/components/FileUpload/index.vue";
import { import {
getTechnologyDemandUpdateStatus, getTechnologyDemandUpdateStatus,
@ -15,41 +15,38 @@ const active = ref(0); /*active step index*/
const updateStatusList = ref([]); /*update status list*/ const updateStatusList = ref([]); /*update status list*/
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
const cooperationMemoUrl = ref(""); // 合作备忘录
const technicalSolutionUrl = ref(""); // 客户确认技术解决方案
const contractUrl = ref(""); // 签署服务合同(合同额)
const conclusionUrl = ref(""); // 结题
//未结题原因描述 //未结题原因描述
const reason = ref(""); const reason = ref("");
// steps title, description, id // steps title, description, id
const steps = [ const steps = reactive([
{ {
title: "合作备忘录", title: computed(() => t("admin.table.cooperationMemo")),
description: "合作备忘录", description: computed(() => t("admin.table.cooperationMemo")),
id: 1, id: 1,
}, },
{ {
title: "客户确认技术解决方案", title: computed(() => t("admin.table.customerConfirmSolution")),
description: "客户确认技术解决方案", description: computed(() => t("admin.table.customerConfirmSolution")),
id: 2, id: 2,
}, },
{ {
title: "签署服务合同(合同额)", title: computed(() => t("admin.table.signServiceContract")),
description: "签署服务合同(合同额)", description: computed(() => t("admin.table.signServiceContract")),
id: 3, id: 3,
}, },
{ {
title: "结题", title: computed(() => t("admin.table.endTopic")),
description: "结题", description: computed(() => t("admin.table.endTopic")),
id: 4, id: 4,
}, },
{ {
title: "未结题", title: computed(() => t("admin.table.notEndTopic")),
description: "未结题", description: computed(() => t("admin.table.notEndTopic")),
id: 5, id: 5,
}, },
]; ]);
const getUpdateStatus = async (demandId) => { const getUpdateStatus = async (demandId) => {
const resp = await getTechnologyDemandUpdateStatus({ const resp = await getTechnologyDemandUpdateStatus({
@ -103,7 +100,7 @@ const submit = () => {
status: "1", status: "1",
}) })
.then((resp) => { .then((resp) => {
ElMessage.success("操作成功"); ElMessage.success(t("admin.common.operationSuccess"));
// if (active.value <= 3) { // if (active.value <= 3) {
// active.value += 1; // active.value += 1;
// } // }
@ -125,7 +122,7 @@ if (route.query.id) {
<template> <template>
<div class="app-container"> <div class="app-container">
<h2 class="page-title">需求状态</h2> <h2 class="page-title">{{ t("admin.common.demandStatus") }}</h2>
<div style="width: 80%; margin: 0 auto"> <div style="width: 80%; margin: 0 auto">
<el-steps :active="active" finish-status="finish" process-status="finish"> <el-steps :active="active" finish-status="finish" process-status="finish">
<el-step <el-step
@ -160,14 +157,14 @@ if (route.query.id) {
<el-form :model="updateStatusList[0]" label-position="top"> <el-form :model="updateStatusList[0]" label-position="top">
<el-row v-if="index !== 4" justify="space-between"> <el-row v-if="index !== 4" justify="space-between">
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="`上传文件`"> <el-form-item :label="t('admin.table.uploadFile')">
<file-upload v-model="updateStatusList[index].files" /> <file-upload v-model="updateStatusList[index].files" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item
v-if="index === 2 || index === 3" v-if="index === 2 || index === 3"
label="金额" :label="t('admin.form.amount')"
> >
<el-input-number <el-input-number
v-model="updateStatusList[index].remark" v-model="updateStatusList[index].remark"
@ -186,14 +183,14 @@ if (route.query.id) {
</el-form> </el-form>
</div> </div>
<div v-if="updateStatusList[index].updateTime" class="upload-time"> <div v-if="updateStatusList[index].updateTime" class="upload-time">
<span>上传时间</span> <span>{{ t("admin.table.uploadTime") }}</span>
<span>{{ updateStatusList[index].updateTime }}</span> <span>{{ updateStatusList[index].updateTime }}</span>
</div> </div>
</div> </div>
</template> </template>
</div> </div>
<div class="steps-action"> <div class="steps-action">
<el-button @click="close">关闭</el-button> <el-button @click="close"> {{ t("common.close") }}</el-button>
<el-button <el-button
v-if=" v-if="
updateStatusList.length && updateStatusList.length &&
@ -223,7 +220,7 @@ if (route.query.id) {
active = 3; active = 3;
} }
" "
>结题 >{{ t("admin.table.endTopic") }}
</el-button> </el-button>
<el-button <el-button
v-if="active === 2" v-if="active === 2"
@ -232,7 +229,7 @@ if (route.query.id) {
active = 4; active = 4;
} }
" "
>未结题 >{{ t("admin.table.notEndTopic") }}
</el-button> </el-button>
</template> </template>
</div> </div>
@ -270,6 +267,7 @@ if (route.query.id) {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: end; align-items: end;
margin-top: 16px;
:deep(.el-form) { :deep(.el-form) {
width: 100%; width: 100%;

View File

@ -79,7 +79,7 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="截止时间:" prop="deadline"> <el-form-item :label="t('admin.table.deadline')" prop="deadline">
<el-date-picker <el-date-picker
v-model="form.deadline" v-model="form.deadline"
placeholder="请选择截止时间" placeholder="请选择截止时间"
@ -94,7 +94,7 @@
</el-form> </el-form>
<div :style="{ marginLeft: labelWidth + 'px' }"> <div :style="{ marginLeft: labelWidth + 'px' }">
<el-button type="primary" @click="">关闭</el-button> <el-button type="primary" @click=""> {{ t("common.close") }}</el-button>
</div> </div>
</el-card> </el-card>
</div> </div>

View File

@ -8,6 +8,7 @@ import {
} from "@/api/admin/agent/service/enterprise"; } from "@/api/admin/agent/service/enterprise";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const dataList = ref([]); const dataList = ref([]);
const loading = ref(true); const loading = ref(true);
@ -91,6 +92,7 @@ const cancel = () => {
reset(); reset();
showDialog.value = false; showDialog.value = false;
}; };
getList();
</script> </script>
<template> <template>
@ -135,13 +137,33 @@ const cancel = () => {
<el-table-column <el-table-column
align="center" align="center"
:label="t('admin.form.name', { type: t('admin.common.company') })" :label="t('admin.form.name', { type: t('admin.common.company') })"
prop="name" prop="enterpriseName"
/> />
<el-table-column align="center" label="所属领域" prop="name" /> <el-table-column
<el-table-column align="center" label="需求数量" prop="name" /> align="center"
<el-table-column align="center" label="正在服务需求数" prop="name" /> :label="t('admin.form.industry')"
<el-table-column align="center" label="已完成需求数" prop="name" /> prop="industryStr"
<el-table-column align="center" label="添加时间" prop="name"> />
<el-table-column
align="center"
:label="t('quantityOverview.demand')"
prop="demandCount"
/>
<el-table-column
align="center"
:label="t('admin.table.serviceDemandCount')"
prop="runDemandCount"
/>
<el-table-column
align="center"
:label="t('admin.table.finishedDemandCount')"
prop="completeDemandCount"
/>
<el-table-column
align="center"
:label="t('admin.table.addTime')"
prop="name"
>
<template #default="{ row }"> <template #default="{ row }">
{{ dayjs(row.createTime).format("YYYY-MM-DD HH:mm:ss") }} {{ dayjs(row.createTime).format("YYYY-MM-DD HH:mm:ss") }}
</template> </template>
@ -149,8 +171,8 @@ const cancel = () => {
<el-table-column align="center" :label="t('admin.common.operation')"> <el-table-column align="center" :label="t('admin.common.operation')">
<template #default="{ row }"> <template #default="{ row }">
<el-button link size="small" type="primary" @click="" <el-button link size="small" type="primary" @click=""
>查看详情</el-button >查看详情
> </el-button>
<el-button link size="small" type="primary">承接需求</el-button> <el-button link size="small" type="primary">承接需求</el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -178,9 +200,9 @@ const cancel = () => {
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button type="primary" @click="submitForm">{{ <el-button type="primary" @click="submitForm"
t("admin.common.confirm") >{{ t("admin.common.confirm") }}
}}</el-button> </el-button>
<el-button @click="cancel">{{ t("admin.common.cancel") }}</el-button> <el-button @click="cancel">{{ t("admin.common.cancel") }}</el-button>
</div> </div>
</template> </template>

View File

@ -7,10 +7,12 @@
v-show="showSearch" v-show="showSearch"
label-width="68px" label-width="68px"
> >
<el-form-item label="订单号" prop="orderNumber"> <el-form-item :label="t('admin.form.orderNumber')" prop="orderNumber">
<el-input <el-input
v-model="queryParams.orderNumber" v-model="queryParams.orderNumber"
placeholder="请输入订单号" :placeholder="
t('admin.form.placeholder', { type: t('admin.form.orderNumber') })
"
clearable clearable
size="small" size="small"
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
@ -56,18 +58,34 @@
</el-row> --> </el-row> -->
<el-table v-loading="loading" :data="dataList"> <el-table v-loading="loading" :data="dataList">
<el-table-column label="订单号" align="center" prop="orderNumber" /> <el-table-column
<el-table-column label="订单类型" align="center" prop="orderType"> :label="t('admin.form.orderNumber')"
align="center"
prop="orderNumber"
/>
<el-table-column
:label="t('admin.form.orderType')"
align="center"
prop="orderType"
>
<template #default="{ row }"> <template #default="{ row }">
{{ orderTypeDic[row.orderType] }} {{ orderTypeDic[row.orderType] }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="金额" align="center" prop="amount" /> <el-table-column
<el-table-column label="数量" align="center" prop="total" /> :label="t('admin.form.amount')"
align="center"
prop="amount"
/>
<el-table-column
:label="t('admin.form.quantity')"
align="center"
prop="total"
/>
<!-- <el-zh-column label="申请状态" align="center" prop="status"> <!-- <el-zh-column label="申请状态" align="center" prop="status">
</el-zh-column> --> </el-zh-column> -->
<el-table-column <el-table-column
label="充值时间" :label="t('admin.form.rechargeTime')"
align="center" align="center"
prop="payTime" prop="payTime"
width="180" width="180"
@ -157,7 +175,7 @@
<b>邮寄信息</b> <b>邮寄信息</b>
</div> </div>
<el-form-item <el-form-item
label="联系人:" :label="t('admin.form.contact')"
prop="username" prop="username"
v-if="form.orderType == 2" v-if="form.orderType == 2"
> >
@ -341,7 +359,7 @@ const handleDelete = (id) => {
.then(async () => { .then(async () => {
await deleteCasDealLog(id); await deleteCasDealLog(id);
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}); });
}; };
/** 导出按钮操作 */ /** 导出按钮操作 */

View File

@ -19,19 +19,22 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="活动状态" prop="status"> <el-form-item label="活动状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择"> <el-select
<el-option label="显示" value="1"></el-option> v-model="queryParams.status"
<el-option label="隐藏" value="2"></el-option> :placeholder="t('admin.pleaseSelect')"
>
<el-option :label="t('common.show')" value="1"></el-option>
<el-option :label="t('common.hide')" value="2"></el-option>
<!-- <el-option label="已结束" value="3"></el-option> --> <!-- <el-option label="已结束" value="3"></el-option> -->
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"> <el-button type="primary" icon="Search" @click="handleQuery">
{{ t("admin.common.search") }}</el-button {{ t("admin.common.search") }}
> </el-button>
<el-button icon="Refresh" @click="resetQuery"> <el-button icon="Refresh" @click="resetQuery">
{{ t("admin.common.reset") }}</el-button {{ t("admin.common.reset") }}
> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -70,9 +73,13 @@
</el-table-column> </el-table-column>
<el-table-column :label="t('common.status')" align="center" prop="status"> <el-table-column :label="t('common.status')" align="center" prop="status">
<template #default="{ row }"> <template #default="{ row }">
<el-tag type="success" v-if="row.status == 1">显示</el-tag> <el-tag type="success" v-if="row.status == 1"
<el-tag type="danger" v-else-if="row.status == 2">隐藏</el-tag> >{{ t("common.show") }}
<el-tag type="info" v-else>未知</el-tag> </el-tag>
<el-tag type="danger" v-else-if="row.status == 2"
>{{ t("common.hide") }}
</el-tag>
<el-tag type="info" v-else>{{ t("common.unknown") }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -90,6 +97,7 @@
<script setup> <script setup>
import { activitysList } from "@/api/admin/enterprise"; import { activitysList } from "@/api/admin/enterprise";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const dataList = ref([]); const dataList = ref([]);
const loading = ref(true); const loading = ref(true);

View File

@ -181,7 +181,7 @@ const submitForm = () => {
if (valid) { if (valid) {
if (form.value.id != undefined) { if (form.value.id != undefined) {
await updateDemand(form.value); await updateDemand(form.value);
ElMessage.success("修改成功"); ElMessage.success(t("admin.common.editSuccess"));
// router.back(); // router.back();
} else { } else {
await insertDemand(form.value); await insertDemand(form.value);

View File

@ -103,7 +103,7 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="截止时间:" prop="deadline"> <el-form-item :label="t('admin.table.deadline')" prop="deadline">
<el-date-picker <el-date-picker
style="width: 100%" style="width: 100%"
v-model="form.deadline" v-model="form.deadline"
@ -308,7 +308,7 @@ const submitForm = async (status) => {
// console.log(form.value); // console.log(form.value);
// if (form.value.id != undefined) { // if (form.value.id != undefined) {
// // updatePost(form.value).then((response) => { // // updatePost(form.value).then((response) => {
// // proxy.$modal.msgSuccess("修改成功"); // // proxy.$modal.msgSuccess(t('admin.common.editSuccess'));
// // proxy.$router.go(-1); // // proxy.$router.go(-1);
// // }); // // });
// } else { // } else {

View File

@ -179,7 +179,7 @@ function handleDelete(id) {
}) })
.then(() => { .then(() => {
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }
@ -194,7 +194,7 @@ const complete = (id) => {
.then(async () => { .then(async () => {
await updateDemand({ id, status: 4 }); await updateDemand({ id, status: 4 });
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
}; };

View File

@ -31,7 +31,11 @@
prop="title" prop="title"
align="center" align="center"
/> />
<el-table-column label="所属领域" prop="industryStr" align="center" /> <el-table-column
:label="t('admin.form.industry')"
prop="industryStr"
align="center"
/>
<el-table-column <el-table-column
:label="t('admin.form.contact')" :label="t('admin.form.contact')"
prop="name" prop="name"
@ -50,7 +54,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="截止时间" :label="t('admin.table.deadline')"
prop="deadline" prop="deadline"
align="center" align="center"
width="180" width="180"
@ -201,7 +205,7 @@ function handleDelete(id) {
}) })
.then(() => { .then(() => {
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);

View File

@ -151,7 +151,7 @@ const handleDelete = (id) => {
.confirm('是否确认删除数据编号为"' + id + '"的产品项?') .confirm('是否确认删除数据编号为"' + id + '"的产品项?')
.then(async () => { .then(async () => {
await deleteEnterpriseProduct(id); await deleteEnterpriseProduct(id);
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
getList(); getList();
}) })
.catch((error) => { .catch((error) => {

View File

@ -213,7 +213,7 @@ function handleQuery() {
// }) // })
// .then(() => { // .then(() => {
// getList(); // getList();
// proxy.$modal.msgSuccess("删除成功"); // proxy.$modal.msgSuccess(t('admin.common.deleteSuccess'))
// }) // })
// .catch(() => {}); // .catch(() => {});
// } // }

View File

@ -129,7 +129,7 @@ const submitPersonalInfo = async () => {
try { try {
await personalInfoFormRef.value.validate(); await personalInfoFormRef.value.validate();
await insertClientUser(PersonalInfoForm.value); await insertClientUser(PersonalInfoForm.value);
ElMessage.success("更新个人信息成功"); ElMessage.success(t("admin.common.updatePersonalInformationSuccess"));
const { data } = await getInfo(); const { data } = await getInfo();
PersonalInfoForm.value = data.user ?? {}; PersonalInfoForm.value = data.user ?? {};
@ -143,7 +143,7 @@ async function submitExpertForm(status) {
if (valid) { if (valid) {
expertForm.value.area = expertForm.value.district; expertForm.value.area = expertForm.value.district;
updateExpert(expertForm.value).then((res) => { updateExpert(expertForm.value).then((res) => {
ElMessage.success("修改成功"); ElMessage.success(t("admin.common.editSuccess"));
// router.back(); // router.back();
}); });
} else { } else {

View File

@ -22,7 +22,7 @@
<el-form-item label="活动状态" prop="status"> <el-form-item label="活动状态" prop="status">
<el-select <el-select
v-model="queryParams.status" v-model="queryParams.status"
placeholder="请选择" :placeholder="t('admin.pleaseSelect')"
size="small" size="small"
> >
<el-option label="显示" value="1"></el-option> <el-option label="显示" value="1"></el-option>
@ -37,11 +37,11 @@
icon="Search" icon="Search"
@click="handleQuery" @click="handleQuery"
> >
{{ t("admin.common.search") }}</el-button {{ t("admin.common.search") }}
> </el-button>
<el-button size="small" icon="Refresh" @click="resetQuery"> <el-button size="small" icon="Refresh" @click="resetQuery">
{{ t("admin.common.reset") }}</el-button {{ t("admin.common.reset") }}
> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -82,7 +82,7 @@
<template #default="{ row }"> <template #default="{ row }">
<el-tag type="success" v-if="row.status == 1">显示</el-tag> <el-tag type="success" v-if="row.status == 1">显示</el-tag>
<el-tag type="danger" v-else-if="row.status == 2">隐藏</el-tag> <el-tag type="danger" v-else-if="row.status == 2">隐藏</el-tag>
<el-tag type="info" v-else>未知</el-tag> <el-tag type="info" v-else>{{ t("common.unknown") }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -100,6 +100,8 @@
<script setup> <script setup>
import { activitysList } from "@/api/admin/expert"; import { activitysList } from "@/api/admin/expert";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
import { reactive, ref, toRefs } from "vue";
const { t } = useI18n(); const { t } = useI18n();
const dataList = ref([]); const dataList = ref([]);
const loading = ref(true); const loading = ref(true);

View File

@ -167,7 +167,7 @@
<InputBoxAdd <InputBoxAdd
:labelWidth="labelWidth" :labelWidth="labelWidth"
v-model="modelValue" v-model="modelValue"
title="关键词" :title="t('admin.form.keywords')"
placeholder="请输入关键词" placeholder="请输入关键词"
fieldKey="keywords" fieldKey="keywords"
ref="keywordsFormRef" ref="keywordsFormRef"

View File

@ -315,7 +315,7 @@ function handleDelete(id) {
}) })
.then(() => { .then(() => {
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }
@ -406,7 +406,7 @@ function submitForm() {
form.value.paper = form.value.papers.join(","); form.value.paper = form.value.papers.join(",");
if (form.value.id != undefined) { if (form.value.id != undefined) {
updateExpertCooperateEnterprise(form.value).then((response) => { updateExpertCooperateEnterprise(form.value).then((response) => {
ElMessage.success("修改成功"); ElMessage.success(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
}); });

View File

@ -203,7 +203,7 @@ async function submitForm() {
if (formData.value.id) { if (formData.value.id) {
// TODO: 修改专家需求 // TODO: 修改专家需求
await updateDemand(formData.value); await updateDemand(formData.value);
ElMessage.success("修改成功"); ElMessage.success(t("admin.common.editSuccess"));
} else { } else {
await insertDemand(formData.value); await insertDemand(formData.value);
ElMessage.success("新增成功"); ElMessage.success("新增成功");

View File

@ -192,7 +192,7 @@ function handleDelete(id) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }
@ -208,7 +208,7 @@ const complete = (id) => {
.then(async () => { .then(async () => {
await updateCasDemand({ id, status: 4 }); await updateCasDemand({ id, status: 4 });
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
}; };

View File

@ -58,7 +58,7 @@
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
/> />
<!-- province--city--district --> <!-- province--city--district -->
<el-table-column label="所属领域" prop="territoryStr" /> <el-table-column :label="t('admin.form.industry')" prop="territoryStr" />
<el-table-column :label="t('admin.form.contact')" prop="contactUser" /> <el-table-column :label="t('admin.form.contact')" prop="contactUser" />
<el-table-column :label="t('webContact.phone')" prop="contactPhone" /> <el-table-column :label="t('webContact.phone')" prop="contactPhone" />
<!-- <el-zh-column label="创建日期" align="center" prop="created_at"> <!-- <el-zh-column label="创建日期" align="center" prop="created_at">
@ -115,7 +115,7 @@
" "
/> />
</el-form-item> </el-form-item>
<el-form-item label="联系人:"> <el-form-item :label="t('admin.form.contact')">
<el-input v-model="form.contactUser" placeholder="请输入专家姓名" /> <el-input v-model="form.contactUser" placeholder="请输入专家姓名" />
</el-form-item> </el-form-item>
<el-form-item label="联系电话:"> <el-form-item label="联系电话:">
@ -225,7 +225,7 @@ function handleDelete(id) {
modal.confirm(`是否确认删除数据编号为"${id}"的数据项?`).then(async () => { modal.confirm(`是否确认删除数据编号为"${id}"的数据项?`).then(async () => {
await deleteExpertWantEnterpriseByIds({ ids: [id] }); await deleteExpertWantEnterpriseByIds({ ids: [id] });
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}); });
} }
@ -270,12 +270,12 @@ function submitForm() {
if (valid) { if (valid) {
if (form.value.id) { if (form.value.id) {
await updateExpertWantEnterprise(form.value); await updateExpertWantEnterprise(form.value);
ElMessage.success("修改成功"); ElMessage.success(t("admin.common.editSuccess"));
showEditDialog.value = false; showEditDialog.value = false;
getList(); getList();
} else { } else {
await insertExpertWantEnterprise(form.value); await insertExpertWantEnterprise(form.value);
ElMessage.success("修改成功"); ElMessage.success(t("admin.common.editSuccess"));
showEditDialog.value = false; showEditDialog.value = false;
getList(); getList();
} }

View File

@ -154,7 +154,7 @@ const handleDelete = (id) => {
.then(async () => { .then(async () => {
await deleteAchievementByIds({ ids: [id] }); await deleteAchievementByIds({ ids: [id] });
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}); });
}; };
// 上架和下架 // 上架和下架

View File

@ -217,7 +217,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }
@ -237,7 +237,7 @@ function handleBind(id) {
}); });
// expertPatentBind({ id: this.queryParams.id, patent_ids: [id] }).then( // expertPatentBind({ id: this.queryParams.id, patent_ids: [id] }).then(
// (res) => { // (res) => {
// this.$modal.msgSuccess("修改成功"); // this.$modal.msgSuccess(t('admin.common.editSuccess'));
// this.getList(); // this.getList();
// } // }
// ); // );
@ -245,7 +245,7 @@ function handleBind(id) {
function handleUnbind(id) { function handleUnbind(id) {
// expertPatentUnbind({ id: this.queryParams.id, patent_ids: [id] }).then( // expertPatentUnbind({ id: this.queryParams.id, patent_ids: [id] }).then(
// (res) => { // (res) => {
// this.$modal.msgSuccess("修改成功"); // this.$modal.msgSuccess(t('admin.common.editSuccess'));
// this.getList(); // this.getList();
// } // }
// ); // );

View File

@ -135,7 +135,7 @@
:labelWidth="100" :labelWidth="100"
v-model="form" v-model="form"
title="关键词" title="关键词"
placeholder="应用场景关键词+技术产品关键词" :placeholder="t('admin.form.inputKeywords')"
fieldKey="keywords" fieldKey="keywords"
ref="keywordsFormRef" ref="keywordsFormRef"
/> />
@ -250,7 +250,7 @@ function handleDelete(id) {
.then(async () => { .then(async () => {
await deleteCasPaper(id); await deleteCasPaper(id);
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}); });
} }
@ -291,7 +291,7 @@ function submitForm() {
form.value.keyword = form.value.keywords.join(","); form.value.keyword = form.value.keywords.join(",");
if (form.value.id) { if (form.value.id) {
await updateCasPaper(form.value); await updateCasPaper(form.value);
ElMessage.success("修改成功"); ElMessage.success(t("admin.common.editSuccess"));
showEditDialog.value = false; showEditDialog.value = false;
getList(); getList();
} else { } else {

View File

@ -207,7 +207,7 @@
<el-select <el-select
v-model="form.kind" v-model="form.kind"
clearable clearable
placeholder="请选择" :placeholder="t('admin.pleaseSelect')"
style="width: 100%" style="width: 100%"
> >
<el-option <el-option
@ -363,7 +363,7 @@ function handleDelete(id) {
}) })
.then(() => { .then(() => {
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);
@ -411,7 +411,7 @@ const submitForm = async () => {
await patentRef.value.validate(); await patentRef.value.validate();
if (form.value.id != undefined) { if (form.value.id != undefined) {
await updateCasPatent({ ...form.value, expertId: expertId.value }); await updateCasPatent({ ...form.value, expertId: expertId.value });
ElMessage.success("修改成功"); ElMessage.success(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
} else { } else {

View File

@ -334,7 +334,7 @@ function handleDelete(id) {
modal.confirm(`是否确认删除数据编号为"${id}"的数据项?`).then(async () => { modal.confirm(`是否确认删除数据编号为"${id}"的数据项?`).then(async () => {
await deleteTechnologyProjectByIds({ ids: [id] }); await deleteTechnologyProjectByIds({ ids: [id] });
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}); });
} }
@ -375,7 +375,7 @@ function submitForm() {
form.value.amount = form.value.amount - 0; form.value.amount = form.value.amount - 0;
if (form.value.id) { if (form.value.id) {
await updateTechnologyProject(form.value); await updateTechnologyProject(form.value);
ElMessage.success("修改成功"); ElMessage.success(t("admin.common.editSuccess"));
showEditDialog.value = false; showEditDialog.value = false;
getList(); getList();
} else { } else {

View File

@ -118,7 +118,7 @@ const submitPersonalInfo = async () => {
try { try {
await personFormRef.value.validate(); await personFormRef.value.validate();
await insertClientUser(personForm.value); await insertClientUser(personForm.value);
ElMessage.success("更新个人信息成功"); ElMessage.success(t("admin.common.updatePersonalInformationSuccess"));
const { data } = await getInfo(); const { data } = await getInfo();
personForm.value = data.user ?? {}; personForm.value = data.user ?? {};
} catch (error) { } catch (error) {
@ -131,7 +131,7 @@ const submitExpertForm = async () => {
form.value.researchDirection = form.value.researchs?.join(",") ?? null; form.value.researchDirection = form.value.researchs?.join(",") ?? null;
form.value.keyword = form.value.keywords?.join(",") ?? null; form.value.keyword = form.value.keywords?.join(",") ?? null;
updateLaboratory(form.value).then((res) => { updateLaboratory(form.value).then((res) => {
ElMessage.success("修改成功"); ElMessage.success(t("admin.common.editSuccess"));
getBasicInfo(); getBasicInfo();
}); });
} else { } else {

View File

@ -187,7 +187,7 @@ function handleDelete(id) {
}) })
.then(() => { .then(() => {
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);

View File

@ -106,7 +106,7 @@
<!-- 添加或修改数据配置对话框 --> <!-- 添加或修改数据配置对话框 -->
<el-dialog v-model="open" :title="title" append-to-body width="800px"> <el-dialog v-model="open" :title="title" append-to-body width="800px">
<el-form ref="expertRef" :model="form" :rules="rules" label-width="100px"> <el-form ref="expertRef" :model="form" :rules="rules" label-width="100px">
<el-form-item label="专家姓名" prop="title"> <el-form-item :label="t('admin.form.expertName')" prop="title">
<el-input v-model="form.title" placeholder="请输入专家姓名" /> <el-input v-model="form.title" placeholder="请输入专家姓名" />
</el-form-item> </el-form-item>
<el-form-item label="性别" prop="gender"> <el-form-item label="性别" prop="gender">
@ -122,7 +122,7 @@
:labelWidth="100" :labelWidth="100"
fieldKey="researchs" fieldKey="researchs"
placeholder="研究方向" placeholder="研究方向"
title="研究方向" :title="t('admin.form.researchDirection')"
/> />
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -261,7 +261,7 @@ function submitForm() {
if (form.value.id) { if (form.value.id) {
// TODO // TODO
paperEdit(form.value).then((response) => { paperEdit(form.value).then((response) => {
ElMessage.success("修改成功"); ElMessage.success(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
}); });

View File

@ -316,7 +316,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }

View File

@ -130,7 +130,7 @@
v-model="form" v-model="form"
:labelWidth="100" :labelWidth="100"
fieldKey="keywords" fieldKey="keywords"
placeholder="应用场景关键词+技术产品关键词" :placeholder="t('admin.form.inputKeywords')"
title="关键词" title="关键词"
/> />
<el-form-item label="摘要:"> <el-form-item label="摘要:">
@ -244,7 +244,7 @@ function handleDelete(id) {
}) })
.then(() => { .then(() => {
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);
@ -285,7 +285,7 @@ function submitForm() {
if (form.value.id) { if (form.value.id) {
// TODO // TODO
paperEdit(form.value).then((response) => { paperEdit(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
}); });

View File

@ -181,7 +181,7 @@
<!-- <el-select--> <!-- <el-select-->
<!-- v-model="form.kind"--> <!-- v-model="form.kind"-->
<!-- clearable--> <!-- clearable-->
<!-- placeholder="请选择"--> <!-- :placeholder="t('admin.pleaseSelect')"-->
<!-- style="width: 100%"--> <!-- style="width: 100%"-->
<!-- >--> <!-- >-->
<!-- <el-option--> <!-- <el-option-->
@ -389,7 +389,7 @@ function handleDelete(id) {
// await patentRef.value.validate(); // await patentRef.value.validate();
// if (form.value.id != undefined) { // if (form.value.id != undefined) {
// await updateLabPatent(form.value); // await updateLabPatent(form.value);
// ElMessage.success("修改成功"); // ElMessage.success(t('admin.common.editSuccess'));
// open.value = false; // open.value = false;
// getList(); // getList();
// } else { // } else {

View File

@ -188,7 +188,7 @@ function handleDelete(id) {
}) })
.then(() => { .then(() => {
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);

View File

@ -94,7 +94,7 @@
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- </el-col>--> <!-- </el-col>-->
<!-- <el-col :span="12">--> <!-- <el-col :span="12">-->
<!-- <el-form-item label="手机号:" prop="userPhone">--> <!-- <el-form-item :label="t('admin.form.mobile')" prop="userPhone">-->
<!-- <el-input--> <!-- <el-input-->
<!-- v-model="formData.userPhone"--> <!-- v-model="formData.userPhone"-->
<!-- placeholder="自动获取"--> <!-- placeholder="自动获取"-->

View File

@ -181,7 +181,7 @@ function handleDelete(id) {
}) })
.then(() => { .then(() => {
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);

View File

@ -133,7 +133,7 @@ const submitPersonalInfo = async () => {
try { try {
await personFormRef.value.validate(); await personFormRef.value.validate();
await insertClientUser(personForm.value); await insertClientUser(personForm.value);
ElMessage.success("更新个人信息成功"); ElMessage.success(t("admin.common.updatePersonalInformationSuccess"));
const { data } = await getInfo(); const { data } = await getInfo();
personForm.value = data.user ?? {}; personForm.value = data.user ?? {};
} catch (error) { } catch (error) {
@ -146,7 +146,7 @@ const submitExpertForm = async () => {
form.value.researchDirection = form.value.researchs?.join(",") ?? null; form.value.researchDirection = form.value.researchs?.join(",") ?? null;
form.value.keyword = form.value.keywords?.join(",") ?? null; form.value.keyword = form.value.keywords?.join(",") ?? null;
updateResearch(form.value).then((res) => { updateResearch(form.value).then((res) => {
ElMessage.success("修改成功"); ElMessage.success(t("admin.common.editSuccess"));
getBasicInfo(); getBasicInfo();
}); });
} else { } else {

View File

@ -179,7 +179,7 @@ function handleDelete(id) {
}) })
.then(() => { .then(() => {
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}); });
} }

View File

@ -106,7 +106,7 @@
<!-- 添加或修改数据配置对话框 --> <!-- 添加或修改数据配置对话框 -->
<el-dialog v-model="open" :title="title" append-to-body width="800px"> <el-dialog v-model="open" :title="title" append-to-body width="800px">
<el-form ref="expertRef" :model="form" :rules="rules" label-width="100px"> <el-form ref="expertRef" :model="form" :rules="rules" label-width="100px">
<el-form-item label="专家姓名" prop="title"> <el-form-item :label="t('admin.form.expertName')" prop="title">
<el-input v-model="form.title" placeholder="请输入专家姓名" /> <el-input v-model="form.title" placeholder="请输入专家姓名" />
</el-form-item> </el-form-item>
<el-form-item label="性别" prop="gender"> <el-form-item label="性别" prop="gender">
@ -122,7 +122,7 @@
:labelWidth="100" :labelWidth="100"
fieldKey="researchs" fieldKey="researchs"
placeholder="研究方向" placeholder="研究方向"
title="研究方向" :title="t('admin.form.researchDirection')"
/> />
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -253,7 +253,7 @@ function submitForm() {
if (form.value.id) { if (form.value.id) {
// TODO // TODO
paperEdit(form.value).then((response) => { paperEdit(form.value).then((response) => {
ElMessage.success("修改成功"); ElMessage.success(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
}); });

View File

@ -267,7 +267,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }
@ -305,7 +305,7 @@ function submitForm() {
if (valid) { if (valid) {
if (form.value.deviceId) { if (form.value.deviceId) {
updateEquipment(form.value).then((response) => { updateEquipment(form.value).then((response) => {
ElMessage.success("修改成功"); ElMessage.success(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
}); });

View File

@ -273,7 +273,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }
@ -313,7 +313,7 @@ function submitForm() {
if (valid) { if (valid) {
if (form.value.id) { if (form.value.id) {
laboratoryEdit(form.value).then((response) => { laboratoryEdit(form.value).then((response) => {
ElMessage.success("修改成功"); ElMessage.success(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
}); });

View File

@ -131,7 +131,7 @@
v-model="form" v-model="form"
:labelWidth="100" :labelWidth="100"
fieldKey="keywords" fieldKey="keywords"
placeholder="应用场景关键词+技术产品关键词" :placeholder="t('admin.form.inputKeywords')"
title="关键词" title="关键词"
/> />
<el-form-item label="摘要:"> <el-form-item label="摘要:">
@ -238,7 +238,7 @@ function handleDelete(id) {
}) })
.then(() => { .then(() => {
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);
@ -279,7 +279,7 @@ function submitForm() {
if (form.value.id) { if (form.value.id) {
// TODO // TODO
paperEdit(form.value).then((response) => { paperEdit(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
}); });

View File

@ -163,7 +163,7 @@ function handleDelete(id) {
}) })
.then(() => { .then(() => {
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}); });
} }

View File

@ -194,7 +194,7 @@ function handleDelete(id) {
}) })
.then(() => { .then(() => {
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);

View File

@ -91,7 +91,7 @@
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- </el-col>--> <!-- </el-col>-->
<!-- <el-col :span="12">--> <!-- <el-col :span="12">-->
<!-- <el-form-item label="手机号:" prop="userPhone">--> <!-- <el-form-item :label="t('admin.form.mobile')" prop="userPhone">-->
<!-- <el-input--> <!-- <el-input-->
<!-- v-model="formData.userPhone"--> <!-- v-model="formData.userPhone"-->
<!-- placeholder="自动获取"--> <!-- placeholder="自动获取"-->

View File

@ -181,7 +181,7 @@ function handleDelete(id) {
}) })
.then(() => { .then(() => {
getList(); getList();
ElMessage.success("删除成功"); ElMessage.success(t("admin.common.deleteSuccess"));
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);

View File

@ -35,7 +35,7 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="工作所在地:" prop="wordAddress"> <el-form-item :label="t('admin.form.workLocation')" prop="wordAddress">
<el-input v-model="modelValue.wordAddress" /> <el-input v-model="modelValue.wordAddress" />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -43,7 +43,7 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="工作经历:" prop="experience"> <el-form-item :label="t('admin.form.workExperience')" prop="experience">
<el-input <el-input
v-model="modelValue.experience" v-model="modelValue.experience"
:autosize="{ minRows: 2, maxRows: 10 }" :autosize="{ minRows: 2, maxRows: 10 }"
@ -66,7 +66,7 @@
<el-row v-if="isAdd"> <el-row v-if="isAdd">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="身份证:" required> <el-form-item :label="t('admin.form.idCard')" required>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="8"> <el-col :span="8">
<el-form-item prop="idImage.0"> <el-form-item prop="idImage.0">
@ -76,7 +76,9 @@
:limit="1" :limit="1"
/> />
</el-form-item> </el-form-item>
<div style="text-align: center">身份证人像面</div> <div style="text-align: center">
{{ t("admin.form.idCardPortrait") }}
</div>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item prop="idImage.1"> <el-form-item prop="idImage.1">
@ -86,7 +88,9 @@
:limit="1" :limit="1"
/> />
</el-form-item> </el-form-item>
<div style="text-align: center">身份证国徽面</div> <div style="text-align: center">
{{ t("admin.form.idCardEmblem") }}
</div>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item prop="idImage.2"> <el-form-item prop="idImage.2">
@ -96,7 +100,9 @@
:limit="1" :limit="1"
/> />
</el-form-item> </el-form-item>
<div style="text-align: center">手持身份证人像面</div> <div style="text-align: center">{{
t('admin.validation.portraitOfTheIdCard')
}}</div>
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
@ -105,7 +111,10 @@
<el-row v-if="isAdd"> <el-row v-if="isAdd">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="成果经纪资格证书:" prop="certificatePics"> <el-form-item
:label="t('admin.form.achievementBroker')"
prop="certificatePics"
>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="8"> <el-col :span="8">
<image-upload <image-upload
@ -122,8 +131,9 @@
<script setup> <script setup>
import InputBoxAdd from "../InputBoxAdd"; import InputBoxAdd from "../InputBoxAdd";
import FieldOptions from "../FieldOptions"; import FieldOptions from "../FieldOptions";
import { ref } from "vue"; import { computed, reactive, ref } from "vue";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const formRef = ref(); const formRef = ref();
const researchsFormRef = ref(); const researchsFormRef = ref();
@ -143,18 +153,18 @@ const props = defineProps({
default: 120, default: 120,
}, },
}); });
const rules = { const rules = reactive({
product: [ product: [
{ {
required: true, required: true,
message: computed(() => t("admin.form.placeholder")), message: computed(() => t("admin.form.placeholder", { type: "" })),
trigger: "blur", trigger: "blur",
}, },
], ],
name: [ name: [
{ {
required: true, required: true,
message: computed(() => t("admin.form.placeholder")), message: computed(() => t("admin.form.placeholder", { type: "" })),
trigger: "blur", trigger: "blur",
}, },
], ],
@ -173,7 +183,13 @@ const rules = {
}, },
], ],
mobile: [ mobile: [
{ required: true, message: "请输入手机号码", trigger: "blur" }, {
required: true,
message: computed(() =>
t("admin.form.placeholder", { name: t("admin.form.mobile") })
),
trigger: "blur",
},
{ {
pattern: /^1[3-9]\d{9}$/, pattern: /^1[3-9]\d{9}$/,
message: computed(() => message: computed(() =>
@ -192,7 +208,7 @@ const rules = {
wordAddress: [ wordAddress: [
{ {
required: true, required: true,
message: computed(() => t("admin.form.placeholder")), message: computed(() => t("admin.form.placeholder", { type: "" })),
trigger: "blur", trigger: "blur",
}, },
], ],
@ -231,7 +247,7 @@ const rules = {
trigger: ["blur", "change"], trigger: ["blur", "change"],
}, },
], ],
}; });
const validateForm = async () => { const validateForm = async () => {
let formValid; let formValid;

View File

@ -12,7 +12,7 @@
<!-- <el-row v-if="isAdd"> --> <!-- <el-row v-if="isAdd"> -->
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="企业logo:"> <el-form-item :label="t('admin.form.companyLogo')">
<ImageUpload v-model="modelValue.image" :limit="1" /> <ImageUpload v-model="modelValue.image" :limit="1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -20,7 +20,14 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="企业名称" prop="name"> <el-form-item
:label="
t('admin.form.name', {
type: t('admin.common.company'),
})
"
prop="name"
>
<el-input v-model="modelValue.name"></el-input> <el-input v-model="modelValue.name"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -34,7 +41,7 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="联系方式" prop="phone"> <el-form-item :label="t('webSearch.contactInformation')" prop="phone">
<el-input <el-input
v-model="modelValue.phone" v-model="modelValue.phone"
:maxlength="11" :maxlength="11"
@ -76,8 +83,11 @@
</el-row> --> </el-row> -->
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="企业类型:" prop="kind"> <el-form-item :label="t('admin.form.companyType')" prop="kind">
<el-select v-model="modelValue.kind" placeholder="请选择"> <el-select
v-model="modelValue.kind"
:placeholder="t('admin.form.pleaseSelect')"
>
<el-option <el-option
v-for="item in enterpriseOptions" v-for="item in enterpriseOptions"
:key="item.key" :key="item.key"
@ -89,7 +99,10 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="核心成果核心产品:" prop="product"> <el-form-item
:label="t('admin.form.coreAchievementProduct')"
prop="product"
>
<el-input v-model="modelValue.product"></el-input> <el-input v-model="modelValue.product"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -120,8 +133,8 @@
v-model="modelValue" v-model="modelValue"
:labelWidth="labelWidth" :labelWidth="labelWidth"
fieldKey="keywords" fieldKey="keywords"
placeholder="应用场景关键词+技术产品关键词" :placeholder="t('admin.form.inputKeywords')"
title="关键词" :title="t('admin.form.keywords')"
/> />
<InputBoxAdd <InputBoxAdd
v-if="isAdd" v-if="isAdd"
@ -140,7 +153,7 @@
</el-form-item> </el-form-item>
</el-col> --> </el-col> -->
<el-col :span="24"> <el-col :span="24">
<el-form-item label="企业网站:"> <el-form-item :label="t('webSearch.companyWebsite')">
<el-input v-model="modelValue.url"></el-input> <el-input v-model="modelValue.url"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -170,7 +183,14 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="单位简介" prop="introduce"> <el-form-item
:label="
t('admin.form.introduction', {
type: t('webContact.unit'),
})
"
prop="introduce"
>
<WangEditor <WangEditor
v-model="modelValue.introduce" v-model="modelValue.introduce"
:minHeight="300" :minHeight="300"
@ -189,7 +209,7 @@ import InputBoxAdd from "../InputBoxAdd";
// import { researchSelect, laboratorySelect } from "@/api/identity/index"; // import { researchSelect, laboratorySelect } from "@/api/identity/index";
import WangEditor from "@/components/WangEditor"; import WangEditor from "@/components/WangEditor";
import { enterpriseOptions } from "@/utils/parameter"; import { enterpriseOptions } from "@/utils/parameter";
import { reactive, ref, toRefs } from "vue"; import { computed, reactive, ref, toRefs } from "vue";
import ImageUpload from "@/components/ImageUpload/index.vue"; import ImageUpload from "@/components/ImageUpload/index.vue";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
@ -243,9 +263,27 @@ const data = reactive({
trigger: "blur", trigger: "blur",
}, },
], ],
username: [{ required: true, message: "请输入联系人", trigger: "blur" }], username: [
{
required: true,
message: computed(() =>
t("admin.form.placeholder", {
type: t("admin.form.contact"),
})
),
trigger: "blur",
},
],
phone: [ phone: [
{ required: true, message: "请输入联系方式", trigger: "blur" }, {
required: true,
message: computed(() =>
t("admin.form.placeholder", {
type: t("webSearch.contactInformation"),
})
),
trigger: "blur",
},
{ {
pattern: /^1[3456789]\d{9}$/, pattern: /^1[3456789]\d{9}$/,
message: "手机号格式不正确", message: "手机号格式不正确",
@ -253,10 +291,22 @@ const data = reactive({
}, },
], ],
email: [ email: [
{ required: true, message: "请输入邮箱", trigger: "blur" }, {
required: true,
message: computed(() =>
t("admin.form.placeholder", {
type: t("admin.form.email"),
})
),
trigger: "blur",
},
{ {
pattern: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, pattern: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
message: "邮箱格式不正确", message: computed(() =>
t("admin.validation.incorrectFormatOf", {
type: t("admin.form.email"),
})
),
trigger: "blur", trigger: "blur",
}, },
], ],
@ -340,7 +390,9 @@ const data = reactive({
work_at: [ work_at: [
{ {
required: true, required: true,
message: "从业时间不能为空", message: computed(() =>
t("admin.validation.required", { type: t("admin.form.workingTime") })
),
trigger: ["change", "blur"], trigger: ["change", "blur"],
}, },
], ],

View File

@ -19,12 +19,12 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<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-input v-model="modelValue.name"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="手机号:" prop="mobile"> <el-form-item :label="t('admin.form.mobile')" prop="mobile">
<el-input v-model="modelValue.mobile" maxlength="11"></el-input> <el-input v-model="modelValue.mobile" maxlength="11"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -36,7 +36,7 @@
<el-select <el-select
v-model="modelValue.researchId" v-model="modelValue.researchId"
filterable filterable
placeholder="请选择" :placeholder="t('admin.pleaseSelect')"
@change="setLaboratory" @change="setLaboratory"
> >
<el-option <el-option
@ -54,7 +54,7 @@
<el-select <el-select
v-model="modelValue.laboratoryId" v-model="modelValue.laboratoryId"
filterable filterable
placeholder="请选择" :placeholder="t('admin.pleaseSelect')"
> >
<el-option <el-option
v-for="item in options" v-for="item in options"
@ -84,12 +84,15 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="毕业院校:" prop="school"> <el-form-item :label="t('admin.table.graduateSchool')" prop="school">
<el-input v-model="modelValue.school"></el-input> <el-input v-model="modelValue.school"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="所属研究机构:" prop="organization"> <el-form-item
:label="t('webSearch.researchInstitute')"
prop="organization"
>
<el-input v-model="modelValue.organization"></el-input> <el-input v-model="modelValue.organization"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -97,8 +100,14 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="最高学历:" prop="education"> <el-form-item
<el-select v-model="modelValue.education" placeholder="请选择"> :label="t('admin.table.highestEducation')"
prop="education"
>
<el-select
v-model="modelValue.education"
:placeholder="t('admin.form.pleaseSelect')"
>
<el-option <el-option
v-for="item in educationOptions" v-for="item in educationOptions"
:key="item.text" :key="item.text"
@ -110,7 +119,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="主修专业:" prop="major"> <el-form-item :label="t('admin.table.major')" prop="major">
<el-input v-model="modelValue.major"></el-input> <el-input v-model="modelValue.major"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -118,12 +127,12 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="职务:" prop="job"> <el-form-item :label="t('admin.form.position')" prop="job">
<el-input v-model="modelValue.job"></el-input> <el-input v-model="modelValue.job"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="职称:" prop="title"> <el-form-item :label="t('webSearch.title')" prop="title">
<el-input v-model="modelValue.title"></el-input> <el-input v-model="modelValue.title"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -131,20 +140,24 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="从业时间:" prop="workTime"> <el-form-item :label="t('admin.form.workingTime')" prop="workTime">
<el-date-picker <el-date-picker
v-model="modelValue.workTime" v-model="modelValue.workTime"
type="date" type="date"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
placeholder="选择日期" :placeholder="t('admin.form.pleaseSelect')"
> >
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="性别:" prop="gender"> <el-form-item :label="t('input.gender')" prop="gender">
<el-radio v-model="modelValue.gender" label="1">男</el-radio> <el-radio v-model="modelValue.gender" label="1">
<el-radio v-model="modelValue.gender" label="2">女</el-radio> {{ t("gender.male") }}
</el-radio>
<el-radio v-model="modelValue.gender" label="2"
>{{ t("gender.female") }}
</el-radio>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -158,23 +171,27 @@
<InputBoxAdd <InputBoxAdd
:labelWidth="labelWidth" :labelWidth="labelWidth"
v-model="modelValue" v-model="modelValue"
title="关键词" :title="t('admin.form.keywords')"
placeholder="应用场景关键词+技术产品关键词" :placeholder="t('admin.form.inputKeywords')"
fieldKey="keywords" fieldKey="keywords"
ref="keywordsFormRef" ref="keywordsFormRef"
/> />
<InputBoxAdd <InputBoxAdd
:labelWidth="labelWidth" :labelWidth="labelWidth"
v-model="modelValue" v-model="modelValue"
title="研究方向" :title="t('admin.form.researchDirection')"
placeholder="请输入研究方向" :placeholder="
t('admin.form.placeholder', {
name: t('admin.form.researchDirection'),
})
"
fieldKey="researchs" fieldKey="researchs"
ref="researchsFormRef" ref="researchsFormRef"
/> />
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="个人简介:" prop="introduce"> <el-form-item :label="t('admin.form.personalProfile')" prop="introduce">
<!-- <el-input <!-- <el-input
v-model="modelValue.introduce" v-model="modelValue.introduce"
placeholder="请输入研究方向、核心技术及产品、代表专利和论文、承担科研项目名称及项目摘要" placeholder="请输入研究方向、核心技术及产品、代表专利和论文、承担科研项目名称及项目摘要"
@ -184,7 +201,11 @@
/> --> /> -->
<WangEditor <WangEditor
v-model="modelValue.introduce" v-model="modelValue.introduce"
placeholder="请输入研究方向、核心技术及产品、代表专利和论文、承担科研项目名称及项目摘要" :placeholder="
t(
'admin.validation.pleaseEnterResearchDirectionCoreTechnologyAndProductRepresentativePatentsAndPapersUndertakeTheNameAndAbstractOfScientificResearchProjects'
)
"
width="100%" width="100%"
min-height="150px" min-height="150px"
@blur="formRef.validateField(`introduce`)" @blur="formRef.validateField(`introduce`)"
@ -201,6 +222,7 @@ import FieldOptions from "@/views/components/FieldOptions";
import InputBoxAdd from "@/views/components/InputBoxAdd"; import InputBoxAdd from "@/views/components/InputBoxAdd";
import { educationOptions } from "@/utils/parameter"; import { educationOptions } from "@/utils/parameter";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const props = defineProps({ const props = defineProps({
modelValue: Object, modelValue: Object,
@ -321,7 +343,9 @@ const data = reactive({
workTime: [ workTime: [
{ {
required: true, required: true,
message: "从业时间不能为空", message: computed(() =>
t("admin.validation.required", { type: t("admin.form.workingTime") })
),
trigger: ["change", "blur"], trigger: ["change", "blur"],
}, },
], ],

View File

@ -102,8 +102,9 @@
// import { industry } from "@/api/config"; // import { industry } from "@/api/config";
import { listSysIndustry } from "@/api/config"; import { listSysIndustry } from "@/api/config";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { toRefs, watch } from "vue"; import { computed, toRefs, watch } from "vue";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const props = defineProps({ const props = defineProps({
modelValue: Object, modelValue: Object,
@ -129,7 +130,7 @@ const data = reactive({
{ {
type: "array", type: "array",
required: true, required: true,
message: "请选择并添加", message: computed(() => t("admin.validation.pleaseSelectAndAdd")),
trigger: "change", trigger: "change",
}, },
], ],

View File

@ -7,13 +7,13 @@
> >
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="所属领域:"> <el-form-item :label="t('admin.form.industry')">
<el-row justify="space-between" type="flex"> <el-row justify="space-between" type="flex">
<el-col :span="7"> <el-col :span="7">
<el-form-item prop="industrys.2"> <el-form-item prop="industrys.2">
<el-select <el-select
v-model="modelValue.industrys[0]" v-model="modelValue.industrys[0]"
placeholder="请选择" :placeholder="t('admin.pleaseSelect')"
value-key="id" value-key="id"
@change="levelIChange" @change="levelIChange"
> >
@ -30,7 +30,7 @@
<el-col :span="7"> <el-col :span="7">
<el-select <el-select
v-model="modelValue.industrys[1]" v-model="modelValue.industrys[1]"
placeholder="请选择" :placeholder="t('admin.pleaseSelect')"
value-key="id" value-key="id"
@change="levelIIChange" @change="levelIIChange"
> >
@ -46,7 +46,7 @@
<el-col :span="7"> <el-col :span="7">
<el-select <el-select
v-model="modelValue.industrys[2]" v-model="modelValue.industrys[2]"
placeholder="请选择" :placeholder="t('admin.pleaseSelect')"
value-key="id" value-key="id"
> >
<el-option <el-option
@ -68,8 +68,9 @@
<script setup> <script setup>
import { listSysIndustry } from "@/api/config"; import { listSysIndustry } from "@/api/config";
// import { watch } from "fs"; // import { watch } from "fs";
import { reactive, ref, toRefs, watch } from "vue"; import { computed, reactive, ref, toRefs, watch } from "vue";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const props = defineProps({ const props = defineProps({
modelValue: Object, modelValue: Object,

View File

@ -14,7 +14,7 @@
{ {
required: true, required: true,
type: 'array', type: 'array',
message: '请输入并添加', message: t('admin.validation.pleaseInputAndAdd'),
trigger: 'change', trigger: 'change',
}, },
]" ]"
@ -82,7 +82,6 @@ const { modelValue, title, fieldKey, placeholder, disabled, labelWidth } =
const dataVal = ref(""); const dataVal = ref("");
const formRef = ref(null); const formRef = ref(null);
const keyWordAdd = () => { const keyWordAdd = () => {
console.log(title.value);
let err_msg = computed(() => let err_msg = computed(() =>
t("admin.form.placeholder", { type: title.value }) t("admin.form.placeholder", { type: title.value })
); );

View File

@ -13,31 +13,44 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="产品名称:" prop="title"> <el-form-item
:label="t('admin.form.name', { type: t('admin.form.product') })"
prop="title"
>
<el-input <el-input
v-model="modelValue.title" v-model="modelValue.title"
placeholder="请输入产品名称" :placeholder="
t('admin.form.placeholder', {
type: t('admin.form.name', { type: t('admin.form.product') }),
})
"
></el-input> ></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="联系人:" prop="username"> <el-form-item :label="t('admin.form.contact')" prop="username">
<el-input <el-input
v-model="modelValue.username" v-model="modelValue.username"
placeholder="请输入联系人" :placeholder="
t('admin.form.placeholder', { type: t('admin.form.contact') })
"
></el-input> ></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="联系方式:" prop="phone"> <el-form-item :label="t('webSearch.contactInformation')" prop="phone">
<el-input <el-input
v-model="modelValue.phone" v-model="modelValue.phone"
maxlength="11" maxlength="11"
placeholder="请输入联系方式" :placeholder="
t('admin.form.placeholder', {
type: t('webSearch.contactInformation'),
})
"
></el-input> ></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -55,8 +68,12 @@
<input-box-add <input-box-add
:labelWidth="labelWidth" :labelWidth="labelWidth"
v-model="modelValue" v-model="modelValue"
title="应用客户" :placeholder="
placeholder="请输入应用客户" t('admin.form.placeholder', {
type: t('webSearch.applicationCustomers'),
})
"
:title="t('webSearch.applicationCustomers')"
fieldKey="customers" fieldKey="customers"
ref="customerFormRef" ref="customerFormRef"
/> />
@ -67,7 +84,7 @@
<el-select <el-select
v-model="modelValue.maturity" v-model="modelValue.maturity"
clearable clearable
placeholder="请选择" :placeholder="t('admin.pleaseSelect')"
> >
<el-option <el-option
v-for="item in maturityOptions" v-for="item in maturityOptions"
@ -86,7 +103,7 @@
<el-select <el-select
v-model="modelValue.leadStandard" v-model="modelValue.leadStandard"
clearable clearable
placeholder="请选择" :placeholder="t('admin.pleaseSelect')"
> >
<el-option <el-option
v-for="item in leadOptions" v-for="item in leadOptions"
@ -101,12 +118,16 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="合作模式:"> <el-form-item :label="t('webSearch.cooperationMode')">
<el-select <el-select
v-model="modelValue.cooperationModeArr" v-model="modelValue.cooperationModeArr"
clearable clearable
multiple multiple
placeholder="请选择" :placeholder="
t('admin.form.placeholder', {
type: t('webSearch.cooperationMode'),
})
"
> >
<el-option <el-option
v-for="item in cooperationOptions" v-for="item in cooperationOptions"
@ -123,15 +144,24 @@
<input-box-add <input-box-add
:labelWidth="labelWidth" :labelWidth="labelWidth"
v-model="modelValue" v-model="modelValue"
title="关键词" :title="t('admin.form.keywords')"
placeholder="请输入关键词" :placeholder="
t('admin.form.placeholder', {
type: t('admin.form.keywords'),
})
"
fieldKey="keywords" fieldKey="keywords"
ref="keywordsForm" ref="keywordsForm"
/> />
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="产品简介:" prop="introduce"> <el-form-item
:label="
t('admin.form.introduction', { type: t('admin.form.product') })
"
prop="introduce"
>
<wangEditor <wangEditor
v-model="modelValue.introduce" v-model="modelValue.introduce"
min-height="150px" min-height="150px"
@ -174,10 +204,11 @@ import {
leadOptions, leadOptions,
cooperationOptions, cooperationOptions,
} from "@/utils/parameter"; } from "@/utils/parameter";
import { reactive, toRefs } from "vue"; import { computed, reactive, toRefs } from "vue";
// import VideoUpload from "@/components/VideoUpload"; // import VideoUpload from "@/components/VideoUpload";
// import { researchSelect, laboratorySelect } from "@/api/identity/index"; // import { researchSelect, laboratorySelect } from "@/api/identity/index";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const props = defineProps({ const props = defineProps({
modelValue: Object, modelValue: Object,
@ -213,20 +244,54 @@ const data = reactive({
trigger: "change", trigger: "change",
}, },
], ],
username: [{ required: true, message: "请输入联系人", trigger: "blur" }], username: [
{
required: true,
message: computed(() =>
t("admin.form.placeholder", {
type: t("webSearch.contactInformation"),
})
),
trigger: "blur",
},
],
phone: [ phone: [
{ required: true, message: "请输入联系方式", trigger: "blur" }, {
required: true,
message: computed(() =>
t("admin.form.placeholder", {
type: t("webSearch.contactInformation"),
})
),
trigger: "blur",
},
{ {
pattern: /^1[3456789]\d{9}$/, pattern: /^1[3456789]\d{9}$/,
message: "手机号格式不正确", message: computed(() =>
t("admin.validation.incorrectFormatOf", {
type: t("admin.form.mobile"),
})
),
trigger: "blur", trigger: "blur",
}, },
], ],
email: [ email: [
{ required: true, message: "请输入邮箱", trigger: "blur" }, {
required: true,
message: computed(() =>
t("admin.form.placeholder", {
type: t("admin.form.email"),
})
),
trigger: "blur",
},
{ {
pattern: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, pattern: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
message: "邮箱格式不正确", message: computed(() =>
t("admin.validation.incorrectFormatOf", {
type: t("admin.form.email"),
})
),
trigger: "blur", trigger: "blur",
}, },
], ],
@ -261,7 +326,9 @@ const data = reactive({
work_at: [ work_at: [
{ {
required: true, required: true,
message: "从业时间不能为空", message: computed(() =>
t("admin.validation.required", { type: t("admin.form.workingTime") })
),
trigger: ["change", "blur"], trigger: ["change", "blur"],
}, },
], ],
@ -350,6 +417,7 @@ defineExpose({
font-weight: 700; font-weight: 700;
margin-bottom: 30px; margin-bottom: 30px;
} }
// 上传图片框限制 // 上传图片框限制
// ::v-deep .el-upload--picture-card { // ::v-deep .el-upload--picture-card {
// width: 120px; // width: 120px;

View File

@ -12,7 +12,9 @@
<el-row v-if="isAdd"> <el-row v-if="isAdd">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="机构logo:"> <el-form-item
:label="t('admin.form.logo', { type: t('admin.form.organization') })"
>
<ImageUpload v-model="modelValue.image" :limit="1" /> <ImageUpload v-model="modelValue.image" :limit="1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -108,7 +110,7 @@
</el-form> </el-form>
</template> </template>
<script setup> <script setup>
import { ref } from "vue"; import { computed, reactive, ref } from "vue";
import Editor from "@/components/WangEditor"; import Editor from "@/components/WangEditor";
import CityOptions from "../CityOptions"; import CityOptions from "../CityOptions";
import FieldOptions from "../FieldOptions"; import FieldOptions from "../FieldOptions";
@ -140,7 +142,7 @@ const props = defineProps({
default: 120, default: 120,
}, },
}); });
const rules = { const rules = reactive({
product: [ product: [
{ {
required: true, required: true,
@ -176,7 +178,7 @@ const rules = {
trigger: "blur", trigger: "blur",
}, },
{ {
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, pattern: /^1[3456789]\d{9}$/,
message: computed(() => message: computed(() =>
t("admin.validation.pleaseEnterTheCorrectFormatOfThePhoneNumber") t("admin.validation.pleaseEnterTheCorrectFormatOfThePhoneNumber")
), ),
@ -235,7 +237,9 @@ const rules = {
workAt: [ workAt: [
{ {
required: true, required: true,
message: "从业时间不能为空", message: computed(() =>
t("admin.validation.required", { type: t("admin.form.workingTime") })
),
trigger: ["change", "blur"], trigger: ["change", "blur"],
}, },
], ],
@ -253,7 +257,7 @@ const rules = {
trigger: ["change", "blur"], trigger: ["change", "blur"],
}, },
], ],
}; });
const validateForm = async () => { const validateForm = async () => {
let formValid; let formValid;

View File

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

View File

@ -24,7 +24,8 @@ import ExpertForm from "@/views/components/ExpertForm";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { reactive, ref } from "vue"; import { reactive, ref } from "vue";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const router = useRouter(); const router = useRouter();
const labelWidth = 140; const labelWidth = 140;
const form = reactive({ const form = reactive({

View File

@ -3,12 +3,12 @@
<el-card shadow="always" style="width: 55%; margin: 0 auto"> <el-card shadow="always" style="width: 55%; margin: 0 auto">
<research-form ref="researchFormRef" v-model="form" is-add /> <research-form ref="researchFormRef" v-model="form" is-add />
<div :style="{ marginLeft: labelWidth + 'px' }"> <div :style="{ marginLeft: labelWidth + 'px' }">
<el-button @click="router.push('/identity/index')">{{ <el-button @click="router.push('/identity/index')"
t("admin.common.cancel") >{{ t("admin.common.cancel") }}
}}</el-button> </el-button>
<el-button type="primary" @click="submitForm">{{ <el-button type="primary" @click="submitForm"
t("admin.common.submit") >{{ t("admin.common.submit") }}
}}</el-button> </el-button>
</div> </div>
</el-card> </el-card>
</div> </div>
@ -19,7 +19,9 @@ import { reactive, ref, toRefs } from "vue";
import { insertResearch } from "@/api/identity"; import { insertResearch } from "@/api/identity";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const router = useRouter(); const router = useRouter();
const props = defineProps({ const props = defineProps({
labelWidth: { labelWidth: {

View File

@ -440,7 +440,7 @@
<li>富文本编辑组件新增readOnly属性</li> <li>富文本编辑组件新增readOnly属性</li>
<li>页签TagsView新增关闭右侧功能</li> <li>页签TagsView新增关闭右侧功能</li>
<li>显隐列组件加载初始默认隐藏列</li> <li>显隐列组件加载初始默认隐藏列</li>
<li>关闭头像上传窗口还原默认图片</li> <li>{{ t("common.close") }}头像上传窗口还原默认图片</li>
<li>个人信息添加手机&邮箱重复验证</li> <li>个人信息添加手机&邮箱重复验证</li>
<li>代码生成模板导出按钮点击后添加遮罩</li> <li>代码生成模板导出按钮点击后添加遮罩</li>
<li>代码生成模板树表操作列添加新增按钮</li> <li>代码生成模板树表操作列添加新增按钮</li>

View File

@ -225,7 +225,10 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="任务分组" prop="jobGroup"> <el-form-item label="任务分组" prop="jobGroup">
<el-select v-model="form.jobGroup" placeholder="请选择"> <el-select
v-model="form.jobGroup"
:placeholder="t('admin.pleaseSelect')"
>
<el-option <el-option
v-for="dict in sys_job_group" v-for="dict in sys_job_group"
:key="dict.value" :key="dict.value"
@ -563,7 +566,7 @@ function submitForm() {
if (valid) { if (valid) {
if (form.value.jobId != undefined) { if (form.value.jobId != undefined) {
updateJob(form.value).then((response) => { updateJob(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
}); });
@ -587,7 +590,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }

View File

@ -97,8 +97,8 @@
> >
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="warning" plain icon="Close" @click="handleClose" <el-button type="warning" plain icon="Close" @click="handleClose">
>关闭</el-button {{ t("common.close") }}</el-button
> >
</el-col> </el-col>
<right-toolbar <right-toolbar
@ -312,7 +312,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }

View File

@ -261,7 +261,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }

View File

@ -161,7 +161,7 @@ function handleForceLogout(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }

View File

@ -334,7 +334,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }

View File

@ -347,7 +347,7 @@ function submitForm() {
if (valid) { if (valid) {
if (form.value.configId != undefined) { if (form.value.configId != undefined) {
updateConfig(form.value).then((response) => { updateConfig(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
}); });
@ -371,7 +371,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }

View File

@ -343,7 +343,7 @@ function submitForm() {
if (valid) { if (valid) {
if (form.value.deptId != undefined) { if (form.value.deptId != undefined) {
updateDept(form.value).then((response) => { updateDept(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
}); });
@ -366,7 +366,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }

View File

@ -91,8 +91,8 @@
> >
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="warning" plain icon="Close" @click="handleClose" <el-button type="warning" plain icon="Close" @click="handleClose">
>关闭</el-button {{ t("common.close") }}</el-button
> >
</el-col> </el-col>
<right-toolbar <right-toolbar
@ -391,7 +391,7 @@ function submitForm() {
if (form.value.dictCode != undefined) { if (form.value.dictCode != undefined) {
updateData(form.value).then((response) => { updateData(form.value).then((response) => {
useDictStore().removeDict(queryParams.value.dictType); useDictStore().removeDict(queryParams.value.dictType);
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
}); });
@ -416,7 +416,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess(t("admin.common.deleteSuccess"));
useDictStore().removeDict(queryParams.value.dictType); useDictStore().removeDict(queryParams.value.dictType);
}) })
.catch(() => {}); .catch(() => {});

View File

@ -348,7 +348,7 @@ function submitForm() {
if (valid) { if (valid) {
if (form.value.dictId != undefined) { if (form.value.dictId != undefined) {
updateType(form.value).then((response) => { updateType(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
}); });
@ -372,7 +372,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }

View File

@ -533,7 +533,7 @@ function submitForm() {
if (valid) { if (valid) {
if (form.value.menuId != undefined) { if (form.value.menuId != undefined) {
updateMenu(form.value).then((response) => { updateMenu(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
}); });
@ -556,7 +556,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }

View File

@ -179,7 +179,10 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="公告类型" prop="noticeType"> <el-form-item label="公告类型" prop="noticeType">
<el-select v-model="form.noticeType" placeholder="请选择"> <el-select
v-model="form.noticeType"
:placeholder="t('admin.pleaseSelect')"
>
<el-option <el-option
v-for="dict in sys_notice_type" v-for="dict in sys_notice_type"
:key="dict.value" :key="dict.value"
@ -334,7 +337,7 @@ function submitForm() {
if (valid) { if (valid) {
if (form.value.noticeId != undefined) { if (form.value.noticeId != undefined) {
updateNotice(form.value).then((response) => { updateNotice(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
}); });
@ -358,7 +361,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }

View File

@ -307,7 +307,7 @@ function submitForm() {
if (valid) { if (valid) {
if (form.value.postId != undefined) { if (form.value.postId != undefined) {
updatePost(form.value).then((response) => { updatePost(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
}); });
@ -331,7 +331,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }

View File

@ -15,7 +15,7 @@
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="手机号码" prop="phonenumber"> <el-form-item :label="t('admin.form.mobile')" prop="phonenumber">
<el-input <el-input
v-model="queryParams.phonenumber" v-model="queryParams.phonenumber"
placeholder="请输入手机号码" placeholder="请输入手机号码"
@ -55,8 +55,8 @@
> >
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="warning" plain icon="Close" @click="handleClose" <el-button type="warning" plain icon="Close" @click="handleClose">
>关闭</el-button {{ t("common.close") }}</el-button
> >
</el-col> </el-col>
<right-toolbar <right-toolbar

View File

@ -462,7 +462,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }
@ -641,7 +641,7 @@ function submitForm() {
if (form.value.roleId != undefined) { if (form.value.roleId != undefined) {
form.value.menuIds = getMenuAllCheckedKeys(); form.value.menuIds = getMenuAllCheckedKeys();
updateRole(form.value).then((response) => { updateRole(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
}); });
@ -691,7 +691,7 @@ function submitDataScope() {
if (form.value.roleId != undefined) { if (form.value.roleId != undefined) {
form.value.deptIds = getDeptAllCheckedKeys(); form.value.deptIds = getDeptAllCheckedKeys();
dataScope(form.value).then((response) => { dataScope(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess(t("admin.common.editSuccess"));
openDataScope.value = false; openDataScope.value = false;
getList(); getList();
}); });

View File

@ -16,7 +16,7 @@
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="手机号码" prop="phonenumber"> <el-form-item :label="t('admin.form.mobile')" prop="phonenumber">
<el-input <el-input
v-model="queryParams.phonenumber" v-model="queryParams.phonenumber"
placeholder="请输入手机号码" placeholder="请输入手机号码"

View File

@ -43,7 +43,7 @@
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="手机号码" prop="phonenumber"> <el-form-item :label="t('admin.form.mobile')" prop="phonenumber">
<el-input <el-input
v-model="queryParams.phonenumber" v-model="queryParams.phonenumber"
placeholder="请输入手机号码" placeholder="请输入手机号码"
@ -183,7 +183,7 @@
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
/> />
<el-table-column <el-table-column
label="手机号码" :label="t('admin.form.mobile')"
align="center" align="center"
key="phonenumber" key="phonenumber"
prop="phonenumber" prop="phonenumber"
@ -312,7 +312,7 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="手机号码" prop="phonenumber"> <el-form-item :label="t('admin.form.mobile')" prop="phonenumber">
<el-input <el-input
v-model="form.phonenumber" v-model="form.phonenumber"
placeholder="请输入手机号码" placeholder="请输入手机号码"
@ -363,7 +363,10 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="用户性别"> <el-form-item label="用户性别">
<el-select v-model="form.sex" placeholder="请选择"> <el-select
v-model="form.sex"
:placeholder="t('admin.pleaseSelect')"
>
<el-option <el-option
v-for="dict in sys_user_sex" v-for="dict in sys_user_sex"
:key="dict.value" :key="dict.value"
@ -389,7 +392,11 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="岗位"> <el-form-item label="岗位">
<el-select v-model="form.postIds" multiple placeholder="请选择"> <el-select
v-model="form.postIds"
multiple
:placeholder="t('admin.pleaseSelect')"
>
<el-option <el-option
v-for="item in postOptions" v-for="item in postOptions"
:key="item.postId" :key="item.postId"
@ -402,7 +409,11 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="角色"> <el-form-item label="角色">
<el-select v-model="form.roleIds" multiple placeholder="请选择"> <el-select
v-model="form.roleIds"
multiple
:placeholder="t('admin.pleaseSelect')"
>
<el-option <el-option
v-for="item in roleOptions" v-for="item in roleOptions"
:key="item.roleId" :key="item.roleId"
@ -655,7 +666,7 @@ function handleDelete(row) {
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess(t("admin.common.deleteSuccess"));
}) })
.catch(() => {}); .catch(() => {});
} }
@ -826,7 +837,7 @@ function submitForm() {
if (valid) { if (valid) {
if (form.value.userId != undefined) { if (form.value.userId != undefined) {
updateUser(form.value).then((response) => { updateUser(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess(t("admin.common.editSuccess"));
open.value = false; open.value = false;
getList(); getList();
}); });

View File

@ -26,7 +26,10 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="submit">保存</el-button> <el-button type="primary" @click="submit">保存</el-button>
<el-button type="danger" @click="close">关闭</el-button> <el-button type="danger" @click="close">
<!-- 关闭-->
{{ t("common.close") }}
</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
@ -66,7 +69,7 @@ function submit() {
proxy.$refs.pwdRef.validate((valid) => { proxy.$refs.pwdRef.validate((valid) => {
if (valid) { if (valid) {
updateUserPwd(user.oldPassword, user.newPassword).then((response) => { updateUserPwd(user.oldPassword, user.newPassword).then((response) => {
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess(t("admin.common.editSuccess"));
}); });
} }
}); });

View File

@ -149,7 +149,7 @@ function uploadImg() {
open.value = false; open.value = false;
options.img = import.meta.env.VITE_APP_BASE_API + response.imgUrl; options.img = import.meta.env.VITE_APP_BASE_API + response.imgUrl;
userStore.avatar = options.img; userStore.avatar = options.img;
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess(t("admin.common.editSuccess"));
visible.value = false; visible.value = false;
}); });
}); });

View File

@ -3,7 +3,7 @@
<el-form-item label="用户昵称" prop="nickName"> <el-form-item label="用户昵称" prop="nickName">
<el-input v-model="user.nickName" maxlength="30" /> <el-input v-model="user.nickName" maxlength="30" />
</el-form-item> </el-form-item>
<el-form-item label="手机号码" prop="phonenumber"> <el-form-item :label="t('admin.form.mobile')" prop="phonenumber">
<el-input v-model="user.phonenumber" maxlength="11" /> <el-input v-model="user.phonenumber" maxlength="11" />
</el-form-item> </el-form-item>
<el-form-item :label="t('')" prop="email"> <el-form-item :label="t('')" prop="email">
@ -11,13 +11,15 @@
</el-form-item> </el-form-item>
<el-form-item label="性别"> <el-form-item label="性别">
<el-radio-group v-model="user.sex"> <el-radio-group v-model="user.sex">
<el-radio label="0"></el-radio> <el-radio label="0"> {{ t("gender.male") }}</el-radio>
<el-radio label="1"></el-radio> <el-radio label="1"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="submit">保存</el-button> <el-button type="primary" @click="submit">保存</el-button>
<el-button type="danger" @click="close">关闭</el-button> <el-button type="danger" @click="close">
{{ t("common.close") }}</el-button
>
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
@ -60,7 +62,7 @@ function submit() {
proxy.$refs.userRef.validate((valid) => { proxy.$refs.userRef.validate((valid) => {
if (valid) { if (valid) {
updateUserProfile(props.user).then((response) => { updateUserProfile(props.user).then((response) => {
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess(t("admin.common.editSuccess"));
}); });
} }
}); });

View File

@ -123,7 +123,7 @@
v-model="scope.row.dictType" v-model="scope.row.dictType"
clearable clearable
filterable filterable
placeholder="请选择" :placeholder="t('admin.pleaseSelect')"
> >
<el-option <el-option
v-for="dict in dictOptions" v-for="dict in dictOptions"

View File

@ -149,7 +149,10 @@
<el-icon><question-filled /></el-icon> <el-icon><question-filled /></el-icon>
</el-tooltip> </el-tooltip>
</template> </template>
<el-select v-model="info.treeCode" placeholder="请选择"> <el-select
v-model="info.treeCode"
:placeholder="t('admin.pleaseSelect')"
>
<el-option <el-option
v-for="(column, index) in info.columns" v-for="(column, index) in info.columns"
:key="index" :key="index"
@ -170,7 +173,10 @@
<el-icon><question-filled /></el-icon> <el-icon><question-filled /></el-icon>
</el-tooltip> </el-tooltip>
</template> </template>
<el-select v-model="info.treeParentCode" placeholder="请选择"> <el-select
v-model="info.treeParentCode"
:placeholder="t('admin.pleaseSelect')"
>
<el-option <el-option
v-for="(column, index) in info.columns" v-for="(column, index) in info.columns"
:key="index" :key="index"
@ -191,7 +197,10 @@
<el-icon><question-filled /></el-icon> <el-icon><question-filled /></el-icon>
</el-tooltip> </el-tooltip>
</template> </template>
<el-select v-model="info.treeName" placeholder="请选择"> <el-select
v-model="info.treeName"
:placeholder="t('admin.pleaseSelect')"
>
<el-option <el-option
v-for="(column, index) in info.columns" v-for="(column, index) in info.columns"
:key="index" :key="index"
@ -220,7 +229,7 @@
</template> </template>
<el-select <el-select
v-model="info.subTableName" v-model="info.subTableName"
placeholder="请选择" :placeholder="t('admin.pleaseSelect')"
@change="subSelectChange" @change="subSelectChange"
> >
<el-option <el-option
@ -243,7 +252,10 @@
<el-icon><question-filled /></el-icon> <el-icon><question-filled /></el-icon>
</el-tooltip> </el-tooltip>
</template> </template>
<el-select v-model="info.subTableFkName" placeholder="请选择"> <el-select
v-model="info.subTableFkName"
:placeholder="t('admin.pleaseSelect')"
>
<el-option <el-option
v-for="(column, index) in subColumns" v-for="(column, index) in subColumns"
:key="index" :key="index"

Some files were not shown because too many files have changed in this diff Show More