bug fixed
This commit is contained in:
23
src/api/dataApproval/achivement.js
Normal file
23
src/api/dataApproval/achivement.js
Normal file
@ -0,0 +1,23 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 获取成果审核列表
|
||||
export const expertAchievementList = (params) => request({
|
||||
url: "/business/dataReview/expertAchievementList",
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
// 获取成果详情
|
||||
export const expertAchievementInfo = (params) => request({
|
||||
url: "/business/dataReview/expertAchievementInfo",
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
|
||||
// 修改成果
|
||||
export const updateExpertAchievement = (data) => request({
|
||||
url: "/business/dataReview/updateExpertAchievement",
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
|
||||
|
||||
24
src/api/dataApproval/enterpriseServiceDemand.js
Normal file
24
src/api/dataApproval/enterpriseServiceDemand.js
Normal file
@ -0,0 +1,24 @@
|
||||
import request from "@/utils/request";
|
||||
|
||||
// 企业服务需求列表
|
||||
export const listCasDemand = (params) =>
|
||||
request({
|
||||
url: "/business/dataReview/listCasDemand/list",
|
||||
method: "GET",
|
||||
params,
|
||||
});
|
||||
|
||||
// 企业服务需求详情
|
||||
export const getCasDemandInfo = (id) =>
|
||||
request({
|
||||
url: `/business/dataReview/getCasDemandInfo/${id}`,
|
||||
method: "GET",
|
||||
});
|
||||
|
||||
// 修改企业服务需求
|
||||
export const updateCasDemand = (data) =>
|
||||
request({
|
||||
url: `/business/dataReview/updateCasDemand`,
|
||||
method: "PUT",
|
||||
data,
|
||||
});
|
||||
8
src/api/dataApproval/enterpriseTechnologyDemand.js
Normal file
8
src/api/dataApproval/enterpriseTechnologyDemand.js
Normal file
@ -0,0 +1,8 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 修改企业技术需求审核
|
||||
export const updateTechnologyDemand = (data) => request({
|
||||
url: "/business/dataReview/updateTechnologyDemand",
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
@ -54,3 +54,49 @@ export function companyExamine(data) {
|
||||
data,
|
||||
});
|
||||
}
|
||||
// 公司企业分配账号
|
||||
export function allocateAccount(data) {
|
||||
return request({
|
||||
url: "/business/enterprise/allocateAccount",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
// 公司企业获取账号
|
||||
export function getAccount(id) {
|
||||
return request({
|
||||
url: `/business/enterprise/getAccount/${id}`,
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
||||
// 公司企业重置密码
|
||||
export function restPassword(id, password) {
|
||||
return request({
|
||||
url: `/business/enterprise/restPassword/${id}/${password}`,
|
||||
method: "put",
|
||||
});
|
||||
}
|
||||
// 公司企业获取会员详情
|
||||
export function getCasVip(id) {
|
||||
return request({
|
||||
url: `/business/casVip/${id}`,
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
// 公司企业开通会员详情
|
||||
export function openCasVip(data) {
|
||||
return request({
|
||||
url: `/business/casVip`,
|
||||
method: "post",
|
||||
data
|
||||
});
|
||||
}
|
||||
// 公司企业修改会员
|
||||
export function updateCasVip(data) {
|
||||
return request({
|
||||
url: `/business/casVip`,
|
||||
method: "put",
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
@ -40,3 +40,28 @@ export function expertExamine(data) {
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 专家分配账号
|
||||
export function allocateAccount(data) {
|
||||
return request({
|
||||
url: "/business/casExpert/allocateAccount",
|
||||
method: "post",
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
// 专家获取账号
|
||||
export function getAccount(id) {
|
||||
return request({
|
||||
url: `/business/casExpert/getAccount/${id}`,
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
||||
// 专家重置密码
|
||||
export function restPassword(id, password) {
|
||||
return request({
|
||||
url: `/business/casExpert/restPassword/${id}/${password}`,
|
||||
method: "put",
|
||||
});
|
||||
}
|
||||
|
||||
@ -1,29 +1,38 @@
|
||||
import request from '@/utils/request'
|
||||
// 获取专家列表
|
||||
export function expertList(params) {
|
||||
return request({
|
||||
url:"/business/casExpert/list",
|
||||
method:"get",
|
||||
params
|
||||
});
|
||||
}
|
||||
return request({
|
||||
url: "/business/casExpert/list",
|
||||
method: "get",
|
||||
params
|
||||
});
|
||||
}
|
||||
|
||||
// 新镇专家接口
|
||||
export const companyAdd=(data)=>request({
|
||||
url:"/business/casExpert",
|
||||
method:'post',
|
||||
data
|
||||
// 新镇专家接口
|
||||
export const companyAdd = (data) => request({
|
||||
url: "/business/casExpert",
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
|
||||
// 专家详情接口
|
||||
export const companyDetail = (id) => request({
|
||||
url: `/business/casExpert/${id}`,
|
||||
method: 'get',
|
||||
})
|
||||
|
||||
// 修改专家详情
|
||||
export const companyEdit = (data) => request({
|
||||
url: '/business/casExpert',
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
|
||||
// 专家分配账号
|
||||
export function allocateAccount(data) {
|
||||
return request({
|
||||
url: '/business/casExpert/allocateAccount',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
|
||||
// 专家详情接口
|
||||
export const companyDetail=(id)=>request({
|
||||
url:`/business/casExpert/${id}`,
|
||||
method:'get',
|
||||
})
|
||||
|
||||
// 修改专家详情
|
||||
export const companyEdit =(data)=>request({
|
||||
url:'/business/casExpert',
|
||||
method:'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
@ -61,6 +61,9 @@ export default {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
// disabled:{
|
||||
// type:B
|
||||
// }
|
||||
},
|
||||
setup(props, context) {
|
||||
// 编辑器实例,必须用 shallowRef
|
||||
@ -130,7 +133,7 @@ export default {
|
||||
|
||||
const handleCreated = (editor) => {
|
||||
editorRef.value = editor; // 记录 editor 实例,重要!
|
||||
console.log(editorRef.value.getAllMenuKeys());
|
||||
// console.log(editorRef.value.getAllMenuKeys());
|
||||
};
|
||||
|
||||
const handleChange = (editor) => {
|
||||
|
||||
@ -1,64 +0,0 @@
|
||||
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!-- 顶部区域 -->
|
||||
<el-form>
|
||||
<el-row type="flex">
|
||||
<el-col :span="8">
|
||||
<el-button type="primary">待审核</el-button>
|
||||
<el-button type="">已驳回</el-button>
|
||||
<el-button type="">已通过</el-button>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="站点">
|
||||
<el-select class="m-2" placeholder="请选择">
|
||||
<el-option/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<!-- 表格区域 -->
|
||||
<el-table :data="list">
|
||||
<el-table-column label="成果名称" align="center" prop="name"></el-table-column>
|
||||
<el-table-column label="成果领域" align="center" prop="obj"></el-table-column>
|
||||
<el-table-column label="所属专家" align="center" prop=""></el-table-column>
|
||||
<el-table-column label="所属研究机构" align="center" prop=""></el-table-column>
|
||||
<el-table-column label="站点" align="center" prop=""></el-table-column>
|
||||
<el-table-column label="申请时间" align="center" prop="time"></el-table-column>
|
||||
<el-table-column label="操作" align="center">
|
||||
<template #default="{row}">
|
||||
<el-button type="text">审批</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页器 -->
|
||||
<el-row type="flex" justify="end" style="margin-top:10px ;">
|
||||
<el-pagination
|
||||
v-model:currentPage="currentPage3"
|
||||
v-model:page-size="pageSize3"
|
||||
:small="small"
|
||||
:disabled="disabled"
|
||||
:page-sizes="[10, 20, 30, 40]"
|
||||
:background="true"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="6"
|
||||
/>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref } from 'vue';
|
||||
|
||||
const list=ref([])
|
||||
list.value=[
|
||||
{name:'新型高功率LED路灯照明市场分析',obj:'电子信息',time:'2015-09-28 08:50:08'},
|
||||
{name:'一种新型的自动调节升降按摩椅',obj:'电子信息',time:'2015-09-28 08:50:08'},
|
||||
{name:'一种高压电柜的散热控',obj:'电子信息',time:'2015-09-28 08:50:08'},
|
||||
{name:'汽车用先进传感器成果',obj:'电子信息',time:'2015-09-28 08:50:08'},
|
||||
{name:'高电压快充技术',obj:'电子信息',time:'2015-09-28 08:50:08'},
|
||||
{name:'微波遥感',obj:'电子信息',time:'2015-09-28 08:50:08'}
|
||||
]
|
||||
</script>
|
||||
<style></style>
|
||||
@ -2,6 +2,7 @@
|
||||
<div class="app-container">
|
||||
<div style="width: 50%">
|
||||
<ExpertForm
|
||||
:isAdd="false"
|
||||
v-model="form"
|
||||
:showTitle="true"
|
||||
:formType="formType"
|
||||
@ -9,13 +10,16 @@
|
||||
ref="expertFormRef"
|
||||
/>
|
||||
</div>
|
||||
<el-button @click="submitForm('2')">审批拒绝</el-button>
|
||||
<el-button type="primary" @click="submitForm('1')">审批通过</el-button>
|
||||
|
||||
<div :style="{ marginLeft: 140 + 'px' }">
|
||||
<el-button @click="submitForm('2')">审核拒绝</el-button>
|
||||
<el-button type="primary" @click="submitForm('1')">通过审核</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="EnterpriseAdd">
|
||||
import ExpertForm from "@/views/components/ExpertForm/indexcopy.vue";
|
||||
import ExpertForm from "@/views/components/ExpertForm/index.vue";
|
||||
import tab from "@/plugins/tab";
|
||||
import {
|
||||
companyAdd,
|
||||
@ -48,7 +52,7 @@ const data = reactive({
|
||||
directions: [],
|
||||
introduce: undefined,
|
||||
license: undefined,
|
||||
examineStatus:''
|
||||
examineStatus: "",
|
||||
},
|
||||
});
|
||||
const { form } = toRefs(data);
|
||||
@ -60,7 +64,7 @@ const submitForm = async (state) => {
|
||||
const valid = await expertFormRef.value.validateForm();
|
||||
if (valid) {
|
||||
if (form.value.id != undefined) {
|
||||
form.value.examineStatus=state
|
||||
form.value.examineStatus = state;
|
||||
await companyEdit(form.value);
|
||||
cancel();
|
||||
ElMessage.success("修改成功");
|
||||
|
||||
@ -1,7 +1,12 @@
|
||||
<!-- 企业需求弹框 -->
|
||||
<template>
|
||||
<el-dialog title="基本信息" v-model="isShow">
|
||||
<el-form ref="formRef" :model="modelValue" :label-width="labelWidth + 'px'">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="modelValue"
|
||||
:label-width="labelWidth + 'px'"
|
||||
disabled
|
||||
>
|
||||
<p><b>基本信息</b></p>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
@ -23,17 +28,6 @@
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
<!-- <el-row :gutter="20">
|
||||
<el-col :span="20">
|
||||
<el-input
|
||||
v-model="checkInput"
|
||||
placeholder="请输入需求类别"
|
||||
></el-input>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-button type="primary" @click="addCheck">添加</el-button>
|
||||
</el-col>
|
||||
</el-row> -->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -42,11 +36,12 @@
|
||||
<el-col :span="24">
|
||||
<el-form-item label="需求描述:" prop="introduce">
|
||||
<!-- <Editor v-model="modelValue.add" :minHeight="150" /> -->
|
||||
<wangEditor
|
||||
<WangEditor
|
||||
v-model="modelValue.introduce"
|
||||
width="100%"
|
||||
min-height="150px"
|
||||
></wangEditor>
|
||||
readOnly
|
||||
></WangEditor>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -59,6 +54,7 @@
|
||||
<FieldOptions
|
||||
v-model="modelValue"
|
||||
:labelWidth="labelWidth"
|
||||
disabled
|
||||
ref="fieldFormRef"
|
||||
/>
|
||||
|
||||
@ -149,6 +145,7 @@
|
||||
v-model="modelValue"
|
||||
title="想合作的单位及模式"
|
||||
placeholder=""
|
||||
disabled
|
||||
fieldKey="wants"
|
||||
ref="directionsFormRef"
|
||||
/>
|
||||
@ -156,16 +153,19 @@
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button type="primary">驳回</el-button>
|
||||
<el-button type="primary">通过需求</el-button>
|
||||
<el-button type="primary" @click="approve('2')">驳回</el-button>
|
||||
<el-button type="primary" @click="approve('1')">通过需求</el-button>
|
||||
</el-row>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script setup>
|
||||
import { updateTechnologyDemand } from "@/api/dataApproval/enterpriseTechnologyDemand";
|
||||
import WangEditor from "@/components/WangEditor";
|
||||
import FieldOptions from "@/views/components/FieldOptions";
|
||||
import InputBoxAdd from "@/views/components/InputBoxAdd";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { ref, toRefs } from "vue";
|
||||
const emit = defineEmits(["update-list"]);
|
||||
const props = defineProps({
|
||||
isShow: {
|
||||
type: Boolean,
|
||||
@ -196,5 +196,12 @@ const checkList = reactive([
|
||||
name: "上市辅导",
|
||||
},
|
||||
]);
|
||||
const approve = async (status) => {
|
||||
let title = status == 1 ? "通过" : "驳回";
|
||||
await updateTechnologyDemand({ id: modelValue.value.id, status });
|
||||
ElMessage.success(`已${title}需求`);
|
||||
emit("update:is-show", false);
|
||||
emit("update-list");
|
||||
};
|
||||
</script>
|
||||
<style></style>
|
||||
|
||||
@ -156,19 +156,20 @@ const validateForm = async () => {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
// watch(modelValue, (val) => {
|
||||
// console.log(val);
|
||||
// });
|
||||
|
||||
getProvinceList();
|
||||
watch(modelValue, (val) => {
|
||||
if (val.province) {
|
||||
getCityListByProvinceId(val.province);
|
||||
}
|
||||
if (val.city) {
|
||||
getAreaListByCityId(val.city);
|
||||
}
|
||||
});
|
||||
watch(
|
||||
modelValue,
|
||||
(val) => {
|
||||
if (val.province) {
|
||||
getCityListByProvinceId(val.province);
|
||||
}
|
||||
if (val.city) {
|
||||
getAreaListByCityId(val.city);
|
||||
}
|
||||
},
|
||||
{ deep: true }
|
||||
);
|
||||
|
||||
defineExpose({
|
||||
validateForm,
|
||||
|
||||
@ -3,13 +3,19 @@
|
||||
ref="formRef"
|
||||
:model="modelValue"
|
||||
:rules="rules"
|
||||
:disabled="!isAdd"
|
||||
:label-width="labelWidth + 'px'"
|
||||
>
|
||||
<div class="form_title" v-if="showTitle">基本信息</div>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item :label="imageName" prop="image">
|
||||
<ImageUpload v-model="modelValue.image" :fileSize="2" :limit="1" />
|
||||
<ImageUpload
|
||||
:disabled="!isAdd"
|
||||
v-model="modelValue.image"
|
||||
:fileSize="2"
|
||||
:limit="1"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -129,6 +135,7 @@
|
||||
</el-row> -->
|
||||
|
||||
<CityOptions
|
||||
:disabled="!isAdd"
|
||||
v-model="modelValue"
|
||||
:labelWidth="labelWidth"
|
||||
ref="cityFormRef"
|
||||
@ -203,12 +210,14 @@
|
||||
</el-row>
|
||||
|
||||
<FieldOptions
|
||||
:disabled="!isAdd"
|
||||
v-model="modelValue"
|
||||
:labelWidth="labelWidth"
|
||||
ref="fieldFormRef"
|
||||
/>
|
||||
|
||||
<InputBoxAdd
|
||||
:disabled="!isAdd"
|
||||
:labelWidth="labelWidth"
|
||||
v-model="modelValue"
|
||||
title="关键词"
|
||||
@ -232,6 +241,7 @@
|
||||
:labelWidth="labelWidth"
|
||||
v-model="modelValue"
|
||||
title="生产方向"
|
||||
:disabled="!isAdd"
|
||||
placeholder="请输入生产方向"
|
||||
fieldKey="directions"
|
||||
ref="directionsFormRef"
|
||||
@ -273,7 +283,12 @@
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 2, maxRows: 6 }"
|
||||
/>
|
||||
<WangEditor v-else v-model="modelValue.introduce" minHeight="150px" />
|
||||
<WangEditor
|
||||
:readOnly="!isAdd"
|
||||
v-else
|
||||
v-model="modelValue.introduce"
|
||||
minHeight="150px"
|
||||
/>
|
||||
<!-- <Editor
|
||||
v-else
|
||||
v-model="modelValue.introduce"
|
||||
|
||||
@ -8,10 +8,10 @@
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="所属领域:" prop="industrys" :show-message="false">
|
||||
<el-form-item label="所属领域:" prop="industrys" :show-message="false">
|
||||
<el-row type="flex" justify="space-between">
|
||||
<el-col :span="6">
|
||||
<el-form-item >
|
||||
<el-form-item>
|
||||
<el-select
|
||||
v-model="fields[0]"
|
||||
value-key="id"
|
||||
@ -94,7 +94,7 @@
|
||||
// import { industry } from "@/api/config";
|
||||
import { listSysIndustry } from "@/api/platform/industry";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { toRefs, watch ,reactive} from "vue";
|
||||
import { toRefs, watch, reactive } from "vue";
|
||||
|
||||
const props = defineProps({
|
||||
modelValue: Object,
|
||||
@ -119,7 +119,7 @@ const data = reactive({
|
||||
industrys: [
|
||||
{
|
||||
type: "array",
|
||||
required:true,
|
||||
required: true,
|
||||
message: "请选择并添加",
|
||||
trigger: "change",
|
||||
},
|
||||
@ -172,7 +172,7 @@ const getFieldNameById = (ids) => {
|
||||
const fieldAdd = () => {
|
||||
if (!fields.value.length) return ElMessage.error("请选择领域类型");
|
||||
// 移除校验
|
||||
formRef.value.clearValidate()
|
||||
formRef.value.clearValidate();
|
||||
industrysTags.value.push(fields.value);
|
||||
modelValue.value.industrys.push(fields.value.join("-"));
|
||||
fields.value = [];
|
||||
@ -212,38 +212,46 @@ const validateForm = async () => {
|
||||
|
||||
getIndustryTreeData();
|
||||
|
||||
watch(modelValue, (newVal) => {
|
||||
modelValue.value.industrys = [];
|
||||
modelValue.value.industrys.push(...modelValue.value.industry.split(","));
|
||||
for (const field of modelValue.value.industry.split(",")) {
|
||||
industrysTags.value.push(field.split("-").map((el) => parseInt(el)));
|
||||
}
|
||||
// let _key = [];
|
||||
// let _value = [];
|
||||
// for (let i = 0; i < newVal.industrys.length; i++) {
|
||||
// const item = newVal.industrys[i];
|
||||
// _key.push(item.key);
|
||||
// _value.push(item.value);
|
||||
// }
|
||||
// newVal.industrys = _key;
|
||||
// let keyObj = [];
|
||||
// for (let i = 0; i < _key.length; i++) {
|
||||
// keyObj.push([]);
|
||||
// let array = _key[i].split("-");
|
||||
// for (let j = 0; j < array.length; j++) {
|
||||
// keyObj[i].push({
|
||||
// id: array[j],
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
// for (let i = 0; i < _value.length; i++) {
|
||||
// let array = _value[i].split(">");
|
||||
// for (let j = 0; j < array.length; j++) {
|
||||
// keyObj[i][j]["name"] = array[j];
|
||||
// }
|
||||
// }
|
||||
// industrysTags.value = keyObj;
|
||||
});
|
||||
watch(
|
||||
modelValue,
|
||||
(newVal) => {
|
||||
modelValue.value.industrys = [];
|
||||
console.log(modelValue.value.industry ? 1 : 0);
|
||||
let industrysList = modelValue.value.industry
|
||||
? modelValue.value.industry.split(",")
|
||||
: [];
|
||||
modelValue.value.industrys.push(...industrysList);
|
||||
for (const field of industrysList) {
|
||||
industrysTags.value.push(field.split("-").map((el) => parseInt(el)));
|
||||
}
|
||||
// let _key = [];
|
||||
// let _value = [];
|
||||
// for (let i = 0; i < newVal.industrys.length; i++) {
|
||||
// const item = newVal.industrys[i];
|
||||
// _key.push(item.key);
|
||||
// _value.push(item.value);
|
||||
// }
|
||||
// newVal.industrys = _key;
|
||||
// let keyObj = [];
|
||||
// for (let i = 0; i < _key.length; i++) {
|
||||
// keyObj.push([]);
|
||||
// let array = _key[i].split("-");
|
||||
// for (let j = 0; j < array.length; j++) {
|
||||
// keyObj[i].push({
|
||||
// id: array[j],
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
// for (let i = 0; i < _value.length; i++) {
|
||||
// let array = _value[i].split(">");
|
||||
// for (let j = 0; j < array.length; j++) {
|
||||
// keyObj[i][j]["name"] = array[j];
|
||||
// }
|
||||
// }
|
||||
// industrysTags.value = keyObj;
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
defineExpose({
|
||||
validateForm,
|
||||
|
||||
@ -1,76 +1,40 @@
|
||||
<template>
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="value"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
:label-width="labelWidth + 'px'"
|
||||
>
|
||||
<div class="form_title" v-if="showTitle">基本信息</div>
|
||||
|
||||
<el-alert
|
||||
v-if="value.mode == 2"
|
||||
style="margin-bottom: 20px"
|
||||
title="1创新币=1元"
|
||||
type="warning"
|
||||
show-icon
|
||||
:closable="false"
|
||||
></el-alert>
|
||||
|
||||
<el-row v-if="value.mode == 2">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="视频定价:">
|
||||
<el-input v-model="value.title" placeholder="请输入创新币个数">
|
||||
<template #append>创新币</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="免费观看时长:">
|
||||
<el-input v-model="value.title" placeholder="默认视频的1/3时长">
|
||||
<template #append>min</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row v-if="value.mode == 2">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="视频文件:">
|
||||
<FileUpload v-model="value.file2" :limit="1" :fileType="['mp4']" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div class="form_title">
|
||||
<p><b>基本信息</b></p>
|
||||
</div>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="成果名称:" prop="title">
|
||||
<el-form-item label="产品名称:" prop="title">
|
||||
<el-input
|
||||
v-model="value.title"
|
||||
placeholder="请输入成果名称"
|
||||
v-model="form.title"
|
||||
placeholder="请输入产品名称"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<FieldOptions v-model="value" :labelWidth="labelWidth" ref="fieldForm" />
|
||||
<FieldOptions v-model="form" :labelWidth="labelWidth" ref="fieldFormRef" />
|
||||
|
||||
<InputBoxAdd
|
||||
:labelWidth="labelWidth"
|
||||
v-model="value"
|
||||
v-model="form"
|
||||
title="应用客户"
|
||||
placeholder="请输入应用客户"
|
||||
fieldKey="customer"
|
||||
ref="customerForm"
|
||||
fieldKey="customers"
|
||||
ref="customerFormRef"
|
||||
/>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="成果成熟度:" prop="maturity">
|
||||
<el-select
|
||||
v-model="value.maturity"
|
||||
clearable
|
||||
placeholder="请选择成果成熟度"
|
||||
>
|
||||
<el-form-item label="产品成熟度:" prop="maturity">
|
||||
<el-select v-model="form.maturity" clearable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in maturityOptions"
|
||||
:key="item.key"
|
||||
@ -84,12 +48,8 @@
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="成果领先性:" prop="lead_standard">
|
||||
<el-select
|
||||
v-model="value.lead_standard"
|
||||
clearable
|
||||
placeholder="请选择成果领先性"
|
||||
>
|
||||
<el-form-item label="成果领先性:" prop="leadStandard">
|
||||
<el-select v-model="form.leadStandard" clearable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in leadOptions"
|
||||
:key="item.key"
|
||||
@ -105,9 +65,9 @@
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合作模式:">
|
||||
<el-select
|
||||
v-model="value.cooperation_mode"
|
||||
v-model="form.cooperationMode"
|
||||
clearable
|
||||
placeholder="请选择合作模式"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in cooperationOptions"
|
||||
@ -122,18 +82,8 @@
|
||||
</el-row>
|
||||
|
||||
<InputBoxAdd
|
||||
v-if="value.mode == 2"
|
||||
:labelWidth="labelWidth"
|
||||
v-model="value"
|
||||
title="应用场景"
|
||||
placeholder="请输入应用场景"
|
||||
fieldKey="kws"
|
||||
ref="directionsForm"
|
||||
/>
|
||||
|
||||
<InputBoxAdd
|
||||
:labelWidth="labelWidth"
|
||||
v-model="value"
|
||||
v-model="form"
|
||||
title="关键词"
|
||||
placeholder="请输入关键词"
|
||||
fieldKey="keywords"
|
||||
@ -142,26 +92,20 @@
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="成果简介:" prop="description">
|
||||
<el-input
|
||||
v-model="value.description"
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 2, maxRows: 8 }"
|
||||
<el-form-item label="产品简介:" prop="introduce">
|
||||
<wangEditor
|
||||
v-model="form.introduce"
|
||||
min-height="150px"
|
||||
width="100%"
|
||||
ref="introduceRef"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="成果来源:">
|
||||
<Editor v-model="value.introduce" :minHeight="150" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row v-if="value.mode == 1">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="成果图片:" prop="image">
|
||||
<ImageUpload v-model="value.image" :isShowTip="false" :limit="1" />
|
||||
<el-col :span="12">
|
||||
<el-form-item label="产品图片:" prop="image">
|
||||
<ImageUpload v-model="form.image" :limit="1" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -170,21 +114,36 @@
|
||||
</p>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="成熟度证明材料:">
|
||||
<el-form-item label="证明材料:" prop="material">
|
||||
<FileUpload
|
||||
v-model="value.file"
|
||||
v-model="form.material"
|
||||
:limit="1"
|
||||
:fileType="['doc', 'xls', 'ppt', 'txt', 'pdf', 'jpg']"
|
||||
:fileType="['doc', 'xls', 'pdf', 'jpg', 'png', 'zip']"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
<script setup>
|
||||
import CityOptions from "@/views/components/CityOptions";
|
||||
import FieldOptions from "@/views/components/FieldOptions";
|
||||
import InputBoxAdd from "@/views/components/InputBoxAdd";
|
||||
import { reactive } from "vue";
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
const route = useRoute();
|
||||
const data = reactive({
|
||||
form: {},
|
||||
});
|
||||
|
||||
const getAchievementInfo = async () => {
|
||||
|
||||
};
|
||||
</script>
|
||||
|
||||
<!-- <script>
|
||||
export default {
|
||||
components: {
|
||||
CityOptions,
|
||||
@ -245,7 +204,7 @@ export default {
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
</script> -->
|
||||
<style lang="scss" scoped>
|
||||
.form_title {
|
||||
font-weight: 700;
|
||||
@ -262,4 +221,4 @@ export default {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
||||
@ -205,7 +205,7 @@ import InputBoxAdd from "@/views/components/InputBoxAdd";
|
||||
import {
|
||||
getProductApprovalInfo,
|
||||
updateEnterpriseApprovalProduct,
|
||||
} from "../../api/dataApproval/enterpriseProduct";
|
||||
} from "@/api/dataApproval/enterpriseProduct";
|
||||
import {
|
||||
maturityOptions,
|
||||
leadOptions,
|
||||
@ -12,8 +12,8 @@
|
||||
>
|
||||
<!-- <el-radio-button :label="1">已发布</el-radio-button> -->
|
||||
<el-radio-button :label="0">待审核</el-radio-button>
|
||||
<el-radio-button :label="1">已驳回</el-radio-button>
|
||||
<el-radio-button :label="2">已通过</el-radio-button>
|
||||
<el-radio-button :label="1">已通过</el-radio-button>
|
||||
<el-radio-button :label="2">已驳回</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
241
src/views/dataAuditList/achievement/approval.vue
Normal file
241
src/views/dataAuditList/achievement/approval.vue
Normal file
@ -0,0 +1,241 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div style="width: 55%">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="form"
|
||||
:label-width="labelWidth + 'px'"
|
||||
disabled
|
||||
>
|
||||
<div class="form_title">
|
||||
<p><b>基本信息</b></p>
|
||||
</div>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="产品名称:" prop="title">
|
||||
<el-input
|
||||
v-model="form.title"
|
||||
placeholder="请输入产品名称"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<FieldOptions
|
||||
v-model="form"
|
||||
:labelWidth="labelWidth"
|
||||
disabled
|
||||
ref="fieldFormRef"
|
||||
/>
|
||||
|
||||
<InputBoxAdd
|
||||
:labelWidth="labelWidth"
|
||||
disabled
|
||||
v-model="form"
|
||||
title="应用客户"
|
||||
placeholder="请输入应用客户"
|
||||
fieldKey="customers"
|
||||
ref="customerFormRef"
|
||||
/>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="产品成熟度:" prop="maturity">
|
||||
<el-select v-model="form.maturity" clearable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in maturityOptions"
|
||||
:key="item.key"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="成果领先性:" prop="leadStandard">
|
||||
<el-select
|
||||
v-model="form.leadStandard"
|
||||
clearable
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in leadOptions"
|
||||
:key="item.key"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合作模式:">
|
||||
<el-select
|
||||
v-model="form.cooperationMode"
|
||||
clearable
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in cooperationOptions"
|
||||
:key="item.key"
|
||||
:label="item.value"
|
||||
:value="item.key"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<InputBoxAdd
|
||||
:labelWidth="labelWidth"
|
||||
v-model="form"
|
||||
disabled
|
||||
title="关键词"
|
||||
placeholder="请输入关键词"
|
||||
fieldKey="keywords"
|
||||
ref="keywordsForm"
|
||||
/>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="产品简介:" prop="description">
|
||||
<wangEditor
|
||||
readOnly
|
||||
v-model="form.description"
|
||||
min-height="150px"
|
||||
width="100%"
|
||||
ref="introduceRef"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="产品图片:" prop="image">
|
||||
<ImageUpload v-model="form.image" :limit="1" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<p>
|
||||
<b>图片材料上传</b>
|
||||
</p>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<!-- <el-form-item label="证明材料:" prop="material">
|
||||
<FileUpload
|
||||
v-model="form.material"
|
||||
:limit="1"
|
||||
:fileType="['doc', 'xls', 'pdf', 'jpg', 'png', 'zip']"
|
||||
/>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="证明材料:" prop="image">
|
||||
<!-- <ImageUpload v-model="form.image" :limit="1" :disabled="true" /> -->
|
||||
<el-link
|
||||
:disabled="!form.image"
|
||||
type="primary"
|
||||
@click="downloadImage"
|
||||
>下载图片材料</el-link
|
||||
>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<div :style="{ marginLeft: labelWidth + 'px' }">
|
||||
<el-button @click="submitForm('2')">审核拒绝</el-button>
|
||||
<el-button type="primary" @click="submitForm('1')">通过审核</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import CityOptions from "@/views/components/CityOptions";
|
||||
import FieldOptions from "@/views/components/FieldOptions";
|
||||
import InputBoxAdd from "@/views/components/InputBoxAdd";
|
||||
import { reactive, toRefs } from "vue";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import { ElMessage } from "element-plus";
|
||||
import {
|
||||
expertAchievementInfo,
|
||||
updateExpertAchievement,
|
||||
} from "@/api/dataApproval/achivement";
|
||||
import { customDownload } from "@/utils/request";
|
||||
import {
|
||||
maturityOptions,
|
||||
leadOptions,
|
||||
cooperationOptions,
|
||||
} from "@/utils/parameter";
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
const data = reactive({
|
||||
form: {},
|
||||
});
|
||||
const { form } = toRefs(data);
|
||||
|
||||
const labelWidth = ref(120);
|
||||
|
||||
const checkList = reactive([
|
||||
{
|
||||
id: 1,
|
||||
name: "成果推广",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: "关键成果解决",
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: "对接专家院士",
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
name: "上市辅导",
|
||||
},
|
||||
]);
|
||||
const getAchievementInfo = async () => {
|
||||
const resp = await expertAchievementInfo({ id: route.query.id });
|
||||
form.value = resp.data;
|
||||
form.value.keywords = form.value.keyword?.split(",") ?? [];
|
||||
};
|
||||
|
||||
const downloadImage = () => {
|
||||
const filename =
|
||||
form.value.image.split("/")[form.value.image.split("/").length - 1];
|
||||
customDownload(form.value.image, {}, filename);
|
||||
};
|
||||
|
||||
const submitForm = async (status) => {
|
||||
await updateExpertAchievement({ ...form.value, status });
|
||||
let successMessage;
|
||||
switch (status) {
|
||||
case "1":
|
||||
successMessage = "已通过";
|
||||
break;
|
||||
case "2":
|
||||
successMessage = "已驳回";
|
||||
}
|
||||
ElMessage.success(successMessage);
|
||||
router.back();
|
||||
};
|
||||
|
||||
getAchievementInfo();
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.form_title {
|
||||
font-weight: 700;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.el-select,
|
||||
.el-date-editor {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
146
src/views/dataAuditList/achievement/index.vue
Normal file
146
src/views/dataAuditList/achievement/index.vue
Normal file
@ -0,0 +1,146 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!-- 顶部区域 -->
|
||||
|
||||
<el-form inline ref="queryFormRef" :model="queryParams">
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-form-item prop="status">
|
||||
<el-radio-group
|
||||
v-model="queryParams.status"
|
||||
size="small"
|
||||
@change="handleQuery"
|
||||
>
|
||||
<!-- <el-radio-button :label="1">已发布</el-radio-button> -->
|
||||
<el-radio-button :label="0">待审核</el-radio-button>
|
||||
<el-radio-button :label="1">已通过</el-radio-button>
|
||||
<el-radio-button :label="2">已驳回</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="所属站点" prop="tenantId">
|
||||
<SiteOptions v-model="queryParams.tenantId" :site-list="siteList" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="search"
|
||||
size="default"
|
||||
@click="handleQuery"
|
||||
>搜索</el-button
|
||||
>
|
||||
<el-button icon="refresh" size="default" @click="resetQuery"
|
||||
>重置</el-button
|
||||
>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<!-- 表格区域 -->
|
||||
<el-table :data="dataList">
|
||||
<el-table-column
|
||||
label="成果名称"
|
||||
align="center"
|
||||
prop="title"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
label="成果领域"
|
||||
align="center"
|
||||
prop="industryStr"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
label="所属专家"
|
||||
align="center"
|
||||
prop="expertName"
|
||||
></el-table-column>
|
||||
<!-- <el-table-column
|
||||
label="所属研究机构"
|
||||
align="center"
|
||||
prop=""
|
||||
></el-table-column> -->
|
||||
<el-table-column label="站点" align="center">
|
||||
<template #default="{ row }">
|
||||
{{
|
||||
siteList.find((el) => el.id === row.tenantId)?.name ?? "无"
|
||||
}}</template
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="申请时间"
|
||||
align="center"
|
||||
prop="createTime"
|
||||
></el-table-column>
|
||||
<el-table-column label="操作" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-button type="text" @click="approval(row.id)">审批</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { reactive, ref, toRefs } from "vue";
|
||||
import { tenantSelect } from "@/api/subPlatform/tenant";
|
||||
import { expertAchievementList } from "@/api/dataApproval/achivement";
|
||||
import SiteOptions from "@/views/components/SiteOptions";
|
||||
import { useRouter } from "vue-router";
|
||||
const router = useRouter();
|
||||
const data = reactive({
|
||||
queryParams: {
|
||||
status: 0,
|
||||
},
|
||||
});
|
||||
|
||||
const { queryParams } = toRefs(data);
|
||||
|
||||
const dataList = ref([]);
|
||||
const siteList = ref([]);
|
||||
const total = ref(0);
|
||||
// 获取站点列表
|
||||
const getSiteList = async () => {
|
||||
const resp = await tenantSelect();
|
||||
siteList.value = resp.rows;
|
||||
};
|
||||
getSiteList();
|
||||
|
||||
const getList = async () => {
|
||||
const resp = await expertAchievementList(queryParams.value);
|
||||
dataList.value = resp.rows;
|
||||
total.value = resp.total;
|
||||
};
|
||||
|
||||
const handleQuery = () => {
|
||||
queryParams.value.pageNum = 1;
|
||||
getList();
|
||||
};
|
||||
|
||||
// 重置按钮
|
||||
const resetQuery = () => {
|
||||
queryData.value = {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
};
|
||||
getList();
|
||||
};
|
||||
const approval = (id) => {
|
||||
router.push({
|
||||
path: "/auditing/achievement/approval",
|
||||
query: {
|
||||
id,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
handleQuery();
|
||||
</script>
|
||||
<style></style>
|
||||
182
src/views/dataAuditList/demand/approval.vue
Normal file
182
src/views/dataAuditList/demand/approval.vue
Normal file
@ -0,0 +1,182 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div style="width: 55%">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="modelValue"
|
||||
:label-width="labelWidth + 'px'"
|
||||
disabled
|
||||
>
|
||||
<p><b>基本信息</b></p>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="成果需求名称:" prop="title">
|
||||
<el-input v-model="modelValue.title"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<!-- <el-checkbox label="0" @change="handleCheck">其他</el-checkbox> -->
|
||||
<el-form-item label="需求类别:">
|
||||
<el-checkbox-group v-model="modelValue.kinds">
|
||||
<el-checkbox
|
||||
v-for="item in checkList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
<!-- <el-row :gutter="20">
|
||||
<el-col :span="20">
|
||||
<el-input
|
||||
v-model="checkInput"
|
||||
placeholder="请输入需求类别"
|
||||
></el-input>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-button type="primary" @click="addCheck">添加</el-button>
|
||||
</el-col>
|
||||
</el-row> -->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="需求描述:" prop="introduce">
|
||||
<!-- <Editor v-model="modelValue.add" :minHeight="150" /> -->
|
||||
<WangEditor
|
||||
v-model="modelValue.introduce"
|
||||
width="100%"
|
||||
min-height="150px"
|
||||
readOnly
|
||||
></WangEditor>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- <CityOptions
|
||||
v-model="form"
|
||||
:labelWidth="labelWidth"
|
||||
ref="cityForm"
|
||||
/> -->
|
||||
<FieldOptions
|
||||
v-model="modelValue"
|
||||
:labelWidth="labelWidth"
|
||||
disabled
|
||||
ref="fieldFormRef"
|
||||
/>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="成果需求预算:"
|
||||
:prop="modelValue.budgetMode == 1 ? 'budget' : ''"
|
||||
>
|
||||
<el-input
|
||||
v-model="modelValue.budget"
|
||||
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')"
|
||||
placeholder="请输入技术需求预算"
|
||||
>
|
||||
<template #append>万元</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label-width="50px">
|
||||
<el-checkbox
|
||||
false-label="1"
|
||||
true-label="2"
|
||||
v-model="modelValue.budgetMode"
|
||||
>面议</el-checkbox
|
||||
>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="截止时间:" prop="deadline">
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
v-model="modelValue.deadline"
|
||||
type="date"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="请选择截止时间"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="需求联系人:" prop="name">
|
||||
<el-input
|
||||
v-model="modelValue.name"
|
||||
placeholder="请输入需求联系人"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系人手机号:" prop="mobile">
|
||||
<el-input
|
||||
v-model="modelValue.mobile"
|
||||
placeholder="请输入联系人手机号"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<InputBoxAdd
|
||||
:labelWidth="labelWidth"
|
||||
v-model="modelValue"
|
||||
title="想合作的单位及模式"
|
||||
placeholder=""
|
||||
disabled
|
||||
fieldKey="wants"
|
||||
ref="directionsFormRef"
|
||||
/>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<div :style="{ marginLeft: labelWidth + 'px' }">
|
||||
<el-button @click="submitForm('2')">审核拒绝</el-button>
|
||||
<el-button type="primary" @click="submitForm('1')">通过审核</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { updateExpertAchievement } from "@/api/dataApproval/achivement";
|
||||
import WangEditor from "@/components/WangEditor";
|
||||
import FieldOptions from "@/views/components/FieldOptions";
|
||||
import InputBoxAdd from "@/views/components/InputBoxAdd";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { ref, toRefs } from "vue";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
const labelWidth = ref(120);
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
|
||||
const submitForm = async (status) => {
|
||||
await updateExpertAchievement({ ...form.value, status });
|
||||
let successMessage;
|
||||
switch (status) {
|
||||
case "1":
|
||||
successMessage = "已通过";
|
||||
break;
|
||||
case "2":
|
||||
successMessage = "已驳回";
|
||||
}
|
||||
ElMessage.success(successMessage);
|
||||
router.back();
|
||||
};
|
||||
|
||||
const getDemandInfo = async () => {};
|
||||
</script>
|
||||
@ -12,8 +12,8 @@
|
||||
>
|
||||
<!-- <el-radio-button :label="1">已发布</el-radio-button> -->
|
||||
<el-radio-button :label="0">待审核</el-radio-button>
|
||||
<el-radio-button :label="1">已驳回</el-radio-button>
|
||||
<el-radio-button :label="2">已通过</el-radio-button>
|
||||
<el-radio-button :label="1">已通过</el-radio-button>
|
||||
<el-radio-button :label="2">已驳回</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -59,7 +59,7 @@
|
||||
align="center"
|
||||
prop="mobile"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
<!-- <el-table-column
|
||||
label="所属经纪人"
|
||||
align="center"
|
||||
prop=""
|
||||
@ -68,7 +68,7 @@
|
||||
label="经纪人电话"
|
||||
align="center"
|
||||
prop=""
|
||||
></el-table-column>
|
||||
></el-table-column> -->
|
||||
<el-table-column label="站点" align="center" prop=""></el-table-column>
|
||||
<el-table-column
|
||||
label="发布时间"
|
||||
@ -96,12 +96,16 @@
|
||||
/>
|
||||
|
||||
<!-- 审批详情 -->
|
||||
<Edialog :is-show="isShow" v-model="demandForm"></Edialog>
|
||||
<Edialog
|
||||
v-model:is-show="isShow"
|
||||
v-model="demandForm"
|
||||
@update-list="handleQuery"
|
||||
></Edialog>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { businessList } from "@/api/Businessneeds/index.js";
|
||||
import Edialog from "../../views/components/Businessneeds/Approvaldetails.vue";
|
||||
import Edialog from "@/views/components/Businessneeds/Approvaldetails.vue";
|
||||
import SiteOptions from "@/views/components/SiteOptions";
|
||||
import { tenantSelect } from "@/api/subPlatform/tenant";
|
||||
import { ref, toRefs, defineComponent } from "vue";
|
||||
@ -131,6 +135,9 @@ const approval = (row) => {
|
||||
if (!row.kinds) {
|
||||
demandForm.value.kinds = row.kind?.split(",") ?? [];
|
||||
}
|
||||
if (!row.wants) {
|
||||
demandForm.value.wants = row.want?.split(",") ?? [];
|
||||
}
|
||||
// if (!row.industrys) {
|
||||
// demandForm.value.industrys = row.;
|
||||
// }
|
||||
208
src/views/dataAuditList/serviceDemand/approval.vue
Normal file
208
src/views/dataAuditList/serviceDemand/approval.vue
Normal file
@ -0,0 +1,208 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div shadow="always" style="width: 55%">
|
||||
<el-form
|
||||
disabled
|
||||
ref="formRef"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
:label-width="labelWidth + 'px'"
|
||||
>
|
||||
<p><b>基本信息</b></p>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="需求名称:" prop="title">
|
||||
<el-input v-model="form.title"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="需求类别:">
|
||||
<el-checkbox-group v-model="form.kinds">
|
||||
<el-checkbox
|
||||
v-for="item in checkList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
<!-- <el-checkbox label="0" @change="handleCheck">其他</el-checkbox> -->
|
||||
</el-checkbox-group>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="20">
|
||||
<el-input
|
||||
v-model="checkInput"
|
||||
placeholder="请输入需求类别"
|
||||
></el-input>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-button type="primary" @click="addCheck">添加</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="需求描述:" prop="description">
|
||||
<!-- <Editor v-model="form.description" :minHeight="150" /> -->
|
||||
<wangEditor
|
||||
readOnly
|
||||
v-model="form.description"
|
||||
width="100%"
|
||||
min-height="150px"
|
||||
></wangEditor>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<CityOptions
|
||||
disabled
|
||||
v-model="form"
|
||||
:labelWidth="labelWidth"
|
||||
ref="cityFormRef"
|
||||
/>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="需求联系人:" prop="name">
|
||||
<el-input
|
||||
v-model="form.name"
|
||||
placeholder="请输入需求联系人"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系人手机号:" prop="mobile">
|
||||
<el-input
|
||||
v-model="form.mobile"
|
||||
placeholder="请输入联系人手机号"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!--
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="需求提交人:" prop="commitUserName">
|
||||
<el-input
|
||||
v-model="form.commitUserName"
|
||||
placeholder="请输入需求提交人"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="需求提交人手机号:" prop="commitPhone">
|
||||
<el-input
|
||||
v-model="form.commitPhone"
|
||||
placeholder="需求提交人手机号"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row> -->
|
||||
</el-form>
|
||||
</div>
|
||||
<div :style="{ marginLeft: labelWidth + 'px' }">
|
||||
<el-button @click="submitForm('2')">审核拒绝</el-button>
|
||||
<el-button type="primary" @click="submitForm('1')">通过审核</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup name="ServiceDemandApproval">
|
||||
import {
|
||||
getCasDemandInfo,
|
||||
updateCasDemand,
|
||||
} from "@/api/dataApproval/enterpriseServiceDemand";
|
||||
import CityOptions from "@/views/components/CityOptions";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
const data = reactive({
|
||||
form: {
|
||||
check: [],
|
||||
},
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
postCode: undefined,
|
||||
},
|
||||
rules: {
|
||||
title: [{ required: true, message: "需求名称不能为空", trigger: "blur" }],
|
||||
description: [
|
||||
{ required: true, message: "需求描述不能为空", trigger: "blur" },
|
||||
],
|
||||
name: [{ required: true, message: "需求联系人不能为空", trigger: "blur" }],
|
||||
mobile: [
|
||||
{ required: true, message: "联系人手机号不能为空", trigger: "blur" },
|
||||
],
|
||||
username: [
|
||||
{ required: true, message: "需求提交人不能为空", trigger: "blur" },
|
||||
],
|
||||
userPhone: [{ required: true, message: "手机号不能为空", trigger: "blur" }],
|
||||
},
|
||||
});
|
||||
|
||||
const { form, rules } = toRefs(data);
|
||||
|
||||
const labelWidth = 140;
|
||||
const checkList = reactive([
|
||||
{
|
||||
id: 1,
|
||||
name: "成果推广",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: "关键成果解决",
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: "对接专家院士",
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
name: "上市辅导",
|
||||
},
|
||||
]);
|
||||
const checkInput = ref("");
|
||||
const cityFormRef = ref();
|
||||
const formRef = ref();
|
||||
|
||||
const submitForm = async (status) => {
|
||||
await updateCasDemand({ ...form.value, status });
|
||||
let successMessage;
|
||||
switch (status) {
|
||||
case "1":
|
||||
successMessage = "已通过";
|
||||
break;
|
||||
case "2":
|
||||
successMessage = "已驳回";
|
||||
}
|
||||
ElMessage.success(successMessage);
|
||||
router.back();
|
||||
};
|
||||
// 添加需求类别时验证
|
||||
function addCheck() {
|
||||
if (!checkInput.value.trim().length) return ElMessage.error("请输入");
|
||||
const flag = checkList.some((item) => {
|
||||
return item.name.trim() == checkInput.value.trim();
|
||||
});
|
||||
if (!flag) {
|
||||
checkList.push({
|
||||
id: checkList.length + 1,
|
||||
name: checkInput.value,
|
||||
});
|
||||
checkInput.value = "";
|
||||
}
|
||||
}
|
||||
|
||||
if (route.query.id) {
|
||||
getCasDemandInfo(route.query.id).then((resp) => {
|
||||
form.value = resp.data;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
177
src/views/dataAuditList/serviceDemand/index.vue
Normal file
177
src/views/dataAuditList/serviceDemand/index.vue
Normal file
@ -0,0 +1,177 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!-- 顶部区域 -->
|
||||
<el-form inline ref="queryFormRef" :model="queryParams">
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-form-item prop="status">
|
||||
<el-radio-group
|
||||
v-model="queryParams.status"
|
||||
size="small"
|
||||
@change="handleQuery"
|
||||
>
|
||||
<!-- <el-radio-button :label="1">已发布</el-radio-button> -->
|
||||
<el-radio-button :label="0">待审核</el-radio-button>
|
||||
<el-radio-button :label="1">已通过</el-radio-button>
|
||||
<el-radio-button :label="2">已驳回</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="所属站点" prop="tenantId">
|
||||
<SiteOptions v-model="queryParams.tenantId" :site-list="siteList" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="search"
|
||||
size="default"
|
||||
@click="handleQuery"
|
||||
>搜索</el-button
|
||||
>
|
||||
<el-button icon="refresh" size="default" @click="resetQuery"
|
||||
>重置</el-button
|
||||
>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<!-- 表格区域 -->
|
||||
<el-table :data="dataList">
|
||||
<el-table-column label="编号" align="center" prop="id"></el-table-column>
|
||||
<el-table-column
|
||||
label="需求名称"
|
||||
align="center"
|
||||
prop="title"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
label="所属领域"
|
||||
align="center"
|
||||
prop="industryStr"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
label="联系人"
|
||||
align="center"
|
||||
prop="name"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
label="手机"
|
||||
align="center"
|
||||
prop="mobile"
|
||||
></el-table-column>
|
||||
<!-- <el-table-column
|
||||
label="所属经纪人"
|
||||
align="center"
|
||||
prop=""
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
label="经纪人电话"
|
||||
align="center"
|
||||
prop=""
|
||||
></el-table-column> -->
|
||||
<el-table-column label="站点" align="center">
|
||||
<template #default="{ row }">
|
||||
{{
|
||||
siteList.find((el) => el.id === row.tenantId)?.name ?? "无"
|
||||
}}</template
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="发布时间"
|
||||
align="center"
|
||||
prop="createTime"
|
||||
></el-table-column>
|
||||
<!-- <el-table-column
|
||||
label="截止日期"
|
||||
align="center"
|
||||
prop="deadline"
|
||||
></el-table-column> -->
|
||||
<el-table-column label="操作" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-button type="text" @click="approval(row.id)">审批</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { businessList } from "@/api/Businessneeds/index.js";
|
||||
import { listCasDemand } from "../../../api/dataApproval/enterpriseServiceDemand";
|
||||
|
||||
// import Edialog from "@/views/components/Businessneeds/Approvaldetails.vue";
|
||||
import SiteOptions from "@/views/components/SiteOptions";
|
||||
import { tenantSelect } from "@/api/subPlatform/tenant";
|
||||
import { ref, toRefs, defineComponent } from "vue";
|
||||
import { cloneDeep } from "lodash";
|
||||
import { useRouter } from "vue-router";
|
||||
const router = useRouter();
|
||||
const data = reactive({
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
status: 0,
|
||||
},
|
||||
demandForm: {},
|
||||
});
|
||||
const siteList = ref([]);
|
||||
const dataList = ref([]);
|
||||
const total = ref(0);
|
||||
const isShow = ref(false);
|
||||
const { queryParams, demandForm } = toRefs(data);
|
||||
const queryFormRef = ref();
|
||||
const getList = async () => {
|
||||
const resp = await listCasDemand(queryParams.value);
|
||||
dataList.value = resp.rows;
|
||||
total.value = resp.total;
|
||||
};
|
||||
const approval = (id) => {
|
||||
// demandForm.value = cloneDeep(row);
|
||||
// if (!row.kinds) {
|
||||
// demandForm.value.kinds = row.kind?.split(",") ?? [];
|
||||
// }
|
||||
// if (!row.wants) {
|
||||
// demandForm.value.wants = row.want?.split(",") ?? [];
|
||||
// }
|
||||
// // if (!row.industrys) {
|
||||
// // demandForm.value.industrys = row.;
|
||||
// // }
|
||||
// isShow.value = true;
|
||||
router.push({
|
||||
path: "/auditing/serviceDemand/approval",
|
||||
query: {
|
||||
id,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
// 获取站点列表
|
||||
const getSiteList = async () => {
|
||||
const resp = await tenantSelect();
|
||||
siteList.value = resp.rows;
|
||||
};
|
||||
|
||||
const handleQuery = () => {
|
||||
queryParams.value.pageNum = 1;
|
||||
getList();
|
||||
};
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
if (queryFormRef.value) {
|
||||
queryFormRef.value.resetFields();
|
||||
}
|
||||
handleQuery();
|
||||
};
|
||||
|
||||
getSiteList();
|
||||
getList();
|
||||
</script>
|
||||
<style></style>
|
||||
@ -44,11 +44,12 @@ const data = reactive({
|
||||
inviterCode: undefined,
|
||||
url: undefined,
|
||||
industrys: [],
|
||||
industry: "",
|
||||
keywords: [],
|
||||
directions: [],
|
||||
introduce: undefined,
|
||||
license: undefined,
|
||||
workTime:''
|
||||
workTime: "",
|
||||
},
|
||||
});
|
||||
const { form } = toRefs(data);
|
||||
|
||||
@ -115,6 +115,27 @@
|
||||
@click="handleDelete(row.id)"
|
||||
>删除</el-button
|
||||
>
|
||||
<el-button
|
||||
size="small"
|
||||
type="text"
|
||||
icon="edit"
|
||||
@click="openAssignAccount(row.id)"
|
||||
>分配账号</el-button
|
||||
>
|
||||
<el-button
|
||||
size="small"
|
||||
type="text"
|
||||
icon="edit"
|
||||
@click="openResetPassword(row.id)"
|
||||
>重置密码</el-button
|
||||
>
|
||||
<el-button
|
||||
size="small"
|
||||
type="text"
|
||||
icon="edit"
|
||||
@click="handleOpenVip(row.id)"
|
||||
>开通会员</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -123,7 +144,7 @@
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.page_size"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
@ -173,6 +194,102 @@
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
title="分配账号"
|
||||
v-model="showAssignAccount"
|
||||
width="400px"
|
||||
append-to-body
|
||||
>
|
||||
<el-form
|
||||
:model="assignAccountForm"
|
||||
:rules="assignAccoutRules"
|
||||
label-width="80px"
|
||||
ref="assignAccountFormRef"
|
||||
>
|
||||
<el-form-item label="用户名" prop="username">
|
||||
<el-input v-model="assignAccountForm.username"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="密码" prop="password">
|
||||
<el-input
|
||||
v-model="assignAccountForm.password"
|
||||
show-password
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="submitAssignAccount"
|
||||
>确 定</el-button
|
||||
>
|
||||
<el-button @click="closeAssignAccount">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
title="重置密码"
|
||||
v-model="showResetPassword"
|
||||
width="400px"
|
||||
append-to-body
|
||||
>
|
||||
<el-form
|
||||
:model="resetPasswordForm"
|
||||
:rules="assignAccoutRules"
|
||||
label-width="80px"
|
||||
ref="resetPasswordFormRef"
|
||||
>
|
||||
<el-form-item label="密码" prop="password">
|
||||
<el-input
|
||||
v-model="resetPasswordForm.password"
|
||||
show-password
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="submitResetPassword"
|
||||
>确 定</el-button
|
||||
>
|
||||
<el-button @click="closeResetPassword">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
:title="vipForm.id ? `修改会员` : `开通会员`"
|
||||
v-model="showOpenVip"
|
||||
width="400px"
|
||||
append-to-body
|
||||
>
|
||||
<el-form
|
||||
:model="vipForm"
|
||||
:rules="assignAccoutRules"
|
||||
label-width="80px"
|
||||
ref="vipFormRef"
|
||||
>
|
||||
<el-form-item label="会员类型" prop="vipType">
|
||||
<el-radio-group v-model="vipForm.vipType">
|
||||
<el-radio label="1">VIP</el-radio>
|
||||
<el-radio label="2">SVIP</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="到期时间" prop="expireTime">
|
||||
<el-date-picker
|
||||
v-model="vipForm.expireTime"
|
||||
type="datetime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
placeholder="选择到期时间"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="submitVip">确 定</el-button>
|
||||
<el-button @click="closeVip">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -181,7 +298,14 @@ import {
|
||||
companyList,
|
||||
companyExport,
|
||||
companyDelete,
|
||||
allocateAccount,
|
||||
getAccount,
|
||||
restPassword,
|
||||
openCasVip,
|
||||
getCasVip,
|
||||
updateCasVip,
|
||||
} from "@/api/dataList/enterprise";
|
||||
import md5 from "js-md5";
|
||||
import { getToken } from "@/utils/auth";
|
||||
import SiteOptions from "@/views/components/SiteOptions";
|
||||
// import axios from "axios";
|
||||
@ -193,7 +317,7 @@ import { tenantSelect } from "@/api/subPlatform/tenant";
|
||||
import { reactive, ref, toRefs } from "vue";
|
||||
import { useRouter } from "vue-router";
|
||||
import { enterpriseOptions } from "@/utils/parameter";
|
||||
import { ElLoading, ElMessageBox } from "element-plus";
|
||||
import { ElLoading, ElMessage, ElMessageBox } from "element-plus";
|
||||
import request from "@/utils/request";
|
||||
import dayjs from "dayjs";
|
||||
|
||||
@ -201,7 +325,7 @@ const router = useRouter();
|
||||
const data = reactive({
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
page_size: 10,
|
||||
pageSize: 10,
|
||||
examine_status: 2,
|
||||
name: undefined,
|
||||
tenantId: undefined,
|
||||
@ -249,6 +373,132 @@ const handleQuery = () => {
|
||||
queryParams.value.pageNum = 1;
|
||||
getList();
|
||||
};
|
||||
|
||||
const assignAccoutRules = {
|
||||
username: [{ required: true, message: "请输入用户名", trigger: "blur" }],
|
||||
password: [{ required: true, message: "请输入密码", trigger: "blur" }],
|
||||
vipType: [{ required: true, message: "请选择会员类型", trigger: "change" }],
|
||||
expireTime: [
|
||||
{ required: true, message: "请选择到期时间", trigger: "change" },
|
||||
],
|
||||
};
|
||||
const showAssignAccount = ref(false);
|
||||
const assignAccountForm = reactive({
|
||||
username: undefined,
|
||||
password: undefined,
|
||||
});
|
||||
const assignAccountFormRef = ref();
|
||||
const resetPasswordForm = reactive({
|
||||
password: undefined,
|
||||
});
|
||||
const resetPasswordFormRef = ref();
|
||||
const showResetPassword = ref(false);
|
||||
|
||||
const openAssignAccount = async (id) => {
|
||||
resetForm();
|
||||
const { have, data } = await getAccount(id);
|
||||
if (have) {
|
||||
ElMessageBox.alert(`已经存在账号:${data}`, "账号已经存在");
|
||||
} else {
|
||||
assignAccountForm.id = id;
|
||||
showAssignAccount.value = true;
|
||||
}
|
||||
};
|
||||
|
||||
const openResetPassword = async (id) => {
|
||||
resetForm();
|
||||
const { have } = await getAccount(id);
|
||||
if (have) {
|
||||
resetPasswordForm.id = id;
|
||||
showResetPassword.value = true;
|
||||
} else {
|
||||
ElMessageBox.alert(`尚未分配账号,请先分配账号`, "尚未分配账号");
|
||||
}
|
||||
};
|
||||
const resetForm = () => {
|
||||
if (resetPasswordFormRef.value) {
|
||||
resetPasswordFormRef.value.resetFields();
|
||||
}
|
||||
if (assignAccountFormRef.value) {
|
||||
assignAccountFormRef.value.resetFields();
|
||||
}
|
||||
resetPasswordForm.password = undefined;
|
||||
assignAccountForm.username = undefined;
|
||||
assignAccountForm.password = undefined;
|
||||
};
|
||||
const closeResetPassword = () => {
|
||||
resetForm();
|
||||
showResetPassword.value = false;
|
||||
};
|
||||
const closeAssignAccount = () => {
|
||||
resetForm();
|
||||
showAssignAccount.value = false;
|
||||
};
|
||||
|
||||
const submitAssignAccount = async () => {
|
||||
await assignAccountFormRef.value.validate();
|
||||
await allocateAccount({
|
||||
...assignAccountForm,
|
||||
password: md5(assignAccountForm.password),
|
||||
});
|
||||
ElMessage.success("账号分配成功");
|
||||
showAssignAccount.value = false;
|
||||
};
|
||||
|
||||
const submitResetPassword = async () => {
|
||||
await resetPasswordFormRef.value.validate();
|
||||
await restPassword(resetPasswordForm.id, md5(resetPasswordForm.password));
|
||||
ElMessage.success("密码重置成功");
|
||||
showResetPassword.value = false;
|
||||
};
|
||||
|
||||
//TODO:
|
||||
/** 开通vip操作 */
|
||||
const vipData = reactive({
|
||||
vipForm: { userType: "1" },
|
||||
});
|
||||
const { vipForm } = toRefs(vipData);
|
||||
const showOpenVip = ref(false);
|
||||
const vipFormRef = ref();
|
||||
|
||||
const handleOpenVip = async (id) => {
|
||||
resetVipForm();
|
||||
const { have, userId } = await getAccount(id);
|
||||
if (have) {
|
||||
const resp = await getCasVip(userId);
|
||||
if (resp.have) {
|
||||
vipForm.value = resp.data;
|
||||
showOpenVip.value = true;
|
||||
} else {
|
||||
vipForm.value.userId = userId;
|
||||
showOpenVip.value = true;
|
||||
}
|
||||
} else {
|
||||
ElMessageBox.alert(`尚未分配账号,请先分配账号`, "尚未分配账号");
|
||||
}
|
||||
};
|
||||
const submitVip = async () => {
|
||||
await vipFormRef.value.validate();
|
||||
if (vipForm.value.id) {
|
||||
await updateCasVip(vipForm.value);
|
||||
ElMessage.success("会员修改成功");
|
||||
} else {
|
||||
await openCasVip(vipForm.value);
|
||||
ElMessage.success("会员开通成功");
|
||||
}
|
||||
showOpenVip.value = false;
|
||||
};
|
||||
const resetVipForm = () => {
|
||||
vipForm.value.vipType = undefined;
|
||||
vipForm.value.expireTime = undefined;
|
||||
if (vipFormRef.value) {
|
||||
vipFormRef.value.resetFields();
|
||||
}
|
||||
};
|
||||
const closeVip = () => {
|
||||
resetVipForm();
|
||||
showOpenVip.value = false;
|
||||
};
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
dateRange.value = [];
|
||||
@ -300,6 +550,7 @@ const handleFileSuccess = (response, file, fileList) => {
|
||||
);
|
||||
getList();
|
||||
};
|
||||
|
||||
/** 提交上传文件 */
|
||||
function submitFileForm() {
|
||||
uploadRef.value.submit();
|
||||
|
||||
@ -99,6 +99,21 @@
|
||||
@click="handleClaim(row.id)"
|
||||
>已认领专利</el-button
|
||||
>
|
||||
|
||||
<el-button
|
||||
size="small"
|
||||
type="text"
|
||||
icon="edit"
|
||||
@click="openAssignAccount(row.id)"
|
||||
>分配账号</el-button
|
||||
>
|
||||
<el-button
|
||||
size="small"
|
||||
type="text"
|
||||
icon="edit"
|
||||
@click="openResetPassword(row.id)"
|
||||
>重置密码</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -108,7 +123,7 @@
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.page_size"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
@ -158,9 +173,77 @@
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
title="分配账号"
|
||||
v-model="showAssignAccount"
|
||||
width="400px"
|
||||
append-to-body
|
||||
>
|
||||
<el-form
|
||||
:model="assignAccountForm"
|
||||
:rules="assignAccoutRules"
|
||||
label-width="80px"
|
||||
ref="assignAccountFormRef"
|
||||
>
|
||||
<el-form-item label="用户名" prop="username">
|
||||
<el-input v-model="assignAccountForm.username"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="密码" prop="password">
|
||||
<el-input
|
||||
v-model="assignAccountForm.password"
|
||||
show-password
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="submitAssignAccount"
|
||||
>确 定</el-button
|
||||
>
|
||||
<el-button @click="closeAssignAccount">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
title="重置密码"
|
||||
v-model="showResetPassword"
|
||||
width="400px"
|
||||
append-to-body
|
||||
>
|
||||
<el-form
|
||||
:model="resetPasswordForm"
|
||||
:rules="assignAccoutRules"
|
||||
label-width="80px"
|
||||
ref="resetPasswordFormRef"
|
||||
>
|
||||
<el-form-item label="密码" prop="password">
|
||||
<el-input
|
||||
v-model="resetPasswordForm.password"
|
||||
show-password
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="submitResetPassword"
|
||||
>确 定</el-button
|
||||
>
|
||||
<el-button @click="closeResetPassword">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import {
|
||||
// companyDelete,
|
||||
allocateAccount,
|
||||
getAccount,
|
||||
restPassword,
|
||||
} from "@/api/dataList/expert";
|
||||
import md5 from "js-md5";
|
||||
import SiteOptions from "@/views/components/SiteOptions";
|
||||
import { tenantSelect } from "@/api/subPlatform/tenant";
|
||||
import { expertList } from "@/api/expert/expert";
|
||||
@ -168,7 +251,7 @@ import { useRouter } from "vue-router";
|
||||
import { getToken } from "@/utils/auth";
|
||||
import { tansParams, blobValidate } from "@/utils/ruoyi";
|
||||
import FieldOptions from "@/views/components/FieldOptions";
|
||||
import { ElLoading, ElMessageBox } from "element-plus";
|
||||
import { ElLoading, ElMessageBox, ElMessage } from "element-plus";
|
||||
import dayjs from "dayjs";
|
||||
import request from "@/utils/request";
|
||||
const router = useRouter();
|
||||
@ -200,6 +283,85 @@ const upload = reactive({
|
||||
});
|
||||
|
||||
const { queryParams } = toRefs(data);
|
||||
|
||||
const assignAccoutRules = {
|
||||
username: [{ required: true, message: "请输入用户名", trigger: "blur" }],
|
||||
password: [{ required: true, message: "请输入密码", trigger: "blur" }],
|
||||
vipType: [{ required: true, message: "请选择会员类型", trigger: "change" }],
|
||||
expireTime: [
|
||||
{ required: true, message: "请选择到期时间", trigger: "change" },
|
||||
],
|
||||
};
|
||||
const showAssignAccount = ref(false);
|
||||
const assignAccountForm = reactive({
|
||||
username: undefined,
|
||||
password: undefined,
|
||||
});
|
||||
const assignAccountFormRef = ref();
|
||||
const resetPasswordForm = reactive({
|
||||
password: undefined,
|
||||
});
|
||||
const resetPasswordFormRef = ref();
|
||||
const showResetPassword = ref(false);
|
||||
|
||||
const openAssignAccount = async (id) => {
|
||||
resetForm();
|
||||
const { have, data } = await getAccount(id);
|
||||
if (have) {
|
||||
ElMessageBox.alert(`已经存在账号:${data}`, "账号已经存在");
|
||||
} else {
|
||||
assignAccountForm.id = id;
|
||||
showAssignAccount.value = true;
|
||||
}
|
||||
};
|
||||
|
||||
const openResetPassword = async (id) => {
|
||||
resetForm();
|
||||
const { have } = await getAccount(id);
|
||||
if (have) {
|
||||
resetPasswordForm.id = id;
|
||||
showResetPassword.value = true;
|
||||
} else {
|
||||
ElMessageBox.alert(`尚未分配账号,请先分配账号`, "尚未分配账号");
|
||||
}
|
||||
};
|
||||
const resetForm = () => {
|
||||
if (resetPasswordFormRef.value) {
|
||||
resetPasswordFormRef.value.resetFields();
|
||||
}
|
||||
if (assignAccountFormRef.value) {
|
||||
assignAccountFormRef.value.resetFields();
|
||||
}
|
||||
resetPasswordForm.password = undefined;
|
||||
assignAccountForm.username = undefined;
|
||||
assignAccountForm.password = undefined;
|
||||
};
|
||||
const closeResetPassword = () => {
|
||||
resetForm();
|
||||
showResetPassword.value = false;
|
||||
};
|
||||
const closeAssignAccount = () => {
|
||||
resetForm();
|
||||
showAssignAccount.value = false;
|
||||
};
|
||||
|
||||
const submitAssignAccount = async () => {
|
||||
await assignAccountFormRef.value.validate();
|
||||
await allocateAccount({
|
||||
...assignAccountForm,
|
||||
password: md5(assignAccountForm.password),
|
||||
});
|
||||
ElMessage.success("账号分配成功");
|
||||
showAssignAccount.value = false;
|
||||
};
|
||||
|
||||
const submitResetPassword = async () => {
|
||||
await resetPasswordFormRef.value.validate();
|
||||
await restPassword(resetPasswordForm.id, md5(resetPasswordForm.password));
|
||||
ElMessage.success("密码重置成功");
|
||||
showResetPassword.value = false;
|
||||
};
|
||||
|
||||
// 获取站点列表
|
||||
const getSiteList = async () => {
|
||||
const resp = await tenantSelect();
|
||||
|
||||
@ -2,153 +2,195 @@
|
||||
<div class="app-container">
|
||||
<!-- 顶部搜索区域 -->
|
||||
<el-form :model="queryData" :inline="true">
|
||||
<el-form-item>
|
||||
<el-input v-model="queryData.title" placeholder="请输入论文题目" class="m-2" style="width: 300px;"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-button
|
||||
<el-form-item>
|
||||
<el-input
|
||||
v-model="queryData.title"
|
||||
placeholder="请输入论文题目"
|
||||
class="m-2"
|
||||
style="width: 300px"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="search"
|
||||
size="default"
|
||||
@click="handleQuery"
|
||||
>搜索</el-button
|
||||
>
|
||||
<el-button icon="refresh" size="default"
|
||||
@click="resetQuery"
|
||||
>
|
||||
<el-button icon="refresh" size="default" @click="resetQuery"
|
||||
>重置</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
<el-form-item style="float: right;">
|
||||
<el-button type="primary" @click="btnAdd">新增论文</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item style="float: right">
|
||||
<el-button type="primary" @click="btnAdd">新增论文</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<!-- 表格区域 -->
|
||||
<el-table :data="dataList">
|
||||
<el-table-column prop="title" label="论文题目" align="center"/>
|
||||
<el-table-column prop="ext" label="引用格式" align="center"/>
|
||||
<el-table-column prop="author" label="作者" align="center"/>
|
||||
<el-table-column prop="title" label="论文题目" align="center" />
|
||||
<el-table-column prop="ext" label="引用格式" align="center" />
|
||||
<el-table-column prop="author" label="作者" align="center" />
|
||||
<el-table-column prop="tags" label="关键词" align="center">
|
||||
<template #default="{row}">
|
||||
{{row.tags}}
|
||||
<template #default="{ row }">
|
||||
{{ row.tags }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="publishTime" label="出版日期" align="center"/>
|
||||
<el-table-column prop="publishTime" label="出版日期" align="center" />
|
||||
<el-table-column prop="" label="操作" align="center">
|
||||
<template #default="{row}">
|
||||
<el-button
|
||||
size="small"
|
||||
type="text"
|
||||
@click="editBtn(row.id)"
|
||||
<template #default="{ row }">
|
||||
<el-button size="small" type="text" @click="editBtn(row.id)"
|
||||
>编辑</el-button
|
||||
>
|
||||
<el-button
|
||||
size="small"
|
||||
type="text"
|
||||
@click="delList(row.id)"
|
||||
<el-button size="small" type="text" @click="delList(row.id)"
|
||||
>删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页器 -->
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryData.pageNum"
|
||||
v-model:limit="queryData.page_size"
|
||||
@pagination="getList"
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryData.pageNum"
|
||||
v-model:limit="queryData.page_size"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 弹出框 -->
|
||||
<el-dialog :title="formData.id?'编辑论文':'新增论文'" v-model="isShow" @close="close">
|
||||
<el-dialog
|
||||
:title="formData.id ? '编辑论文' : '新增论文'"
|
||||
v-model="isShow"
|
||||
@close="close"
|
||||
>
|
||||
<el-form :model="formData" label-width="100px">
|
||||
<el-form-item label="论文题目">
|
||||
<el-input v-model="formData.title" placeholder="请输入论文题目"></el-input>
|
||||
<el-input
|
||||
v-model="formData.title"
|
||||
placeholder="请输入论文题目"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="引用格式">
|
||||
<el-input v-model="formData.ext" placeholder="请输入引用格式"></el-input>
|
||||
<el-input
|
||||
v-model="formData.ext"
|
||||
placeholder="请输入引用格式"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="作者">
|
||||
<el-input v-model="formData.author" placeholder="请输入作者"></el-input>
|
||||
<el-input
|
||||
v-model="formData.author"
|
||||
placeholder="请输入作者"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="出版日期">
|
||||
<el-input v-model="formData.publishTime" placeholder="请输入出版日期"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="标签">
|
||||
<template #default="{row}">
|
||||
<el-input style="width: 88%;margin-right: 5px;" v-model="formData.tags" placeholder="多个标签(请用','分割)"></el-input><el-button type="primary" style="float: right;" @click="addTag">确认</el-button>
|
||||
<el-row>
|
||||
<el-tag type="" closable v-for="val in tags" @close="handleClose(val)">{{val}}</el-tag>
|
||||
</el-row>
|
||||
</template>
|
||||
<el-input
|
||||
v-model="formData.publishTime"
|
||||
placeholder="请输入出版日期"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<!-- :labelWidth="labelWidth" -->
|
||||
<InputBoxAdd
|
||||
:labelWidth="100"
|
||||
v-model="formData"
|
||||
title="标签"
|
||||
fieldKey="tagsList"
|
||||
/>
|
||||
<!-- <el-form-item label="标签">
|
||||
<template #default="{ row }">
|
||||
<el-input
|
||||
style="width: 88%; margin-right: 5px"
|
||||
v-model="formData.tags"
|
||||
placeholder="多个标签(请用','分割)"
|
||||
></el-input
|
||||
><el-button type="primary" style="float: right" @click="addTag"
|
||||
>确认</el-button
|
||||
>
|
||||
<el-row>
|
||||
<el-tag
|
||||
type=""
|
||||
closable
|
||||
v-for="val in tags"
|
||||
@close="handleClose(val)"
|
||||
>{{ val }}</el-tag
|
||||
>
|
||||
</el-row>
|
||||
</template>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="摘要">
|
||||
<el-input
|
||||
v-model="formData.remark"
|
||||
:rows="4"
|
||||
type="textarea"
|
||||
placeholder="请输入摘要"
|
||||
v-model="formData.remark"
|
||||
:rows="4"
|
||||
type="textarea"
|
||||
placeholder="请输入摘要"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button type="" @click="close">取消</el-button>
|
||||
<el-button type="primary" v-if="formData.id" @click="btnPut">修改</el-button>
|
||||
<el-button type="primary" v-if="formData.id" @click="btnPut"
|
||||
>修改</el-button
|
||||
>
|
||||
<el-button type="primary" v-else @click="btnReadd">保存</el-button>
|
||||
</el-row>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
<script setup>
|
||||
import {expertList,delItem,addItem,editItem,rebtnItem} from '@/api/thesis/index'
|
||||
import {ElMessageBox,ElMessage } from 'element-plus'
|
||||
import { reactive,ref,toRefs } from 'vue';
|
||||
const data=reactive({
|
||||
queryData:{
|
||||
pageNum:1,
|
||||
pageSize:10
|
||||
}
|
||||
})
|
||||
const form=reactive({
|
||||
formData:{
|
||||
title:'',
|
||||
ext:'',
|
||||
author:'',
|
||||
publishTime:'',
|
||||
tags:'',
|
||||
remark:''
|
||||
}
|
||||
})
|
||||
const {formData}=toRefs(form)
|
||||
const dataList=ref([])
|
||||
const total=ref(0)
|
||||
const isShow=ref(false)
|
||||
const {queryData}=toRefs(data)
|
||||
const tags=ref([])
|
||||
import {
|
||||
expertList,
|
||||
delItem,
|
||||
addItem,
|
||||
editItem,
|
||||
rebtnItem,
|
||||
} from "@/api/thesis/index";
|
||||
import InputBoxAdd from "@/views/components/InputBoxAdd";
|
||||
import { ElMessageBox, ElMessage } from "element-plus";
|
||||
import { reactive, ref, toRefs } from "vue";
|
||||
const data = reactive({
|
||||
queryData: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
},
|
||||
});
|
||||
const form = reactive({
|
||||
formData: {
|
||||
title: "",
|
||||
ext: "",
|
||||
author: "",
|
||||
publishTime: "",
|
||||
tags: "",
|
||||
remark: "",
|
||||
},
|
||||
});
|
||||
const { formData } = toRefs(form);
|
||||
const dataList = ref([]);
|
||||
const total = ref(0);
|
||||
const isShow = ref(false);
|
||||
const { queryData } = toRefs(data);
|
||||
const tags = ref([]);
|
||||
// 获取论文列表
|
||||
const getList=async ()=>{
|
||||
const res =await expertList(queryData.value)
|
||||
dataList.value=res.rows
|
||||
total.value=res.total
|
||||
}
|
||||
const getList = async () => {
|
||||
const res = await expertList(queryData.value);
|
||||
dataList.value = res.rows;
|
||||
total.value = res.total;
|
||||
};
|
||||
// 搜索查询
|
||||
const handleQuery=()=>{
|
||||
const handleQuery = () => {
|
||||
getList(queryData.value);
|
||||
}
|
||||
};
|
||||
// 重置按钮
|
||||
const resetQuery = () => {
|
||||
queryData.value={
|
||||
pageNum:1,
|
||||
pageSize:10,
|
||||
title:''
|
||||
}
|
||||
getList()
|
||||
queryData.value = {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
title: "",
|
||||
};
|
||||
getList();
|
||||
};
|
||||
// 删除按钮
|
||||
const delList=async (id)=>{
|
||||
const delList = async (id) => {
|
||||
ElMessageBox.confirm(`是否确认删除编号为${id}的数据项?`)
|
||||
.then(async () => {
|
||||
await delItem(id);
|
||||
@ -156,50 +198,54 @@ const delList=async (id)=>{
|
||||
ElMessage.success("删除成功");
|
||||
})
|
||||
.catch(() => {});
|
||||
getList()
|
||||
}
|
||||
getList();
|
||||
};
|
||||
// 新增功能
|
||||
const btnAdd=()=>{
|
||||
isShow.value=true
|
||||
}
|
||||
const btnAdd = () => {
|
||||
formData.value.tagsList = [];
|
||||
isShow.value = true;
|
||||
};
|
||||
// 确认添加标签
|
||||
const addTag=()=>{
|
||||
if(!formData.value.tags) return
|
||||
tags.value.push(formData.value.tags)
|
||||
formData.value.tags=''
|
||||
}
|
||||
const addTag = () => {
|
||||
if (!formData.value.tags) return;
|
||||
tags.value.push(formData.value.tags);
|
||||
formData.value.tags = "";
|
||||
};
|
||||
// 删除标签
|
||||
const handleClose=(val)=>{
|
||||
tags.value.splice(tags.value.indexOf(val), 1)
|
||||
}
|
||||
const handleClose = (val) => {
|
||||
tags.value.splice(tags.value.indexOf(val), 1);
|
||||
};
|
||||
// 添加/编辑
|
||||
const btnReadd=async ()=>{
|
||||
formData.value.tags=tags.value.join(',')
|
||||
await addItem(formData.value)
|
||||
ElMessage.success('添加成功')
|
||||
getList()
|
||||
isShow.value=false
|
||||
}
|
||||
const btnReadd = async () => {
|
||||
formData.value.tags = formData.value.tagsList.join(",");
|
||||
await addItem(formData.value);
|
||||
ElMessage.success("添加成功");
|
||||
getList();
|
||||
isShow.value = false;
|
||||
};
|
||||
// 修改
|
||||
const btnPut=async ()=>{
|
||||
formData.value.tags=tags.value.join(',')
|
||||
await rebtnItem(formData.value)
|
||||
ElMessage.success('修改成功')
|
||||
getList()
|
||||
isShow.value=false
|
||||
}
|
||||
const btnPut = async () => {
|
||||
formData.value.tags = formData.value.tagsList.join(",");
|
||||
await rebtnItem(formData.value);
|
||||
ElMessage.success("修改成功");
|
||||
getList();
|
||||
isShow.value = false;
|
||||
};
|
||||
// 编辑按钮
|
||||
const editBtn=async (id)=>{
|
||||
const data = await editItem(id)
|
||||
formData.value=data.data
|
||||
tags.value=formData.value.tags.split(',')
|
||||
formData.value.tags=''
|
||||
isShow.value=true
|
||||
}
|
||||
const editBtn = async (id) => {
|
||||
const resp = await editItem(id);
|
||||
formData.value = resp.data;
|
||||
formData.value.tagsList = formData.value.tags
|
||||
? formData.value.tags.split(",")
|
||||
: [];
|
||||
tags.value = formData.value.tags && formData.value.tags.split(",");
|
||||
formData.value.tags = "";
|
||||
isShow.value = true;
|
||||
};
|
||||
// 弹框关闭时间
|
||||
const close=()=>{
|
||||
formData.value={}
|
||||
isShow.value=false
|
||||
}
|
||||
getList()
|
||||
</script>
|
||||
const close = () => {
|
||||
formData.value = {};
|
||||
isShow.value = false;
|
||||
};
|
||||
getList();
|
||||
</script>
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
<div class="app-container">
|
||||
<div style="width: 50%">
|
||||
<ExpertForm
|
||||
:isAdd="false"
|
||||
v-model="form"
|
||||
:showTitle="true"
|
||||
:formType="formType"
|
||||
@ -9,8 +10,10 @@
|
||||
ref="expertFormRef"
|
||||
/>
|
||||
</div>
|
||||
<el-button @click="submitForm('2')">拒绝</el-button>
|
||||
<el-button type="primary" @click="submitForm('1')">通过</el-button>
|
||||
<div :style="{ marginLeft: labelWidth + 'px' }">
|
||||
<el-button @click="submitForm('2')">审核拒绝</el-button>
|
||||
<el-button type="primary" @click="submitForm('1')">通过审核</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@ -51,10 +51,15 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="education" label="学历" align="center" />
|
||||
<el-table-column prop="introduce" label="个人备注" align="center" />
|
||||
<el-table-column
|
||||
prop="introduce"
|
||||
show-overflow-tooltip
|
||||
label="个人备注"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column prop="school" label="毕业院校" align="center" />
|
||||
<el-table-column prop="job" label="职务" align="center" />
|
||||
<el-table-column prop="" label="站点" align="center">
|
||||
<el-table-column prop="post" label="职务" align="center" />
|
||||
<el-table-column label="站点" align="center">
|
||||
<template #default="{ row }">
|
||||
{{ siteList.find((el) => el.id === row.tenantId)?.name ?? "无" }}
|
||||
</template>
|
||||
|
||||
@ -109,11 +109,11 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="活动分类" align="center" show-overflow-tooltip>
|
||||
<template #default="{ row }"> {{ row.industry }}</template>
|
||||
<template #default="{ row }"> {{ row.industryName }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="人数上限" prop="maxNumber" align="center" />
|
||||
<el-table-column label="报名费用" prop="amount" align="center" />
|
||||
<el-table-column label="已报名" prop="join_count" align="center">
|
||||
<!-- <el-table-column label="已报名" prop="join_count" align="center">
|
||||
<template #default="{ row }">
|
||||
<router-link
|
||||
:to="{
|
||||
@ -124,7 +124,7 @@
|
||||
<el-link type="primary">{{ row.joinCount }}</el-link>
|
||||
</router-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column> -->
|
||||
<el-table-column label="站点" align="center">
|
||||
<template #default="{ row }">
|
||||
{{ siteList.find((el) => el.id === row.tenantId)?.name ?? "无" }}
|
||||
@ -169,7 +169,7 @@
|
||||
@pagination="getList"
|
||||
/>
|
||||
<!-- 添加或修改对话框 -->
|
||||
<el-dialog :title="title" v-model="showEditDialog" width="35%">
|
||||
<el-dialog :title="title" v-model="showEditDialog" width="55%">
|
||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
|
||||
<el-form-item label="所属站点" prop="tenantId">
|
||||
<SiteOptions v-model="form.tenantId" :site-list="siteList" />
|
||||
@ -189,7 +189,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="开始时间:" prop="beginTime">
|
||||
<el-date-picker
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
v-model="form.beginTime"
|
||||
type="datetime"
|
||||
placeholder="选择开始时间"
|
||||
@ -198,7 +198,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="结束时间:" prop="finishTime">
|
||||
<el-date-picker
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
v-model="form.finishTime"
|
||||
type="datetime"
|
||||
placeholder="选择结束时间"
|
||||
@ -207,14 +207,15 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="截止时间:" prop="joinDeadline">
|
||||
<el-date-picker
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
v-model="form.joinDeadline"
|
||||
type="datetime"
|
||||
placeholder="选择截止时间"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="地点:" required>
|
||||
<CityOptions v-model="form" />
|
||||
<!-- <el-form-item label="地点:" required>
|
||||
<el-row type="flex" justify="space-between" :gutter="10">
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="province">
|
||||
@ -273,11 +274,12 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="详细地址:" prop="address">
|
||||
<el-input v-model="form.address" placeholder="请输入详细地址" />
|
||||
</el-form-item>
|
||||
<!-- <FieldOptions v-model="form" /> -->
|
||||
<FieldOptions v-model="form" />
|
||||
|
||||
<!-- <el-form-item label="活动分类:" required>
|
||||
<el-row type="flex" justify="space-between">
|
||||
<el-col :span="8">
|
||||
@ -336,15 +338,10 @@
|
||||
</el-row>
|
||||
</el-form-item> -->
|
||||
|
||||
<el-form-item label="通知人群:" prop="notifyCrowd">
|
||||
<el-select v-model="form.notifyCrowd" multiple placeholder="请选择">
|
||||
<el-option
|
||||
v-for="(key, value) in identityList"
|
||||
:key="value"
|
||||
:label="key"
|
||||
:value="value"
|
||||
>
|
||||
</el-option>
|
||||
<el-form-item label="通知人群:" prop="notifyCrowds">
|
||||
<el-select v-model="form.notifyCrowds" multiple placeholder="请选择">
|
||||
<el-option label="企业" value="1"> </el-option>
|
||||
<el-option label="专家" value="2"> </el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="报名人数上限:" prop="maxNumber">
|
||||
@ -382,6 +379,8 @@
|
||||
</template>
|
||||
|
||||
<script setup name="Active">
|
||||
// import SiteOptions from "@/views/components/SiteOptions";
|
||||
import CityOptions from "../../../components/CityOptions";
|
||||
import {
|
||||
activityList,
|
||||
activityAdd,
|
||||
@ -398,6 +397,7 @@ import {
|
||||
cityList,
|
||||
districtList,
|
||||
} from "@/api/config";
|
||||
import FieldOptions from "@/views/components/FieldOptions";
|
||||
// import { cloneDeep } from "lodash";
|
||||
import { reactive, toRefs } from "vue";
|
||||
// import { constants } from "buffer";
|
||||
@ -423,7 +423,14 @@ const field1SelectList = ref([]);
|
||||
const field2SelectList = ref([]);
|
||||
const field3SelectList = ref([]);
|
||||
// 人群类型
|
||||
const identityList = ref([]);
|
||||
const identityList = ref([
|
||||
{
|
||||
1: "企业",
|
||||
},
|
||||
{
|
||||
2: "专家",
|
||||
},
|
||||
]);
|
||||
// 表单参数
|
||||
const data = reactive({
|
||||
queryParams: {
|
||||
@ -476,7 +483,7 @@ const data = reactive({
|
||||
trigger: "change",
|
||||
},
|
||||
],
|
||||
notifyCrowd: [
|
||||
notifyCrowds: [
|
||||
{
|
||||
type: "array",
|
||||
required: true,
|
||||
@ -533,7 +540,7 @@ const reset = () => {
|
||||
tenantId: undefined,
|
||||
title: undefined,
|
||||
industrys: [],
|
||||
notifyCrowd: [],
|
||||
// notifyCrowd: [],
|
||||
maxNumber: 0,
|
||||
isHome: 1,
|
||||
};
|
||||
@ -621,12 +628,14 @@ const handleUpdate = async (row) => {
|
||||
reset();
|
||||
const resp = await activityDetail(row.id);
|
||||
const formData = resp.data;
|
||||
formData.notifyCrowds = formData.notifyCrowd?.split(",") ?? [];
|
||||
formData.industrys = formData.industryName?.split(",") ?? [];
|
||||
form.value = formData;
|
||||
showEditDialog.value = true;
|
||||
title.value = "修改";
|
||||
};
|
||||
|
||||
const submitForm = () => {
|
||||
const submitForm = async () => {
|
||||
// let notifys = 0;
|
||||
// form.value.notifyCrowd.map((item) => {
|
||||
// notifys = notifys | (item - 0);
|
||||
@ -634,23 +643,20 @@ const submitForm = () => {
|
||||
// let formData = cloneDeep(form.value);
|
||||
// formData.notifyCrowd = notifys;
|
||||
// formData.industrys = [form.value.industrys.join("-")];
|
||||
this.$refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
if (formData.id != undefined) {
|
||||
activityEdit(formData).then((response) => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
activityAdd(formData).then((response) => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
await formRef.value.validate();
|
||||
if (form.value.id != undefined) {
|
||||
activityEdit(form.value).then((response) => {
|
||||
ElMessage.success("修改成功");
|
||||
showEditDialog.value = false;
|
||||
getList();
|
||||
});
|
||||
} else {
|
||||
activityAdd(form.value).then((response) => {
|
||||
ElMessage.success("新增成功");
|
||||
showEditDialog.value = false;
|
||||
getList();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/** 删除按钮操作 */
|
||||
@ -700,7 +706,7 @@ export default {
|
||||
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
getList();
|
||||
areaList().then((res) => {
|
||||
this.provinceSelectList = res.data;
|
||||
});
|
||||
|
||||
@ -31,8 +31,8 @@ export default defineConfig(({ mode, command }) => {
|
||||
proxy: {
|
||||
// https://cn.vitejs.dev/config/#server-proxy
|
||||
"/dev-api": {
|
||||
// target: 'http://120.26.107.74:1618',
|
||||
target: "http://101.34.131.16:1618",
|
||||
target: 'http://192.168.110.10:1618',
|
||||
// target: "http://101.34.131.16:1618",
|
||||
changeOrigin: true,
|
||||
rewrite: (p) => p.replace(/^\/dev-api/, ""),
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user