bug fix and performance improvements
This commit is contained in:
@ -3,26 +3,26 @@
|
|||||||
* @type {[{label: string, value: string, elTagType: string},{label: string, value: string, elTagType: string},{label: string, value: string, elTagType: string},{label: string, value: string, elTagType: string}]}
|
* @type {[{label: string, value: string, elTagType: string},{label: string, value: string, elTagType: string},{label: string, value: string, elTagType: string},{label: string, value: string, elTagType: string}]}
|
||||||
*/
|
*/
|
||||||
export const serviceDemandStatusDict = [
|
export const serviceDemandStatusDict = [
|
||||||
{
|
{
|
||||||
value: "0",
|
value: "0",
|
||||||
label: "待受理",
|
label: "待受理",
|
||||||
elTagType: "primary",
|
elTagType: "primary",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: "1",
|
value: "1",
|
||||||
label: "已受理",
|
label: "已受理",
|
||||||
elTagType: "success",
|
elTagType: "success",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: "2",
|
value: "2",
|
||||||
label: "已驳回",
|
label: "已驳回",
|
||||||
elTagType: "danger",
|
elTagType: "danger",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: "4",
|
value: "4",
|
||||||
label: "已结束",
|
label: "已结束",
|
||||||
elTagType: "warning",
|
elTagType: "warning",
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -30,112 +30,111 @@ export const serviceDemandStatusDict = [
|
|||||||
* @type {[{label: string, value: string, elTagType: string},{label: string, value: string, elTagType: string},{label: string, value: string, elTagType: string},{label: string, value: string, elTagType: string},{label: string, value: string, elTagType: string}]}
|
* @type {[{label: string, value: string, elTagType: string},{label: string, value: string, elTagType: string},{label: string, value: string, elTagType: string},{label: string, value: string, elTagType: string},{label: string, value: string, elTagType: string}]}
|
||||||
*/
|
*/
|
||||||
export const technologyDemandStatusDict = [
|
export const technologyDemandStatusDict = [
|
||||||
{
|
{
|
||||||
value: "0",
|
value: "0",
|
||||||
label: "待受理",
|
label: "待受理",
|
||||||
elTagType: "primary",
|
elTagType: "primary",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: "1",
|
value: "1",
|
||||||
label: "已发布",
|
label: "已发布",
|
||||||
elTagType: "success",
|
elTagType: "success",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: "2",
|
value: "2",
|
||||||
label: "已驳回",
|
label: "已驳回",
|
||||||
elTagType: "danger",
|
elTagType: "danger",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: "3",
|
value: "3",
|
||||||
label: "草稿箱",
|
label: "草稿箱",
|
||||||
elTagType: "primary",
|
elTagType: "primary",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: "4",
|
value: "4",
|
||||||
label: "已结束",
|
label: "已结束",
|
||||||
elTagType: "warning",
|
elTagType: "warning",
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
// 1->专利|2->成果|3->服务需求|4->专家|5->科研项目|6->论文
|
// 1->专利|2->成果|3->服务需求|4->专家|5->科研项目|6->论文
|
||||||
export const seeLogTypeDict = [
|
export const seeLogTypeDict = [
|
||||||
{
|
{
|
||||||
value: "1",
|
value: "1",
|
||||||
label: "专利",
|
label: "专利",
|
||||||
elTagType: "primary",
|
elTagType: "primary",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: "2",
|
value: "2",
|
||||||
label: "成果",
|
label: "成果",
|
||||||
elTagType: "success",
|
elTagType: "success",
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
value: "3",
|
value: "3",
|
||||||
label: "服务需求",
|
label: "服务需求",
|
||||||
elTagType: "danger",
|
elTagType: "danger",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: "4",
|
value: "4",
|
||||||
label: "专家",
|
label: "专家",
|
||||||
elTagType: "warning",
|
elTagType: "warning",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: "5",
|
value: "5",
|
||||||
label: "科研项目",
|
label: "科研项目",
|
||||||
elTagType: "warning",
|
elTagType: "warning",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: "6",
|
value: "6",
|
||||||
label: "论文",
|
label: "论文",
|
||||||
elTagType: "warning",
|
elTagType: "warning",
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
// 订单类型(1创新币充值2活动报名)
|
// 订单类型(1创新币充值2活动报名)
|
||||||
export const orderTypeDict = [
|
export const orderTypeDict = [
|
||||||
{
|
{
|
||||||
value: "1",
|
value: "1",
|
||||||
label: "创新币充值",
|
label: "创新币充值",
|
||||||
elTagType: "primary",
|
elTagType: "primary",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: "2",
|
value: "2",
|
||||||
label: "活动报名",
|
label: "活动报名",
|
||||||
elTagType: "success",
|
elTagType: "success",
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
// 发票申请状态(0->未申请1->已申请2->已处理)
|
// 发票申请状态(0->未申请1->已申请2->已处理)
|
||||||
export const invoiceStatusDict = [
|
export const invoiceStatusDict = [
|
||||||
{
|
{
|
||||||
value: "0",
|
value: "0",
|
||||||
label: "未申请",
|
label: "未申请",
|
||||||
elTagType: "warning",
|
elTagType: "warning",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: "1",
|
value: "1",
|
||||||
label: "已申请",
|
label: "已申请",
|
||||||
elTagType: "primary",
|
elTagType: "primary",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: "2",
|
value: "2",
|
||||||
label: "已处理",
|
label: "已处理",
|
||||||
elTagType: "success",
|
elTagType: "success",
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
// 课题角色(1:承担单位,2:参与单位)
|
// 课题角色(1:承担单位,2:参与单位)
|
||||||
export const subjectRoleDict = [
|
export const subjectRoleDict = [
|
||||||
{
|
{
|
||||||
value: "1",
|
value: "1",
|
||||||
label: "承担单位",
|
label: "承担单位",
|
||||||
elTagType: "primary",
|
elTagType: "primary",
|
||||||
}
|
},
|
||||||
,
|
{
|
||||||
{
|
value: "2",
|
||||||
value: "2",
|
label: "参与单位",
|
||||||
label: "参与单位",
|
elTagType: "success",
|
||||||
elTagType: "success",
|
},
|
||||||
}
|
];
|
||||||
];
|
|
||||||
|
@ -7,14 +7,14 @@
|
|||||||
@toggleClick="toggleSideBar"
|
@toggleClick="toggleSideBar"
|
||||||
/>
|
/>
|
||||||
<breadcrumb
|
<breadcrumb
|
||||||
|
v-if="!settingsStore.topNav"
|
||||||
id="breadcrumb-container"
|
id="breadcrumb-container"
|
||||||
class="breadcrumb-container"
|
class="breadcrumb-container"
|
||||||
v-if="!settingsStore.topNav"
|
|
||||||
/>
|
/>
|
||||||
<top-nav
|
<top-nav
|
||||||
|
v-if="settingsStore.topNav"
|
||||||
id="topmenu-container"
|
id="topmenu-container"
|
||||||
class="topmenu-container"
|
class="topmenu-container"
|
||||||
v-if="settingsStore.topNav"
|
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div class="right-menu">
|
<div class="right-menu">
|
||||||
@ -37,13 +37,15 @@
|
|||||||
</template>
|
</template>
|
||||||
<div class="avatar-container">
|
<div class="avatar-container">
|
||||||
<el-dropdown
|
<el-dropdown
|
||||||
@command="handleCommand"
|
|
||||||
class="right-menu-item hover-effect"
|
class="right-menu-item hover-effect"
|
||||||
trigger="click"
|
trigger="click"
|
||||||
|
@command="handleCommand"
|
||||||
>
|
>
|
||||||
<div class="avatar-wrapper">
|
<div class="avatar-wrapper">
|
||||||
<img :src="userStore.avatar" class="user-avatar" />
|
<img :src="userStore.avatar" class="user-avatar" />
|
||||||
<el-icon><caret-bottom /></el-icon>
|
<el-icon>
|
||||||
|
<caret-bottom />
|
||||||
|
</el-icon>
|
||||||
</div>
|
</div>
|
||||||
<template #dropdown>
|
<template #dropdown>
|
||||||
<el-dropdown-menu>
|
<el-dropdown-menu>
|
||||||
@ -51,12 +53,15 @@
|
|||||||
<el-dropdown-item>个人中心</el-dropdown-item>
|
<el-dropdown-item>个人中心</el-dropdown-item>
|
||||||
</router-link> -->
|
</router-link> -->
|
||||||
<router-link to="/identity/index">
|
<router-link to="/identity/index">
|
||||||
<el-dropdown-item> 切换系统 </el-dropdown-item>
|
<el-dropdown-item> 切换系统</el-dropdown-item>
|
||||||
</router-link>
|
</router-link>
|
||||||
|
<el-dropdown-item command="setAvatar">
|
||||||
|
<span> 修改头像 </span>
|
||||||
|
</el-dropdown-item>
|
||||||
<el-dropdown-item command="setLayout">
|
<el-dropdown-item command="setLayout">
|
||||||
<span>布局设置</span>
|
<span>布局设置</span>
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
<el-dropdown-item divided command="logout">
|
<el-dropdown-item command="logout" divided>
|
||||||
<span>退出登录</span>
|
<span>退出登录</span>
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
@ -64,10 +69,12 @@
|
|||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<user-avatar ref="avatarRef" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import UserAvatar from "@/views/system/user/profile/userAvatar.vue";
|
||||||
import { ElMessageBox } from "element-plus";
|
import { ElMessageBox } from "element-plus";
|
||||||
import Breadcrumb from "@/components/Breadcrumb";
|
import Breadcrumb from "@/components/Breadcrumb";
|
||||||
import TopNav from "@/components/TopNav";
|
import TopNav from "@/components/TopNav";
|
||||||
@ -75,8 +82,6 @@ import Hamburger from "@/components/Hamburger";
|
|||||||
import Screenfull from "@/components/Screenfull";
|
import Screenfull from "@/components/Screenfull";
|
||||||
import SizeSelect from "@/components/SizeSelect";
|
import SizeSelect from "@/components/SizeSelect";
|
||||||
import HeaderSearch from "@/components/HeaderSearch";
|
import HeaderSearch from "@/components/HeaderSearch";
|
||||||
import RuoYiGit from "@/components/RuoYi/Git";
|
|
||||||
import RuoYiDoc from "@/components/RuoYi/Doc";
|
|
||||||
import useAppStore from "@/store/modules/app";
|
import useAppStore from "@/store/modules/app";
|
||||||
import useUserStore from "@/store/modules/user";
|
import useUserStore from "@/store/modules/user";
|
||||||
import useSettingsStore from "@/store/modules/settings";
|
import useSettingsStore from "@/store/modules/settings";
|
||||||
@ -84,6 +89,7 @@ import useSettingsStore from "@/store/modules/settings";
|
|||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
const settingsStore = useSettingsStore();
|
const settingsStore = useSettingsStore();
|
||||||
|
const avatarRef = ref(null);
|
||||||
|
|
||||||
function toggleSideBar() {
|
function toggleSideBar() {
|
||||||
appStore.toggleSideBar();
|
appStore.toggleSideBar();
|
||||||
@ -97,6 +103,9 @@ function handleCommand(command) {
|
|||||||
case "logout":
|
case "logout":
|
||||||
logout();
|
logout();
|
||||||
break;
|
break;
|
||||||
|
case "setAvatar":
|
||||||
|
avatarRef.value.editCropper();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -117,6 +126,7 @@ function logout() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const emits = defineEmits(["setLayout"]);
|
const emits = defineEmits(["setLayout"]);
|
||||||
|
|
||||||
function setLayout() {
|
function setLayout() {
|
||||||
emits("setLayout");
|
emits("setLayout");
|
||||||
}
|
}
|
||||||
@ -210,4 +220,8 @@ function setLayout() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:deep(.user-info-head) {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -783,6 +783,7 @@ export const researchRoutes = [
|
|||||||
component: () =>
|
component: () =>
|
||||||
import("@/views/admin/research/research/service-demand/index.vue"),
|
import("@/views/admin/research/research/service-demand/index.vue"),
|
||||||
name: "ServiceDemand",
|
name: "ServiceDemand",
|
||||||
|
hidden: true,
|
||||||
meta: { title: "服务需求列表", icon: "list" },
|
meta: { title: "服务需求列表", icon: "list" },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import {reactive, ref, toRefs} from "vue";
|
import { reactive, ref, toRefs } from "vue";
|
||||||
|
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
queryParams: {
|
queryParams: {
|
||||||
@ -7,7 +7,7 @@ const data = reactive({
|
|||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const {queryParams} = toRefs(data);
|
const { queryParams } = toRefs(data);
|
||||||
const tableData = ref([]);
|
const tableData = ref([]);
|
||||||
const queryRef = ref(null);
|
const queryRef = ref(null);
|
||||||
|
|
||||||
@ -15,8 +15,7 @@ const queryRef = ref(null);
|
|||||||
* 删除指定行
|
* 删除指定行
|
||||||
* @param row
|
* @param row
|
||||||
*/
|
*/
|
||||||
const deleteRecord = (row) => {
|
const deleteRecord = (row) => {};
|
||||||
};
|
|
||||||
|
|
||||||
// 重置查询条件 resetQuery
|
// 重置查询条件 resetQuery
|
||||||
const resetQuery = () => {
|
const resetQuery = () => {
|
||||||
@ -34,12 +33,12 @@ const handleQuery = () => {
|
|||||||
<!-- 时间段查询-->
|
<!-- 时间段查询-->
|
||||||
<el-form-item label="时间段">
|
<el-form-item label="时间段">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryParams.timeRange"
|
v-model="queryParams.timeRange"
|
||||||
end-placeholder="结束日期"
|
end-placeholder="结束日期"
|
||||||
range-separator="至"
|
range-separator="至"
|
||||||
start-placeholder="开始日期"
|
start-placeholder="开始日期"
|
||||||
type="datetimerange"
|
type="datetimerange"
|
||||||
value-format="YYYY-MM-dd"
|
value-format="YYYY-MM-dd"
|
||||||
></el-date-picker>
|
></el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
@ -50,8 +49,8 @@ const handleQuery = () => {
|
|||||||
|
|
||||||
<!-- el-radio-group 状态切换, 已审批和待审批 -->
|
<!-- el-radio-group 状态切换, 已审批和待审批 -->
|
||||||
<el-radio-group v-model="queryParams.status" size="small" style="width: 100%">
|
<el-radio-group v-model="queryParams.status" size="small" style="width: 100%">
|
||||||
<el-radio label="已审批" value="1"/>
|
<el-radio label="已审批" value="1" />
|
||||||
<el-radio label="待审批" value="2"/>
|
<el-radio label="待审批" value="2" />
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<!-- 用h2 展示提现金额,加粗字体-->
|
<!-- 用h2 展示提现金额,加粗字体-->
|
||||||
<h2 style="font-weight: bold">提现金额 : {{ 312312 }}¥</h2>
|
<h2 style="font-weight: bold">提现金额 : {{ 312312 }}¥</h2>
|
||||||
@ -59,22 +58,22 @@ const handleQuery = () => {
|
|||||||
<!--提现记录表格 element-plus -->
|
<!--提现记录表格 element-plus -->
|
||||||
<el-table :data="tableData" class="withdraw-table">
|
<el-table :data="tableData" class="withdraw-table">
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="提现金额"
|
label="提现金额"
|
||||||
prop="amount"
|
prop="amount"
|
||||||
width="150"
|
width="150"
|
||||||
></el-table-column>
|
></el-table-column>
|
||||||
<el-table-column label="提现类型" prop="type" width="150"></el-table-column>
|
<el-table-column label="提现类型" prop="type" width="150"></el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="提现状态"
|
label="提现状态"
|
||||||
prop="status"
|
prop="status"
|
||||||
width="150"
|
width="150"
|
||||||
></el-table-column>
|
></el-table-column>
|
||||||
<el-table-column label="提现时间" prop="time" width="150"></el-table-column>
|
<el-table-column label="提现时间" prop="time" width="150"></el-table-column>
|
||||||
<el-table-column label="操作" prop="action" width="150">
|
<el-table-column label="操作" prop="action" width="150">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<!--删除-->
|
<!--删除-->
|
||||||
<el-button size="small" type="text" @click="deleteRecord(row)"
|
<el-button size="small" type="text" @click="deleteRecord(row)"
|
||||||
>删除
|
>删除
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
@ -12,10 +12,7 @@ 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("");
|
||||||
|
|
||||||
@ -56,7 +53,6 @@ const getUpdateStatus = async (demandId) => {
|
|||||||
const reverseIndex = updateStatusList.value.findLastIndex(
|
const reverseIndex = updateStatusList.value.findLastIndex(
|
||||||
(item) => item.status === "1"
|
(item) => item.status === "1"
|
||||||
);
|
);
|
||||||
console.log(updateStatusList.value.length, reverseIndex);
|
|
||||||
active.value = reverseIndex === -1 ? 0 : reverseIndex;
|
active.value = reverseIndex === -1 ? 0 : reverseIndex;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -76,13 +72,35 @@ const close = () => {
|
|||||||
router.go(-1);
|
router.go(-1);
|
||||||
};
|
};
|
||||||
const submit = () => {
|
const submit = () => {
|
||||||
console.log(updateStatusList.value[active.value]);
|
// 当前步骤的表单
|
||||||
|
const form = updateStatusList.value[active.value];
|
||||||
|
console.log(active.value);
|
||||||
|
console.log(form);
|
||||||
|
// 当active.value !== 4 时, files 字段不能为空
|
||||||
|
// 当 active.value ===2 或 3 时remark 字段不能为空
|
||||||
|
if (active.value !== 4 && !form.files) {
|
||||||
|
ElMessage.error("请上传文件");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ((active.value === 2 || active.value === 3) && !form.remark) {
|
||||||
|
ElMessage.error("请填写金额");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (active.value === 4 && !form.remark) {
|
||||||
|
ElMessage.error("请填写未结题原因");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
updateDemandProcess({
|
updateDemandProcess({
|
||||||
...updateStatusList.value[active.value],
|
...updateStatusList.value[active.value],
|
||||||
status: "1",
|
status: "1",
|
||||||
})
|
})
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
ElMessage.success("操作成功");
|
ElMessage.success("操作成功");
|
||||||
|
// if (active.value <= 3) {
|
||||||
|
// active.value += 1;
|
||||||
|
// }
|
||||||
})
|
})
|
||||||
.catch(() => {})
|
.catch(() => {})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
@ -178,8 +196,39 @@ if (route.query.id) {
|
|||||||
"
|
"
|
||||||
type="primary"
|
type="primary"
|
||||||
@click="submit"
|
@click="submit"
|
||||||
>提交
|
>保存当前步骤
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|
||||||
|
<template v-if="updateStatusList[active]?.status === '1'">
|
||||||
|
<el-button
|
||||||
|
v-if="active <= 1"
|
||||||
|
@click="
|
||||||
|
() => {
|
||||||
|
active += 1;
|
||||||
|
}
|
||||||
|
"
|
||||||
|
>
|
||||||
|
下一步
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-if="active === 2"
|
||||||
|
@click="
|
||||||
|
() => {
|
||||||
|
active = 3;
|
||||||
|
}
|
||||||
|
"
|
||||||
|
>结题
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-if="active === 2"
|
||||||
|
@click="
|
||||||
|
() => {
|
||||||
|
active = 4;
|
||||||
|
}
|
||||||
|
"
|
||||||
|
>未结题
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -31,9 +31,9 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<!-- <el-col :span="1.5">-->
|
<!-- <el-col :span="1.5">-->
|
||||||
<!-- <el-button icon="plus" size="small" type="primary">新增</el-button>-->
|
<!-- <el-button icon="plus" size="small" type="primary">新增</el-button>-->
|
||||||
<!-- </el-col>-->
|
<!-- </el-col>-->
|
||||||
<right-toolbar
|
<right-toolbar
|
||||||
v-model:showSearch="showSearch"
|
v-model:showSearch="showSearch"
|
||||||
@queryTable="getList"
|
@queryTable="getList"
|
||||||
|
@ -1,32 +1,32 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-form
|
<el-form
|
||||||
v-show="showSearch"
|
v-show="showSearch"
|
||||||
ref="queryRef"
|
ref="queryRef"
|
||||||
:inline="true"
|
:inline="true"
|
||||||
:model="queryParams"
|
:model="queryParams"
|
||||||
@submit.prevent
|
@submit.prevent
|
||||||
>
|
>
|
||||||
<el-form-item label="专利名称" prop="patentName">
|
<el-form-item label="专利名称" prop="patentName">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.patentName"
|
v-model="queryParams.patentName"
|
||||||
clearable
|
clearable
|
||||||
placeholder="请输入专利名称"
|
placeholder="请输入专利名称"
|
||||||
size="small"
|
size="small"
|
||||||
style="width: 240px"
|
style="width: 240px"
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button
|
<el-button
|
||||||
icon="Search"
|
icon="Search"
|
||||||
size="small"
|
size="small"
|
||||||
type="primary"
|
type="primary"
|
||||||
@click="handleQuery"
|
@click="handleQuery"
|
||||||
>搜索
|
>搜索
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button icon="Refresh" size="small" @click="resetQuery"
|
<el-button icon="Refresh" size="small" @click="resetQuery"
|
||||||
>重置
|
>重置
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@ -52,35 +52,35 @@
|
|||||||
<!-- </router-link>-->
|
<!-- </router-link>-->
|
||||||
<!-- </el-col>-->
|
<!-- </el-col>-->
|
||||||
<right-toolbar
|
<right-toolbar
|
||||||
v-model:showSearch="showSearch"
|
v-model:showSearch="showSearch"
|
||||||
@queryTable="getList"
|
@queryTable="getList"
|
||||||
></right-toolbar>
|
></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<!-- 表格数据 -->
|
<!-- 表格数据 -->
|
||||||
<el-table v-loading="loading" :data="dataList">
|
<el-table v-loading="loading" :data="dataList">
|
||||||
<el-table-column label="数据编号" prop="id"/>
|
<el-table-column label="数据编号" prop="id" />
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:show-overflow-tooltip="true"
|
:show-overflow-tooltip="true"
|
||||||
label="专利名称"
|
label="专利名称"
|
||||||
prop="title"
|
prop="title"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:show-overflow-tooltip="true"
|
:show-overflow-tooltip="true"
|
||||||
label="申请号"
|
label="申请号"
|
||||||
prop="applyCode"
|
prop="applyCode"
|
||||||
/>
|
/>
|
||||||
<el-table-column label="发明人" prop="inventor"/>
|
<el-table-column label="发明人" prop="inventor" />
|
||||||
<el-table-column label="申请(专利权)人" prop="applyName"/>
|
<el-table-column label="申请(专利权)人" prop="applyName" />
|
||||||
<el-table-column align="center" label="申请日期" prop="applyAt">
|
<el-table-column align="center" label="申请日期" prop="applyAt">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<span>{{ dayjs(row.applyAt).format("YYYY-MM-DD") }}</span>
|
<span>{{ dayjs(row.applyAt).format("YYYY-MM-DD") }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
class-name="small-padding fixed-width"
|
class-name="small-padding fixed-width"
|
||||||
label="操作"
|
label="操作"
|
||||||
>
|
>
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<!-- <el-button-->
|
<!-- <el-button-->
|
||||||
@ -92,22 +92,22 @@
|
|||||||
<!-- </el-button-->
|
<!-- </el-button-->
|
||||||
<!-- >-->
|
<!-- >-->
|
||||||
<el-button
|
<el-button
|
||||||
icon="Delete"
|
icon="Delete"
|
||||||
size="small"
|
size="small"
|
||||||
type="text"
|
type="text"
|
||||||
@click="handleDelete(row.id)"
|
@click="handleDelete(row.id)"
|
||||||
>删除
|
>删除
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<pagination
|
<pagination
|
||||||
v-show="total > 0"
|
v-show="total > 0"
|
||||||
v-model:limit="queryParams.pageSize"
|
v-model:limit="queryParams.pageSize"
|
||||||
v-model:page="queryParams.pageNum"
|
v-model:page="queryParams.pageNum"
|
||||||
:total="total"
|
:total="total"
|
||||||
@pagination="getList"
|
@pagination="getList"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- <!– 添加或修改数据配置对话框 –>-->
|
<!-- <!– 添加或修改数据配置对话框 –>-->
|
||||||
@ -229,13 +229,13 @@ import {
|
|||||||
labPatentList,
|
labPatentList,
|
||||||
} from "@/api/admin/laboratory/patent";
|
} from "@/api/admin/laboratory/patent";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import {ElMessage, ElMessageBox} from "element-plus";
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
import {useRouter} from "vue-router";
|
import { useRouter } from "vue-router";
|
||||||
import {getCurrentInstance, reactive, ref, toRefs} from "vue";
|
import { getCurrentInstance, reactive, ref, toRefs } from "vue";
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
const {proxy} = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
const dataList = ref([]);
|
const dataList = ref([]);
|
||||||
const open = ref(false);
|
const open = ref(false);
|
||||||
@ -248,7 +248,7 @@ const data = reactive({
|
|||||||
queryParams: {
|
queryParams: {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
patentName: undefined
|
patentName: undefined,
|
||||||
},
|
},
|
||||||
// form: {},
|
// form: {},
|
||||||
// rules: {
|
// rules: {
|
||||||
@ -280,7 +280,7 @@ const data = reactive({
|
|||||||
// },
|
// },
|
||||||
});
|
});
|
||||||
|
|
||||||
const {queryParams} = toRefs(data);
|
const { queryParams } = toRefs(data);
|
||||||
|
|
||||||
const queryRef = ref();
|
const queryRef = ref();
|
||||||
// const patentRef = ref();
|
// const patentRef = ref();
|
||||||
@ -290,14 +290,14 @@ const queryRef = ref();
|
|||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
labPatentList(queryParams.value)
|
labPatentList(queryParams.value)
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
dataList.value = resp.rows;
|
dataList.value = resp.rows;
|
||||||
total.value = resp.total;
|
total.value = resp.total;
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 搜索按钮操作 */
|
/** 搜索按钮操作 */
|
||||||
@ -315,16 +315,16 @@ function resetQuery() {
|
|||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
function handleDelete(id) {
|
function handleDelete(id) {
|
||||||
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的专利项?')
|
ElMessageBox.confirm('是否确认删除数据编号为"' + id + '"的专利项?')
|
||||||
.then(function () {
|
.then(function () {
|
||||||
return deleteLabPatentByIds(id);
|
return deleteLabPatentByIds(id);
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
getList();
|
getList();
|
||||||
ElMessage.success("删除成功");
|
ElMessage.success("删除成功");
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 重置新增的表单以及其他数据 */
|
/** 重置新增的表单以及其他数据 */
|
||||||
|
@ -46,10 +46,10 @@
|
|||||||
prop="title"
|
prop="title"
|
||||||
/>
|
/>
|
||||||
<el-table-column :show-overflow-tooltip="true" label="类型" prop="kind" />
|
<el-table-column :show-overflow-tooltip="true" label="类型" prop="kind" />
|
||||||
<!-- <el-table-column label="所属专家" prop="inventor" />-->
|
<!-- <el-table-column label="所属专家" prop="inventor" />-->
|
||||||
<el-table-column label="课题角色" >
|
<el-table-column label="课题角色">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
{{ subjectRoleDict.find(item => item.value === row.role)?.label}}
|
{{ subjectRoleDict.find((item) => item.value === row.role)?.label }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="课题负责人" prop="director" />
|
<el-table-column label="课题负责人" prop="director" />
|
||||||
@ -64,13 +64,13 @@
|
|||||||
label="操作"
|
label="操作"
|
||||||
>
|
>
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<!-- <el-button-->
|
<!-- <el-button-->
|
||||||
<!-- icon="download"-->
|
<!-- icon="download"-->
|
||||||
<!-- size="small"-->
|
<!-- size="small"-->
|
||||||
<!-- type="text"-->
|
<!-- type="text"-->
|
||||||
<!-- @click="handleTakeOff(row.id)"-->
|
<!-- @click="handleTakeOff(row.id)"-->
|
||||||
<!-- >下架-->
|
<!-- >下架-->
|
||||||
<!-- </el-button>-->
|
<!-- </el-button>-->
|
||||||
<el-button
|
<el-button
|
||||||
icon="Delete"
|
icon="Delete"
|
||||||
size="small"
|
size="small"
|
||||||
@ -101,7 +101,7 @@ import {
|
|||||||
deleteTechnologyProject,
|
deleteTechnologyProject,
|
||||||
technologyProjectList,
|
technologyProjectList,
|
||||||
} from "@/api/admin/laboratory/research-project";
|
} from "@/api/admin/laboratory/research-project";
|
||||||
import {subjectRoleDict} from "../../../../../constant/dict";
|
import { subjectRoleDict } from "../../../../../constant/dict";
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ getList();
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-form ref="queryRef" class="mb8" :model="queryParams" inline>
|
<el-form ref="queryRef" :model="queryParams" class="mb8" inline>
|
||||||
<!-- 企业名称-->
|
<!-- 企业名称-->
|
||||||
<el-form-item label="企业名称" prop="name">
|
<el-form-item label="企业名称" prop="name">
|
||||||
<el-input
|
<el-input
|
||||||
@ -79,8 +79,6 @@ getList();
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="名称" prop="typeName"></el-table-column>
|
<el-table-column label="名称" prop="typeName"></el-table-column>
|
||||||
<el-table-column label="联系人" prop="nickname"></el-table-column>
|
|
||||||
<el-table-column label="手机" prop="phone"></el-table-column>
|
|
||||||
<el-table-column label="浏览次数" prop="seeCount"></el-table-column>
|
<el-table-column label="浏览次数" prop="seeCount"></el-table-column>
|
||||||
<el-table-column label="浏览时间" prop="updateTime"></el-table-column>
|
<el-table-column label="浏览时间" prop="updateTime"></el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
@ -39,17 +39,25 @@
|
|||||||
|
|
||||||
<!-- 表格数据 -->
|
<!-- 表格数据 -->
|
||||||
<el-table v-loading="loading" :data="dataList">
|
<el-table v-loading="loading" :data="dataList">
|
||||||
<el-table-column align="center" label="数据编号" prop="id" />
|
<el-table-column align="center" label="数据编号" prop="id" />
|
||||||
<el-table-column align="center"
|
<el-table-column
|
||||||
:show-overflow-tooltip="true"
|
align="center"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
label="科研项目名称"
|
label="科研项目名称"
|
||||||
prop="title"
|
prop="title"
|
||||||
/>
|
/>
|
||||||
<el-table-column align="center" :show-overflow-tooltip="true" label="类型" prop="kind" />
|
<el-table-column
|
||||||
<!-- <el-table-column label="所属专家" prop="inventor" />-->
|
align="center"
|
||||||
<el-table-column align="center" label="课题角色" >
|
:show-overflow-tooltip="true"
|
||||||
|
label="类型"
|
||||||
|
prop="kind"
|
||||||
|
/>
|
||||||
|
<!-- <el-table-column label="所属专家" prop="inventor" />-->
|
||||||
|
<el-table-column align="center" label="课题角色">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<span>{{ subjectRoleDict.find(item => item.value === row.role)?.label }}</span>
|
<span>{{
|
||||||
|
subjectRoleDict.find((item) => item.value === row.role)?.label
|
||||||
|
}}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" label="课题负责人" prop="director" />
|
<el-table-column align="center" label="课题负责人" prop="director" />
|
||||||
@ -64,13 +72,13 @@
|
|||||||
label="操作"
|
label="操作"
|
||||||
>
|
>
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<!-- <el-button-->
|
<!-- <el-button-->
|
||||||
<!-- icon="download"-->
|
<!-- icon="download"-->
|
||||||
<!-- size="small"-->
|
<!-- size="small"-->
|
||||||
<!-- type="text"-->
|
<!-- type="text"-->
|
||||||
<!-- @click="handleTakeOff(row.id)"-->
|
<!-- @click="handleTakeOff(row.id)"-->
|
||||||
<!-- >下架-->
|
<!-- >下架-->
|
||||||
<!-- </el-button>-->
|
<!-- </el-button>-->
|
||||||
<el-button
|
<el-button
|
||||||
icon="Delete"
|
icon="Delete"
|
||||||
size="small"
|
size="small"
|
||||||
@ -101,7 +109,7 @@ import {
|
|||||||
deleteTechnologyProject,
|
deleteTechnologyProject,
|
||||||
technologyProjectList,
|
technologyProjectList,
|
||||||
} from "@/api/admin/research/research-project";
|
} from "@/api/admin/research/research-project";
|
||||||
import {subjectRoleDict} from "@/constant/dict";
|
import { subjectRoleDict } from "@/constant/dict";
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
|
@ -16,7 +16,8 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row v-if="isAdd">
|
<!--FIXME:-->
|
||||||
|
<el-row v-if="isAdd && false">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="组织机构代码:" prop="code">
|
<el-form-item label="组织机构代码:" prop="code">
|
||||||
<el-row justify="space-between" type="flex">
|
<el-row justify="space-between" type="flex">
|
||||||
@ -88,6 +89,56 @@
|
|||||||
placeholder="请输入研究方向"
|
placeholder="请输入研究方向"
|
||||||
title="研究方向"
|
title="研究方向"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="主要技术应用场景" prop="primaryTechnology">
|
||||||
|
<el-input
|
||||||
|
v-model="modelValue.primaryTechnology"
|
||||||
|
:autosize="{ minRows: 4 }"
|
||||||
|
placeholder="请输入主要技术应用场景"
|
||||||
|
type="textarea"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="科研项目" prop="researchProject">
|
||||||
|
<el-input
|
||||||
|
v-model="modelValue.researchProject"
|
||||||
|
:autosize="{ minRows: 4 }"
|
||||||
|
placeholder="请输入科研项目"
|
||||||
|
type="textarea"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="代表性科技成果" prop="achievement">
|
||||||
|
<el-input
|
||||||
|
v-model="modelValue.achievement"
|
||||||
|
:autosize="{ minRows: 4 }"
|
||||||
|
placeholder="请输入代表性科技成果"
|
||||||
|
type="textarea"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item :label="t('webContact.phone')" prop="phone">
|
||||||
|
<el-input
|
||||||
|
v-model="modelValue.phone"
|
||||||
|
:maxlength="11"
|
||||||
|
oninput="value = value.replace(/\D+/, '')"
|
||||||
|
placeholder="请输入联系电话"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="实验室简介" prop="introduction">
|
<el-form-item label="实验室简介" prop="introduction">
|
||||||
|
@ -1,30 +1,30 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="user-info-head" @click="editCropper()">
|
<div class="user-info-head" @click="editCropper()">
|
||||||
<img :src="options.img" title="点击上传头像" class="img-circle img-lg" />
|
<img :src="options.img" class="img-circle img-lg" title="点击上传头像" />
|
||||||
</div>
|
</div>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
:title="title"
|
|
||||||
v-model="open"
|
v-model="open"
|
||||||
width="800px"
|
:title="title"
|
||||||
append-to-body
|
append-to-body
|
||||||
@opened="modalOpened"
|
width="800px"
|
||||||
@close="closeDialog"
|
@close="closeDialog"
|
||||||
|
@opened="modalOpened"
|
||||||
>
|
>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :xs="24" :md="12" :style="{ height: '350px' }">
|
<el-col :md="12" :style="{ height: '350px' }" :xs="24">
|
||||||
<vue-cropper
|
<vue-cropper
|
||||||
|
v-if="visible"
|
||||||
ref="cropper"
|
ref="cropper"
|
||||||
|
:autoCrop="options.autoCrop"
|
||||||
|
:autoCropHeight="options.autoCropHeight"
|
||||||
|
:autoCropWidth="options.autoCropWidth"
|
||||||
|
:fixedBox="options.fixedBox"
|
||||||
:img="options.img"
|
:img="options.img"
|
||||||
:info="true"
|
:info="true"
|
||||||
:autoCrop="options.autoCrop"
|
|
||||||
:autoCropWidth="options.autoCropWidth"
|
|
||||||
:autoCropHeight="options.autoCropHeight"
|
|
||||||
:fixedBox="options.fixedBox"
|
|
||||||
@realTime="realTime"
|
@realTime="realTime"
|
||||||
v-if="visible"
|
|
||||||
/>
|
/>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :xs="24" :md="12" :style="{ height: '350px' }">
|
<el-col :md="12" :style="{ height: '350px' }" :xs="24">
|
||||||
<div class="avatar-upload-preview">
|
<div class="avatar-upload-preview">
|
||||||
<img :src="options.previews.url" :style="options.previews.img" />
|
<img :src="options.previews.url" :style="options.previews.img" />
|
||||||
</div>
|
</div>
|
||||||
@ -34,14 +34,16 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :lg="2" :md="2">
|
<el-col :lg="2" :md="2">
|
||||||
<el-upload
|
<el-upload
|
||||||
action="#"
|
:before-upload="beforeUpload"
|
||||||
:http-request="requestUpload"
|
:http-request="requestUpload"
|
||||||
:show-file-list="false"
|
:show-file-list="false"
|
||||||
:before-upload="beforeUpload"
|
action="#"
|
||||||
>
|
>
|
||||||
<el-button>
|
<el-button>
|
||||||
选择
|
选择
|
||||||
<el-icon class="el-icon--right"><Upload /></el-icon>
|
<el-icon class="el-icon--right">
|
||||||
|
<Upload />
|
||||||
|
</el-icon>
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -91,25 +93,31 @@ const options = reactive({
|
|||||||
function editCropper() {
|
function editCropper() {
|
||||||
open.value = true;
|
open.value = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 打开弹出层结束时的回调 */
|
/** 打开弹出层结束时的回调 */
|
||||||
function modalOpened() {
|
function modalOpened() {
|
||||||
visible.value = true;
|
visible.value = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 覆盖默认上传行为 */
|
/** 覆盖默认上传行为 */
|
||||||
function requestUpload() {}
|
function requestUpload() {}
|
||||||
|
|
||||||
/** 向左旋转 */
|
/** 向左旋转 */
|
||||||
function rotateLeft() {
|
function rotateLeft() {
|
||||||
proxy.$refs.cropper.rotateLeft();
|
proxy.$refs.cropper.rotateLeft();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 向右旋转 */
|
/** 向右旋转 */
|
||||||
function rotateRight() {
|
function rotateRight() {
|
||||||
proxy.$refs.cropper.rotateRight();
|
proxy.$refs.cropper.rotateRight();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 图片缩放 */
|
/** 图片缩放 */
|
||||||
function changeScale(num) {
|
function changeScale(num) {
|
||||||
num = num || 1;
|
num = num || 1;
|
||||||
proxy.$refs.cropper.changeScale(num);
|
proxy.$refs.cropper.changeScale(num);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 上传预处理 */
|
/** 上传预处理 */
|
||||||
function beforeUpload(file) {
|
function beforeUpload(file) {
|
||||||
if (file.type.indexOf("image/") == -1) {
|
if (file.type.indexOf("image/") == -1) {
|
||||||
@ -124,6 +132,7 @@ function beforeUpload(file) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 上传图片 */
|
/** 上传图片 */
|
||||||
function uploadImg() {
|
function uploadImg() {
|
||||||
proxy.$refs.cropper.getCropBlob((data) => {
|
proxy.$refs.cropper.getCropBlob((data) => {
|
||||||
@ -138,15 +147,21 @@ function uploadImg() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 实时预览 */
|
/** 实时预览 */
|
||||||
function realTime(data) {
|
function realTime(data) {
|
||||||
options.previews = data;
|
options.previews = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 关闭窗口 */
|
/** 关闭窗口 */
|
||||||
function closeDialog() {
|
function closeDialog() {
|
||||||
options.img = userStore.avatar;
|
options.img = userStore.avatar;
|
||||||
options.visible = false;
|
options.visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
editCropper,
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
@ -388,7 +388,7 @@ function loadMap(mapName, data) {
|
|||||||
],
|
],
|
||||||
// color: '#fff',
|
// color: '#fff',
|
||||||
textStyle: {
|
textStyle: {
|
||||||
color: "#333333",
|
color: "#fff",
|
||||||
},
|
},
|
||||||
visibility: "off",
|
visibility: "off",
|
||||||
},
|
},
|
||||||
@ -454,6 +454,7 @@ function loadMap(mapName, data) {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
background: linear-gradient(0deg, #010101, #041744);
|
||||||
.tit {
|
.tit {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 75px;
|
top: 75px;
|
||||||
@ -462,13 +463,13 @@ function loadMap(mapName, data) {
|
|||||||
font-size: 36px;
|
font-size: 36px;
|
||||||
font-family: Source Han Sans CN;
|
font-family: Source Han Sans CN;
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
color: #333333;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.map {
|
.map {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
// background-image: url(./img/lightEffect.png);
|
background-image: url(./img/lightEffect.png);
|
||||||
background-size: 644px 272px;
|
background-size: 644px 272px;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: center top;
|
background-position: center top;
|
||||||
@ -511,18 +512,18 @@ function loadMap(mapName, data) {
|
|||||||
min-width: 200px;
|
min-width: 200px;
|
||||||
max-height: 256px;
|
max-height: 256px;
|
||||||
// overflow: hidden;
|
// overflow: hidden;
|
||||||
border: 1px solid #dcdcdc;
|
border: 1px solid #0054ff;
|
||||||
color: #666666;
|
color: rgba(161, 192, 255, 1);
|
||||||
& > div {
|
& > div {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
.head {
|
.head {
|
||||||
border-bottom: 1px solid #dcdcdc;
|
border-bottom: 1px solid #0054ff;
|
||||||
color: #333333;
|
color: #ffffff;
|
||||||
}
|
}
|
||||||
.a {
|
.a {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
border-right: 1px solid #dcdcdc;
|
border-right: 1px solid #0054ff;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 42px;
|
line-height: 42px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
@ -2,27 +2,27 @@
|
|||||||
<div v-loading="loading" class="small">
|
<div v-loading="loading" class="small">
|
||||||
<div class="_title">
|
<div class="_title">
|
||||||
<div
|
<div
|
||||||
v-if="!state.banner"
|
v-if="!state.banner"
|
||||||
style="height: 394px; background-color: #108de9"
|
style="height: 394px; background-color: #108de9"
|
||||||
></div>
|
></div>
|
||||||
<div v-else style="height: 394px">
|
<div v-else style="height: 394px">
|
||||||
<img
|
<img
|
||||||
:src="state.banner"
|
:src="state.banner"
|
||||||
alt="banner"
|
alt="banner"
|
||||||
style="width: 100%; height: 100%"
|
style="width: 100%; height: 100%"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
v-if="state.caseList.length"
|
v-if="state.caseList.length"
|
||||||
:class="isFixed ? '_fixed' : ''"
|
:class="isFixed ? '_fixed' : ''"
|
||||||
class="_li"
|
class="_li"
|
||||||
>
|
>
|
||||||
<ul class="conter1000">
|
<ul class="conter1000">
|
||||||
<li
|
<li
|
||||||
v-for="(item, index) in state.caseList"
|
v-for="(item, index) in state.caseList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:class="activeId == item.id ? '_active' : ''"
|
:class="activeId == item.id ? '_active' : ''"
|
||||||
@click="setScrollTop(item.id, index)"
|
@click="setScrollTop(item.id, index)"
|
||||||
>
|
>
|
||||||
{{ item.title }}
|
{{ item.title }}
|
||||||
</li>
|
</li>
|
||||||
@ -32,22 +32,22 @@
|
|||||||
</div>
|
</div>
|
||||||
<div v-show="!isShowMore" class="box">
|
<div v-show="!isShowMore" class="box">
|
||||||
<div
|
<div
|
||||||
v-for="(item, index) in state.caseList"
|
v-for="(item, index) in state.caseList"
|
||||||
:key="index"
|
:key="index"
|
||||||
:ref="setItemRef"
|
:ref="setItemRef"
|
||||||
:data-id="item.id"
|
:data-id="item.id"
|
||||||
class="_item"
|
class="_item"
|
||||||
>
|
>
|
||||||
<h3 class="_tit text-center" style="font-size: 24px; color: #333333">
|
<h3 class="_tit text-center" style="font-size: 24px; color: #333333">
|
||||||
{{ item.title }}
|
{{ item.title }}
|
||||||
</h3>
|
</h3>
|
||||||
<div class="_info conter1000">
|
<div class="_info conter1000">
|
||||||
<div v-if="isOddEvenNumber(index)" class="_r">
|
<div v-if="isOddEvenNumber(index)" class="_r">
|
||||||
<img :src="item.image" alt srcset/>
|
<img :src="item.image" alt srcset />
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
:class="isOddEvenNumber(index) ? '_paddingl' : '_paddingr'"
|
:class="isOddEvenNumber(index) ? '_paddingl' : '_paddingr'"
|
||||||
class="_l"
|
class="_l"
|
||||||
>
|
>
|
||||||
<h3 :class="isOddEvenNumber(index) ? 'text-right' : ''">
|
<h3 :class="isOddEvenNumber(index) ? 'text-right' : ''">
|
||||||
{{ item.title }}
|
{{ item.title }}
|
||||||
@ -56,20 +56,20 @@
|
|||||||
<p>{{ item.description }}</p>
|
<p>{{ item.description }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="!isOddEvenNumber(index)" class="_r">
|
<div v-if="!isOddEvenNumber(index)" class="_r">
|
||||||
<img :src="item.image" alt srcset/>
|
<img :src="item.image" alt srcset />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="_list conter1400">
|
<div class="_list conter1400">
|
||||||
<ul>
|
<ul>
|
||||||
<li
|
<li
|
||||||
v-for="child in item.children.slice(0, 2)"
|
v-for="child in item.children.slice(0, 2)"
|
||||||
:key="child.id"
|
:key="child.id"
|
||||||
@click="handlePath(child.id)"
|
@click="handlePath(child.id)"
|
||||||
>
|
>
|
||||||
<el-image
|
<el-image
|
||||||
:src="child.image"
|
:src="child.image"
|
||||||
fit="cover"
|
fit="cover"
|
||||||
style="width: 100%; height: 135px"
|
style="width: 100%; height: 135px"
|
||||||
></el-image>
|
></el-image>
|
||||||
<div class="_head text_hidden">{{ child.title }}</div>
|
<div class="_head text_hidden">{{ child.title }}</div>
|
||||||
<div class="_detail text_hidden">{{ child.description }}</div>
|
<div class="_detail text_hidden">{{ child.description }}</div>
|
||||||
@ -77,35 +77,34 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<div class="_liBtn text-right">
|
<div class="_liBtn text-right">
|
||||||
<el-button class="x_btns" @click="handleShowMore(item)"
|
<el-button class="x_btns" @click="handleShowMore(item)"
|
||||||
>查看更多
|
>查看更多
|
||||||
</el-button
|
</el-button>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<seeMore
|
<seeMore
|
||||||
v-if="isShowMore"
|
v-if="isShowMore"
|
||||||
v-model:isShowMore="isShowMore"
|
v-model:isShowMore="isShowMore"
|
||||||
v-model:oneLevelTitle="oneLevelTitle"
|
v-model:oneLevelTitle="oneLevelTitle"
|
||||||
:data="moreData"
|
:data="moreData"
|
||||||
></seeMore>
|
></seeMore>
|
||||||
<webFooter></webFooter>
|
<webFooter></webFooter>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import {nextTick, onMounted, reactive} from "vue";
|
import { nextTick, onMounted, reactive } from "vue";
|
||||||
import seeMore from "./components/seeMore.vue";
|
import seeMore from "./components/seeMore.vue";
|
||||||
import webFooter from "@/components/webFooter/index.vue";
|
import webFooter from "@/components/webFooter/index.vue";
|
||||||
import {banner} from "@/api/website/home/index";
|
import { banner } from "@/api/website/home/index";
|
||||||
import {useRoute, useRouter} from "vue-router";
|
import { useRoute, useRouter } from "vue-router";
|
||||||
import {getCase} from "@/api/website/solution";
|
import { getCase } from "@/api/website/solution";
|
||||||
// import { getCategory } from "../../../api/website/solution";
|
// import { getCategory } from "../../../api/website/solution";
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
function handlePath(id) {
|
function handlePath(id) {
|
||||||
let routeData = router.resolve({path: `/solution/detail/${id}/`});
|
let routeData = router.resolve({ path: `/solution/detail/${id}/` });
|
||||||
window.open(routeData.href, "_blank");
|
window.open(routeData.href, "_blank");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,7 +138,6 @@ watch(route, () => {
|
|||||||
initData();
|
initData();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
initData();
|
initData();
|
||||||
});
|
});
|
||||||
@ -151,20 +149,21 @@ async function initData() {
|
|||||||
let mode = route.params.mode;
|
let mode = route.params.mode;
|
||||||
// let key = keyDict[name];
|
// let key = keyDict[name];
|
||||||
|
|
||||||
mode && getCase({mode}).then((res) => {
|
mode &&
|
||||||
state.caseList = res.data;
|
getCase({ mode }).then((res) => {
|
||||||
initScroll();
|
state.caseList = res.data;
|
||||||
// loading.value = false;
|
initScroll();
|
||||||
});
|
// loading.value = false;
|
||||||
|
});
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
banner({locals: `解决方案>${name}`})
|
banner({ locals: `解决方案>${name}` })
|
||||||
.then((resp) => {
|
.then((resp) => {
|
||||||
state.banner = resp.data[0].images;
|
state.banner = resp.data[0].images;
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function initScroll() {
|
function initScroll() {
|
||||||
@ -190,15 +189,15 @@ function initScroll() {
|
|||||||
function getScroll() {
|
function getScroll() {
|
||||||
return {
|
return {
|
||||||
left:
|
left:
|
||||||
window.pageXOffset ||
|
window.pageXOffset ||
|
||||||
document.documentElement.scrollLeft ||
|
document.documentElement.scrollLeft ||
|
||||||
document.body.scrollLeft ||
|
document.body.scrollLeft ||
|
||||||
0,
|
0,
|
||||||
top:
|
top:
|
||||||
window.pageYOffset ||
|
window.pageYOffset ||
|
||||||
document.documentElement.scrollTop ||
|
document.documentElement.scrollTop ||
|
||||||
document.body.scrollTop ||
|
document.body.scrollTop ||
|
||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user