bug fixed

This commit is contained in:
cxc
2022-10-31 17:45:39 +08:00
parent fd5e278fa7
commit d2163317fe
31 changed files with 1946 additions and 443 deletions

BIN
admin.zip Normal file

Binary file not shown.

View 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
})

View 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,
});

View File

@ -0,0 +1,8 @@
import request from '@/utils/request'
// 修改企业技术需求审核
export const updateTechnologyDemand = (data) => request({
url: "/business/dataReview/updateTechnologyDemand",
method: 'POST',
data
})

View File

@ -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
});
}

View File

@ -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",
});
}

View File

@ -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
})
}

View File

@ -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) => {

View File

@ -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>

View File

@ -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("修改成功");

View File

@ -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>

View File

@ -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,

View File

@ -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"

View File

@ -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,

View File

@ -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>

View File

@ -205,7 +205,7 @@ import InputBoxAdd from "@/views/components/InputBoxAdd";
import {
getProductApprovalInfo,
updateEnterpriseApprovalProduct,
} from "../../api/dataApproval/enterpriseProduct";
} from "@/api/dataApproval/enterpriseProduct";
import {
maturityOptions,
leadOptions,

View File

@ -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>

View 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>

View 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>

View 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>

View File

@ -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.;
// }

View 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>

View 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>

View File

@ -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);

View File

@ -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();

View File

@ -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();

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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;
});

View File

@ -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/, ""),
},