需求省市区

This commit is contained in:
cxc
2022-11-22 17:31:02 +08:00
parent 7dc27a03ea
commit 28808f6024
18 changed files with 452 additions and 95 deletions

View File

@ -0,0 +1,25 @@
import request from "@/utils/request";
// 活动报名
export function signUpActivity(data) {
return request({
url: "/app/activity",
method: "post",
data,
});
}
// 活动列表
export const activitysList = (params) => {
return request({
url: "/app/getActivitys",
method: "GET",
params,
});
};
// 活动详情
export const activityDetail = (id) => {
return request({
url: `/app/getActivity/${id}`,
method: "GET",
});
};

View File

@ -122,16 +122,18 @@ const submitPersonalInfo = async () => {
const submitEnterpriseForm = async (status) => { const submitEnterpriseForm = async (status) => {
const enterpriseFormValid = await enterpriseFormRef.value.validateForm(); const enterpriseFormValid = await enterpriseFormRef.value.validateForm();
PersonalInfoFormRef.value.validate(async (valid) => { // PersonalInfoFormRef.value.validate(
if (enterpriseFormValid && valid) { // async (valid) => {
await updateEnterprise(enterpriseInfoForm.value); if (enterpriseFormValid) {
ElMessage.success("更新企业信息成功"); await updateEnterprise(enterpriseInfoForm.value);
const { data } = await getInfo(); ElMessage.success("更新企业信息成功");
enterpriseInfoForm.value = data.enterprise ?? {}; const { data } = await getInfo();
} else { enterpriseInfoForm.value = data.enterprise ?? {};
console.log("校验未通过"); } else {
} console.log("校验未通过");
}); }
// };
// );
}; };
getBasicInfo(); getBasicInfo();

View File

@ -94,6 +94,7 @@ const data = reactive({
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
notifyCrowd: "1",
title: undefined, title: undefined,
status: undefined, status: undefined,
}, },

View File

@ -111,7 +111,7 @@
</template> </template>
<script setup> <script setup>
// import { insertDemand } from "@/api/admin/enterprise"; // import { insertDemand } from "@/api/admin/enterprise";
import tab from "../../../../plugins/tab"; import tab from "@/plugins/tab";
import { import {
insertDemand, insertDemand,
getDemand, getDemand,
@ -128,7 +128,7 @@ const route = useRoute();
const data = reactive({ const data = reactive({
form: { form: {
check: [], check: [],
status: 1, status: 0,
}, },
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -173,21 +173,22 @@ const checkList = reactive([
}, },
]); ]);
const checkInput = ref(""); const checkInput = ref("");
const cityFormRef = ref(); // const cityFormRef = ref();
const formRef = ref(); const formRef = ref();
const submitForm = () => { const submitForm = () => {
formRef.value.validate(async (valid) => { formRef.value.validate(async (valid) => {
const cityFormValid = cityFormRef.value.validateForm(); // 城市 // const cityFormValid = cityFormRef.value.validateForm(); // 城市
if (valid && cityFormValid) { if (valid) {
if (form.value.id != undefined) { if (form.value.id != undefined) {
await updateDemand(form.value); await updateDemand(form.value);
ElMessage.success("修改成功"); ElMessage.success("修改成功");
router.back(); // router.back();
} else { } else {
await insertDemand(form.value); await insertDemand(form.value);
ElMessage.success("新增服务需求成功"); ElMessage.success("新增服务需求成功");
router.back(); // router.back();
} }
backToList();
} }
}); });
}; };
@ -230,7 +231,7 @@ onMounted(() => {
} else { } else {
form.value = { form.value = {
check: [], check: [],
status: 1, status: 0,
}; };
if (formRef.value) { if (formRef.value) {
formRef.value.resetFields(); formRef.value.resetFields();

View File

@ -58,16 +58,16 @@
</el-col> </el-col>
</el-row> </el-row>
<FieldOptions <field-options
v-model="form" v-model="form"
:labelWidth="labelWidth" :labelWidth="labelWidth"
ref="fieldFormRef" ref="fieldFormRef"
/> />
<CityOptions <city-options
v-model="form" v-model="form"
:labelWidth="labelWidth" :labelWidth="labelWidth"
ref="cityFormRef" ref="cityFormRef"
></CityOptions> ></city-options>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
@ -124,6 +124,7 @@
<el-form-item label="联系人手机号:" prop="mobile"> <el-form-item label="联系人手机号:" prop="mobile">
<el-input <el-input
v-model="form.mobile" v-model="form.mobile"
maxlength="11"
placeholder="请输入联系人手机号" placeholder="请输入联系人手机号"
></el-input> ></el-input>
</el-form-item> </el-form-item>
@ -151,7 +152,7 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<InputBoxAdd <input-box-add
class="cooperation-mode" class="cooperation-mode"
:labelWidth="labelWidth" :labelWidth="labelWidth"
v-model="form" v-model="form"
@ -177,6 +178,7 @@
<script setup> <script setup>
// import { expert } from "@/api/identity/index"; // import { expert } from "@/api/identity/index";
// import { insertTechnologyDemand } from "@/api/admin/enterprise"; // import { insertTechnologyDemand } from "@/api/admin/enterprise";
import tab from "@/plugins/tab";
import CityOptions from "@/views/components/CityOptions"; import CityOptions from "@/views/components/CityOptions";
import FieldOptions from "@/views/components/FieldOptions"; import FieldOptions from "@/views/components/FieldOptions";
import InputBoxAdd from "@/views/components/InputBoxAdd"; import InputBoxAdd from "@/views/components/InputBoxAdd";
@ -207,6 +209,11 @@ const data = reactive({
name: [{ required: true, message: "需求联系人不能为空", trigger: "blur" }], name: [{ required: true, message: "需求联系人不能为空", trigger: "blur" }],
mobile: [ mobile: [
{ required: true, message: "联系人手机号不能为空", trigger: "blur" }, { required: true, message: "联系人手机号不能为空", trigger: "blur" },
{
pattern: /^1[3456789]\d{9}$/,
message: "手机号格式不正确",
trigger: "blur",
},
], ],
commitUserName: [ commitUserName: [
{ required: true, message: "需求提交人不能为空", trigger: "blur" }, { required: true, message: "需求提交人不能为空", trigger: "blur" },
@ -276,7 +283,7 @@ const submitForm = async (status) => {
await insertTechnologyDemand(form.value); await insertTechnologyDemand(form.value);
ElMessage.success("新增企业需求成功"); ElMessage.success("新增企业需求成功");
} }
router.go(-1); backToList();
} else { } else {
console.log("校验未通过"); console.log("校验未通过");
} }
@ -316,6 +323,11 @@ function addCheck() {
checkInput.value = ""; checkInput.value = "";
} }
} }
// 返回技术需求列表
const backToList = () => {
tab.closeOpenPage({ path: "/demand/technology" });
};
onMounted(() => { onMounted(() => {
formRef.value.resetFields(); formRef.value.resetFields();

View File

@ -19,7 +19,8 @@
> >
<el-radio-button :label="0">待受理</el-radio-button> <el-radio-button :label="0">待受理</el-radio-button>
<el-radio-button :label="1">已受理</el-radio-button> <el-radio-button :label="1">已受理</el-radio-button>
<el-radio-button :label="2">已结束</el-radio-button> <el-radio-button :label="2">已驳回</el-radio-button>
<el-radio-button :label="4">已结束</el-radio-button>
</el-radio-group> </el-radio-group>
<el-table v-loading="loading" :data="dataList" style="margin-top: 20px"> <el-table v-loading="loading" :data="dataList" style="margin-top: 20px">
@ -43,13 +44,13 @@
align="center" align="center"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
> >
<template #default="scope"> <template #default="{ row }">
<el-button <el-button
v-if="queryParams.type == 2" v-if="queryParams.type == 2"
size="small" size="small"
type="text" type="text"
icon="Delete" icon="Delete"
@click="handleDelete(scope.row.id)" @click="handleDelete(row.id)"
>删除</el-button >删除</el-button
> >
<el-button <el-button
@ -57,7 +58,7 @@
size="small" size="small"
type="text" type="text"
icon="Close" icon="Close"
@click="handleDelete(scope.row.id)" @click="handleDelete(row.id)"
>取消发布</el-button >取消发布</el-button
> >
<el-button <el-button
@ -65,9 +66,16 @@
size="small" size="small"
type="text" type="text"
icon="View" icon="View"
@click="handleEdit(scope.row.id)" @click="handleEdit(row.id)"
>查看</el-button >查看</el-button
> >
<el-button
size="small"
type="text"
icon="View"
@click="complete(row.id)"
>完成</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -84,6 +92,8 @@
<script setup> <script setup>
import { demandList } from "@/api/admin/enterprise"; import { demandList } from "@/api/admin/enterprise";
import { updateDemand } from "@/api/admin/enterprise/demand";
import { ElMessage, ElMessageBox } from "element-plus";
import { onActivated } from "vue"; import { onActivated } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
@ -151,20 +161,31 @@ function resetQuery() {
} }
/** 删除按钮操作 */ /** 删除按钮操作 */
function handleDelete(id) { function handleDelete(id) {
proxy.$modal ElMessageBox.confirm('是否确认删除订单号为"' + id + '"的数据项?')
.confirm('是否确认删除订单号为"' + id + '"的数据项?')
.then(function () { .then(function () {
return demandDelete(postIds); return demandDelete(postIds);
}) })
.then(() => { .then(() => {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); ElMessage.success("删除成功");
}) })
.catch(() => {}); .catch(() => {});
} }
function handleEdit(id) { function handleEdit(id) {
router.push({ path: "./releaseService", query: { id } }); router.push({ path: "./releaseService", query: { id } });
} }
// 修改为完成状态
const complete = (id) => {
ElMessageBox.confirm(`是否确认结束编号为${id}的数据项?`)
.then(async () => {
await updateDemand({ id, status: 4 });
getList();
ElMessage.success("删除成功");
})
.catch(() => {});
};
getList(); getList();
onActivated(() => { onActivated(() => {
getList(); getList();

View File

@ -17,6 +17,7 @@
<el-radio-button :label="1">已发布</el-radio-button> <el-radio-button :label="1">已发布</el-radio-button>
<el-radio-button :label="2">已驳回</el-radio-button> <el-radio-button :label="2">已驳回</el-radio-button>
<el-radio-button :label="3">草稿箱</el-radio-button> <el-radio-button :label="3">草稿箱</el-radio-button>
<el-radio-button :label="4">已结束</el-radio-button>
</el-radio-group> </el-radio-group>
<el-table v-loading="loading" :data="dataList" style="margin-top: 20px"> <el-table v-loading="loading" :data="dataList" style="margin-top: 20px">
@ -80,8 +81,16 @@
size="small" size="small"
type="text" type="text"
icon="Close" icon="Close"
@click="cancelPub(row.id)"
>取消发布</el-button >取消发布</el-button
> >
<el-button
size="small"
type="text"
icon="View"
@click="complete(row.id)"
>完成</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -100,6 +109,7 @@
import { import {
technologyDemandList, technologyDemandList,
deleteTechnologyDemand, deleteTechnologyDemand,
updateTechnologyDemand,
} from "@/api/admin/enterprise/demand"; } from "@/api/admin/enterprise/demand";
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox } from "element-plus";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
@ -202,5 +212,25 @@ function handleResults(row) {
}, },
}); });
} }
// 修改为完成状态
const complete = (id) => {
ElMessageBox.confirm(`是否确认结束编号为${id}的数据项?`)
.then(async () => {
await updateTechnologyDemand({ id, status: 4 });
getList();
ElMessage.success("结束成功");
})
.catch(() => {});
};
const cancelPub = (id) => {
ElMessageBox.confirm(`是否确认取消发布编号为${id}的数据项?`)
.then(async () => {
await updateTechnologyDemand({ id, status: 3 });
getList();
ElMessage.success("取消发布成功");
})
.catch(() => {});
};
getList(); getList();
</script> </script>

View File

@ -16,7 +16,8 @@
</template> </template>
<script setup name="ReleaseProduct"> <script setup name="ReleaseProduct">
import ReleaseForm from "@/views/components/ReleaseForm"; import ReleaseForm from "@/views/components/ReleaseForm";
import { ElMessage } from "element-plus"; import tab from "@/plugins/tab";
import { ElMessage, tabBarProps } from "element-plus";
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
import { import {
getProductById, getProductById,
@ -25,7 +26,7 @@ import {
} from "@/api/admin/enterprise/product"; } from "@/api/admin/enterprise/product";
import { reactive, toRefs } from "vue"; import { reactive, toRefs } from "vue";
const route = useRoute(); const route = useRoute();
const router = useRouter(); // const router = useRouter();
const labelWidth = 140; const labelWidth = 140;
// const = reactive({}); // const = reactive({});
const data = reactive({ const data = reactive({
@ -34,10 +35,11 @@ const data = reactive({
const { form } = toRefs(data); const { form } = toRefs(data);
const releaseFormRef = ref(); const releaseFormRef = ref();
const submitForm = async (is_submit) => { const submitForm = async (is_submit) => {
form.value["status"] = is_submit;
// console.log(await releaseFormRef.value.validateForm());
const isValid = await releaseFormRef.value.validateForm(); const isValid = await releaseFormRef.value.validateForm();
if (isValid) { if (isValid) {
form.value["status"] = is_submit;
console.log(form.value.cooperationModeArr.join(","));
form.value.cooperationMode = form.value.cooperationModeArr.join(",");
if (route.query.id) { if (route.query.id) {
await updateEnterpriseProduct(form.value); await updateEnterpriseProduct(form.value);
ElMessage.success("修改产品成功"); ElMessage.success("修改产品成功");
@ -45,7 +47,8 @@ const submitForm = async (is_submit) => {
await insertEnterpriseProduct(form.value); await insertEnterpriseProduct(form.value);
ElMessage.success("新增产品成功"); ElMessage.success("新增产品成功");
} }
router.go(-1); // router.go(-1);
tab.closeOpenPage({ path: "/extension/product" });
} else { } else {
console.log("验证未通过"); console.log("验证未通过");
} }
@ -55,6 +58,9 @@ const submitForm = async (is_submit) => {
const getProductDetail = async (id) => { const getProductDetail = async (id) => {
const { data } = await getProductById({ id }); const { data } = await getProductById({ id });
form.value = data; form.value = data;
form.value.cooperationModeArr = data.cooperationMode
? data.cooperationMode.split(",")
: [];
}; };
if (route.query.id) { if (route.query.id) {

View File

@ -9,7 +9,7 @@
</div> --> </div> -->
<!-- <div class="text-right">续期</div> --> <!-- <div class="text-right">续期</div> -->
<div v-if="vipData.vipType == 1">升级SVIP</div> <div v-if="vipData.vipType == 1">升级SVIP</div>
<div v-else-if="vipData.vipType == 0">普通会员</div> <div v-else-if="!vipData.vipType">普通会员</div>
</div> </div>
<div <div
class="text-right" class="text-right"
@ -24,12 +24,7 @@
<span class="pointer" style="font-size: 14px" @click="vipBenefits"> <span class="pointer" style="font-size: 14px" @click="vipBenefits">
查看会员权益 查看会员权益
</span> </span>
<p <p class="text-center pointer" v-if="!vipData.vipType">开通VIP</p>
class="text-center pointer"
v-if="!vipData.vipType || vipData.vipType == 0"
>
开通VIP
</p>
</div> </div>
<!-- <!--
<div class="card-panel surplus-currency"> <div class="card-panel surplus-currency">

View File

@ -105,6 +105,7 @@ const data = reactive({
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
notifyCrowd: "2",
title: undefined, title: undefined,
status: undefined, status: undefined,
}, },

View File

@ -104,7 +104,7 @@
</el-row> </el-row>
</el-form> </el-form>
<div :style="{ marginLeft: labelWidth + 'px' }"> <div :style="{ marginLeft: labelWidth + 'px' }">
<el-button @click="router.go(-1)">取消</el-button> <el-button @click="back">取消</el-button>
<el-button type="primary" @click="submitForm">提交</el-button> <el-button type="primary" @click="submitForm">提交</el-button>
</div> </div>
</el-card> </el-card>
@ -113,6 +113,7 @@
<script setup> <script setup>
// import { expert } from "@/api/identity/index"; // import { expert } from "@/api/identity/index";
import { insertDemand } from "@/api/admin/expert/demand"; import { insertDemand } from "@/api/admin/expert/demand";
import tab from "@/plugins/tab";
// import CityOptions from "@/views/components/CityOptions"; // import CityOptions from "@/views/components/CityOptions";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
@ -180,6 +181,10 @@ const formRef = ref();
if (route.query.id) { if (route.query.id) {
} }
const back = () => {
tab.closeOpenPage({ path: "/demand/serviceDemand" });
};
const labelWidth = 140; const labelWidth = 140;
// const isContainOther = ref(false); // const isContainOther = ref(false);
const checkList = reactive([ const checkList = reactive([
@ -206,6 +211,7 @@ async function submitForm() {
console.log(wangEditorRef.value.isEmpty()); console.log(wangEditorRef.value.isEmpty());
await formRef.value.validate(); await formRef.value.validate();
if (formData.value.id) { if (formData.value.id) {
// TODO: 修改专家需求
// updatePost(form.value).then((response) => { // updatePost(form.value).then((response) => {
// proxy.$modal.msgSuccess("修改成功"); // proxy.$modal.msgSuccess("修改成功");
// proxy.$router.go(-1); // proxy.$router.go(-1);
@ -213,8 +219,9 @@ async function submitForm() {
} else { } else {
await insertDemand(formData.value); await insertDemand(formData.value);
ElMessage.success("新增成功"); ElMessage.success("新增成功");
router.back(); // router.back();
} }
tab.closeOpenPage({ path: "/demand/serviceDemand" });
} }
function addCheck() { function addCheck() {
if (!checkInput.value.trim().length) return proxy.$modal.msgError("请输入"); if (!checkInput.value.trim().length) return proxy.$modal.msgError("请输入");

View File

@ -19,7 +19,8 @@
> >
<el-radio-button :label="0">待受理</el-radio-button> <el-radio-button :label="0">待受理</el-radio-button>
<el-radio-button :label="1">已受理</el-radio-button> <el-radio-button :label="1">已受理</el-radio-button>
<el-radio-button :label="2">已结束</el-radio-button> <el-radio-button :label="2">已驳回</el-radio-button>
<el-radio-button :label="4">已结束</el-radio-button>
</el-radio-group> </el-radio-group>
<el-table v-loading="loading" :data="dataList" style="margin-top: 20px"> <el-table v-loading="loading" :data="dataList" style="margin-top: 20px">
@ -68,6 +69,9 @@
@click="handleEdit(scope.row.id)" @click="handleEdit(scope.row.id)"
>查看</el-button >查看</el-button
> >
<el-button type="text" size="small" @click="complete(row.id)"
>完成</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -165,6 +169,17 @@ function handleDelete(id) {
function handleEdit(id) { function handleEdit(id) {
router.push({ path: "./release", query: { id } }); router.push({ path: "./release", query: { id } });
} }
// 修改为完成状态
const complete = (id) => {
ElMessageBox.confirm(`是否确认结束编号为${id}的数据项?`)
.then(async () => {
await updateCasDemand({ id, status: 4 });
getList();
ElMessage.success("删除成功");
})
.catch(() => {});
};
getList(); getList();
onActivated(() => { onActivated(() => {
getList(); getList();

View File

@ -24,16 +24,16 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="联系人" prop="name"> <el-form-item label="联系人" prop="username">
<el-input v-model="modelValue.name"></el-input> <el-input v-model="modelValue.username"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="联系方式" prop="mobilephone"> <el-form-item label="联系方式" prop="phone">
<el-input <el-input
v-model="modelValue.mobilephone" v-model="modelValue.phone"
:maxlength="11" :maxlength="11"
oninput=" oninput="
value = value value = value
@ -52,8 +52,8 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="邮箱" prop="name"> <el-form-item label="邮箱" prop="email">
<el-input v-model="modelValue.name"></el-input> <el-input v-model="modelValue.email"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -225,6 +225,23 @@ const data = reactive({
rules: { rules: {
product: [{ required: true, message: "请输入", trigger: "blur" }], product: [{ required: true, message: "请输入", trigger: "blur" }],
name: [{ required: true, message: "请输入", trigger: "blur" }], name: [{ required: true, message: "请输入", trigger: "blur" }],
username: [{ required: true, message: "请输入联系人", trigger: "blur" }],
phone: [
{ required: true, message: "请输入联系方式", trigger: "blur" },
{
pattern: /^1[3456789]\d{9}$/,
message: "手机号格式不正确",
trigger: "blur",
},
],
email: [
{ required: true, message: "请输入邮箱", trigger: "blur" },
{
pattern: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
message: "邮箱格式不正确",
trigger: "blur",
},
],
kind: [{ required: true, message: "请选择", trigger: "change" }], kind: [{ required: true, message: "请选择", trigger: "change" }],
code: [{ required: true, message: "请输入", trigger: "blur" }], code: [{ required: true, message: "请输入", trigger: "blur" }],
mobile: [ mobile: [

View File

@ -81,11 +81,16 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="12">
<el-form-item label="毕业院校:" prop="school"> <el-form-item label="毕业院校:" prop="school">
<el-input v-model="modelValue.school"></el-input> <el-input v-model="modelValue.school"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="所属研究机构:" prop="organization">
<el-input v-model="modelValue.organization"></el-input>
</el-form-item>
</el-col>
</el-row> </el-row>
<el-row> <el-row>
@ -225,6 +230,7 @@ const data = reactive({
}, },
], ],
school: [{ required: true, message: "请输入", trigger: "blur" }], school: [{ required: true, message: "请输入", trigger: "blur" }],
organization: [{ required: true, message: "请输入", trigger: "blur" }],
education: [{ required: true, message: "请选择", trigger: "change" }], education: [{ required: true, message: "请选择", trigger: "change" }],
major: [{ required: true, message: "请输入", trigger: "blur" }], major: [{ required: true, message: "请输入", trigger: "blur" }],
job: [{ required: true, message: "请输入", trigger: "blur" }], job: [{ required: true, message: "请输入", trigger: "blur" }],

View File

@ -21,9 +21,9 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="联系人:" prop="title"> <el-form-item label="联系人:" prop="username">
<el-input <el-input
v-model="modelValue.title" v-model="modelValue.username"
placeholder="请输入联系人" placeholder="请输入联系人"
></el-input> ></el-input>
</el-form-item> </el-form-item>
@ -31,26 +31,26 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="联系方式:" prop="title"> <el-form-item label="联系方式:" prop="phone">
<el-input <el-input
v-model="modelValue.title" v-model="modelValue.phone"
maxlength="11"
placeholder="请输入联系方式" placeholder="请输入联系方式"
></el-input> ></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<field-options
<FieldOptions
v-model="modelValue" v-model="modelValue"
:labelWidth="labelWidth" :labelWidth="labelWidth"
ref="fieldFormRef" ref="fieldFormRef"
/> />
<CityOptions <city-options
v-model="modelValue" v-model="modelValue"
:labelWidth="labelWidth" :labelWidth="labelWidth"
ref="cityFormRef" ref="cityFormRef"
></CityOptions> ></city-options>
<InputBoxAdd <input-box-add
:labelWidth="labelWidth" :labelWidth="labelWidth"
v-model="modelValue" v-model="modelValue"
title="应用客户" title="应用客户"
@ -80,7 +80,7 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="成果领先性:" prop="leadStandard"> <el-form-item label="产品领先性:" prop="leadStandard">
<el-select <el-select
v-model="modelValue.leadStandard" v-model="modelValue.leadStandard"
clearable clearable
@ -101,7 +101,7 @@
<el-col :span="24"> <el-col :span="24">
<el-form-item label="合作模式:"> <el-form-item label="合作模式:">
<el-select <el-select
v-model="modelValue.cooperationMode" v-model="modelValue.cooperationModeArr"
clearable clearable
multiple multiple
placeholder="请选择" placeholder="请选择"
@ -118,7 +118,7 @@
</el-col> </el-col>
</el-row> </el-row>
<InputBoxAdd <input-box-add
:labelWidth="labelWidth" :labelWidth="labelWidth"
v-model="modelValue" v-model="modelValue"
title="关键词" title="关键词"
@ -173,7 +173,7 @@ import {
cooperationOptions, cooperationOptions,
} from "@/utils/parameter"; } from "@/utils/parameter";
import { reactive, toRefs } from "vue"; import { reactive, toRefs } from "vue";
import VideoUpload from "@/components/VideoUpload"; // import VideoUpload from "@/components/VideoUpload";
// import { researchSelect, laboratorySelect } from "@/api/identity/index"; // import { researchSelect, laboratorySelect } from "@/api/identity/index";
const props = defineProps({ const props = defineProps({
@ -198,6 +198,23 @@ const data = reactive({
// product: [{ required: true, message: "请输入", trigger: "blur" }], // product: [{ required: true, message: "请输入", trigger: "blur" }],
title: [{ required: true, message: "请输入", trigger: "blur" }], title: [{ required: true, message: "请输入", trigger: "blur" }],
kind: [{ required: true, message: "请选择", trigger: "change" }], kind: [{ required: true, message: "请选择", trigger: "change" }],
username: [{ required: true, message: "请输入联系人", trigger: "blur" }],
phone: [
{ required: true, message: "请输入联系方式", trigger: "blur" },
{
pattern: /^1[3456789]\d{9}$/,
message: "手机号格式不正确",
trigger: "blur",
},
],
email: [
{ required: true, message: "请输入邮箱", trigger: "blur" },
{
pattern: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
message: "邮箱格式不正确",
trigger: "blur",
},
],
// code: [{ required: true, message: "请输入", trigger: "blur" }], // code: [{ required: true, message: "请输入", trigger: "blur" }],
// mobile: [ // mobile: [
// { required: true, message: "请输入", trigger: "blur" }, // { required: true, message: "请输入", trigger: "blur" },

View File

@ -60,37 +60,46 @@
> >
<div class="_l"> <div class="_l">
<el-image <el-image
style="width: 358px; height: 200px; vertical-align: middle" style="width: 358px; height: 220px; vertical-align: middle"
:src="item.image" :src="item.image"
fit="fill" fit="fill"
></el-image> ></el-image>
</div> </div>
<div class="_r"> <div class="_r" style="position: relative">
<p class="text_hidden">{{ item.title }}</p> <p class="text_hidden">{{ item.title }}</p>
<div class="_time">活动时间:{{ item.beginTime }}</div> <div class="_time">活动时间:{{ item.beginTime }}</div>
<div class="_time">收费金额:{{ item.amount }}</div> <div class="_time">收费金额:{{ item.amount }}</div>
<div class="_info" style="visibility: hidden"> <div class="_time">联系人:{{ item.contact }}</div>
<!-- <span class="fl" <div class="_time">联系方式:{{ item.contactMobile }}</div>
<!-- <div class="_info"> -->
<!-- <span class="fl"
><span class="x_blue">{{ item.user }}</span> 人报名</span ><span class="x_blue">{{ item.user }}</span> 人报名</span
> --> > -->
<el-button class="fr x_btns" v-if="item.status == 1" disabled <!-- <el-button class="fr x_btns" v-if="item.enrollFlag" disabled
>已报名</el-button >已报名</el-button
> > -->
<el-button <!-- v-else-if="item.status == 2" -->
v-else-if="item.status == 2" <!-- <el-button
class="fr x16 x_blue x_border_blue" class="x16 x_blue x_border_blue"
style="border-radius: 0" v-else
style="
border-radius: 0;
position: absolute;
right: 10px;
bottom: 0;
"
@click="handleClickSignUp(item.id, $event)"
>报名</el-button >报名</el-button
> > -->
<el-button <!-- <el-button
v-else v-else
class="fr x16" class="fr x16"
style="border-radius: 0" style="border-radius: 0"
type="info" type="info"
disabled disabled
>已结束</el-button >已结束</el-button
> > -->
</div> <!-- </div> -->
</div> </div>
</div> </div>
</div> </div>
@ -129,9 +138,23 @@
{{ selectedActivity.finishTime }} {{ selectedActivity.finishTime }}
</p> </p>
<p class="_place">活动地点:{{ selectedActivity.address }}</p> <p class="_place">活动地点:{{ selectedActivity.address }}</p>
<p class="_user" style="display: none"> <p class="_place">联系人:{{ selectedActivity.contact }}</p>
<el-button class="x_btns" disabled>已报名</el-button> <p class="_place">联系方式:{{ selectedActivity.contactMobile }}</p>
<span class="_num"><span class="x_blue">16</span> 人报名</span> <p class="_user">
<el-button
v-if="selectedActivity.enrollFlag"
class="x_btns"
disabled
>已报名</el-button
>
<el-button
v-else
class="fr x16 x_blue x_border_blue"
style="border-radius: 0"
@click="handleClickSignUp(selectedActivity.id, $event)"
>报名</el-button
>
<!-- <span class="_num"><span class="x_blue">16</span> 人报名</span> -->
</p> </p>
</div> </div>
</div> </div>
@ -146,6 +169,60 @@
</div> </div>
</div> </div>
<webFooter></webFooter> <webFooter></webFooter>
<el-dialog title="活动报名" v-model="showSignUp">
<el-form
:model="signUpForm"
:rules="signUpRules"
ref="signUpFormRef"
labelWidth="100px"
>
<el-row :gutter="12">
<el-col :span="12">
<el-form-item label="姓名" prop="name">
<el-input
placeholder="请输入姓名"
v-model="signUpForm.name"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="手机号" prop="phone">
<el-input
placeholder="请输入手机号"
v-model="signUpForm.phone"
maxlength="11"
oninput="value=value.replace(/[\D]+/,``)"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="12">
<el-col :span="12">
<el-form-item label="年龄" prop="age">
<el-input-number
placeholder="请输入年龄"
v-model="signUpForm.age"
></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="性别" prop="gender">
<el-radio-group v-model="signUpForm.gender">
<el-radio label="1"></el-radio>
<el-radio label="2"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<el-row justify="end">
<el-button @click="showSignUp = false">取消</el-button>
<el-button @click="submitSignUp" type="primary">报名</el-button>
</el-row>
</template>
</el-dialog>
</div> </div>
</template> </template>
<script setup name="Activity"> <script setup name="Activity">
@ -155,8 +232,19 @@ import request from "@/utils/request";
import webFooter from "@/components/webFooter/index.vue"; import webFooter from "@/components/webFooter/index.vue";
import { reactive, toRefs } from "vue"; import { reactive, toRefs } from "vue";
import WebContact from "@/components/webContact"; import WebContact from "@/components/webContact";
import { activitysList } from "@/api/admin/enterprise"; // import { activitysList } from "@/api/admin/enterprise";
import webBreadcrumb from "@/components/webBreadcrumb/index.vue"; import webBreadcrumb from "@/components/webBreadcrumb/index.vue";
import {
signUpActivity,
activitysList,
activityDetail,
} from "@/api/website/activity";
import { ElMessage } from "element-plus";
import { getToken } from "@/utils/auth";
// import { omit } from "lodash";
// import FieldOptions from "@/views/components/FieldOptions";
// import CityOptions from "@/views/components/CityOptions";
// import webReleaseActive from "@/components/webReleaseActive/index.vue"; // import webReleaseActive from "@/components/webReleaseActive/index.vue";
const dialogVisible = ref(false); const dialogVisible = ref(false);
@ -165,6 +253,9 @@ const total = ref(1);
const state = reactive({ const state = reactive({
banner: "", banner: "",
}); });
// const data = reactive({
// activityForm: {},
// });
const queryParams = reactive({}); const queryParams = reactive({});
let dataList = ref([]); let dataList = ref([]);
@ -186,14 +277,17 @@ function getList() {
} }
const data = reactive({ const data = reactive({
selectedActivity: {}, selectedActivity: {},
activityForm: {},
}); });
const { selectedActivity } = toRefs(data); const { selectedActivity } = toRefs(data);
function handleDetail(item) { async function handleDetail(item) {
breadcrumbTitle.id = item.id; breadcrumbTitle.id = item.id;
breadcrumbTitle.title = "活动报名"; breadcrumbTitle.title = "活动报名";
breadcrumbTitle.twoTitle = "活动报名详情"; breadcrumbTitle.twoTitle = "活动报名详情";
selectedActivity.value = dataList.value.find((el) => el.id == item.id); // selectedActivity.value = dataList.value.find((el) => el.id == item.id);
const resp = await activityDetail(item.id);
selectedActivity.value = resp.data;
isShow.value = !isShow.value; isShow.value = !isShow.value;
} }
@ -223,6 +317,76 @@ onMounted(() => {
loading.value = false; loading.value = false;
}); });
}); });
const showSignUp = ref(false);
const signUpForm = reactive({});
const signUpFormRef = ref();
const signUpRules = reactive({
name: [
{
required: true,
message: "请输入姓名!",
trigger: "blur",
},
],
age: [
{
required: true,
message: "请输入年龄!",
trigger: "blur",
},
],
gender: [
{
required: true,
message: "请选择性别!",
trigger: "change",
},
],
phone: [
{
required: true,
message: "请输入手机号!",
trigger: "blur",
},
{
pattern: /^1[3456789]\d{9}$/,
message: "手机号格式不正确",
trigger: "blur",
},
],
});
const reset = () => {
for (const key in signUpForm) {
if (Object.hasOwnProperty.call(signUpForm, key)) {
// const item = signUpForm[key];
delete signUpForm[key];
}
}
if (signUpFormRef.value) {
signUpFormRef.value.resetFields();
}
};
const handleClickSignUp = (id, e) => {
e.stopPropagation();
console.log(id, e);
if (!getToken()) {
return ElMessage.error("您当前未登录");
}
reset();
signUpForm.activityId = id;
showSignUp.value = true;
};
const submitSignUp = async () => {
await signUpFormRef.value.validate();
await signUpActivity(signUpForm);
ElMessage.success("报名成功");
const resp = await activityDetail(selectedActivity.value.id);
selectedActivity.value = resp.data;
showSignUp.value = false;
};
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.activity { .activity {
@ -242,6 +406,7 @@ onMounted(() => {
.el-button { .el-button {
position: absolute; position: absolute;
top: 171px; top: 171px;
height: 60px;
right: 46px; right: 46px;
background-color: #ffc600; background-color: #ffc600;
color: #fff; color: #fff;
@ -276,6 +441,7 @@ onMounted(() => {
flex: 1; flex: 1;
padding: 36px 20px 0 16px; padding: 36px 20px 0 16px;
background-color: #fff; background-color: #fff;
height: 220px;
p { p {
margin-top: 0; margin-top: 0;
font-size: 16px; font-size: 16px;

View File

@ -22,8 +22,8 @@
<!-- <div class="labelList"> <!-- <div class="labelList">
<div v-for="item in data.industrys">{{ item }}</div> <div v-for="item in data.industrys">{{ item }}</div>
</div>--> </div>-->
<div v-if="data.industryStr" class="line" style="overflow: hidden"> <div v-if="data.job" class="line" style="overflow: hidden">
<el-col>所属领域</el-col> <el-col>职务</el-col>
<!-- :title="data.industrys[data.industrys.length - 1]" --> <!-- :title="data.industrys[data.industrys.length - 1]" -->
<el-col style="display: inline-block; width: calc(100% - 86px)"> <el-col style="display: inline-block; width: calc(100% - 86px)">
<span <span
@ -34,22 +34,26 @@
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
" "
>{{ data.industryStr }}</span >{{ data.job }}</span
> >
</el-col> </el-col>
</div> </div>
<div class="line"> <div class="line">
研究信息 职称
<span>{{ data.research }}</span> <span>{{ data.title }}</span>
</div> </div>
<div <div class="line">
所属研究机构
<span>{{ data.organization }}</span>
</div>
<!-- <div
v-if="data.patent_title" v-if="data.patent_title"
class="line" class="line"
v-for="(patent_title, index) in data.patent_title" v-for="(patent_title, index) in data.patent_title"
:key="index" :key="index"
> >
{{ patent_title }} {{ patent_title }}
</div> </div> -->
</div> </div>
<div class="keywordsWrap"> <div class="keywordsWrap">
<div class="keywords"> <div class="keywords">

View File

@ -75,7 +75,7 @@
<div class="pointTit">企业简介</div> <div class="pointTit">企业简介</div>
</div> </div>
<div class="html" v-html="state.companyDetail.introduce"></div> <div class="html" v-html="state.companyDetail.introduce"></div>
<div style="padding: 20px 0"> <!-- <div style="padding: 20px 0">
<div class="pointTit">生产方向</div> <div class="pointTit">生产方向</div>
</div> </div>
<section v-if="state.companyDetail.directions"> <section v-if="state.companyDetail.directions">
@ -86,15 +86,46 @@
> >
{{ item }} {{ item }}
</div> </div>
</section> -->
<div style="padding: 20px 0">
<div class="pointTit">所属领域</div>
</div>
<section v-if="state.companyDetail.industryStr">
{{ state.companyDetail.industryStr }}
<!-- <div
v-for="(item, index) in state.companyDetail.directions"
:key="index"
class="describe"
>
{{ item }}
</div> -->
</section> </section>
<div style="padding: 20px 0"> <div style="padding: 20px 0">
<div class="pointTit">所在地</div>
</div>
<section v-if="state.companyDetail.address">
{{ state.companyDetail.address }}
</section>
<div style="padding: 20px 0">
<div class="pointTit">详细地址</div>
</div>
<section v-if="state.companyDetail.address">
{{ state.companyDetail.address }}
</section>
<div style="padding: 20px 0">
<div class="pointTit">企业网站</div>
</div>
<section v-if="state.companyDetail.url">
{{ state.companyDetail.url }}
</section>
<!-- <div style="padding: 20px 0">
<div class="pointTit">产品列表</div> <div class="pointTit">产品列表</div>
</div> </div>
<section v-for="item in state.companyProduct" :key="item.id"> <section v-for="item in state.companyProduct" :key="item.id">
<div style="border: 1px solid #dcdcdc; margin-bottom: 10px"> <div style="border: 1px solid #dcdcdc; margin-bottom: 10px">
<productItem :data="item"></productItem> <productItem :data="item"></productItem>
</div> </div>
</section> </section> -->
</div> </div>
<div style="padding: 20px 0"> <div style="padding: 20px 0">