Browse Source

修改bug

master
rose 4 years ago
parent
commit
76e2f4858c
  1. 16101
      package-lock.json
  2. 25
      src/App.vue
  3. 219
      src/components/Activity/ActivityAdd.vue
  4. 89
      src/components/Activity/ActivityDate.vue
  5. 226
      src/components/Activity/ActivityEdit.vue
  6. 21
      src/components/Activity/ActivitySearch.vue
  7. 41
      src/components/BtnCom/BtnCon.vue
  8. 2
      src/components/EntityApply/EntityApplyAdd.vue
  9. 36
      src/components/EntityApply/EntityApplyDate.vue
  10. 11
      src/components/EntityApply/EntityApplySearch.vue
  11. 57
      src/components/Manage/ManageAdd.vue
  12. 13
      src/components/Manage/ManageDate.vue
  13. 22
      src/components/Manage/ManageSearch.vue
  14. 6
      src/components/Policy/PolicyAdd.vue
  15. 46
      src/components/Policy/PolicyDate.vue
  16. 6
      src/components/Policy/PolicyEdit.vue
  17. 6
      src/components/Policy/PolicySearch.vue
  18. 39
      src/config/api.js
  19. 14
      src/router/index.js
  20. 19
      src/store/getters.js
  21. 3
      src/views/College/components/CollegeAdd.vue
  22. 1
      src/views/College/components/CollegeEdit.vue
  23. 10
      src/views/CooperativePartner/CooperativePartner.vue
  24. 10
      src/views/EntityApplication/VirtualApplication.vue
  25. 11
      src/views/Index/Index.vue
  26. 16
      src/views/InnovativeAchievements/InnovativeAchievements.vue
  27. 19
      src/views/UserManage/UserManage.vue
  28. 550
      src/views/teacher/Teacher.vue
  29. 310
      src/views/teacherType/teacherType.vue
  30. 63
      yarn.lock

16101
package-lock.json

File diff suppressed because it is too large

25
src/App.vue

@ -1,7 +1,14 @@
<!--
* @Author: wally
* @email: 18603454788@163.com
* @Date: 2021-04-20 12:33:22
* @LastEditors: wally
* @LastEditTime: 2021-04-22 13:10:07
-->
<template>
<a-config-provider :locale="zh_CN">
<div class="d-flex flex-row flex-nowrap" id="app">
<!-- <btn-con /> -->
<btn-con />
<router-view class="flex-1 bg pa-3"></router-view>
</div>
</a-config-provider>
@ -10,15 +17,13 @@
<script>
import { mapState, mapActions, mapMutations } from 'vuex';
import zh_CN from 'ant-design-vue/lib/locale-provider/zh_CN';
// import BtnCon from 'components/BtnCom/BtnCon.vue';
import BtnCon from 'components/BtnCom/BtnCon.vue';
export default {
name: 'app',
// components: { BtnCon },
name: 'App',
components: { BtnCon },
data() {
return {
zh_CN,
};
return { zh_CN };
},
computed: mapState(['anyringToken', 'ptProps']),
@ -35,9 +40,9 @@ export default {
created() {
//
// const userId = '1218763410024566784';
// const params = { userId };
// this.getUserId(params);
const userId = '1218763410024566784';
const params = { userId };
this.getUserId(params);
const that = this;
window.plugin = window.TallPlugin.init();

219
src/components/Activity/ActivityAdd.vue

@ -1,197 +1,112 @@
<template>
<div class="d-flex flex-wrap pb-3">
<!-- 添加 -->
<a-modal
:maskClosable="false"
@cancel="$emit('closeModal')"
destroyOnClose
footer
title="添加活动公告"
v-model="visible"
width="700px"
>
<a-modal :maskClosable="false" @cancel="$emit('closeModal')" destroyOnClose footer title="添加活动公告" v-model="visible" width="700px">
<a-form :form="form" @submit="handleSubmit">
<!-- 标题 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="标题"
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="标题">
<a-input
placeholder="标题"
v-decorator="[
'title',
{
rules: [
{ required: true, message: '标题不能为空' },
{ whitespace: true, message: '标题不能为空' },
{ max: 140, massage: '地点最多140个字符' },
],
},
]"
'title',
{
rules: [
{ required: true, message: '标题不能为空' },
{ whitespace: true, message: '标题不能为空' },
{ max: 140, massage: '地点最多140个字符' },
],
},
]"
/>
</a-form-item>
<!-- 地点 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="地点"
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="地点">
<a-input
placeholder="地点"
v-decorator="[
'address',
{
rules: [
{ required: true, message: '地点不能为空' },
{ whitespace: true, message: '地点不能为空' },
{ max: 140, massage: '地点最多140个字符' },
],
},
]"
'address',
{
rules: [
{ required: true, message: '地点不能为空' },
{ whitespace: true, message: '地点不能为空' },
{ max: 140, massage: '地点最多140个字符' },
],
},
]"
/>
</a-form-item>
<!-- 时间 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="时间"
required
>
<a-range-picker
@change="onChange"
format="YYYY-MM-DD HH:mm:ss"
show-time
style="width:100%"
/>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="时间" required>
<a-range-picker @change="onChange" format="YYYY-MM-DD HH:mm:ss" show-time style="width: 100%" />
</a-form-item>
<!-- 活动类型 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="活动类型"
>
<a-select @change="changeType" placeholder="活动类型" style="width:100%">
<a-select-option
:key="index"
:value="category.id"
v-for="(category, index) in types"
>{{ category.name }}</a-select-option>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="活动类型">
<a-select @change="changeType" placeholder="活动类型" style="width: 100%">
<a-select-option :key="index" :value="category.id" v-for="(category, index) in types">{{ category.name }}</a-select-option>
</a-select>
</a-form-item>
<!-- 主讲人 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="主讲人"
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="主讲人">
<a-input
placeholder="主讲人"
v-decorator="[
'name',
{
rules: [
{ required: true, message: '主讲人不能为空' },
{ whitespace: true, message: '主讲人不能为空' },
{ max: 140, massage: '主讲人最多140个字符' },
],
},
]"
'name',
{
rules: [
{ required: true, message: '主讲人不能为空' },
{ whitespace: true, message: '主讲人不能为空' },
{ max: 140, massage: '主讲人最多140个字符' },
],
},
]"
/>
</a-form-item>
<!-- 组织单位 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="组织单位"
>
<a-input
placeholder="组织单位"
v-decorator="[
'organization'
]"
/>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="组织单位">
<a-input placeholder="组织单位" v-decorator="['organization']" />
</a-form-item>
<!-- 其他事宜 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="其他事宜"
>
<a-input
placeholder="其他事宜"
v-decorator="[
'other'
]"
/>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="其他事宜">
<a-input placeholder="其他事宜" v-decorator="['other']" />
</a-form-item>
<!-- 会议主题 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="会议主题"
>
<a-input
placeholder="会议主题"
v-decorator="[
'theme'
]"
/>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="会议主题">
<a-input placeholder="会议主题" v-decorator="['theme']" />
</a-form-item>
<!-- 培训对象 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="培训对象"
>
<a-input
placeholder="培训对象"
v-decorator="[
'trainees'
]"
/>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="培训对象">
<a-input placeholder="培训对象" v-decorator="['trainees']" />
</a-form-item>
<!-- 报名方式 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="报名方式"
>
<a-input
placeholder="报名方式"
v-decorator="[
'way'
]"
/>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="报名方式">
<a-input placeholder="报名方式" v-decorator="['way']" />
</a-form-item>
<!-- 活动结束内容 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="活动结束内容"
>
<a-textarea
placeholder="活动结束内容"
v-decorator="[
'endContent',
]"
/>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="活动结束内容">
<a-textarea placeholder="活动结束内容" v-decorator="['endContent']" />
</a-form-item>
<!-- 活动类型 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="活动类型">
<a-radio-group v-model="informReport">
<a-radio :value="0">
通知
</a-radio>
<a-radio :value="1">
报道
</a-radio>
</a-radio-group>
</a-form-item>
<!-- 详情 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="详情"
required
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="详情" required>
<quill-editor :max-size="maxSize" :placeholder="placeholder" @changeInput="changeInput" />
</a-form-item>
@ -223,9 +138,11 @@ export default {
tailItemLayout,
form: this.$form.createForm(this, { name: 'activity-add' }),
types: [
{ id: 0, name: '路演' },
{ id: 1, name: '沙龙' },
{ id: 2, name: '论坛' },
{ id: 0, name: '培训' },
{ id: 1, name: '讲座' },
{ id: 2, name: '交流' },
{ id: 3, name: '路演' },
{ id: 4, name: '论坛' },
],
activityType: '',
maxSize: 2048,
@ -233,6 +150,7 @@ export default {
placeholder: '请输入...',
releaseTime: '', //
closeTime: '', //
informReport:0,
};
},
@ -263,12 +181,13 @@ export default {
if (!err) {
try {
console.log('values: ', values);
const { releaseTime, closeTime, content, activityType } = this;
const { releaseTime, closeTime, content, activityType,informReport} = this;
const params = { param: values };
params.param.releaseTime = releaseTime;
params.param.closeTime = closeTime;
params.param.content = content;
params.param.activityType = activityType;
params.param.informReport = informReport;
console.log('params: ', params);
const res = await saveActivity(params);
const { data, msg, code } = res.data;

89
src/components/Activity/ActivityDate.vue

@ -1,7 +1,7 @@
<template>
<div class="main flex-1">
<a-spin :spinning="showEdit">
<div style="width:100%" v-if="lists && lists.length > 0">
<div style="width: 100%" v-if="lists && lists.length > 0">
<a-table
:columns="columns"
:data-source="lists"
@ -19,45 +19,33 @@
</template>
<template slot="time" slot-scope="text, record">
<span v-if="record.releaseTime">{{ record.releaseTime}}</span>
<span v-if="record.closeTime">-{{record.closeTime}}</span>
<span v-if="record.releaseTime">{{ record.releaseTime }}</span>
<span v-if="record.closeTime">-{{ record.closeTime }}</span>
</template>
<template slot="auditStatus" slot-scope="text, record">
<a-tag
:color="record.auditStatus === 2 ? 'green' : record.auditStatus === 1 ? 'red' : 'blue'"
>{{ record.auditStatus === 2 ? '已通过' : record.auditStatus === 1 ? '未通过' : '审核中' }}</a-tag>
<a-tag :color="record.auditStatus === 2 ? 'green' : record.auditStatus === 1 ? 'red' : 'blue'">{{
record.auditStatus === 2 ? '已通过' : record.auditStatus === 1 ? '未通过' : '审核中'
}}</a-tag>
</template>
<template slot="examine" slot-scope="text, record">
<div class="d-flex flex-column align-center">
<a-button
@click="handleApply(record, 2)"
size="small"
type="primary"
v-if="record.auditStatus !== 2"
>通过</a-button>
<a-button @click="handleApply(record, 2)" size="small" type="primary" v-if="record.auditStatus !== 2">通过</a-button>
<a-button @click="handleApply(record, 1)" size="small" type="danger" v-else>不通过</a-button>
<a-textarea class="fill-width mt-3" placeholder="备注" v-model="record.remark" />
</div>
</template>
<template slot="edit" slot-scope="text, record">
<a-icon
@click="showEditModal(record)"
class="pointer mr-5"
theme="twoTone"
type="edit"
/>
<a-button @click="openEnroll(record.activityId)" size="small" type="primary">活动报名</a-button>
<a-icon @click="showEditModal(record)" class="pointer mr-3" theme="twoTone" type="edit" />
<a-popconfirm @confirm="() => onDelete(record.activityId)" title="确定要删除这一条?">
<a-icon class="mr-3 pointer" theme="twoTone" two-tone-color="#ff0000" type="delete" />
</a-popconfirm>
<a-button @click="openEnroll(record.activityId)" size="small" type="primary">查看报名信息</a-button>
</template>
<div
class="d-flex flex-column"
slot="expandedRowRender"
slot-scope="record"
style="margin: 0"
>
<div class="d-flex flex-column" slot="expandedRowRender" slot-scope="record" style="margin: 0">
<a-spin :spinning="spinning" tip="详情加载中...">
<div class="d-flex flex-nowrap justify-space-between mb-3">
<div class="d-flex flex-row">
@ -68,10 +56,15 @@
<div class="d-flex flex-row">
<span class="font-bold-14">
活动类型
<a-tag
color="blue"
v-if="record.info && record.info.activityType !== null"
>{{ record.info.activityType === 0 ? '路演' : record.info.activityType === 1 ? '讲座' : record.info.activityType === 2 ? '沙龙' : '' }}</a-tag>
<a-tag color="blue" v-if="record.info && record.info.activityType !== null">{{
record.info.activityType === 0
? '路演'
: record.info.activityType === 1
? '讲座'
: record.info.activityType === 2
? '沙龙'
: ''
}}</a-tag>
</span>
</div>
<div class="d-flex flex-row">
@ -83,18 +76,15 @@
<div class="d-flex flex-nowrap justify-space-between mb-3">
<div class="d-flex flex-row">
<span class="font-bold-14">组织单位</span>
<span
v-if="record.info && record.info.organization"
>{{ record.info.organization }}</span>
<span v-if="record.info && record.info.organization">{{ record.info.organization }}</span>
<span v-else>暂无</span>
</div>
<div class="d-flex flex-row">
<span class="font-bold-14">
发布平台
<a-tag
color="green"
v-if="record.info && record.info.publishPlatform !== null"
>{{ record.info.publishPlatform === 0 ? '绿谷' : record.info.publishPlatform === 1 ? '创时代' : '' }}</a-tag>
<a-tag color="green" v-if="record.info && record.info.publishPlatform !== null">{{
record.info.publishPlatform === 0 ? '绿谷' : record.info.publishPlatform === 1 ? '创时代' : ''
}}</a-tag>
</span>
</div>
</div>
@ -123,8 +113,8 @@
<!-- 编辑 -->
<activity-edit
:editItem="editItem"
:editVisible="editVisible"
:edit-item="editItem"
:edit-visible="editVisible"
@closeModal="closeModal"
@getDetail="getDetail"
@getSelectTeam="getSelectTeam"
@ -135,7 +125,7 @@
<script>
import ActivityEdit from 'components/Activity/ActivityEdit.vue';
import { getQueryDetail, auditApply } from 'config/api';
import { getQueryDetail, auditApply, deleteActivity} from 'config/api';
const columns = [
{
@ -191,9 +181,7 @@ const columns = [
export default {
name: 'ActivityDate',
components: {
ActivityEdit,
},
components: { ActivityEdit },
props: { lists: { type: Array, default: () => [] }, pagination: { type: Object, default: () => {} } },
@ -287,6 +275,23 @@ export default {
const { query } = this.$route;
this.$router.push({ path: `/event-registration?activityId=${id}`, query });
},
//
async onDelete(activityId){
try {
const params = { param: { activityId } };
const res = await deleteActivity(params);
const { data, msg, code } = res.data;
if (code === 200) {
this.$message.success('删除成功');
this.$emit('getSelectTeam');
} else {
throw msg;
}
} catch (error) {
this.$message.error(error || '删除失败');
}
},
},
};
</script>

226
src/components/Activity/ActivityEdit.vue

@ -12,216 +12,162 @@
>
<a-form :form="form" @submit="handleSubmit" v-if="editVisible && editItem">
<!-- 标题 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="标题"
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="标题">
<a-input
placeholder="标题"
v-decorator="[
'title',
{
initialValue: editItem.title || '',
rules: [
{ required: true, message: '标题不能为空' },
{ whitespace: true, message: '标题不能为空' },
{ max: 140, massage: '地点最多140个字符' },
],
},
]"
'title',
{
initialValue: editItem.title || '',
rules: [
{ required: true, message: '标题不能为空' },
{ whitespace: true, message: '标题不能为空' },
{ max: 140, massage: '地点最多140个字符' },
],
},
]"
/>
</a-form-item>
<!-- 地点 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="地点"
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="地点">
<a-input
placeholder="地点"
v-decorator="[
'address',
{
initialValue: editItem.address || '',
rules: [
{ required: true, message: '地点不能为空' },
{ whitespace: true, message: '地点不能为空' },
{ max: 140, massage: '地点最多140个字符' },
],
},
]"
'address',
{
initialValue: editItem.address || '',
rules: [
{ required: true, message: '地点不能为空' },
{ whitespace: true, message: '地点不能为空' },
{ max: 140, massage: '地点最多140个字符' },
],
},
]"
/>
</a-form-item>
<!-- 时间 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="时间"
required
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="时间" required>
<a-range-picker
:default-value="[editItem.releaseTime ? editItem.releaseTime : '',editItem.closeTime ? editItem.closeTime : '']"
:default-value="[editItem.releaseTime ? editItem.releaseTime : '', editItem.closeTime ? editItem.closeTime : '']"
@change="onChange"
format="YYYY-MM-DD HH:mm:ss"
show-time
style="width:100%"
style="width: 100%"
/>
</a-form-item>
<!-- 活动类型 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="活动类型"
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="活动类型">
<a-select
@change="changeType"
placeholder="活动类型"
style="width:100%"
style="width: 100%"
v-decorator="[
'activityType',
{
initialValue: editItem.info && editItem.info.activityType,
},
]"
'activityType',
{
initialValue: editItem.info && editItem.info.activityType,
},
]"
>
<a-select-option
:key="index"
:value="category.id"
v-for="(category, index) in types"
>{{ category.name }}</a-select-option>
<a-select-option :key="index" :value="category.id" v-for="(category, index) in types">{{ category.name }}</a-select-option>
</a-select>
</a-form-item>
<!-- 主讲人 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="主讲人"
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="主讲人">
<a-input
placeholder="主讲人"
v-decorator="[
'name',
{
initialValue: (editItem.info && editItem.info.name) ? editItem.info.name : '',
rules: [
{ required: true, message: '主讲人不能为空' },
{ whitespace: true, message: '主讲人不能为空' },
{ max: 140, massage: '主讲人最多140个字符' },
],
},
]"
'name',
{
initialValue: editItem.info && editItem.info.name ? editItem.info.name : '',
rules: [
{ required: true, message: '主讲人不能为空' },
{ whitespace: true, message: '主讲人不能为空' },
{ max: 140, massage: '主讲人最多140个字符' },
],
},
]"
/>
</a-form-item>
<!-- 组织单位 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="组织单位"
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="组织单位">
<a-input
placeholder="组织单位"
v-decorator="[
'organization',
{
initialValue: (editItem.info && editItem.info.organization) ? editItem.info.organization : '',
},
]"
'organization',
{
initialValue: editItem.info && editItem.info.organization ? editItem.info.organization : '',
},
]"
/>
</a-form-item>
<!-- 其他事宜 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="其他事宜"
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="其他事宜">
<a-input
placeholder="其他事宜"
v-decorator="[
'other',
{
initialValue: (editItem.info && editItem.info.other) ? editItem.info.other : '',
},
]"
'other',
{
initialValue: editItem.info && editItem.info.other ? editItem.info.other : '',
},
]"
/>
</a-form-item>
<!-- 会议主题 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="会议主题"
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="会议主题">
<a-input
placeholder="会议主题"
v-decorator="[
'theme',
{
initialValue: (editItem.info && editItem.info.theme) ? editItem.info.theme : '',
},
]"
'theme',
{
initialValue: editItem.info && editItem.info.theme ? editItem.info.theme : '',
},
]"
/>
</a-form-item>
<!-- 培训对象 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="培训对象"
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="培训对象">
<a-input
placeholder="培训对象"
v-decorator="[
'trainees',
{
initialValue: (editItem.info && editItem.info.trainees) ? editItem.info.trainees : '',
},
]"
'trainees',
{
initialValue: editItem.info && editItem.info.trainees ? editItem.info.trainees : '',
},
]"
/>
</a-form-item>
<!-- 报名方式 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="报名方式"
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="报名方式">
<a-input
placeholder="报名方式"
v-decorator="[
'way',
{
initialValue: (editItem.info && editItem.info.way) ? editItem.info.way : '',
},
]"
'way',
{
initialValue: editItem.info && editItem.info.way ? editItem.info.way : '',
},
]"
/>
</a-form-item>
<!-- 活动结束内容 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="活动结束内容"
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="活动结束内容">
<a-textarea
placeholder="活动结束内容"
v-decorator="[
'endContent',
{
initialValue: (editItem.info && editItem.info.endContent) ? editItem.info.endContent : '',
},
]"
'endContent',
{
initialValue: editItem.info && editItem.info.endContent ? editItem.info.endContent : '',
},
]"
/>
</a-form-item>
<!-- 详情 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="详情"
required
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="详情" required>
<quill-editor
:max-size="maxSize"
:value="(editItem && editItem.info && editItem.info.content) ? editItem.info.content : content"
:value="editItem && editItem.info && editItem.info.content ? editItem.info.content : content"
@changeInput="changeInput"
/>
</a-form-item>
@ -255,9 +201,11 @@ export default {
tailItemLayout,
form: this.$form.createForm(this, { name: 'activity-edit' }),
types: [
{ id: 0, name: '路演' },
{ id: 1, name: '沙龙' },
{ id: 2, name: '论坛' },
{ id: 0, name: '培训' },
{ id: 1, name: '讲座' },
{ id: 2, name: '交流' },
{ id: 3, name: '路演' },
{ id: 4, name: '论坛' },
],
activityType: null,
maxSize: 2048,

21
src/components/Activity/ActivitySearch.vue

@ -1,3 +1,10 @@
<!--
* @Author: wally
* @email: 18603454788@163.com
* @Date: 2021-03-23 10:09:53
* @LastEditors: wally
* @LastEditTime: 2021-04-17 18:35:09
-->
<template>
<div class="d-flex flex-wrap pb-3 align-center">
<!-- 活动类型 0路演 1讲座 2沙龙 不传参数则查询全部 -->
@ -6,13 +13,7 @@
<a-checkbox-group :options="items" @change="onChange" />
</div>
<!-- 发布平台 -->
<div class="mb-3">
<span class="font-bold-14 ml-8">发布平台</span>
<a-radio-group @change="getPlatform">
<a-radio :value="0">绿谷</a-radio>
<a-radio :value="1">创时代</a-radio>
</a-radio-group>
</div>
<!-- 活动标题 -->
<a-input class="ml-3 mb-3" placeholder="标题" style="width: 150px" v-model="titleKey" />
<!-- 发布时间 -->
@ -31,14 +32,12 @@ import ActivityAdd from 'components/Activity/ActivityAdd.vue';
export default {
name: 'ActivitySearch',
components: {
ActivityAdd,
},
components: { ActivityAdd },
data() {
return {
visible: false,
titleKey: '',
items: ['路演', '讲座', '沙龙'],
items: ['培训', '讲座', '交流', '路演', '论坛'],
activityType: [],
checkedValues: [],
publishPlatform: '', //

41
src/components/BtnCom/BtnCon.vue

@ -1,38 +1,47 @@
<!--
* @Author: wally
* @email: 18603454788@163.com
* @Date: 2021-03-23 10:09:53
* @LastEditors: wally
* @LastEditTime: 2021-04-18 10:30:44
-->
<template>
<div class="btn-box pa-3">
<div class="font-bold-24">运维</div>
<!-- <div class="font-bold-24">运维</div> -->
<div @click="jump('/page-manage')" class="btn">内容管理</div>
<div @click="jump('/industry-info')" class="btn">行业资讯</div>
<div @click="jump('/user-manage')" class="btn">用户管理</div>
<!-- <div @click="jump('/user-manage')" class="btn">用户管理</div> -->
<div @click="jump('/banner-manage')" class="btn">轮播图管理</div>
<!-- <div @click="jump('/communication-community')" class="btn">交流社区</div> -->
<div @click="jump('/event-announcement')" class="btn">活动公告</div>
<div @click="jump('/event-announcement')" class="btn">双创活动-公告</div>
<!-- <div @click="jump('/event-registration')" class="btn">双创活动-报道</div> -->
<div @click="jump('/innovation-policy')" class="btn">创新政策</div>
<div @click="jump('/Challenge')" class="btn">创新挑战</div>
<div @click="jump('/College')" class="btn">创业学院</div>
<!-- <div @click="jump('/talent-recruitment')" class="btn">人才招聘</div> -->
<div @click="jump('/cooperative-partner')" class="btn">合作伙伴</div>
<div @click="jump('/about-us-derivative-enterprise')" class="btn">衍生企业</div>
<!-- <div @click="jump('/about-us-derivative-enterprise')" class="btn">衍生企业</div> -->
<div class="font-bold-24">创新研究院</div>
<!-- <div class="font-bold-24">创新研究院</div> -->
<!-- <div @click="jump('/cooperation-intention')" class="btn">合作意向</div> -->
<div @click="jump('/demand-filling')" class="btn">需求填报</div>
<div @click="jump('/innovative-service')" class="btn">服务</div>
<div @click="jump('/')" class="btn">合作伙伴</div>
<div @click="jump('/')" class="btn">衍生企业</div>
<div @click="jump('/innovative-service')" class="btn">科技创新服务</div>
<!-- <div @click="jump('/')" class="btn">合作伙伴</div> -->
<!-- <div @click="jump('/')" class="btn">衍生企业</div> -->
<!-- <div @click="jump('/innovative-lab')" class="btn">实验室</div> -->
<div @click="jump('/category-manage')" class="btn">分类管理</div>
<!-- <div @click="jump('/innovative-equipment')" class="btn">设备</div> -->
<!-- <div @click="jump('/innovative-achievements')" class="btn">成果</div> -->
<div class="font-bold-24">孵化平台</div>
<div @click="jump('/entity-application')" class="btn">入驻实体申请</div>
<div @click="jump('/virtual-application')" class="btn">入驻数智创时代 专业孵化器申请</div>
<div @click="jump('/virtual-application')" class="btn">入驻线上孵化器</div>
<div @click="jump('/incubation-services')" class="btn">服务</div>
<div @click="jump('/hatching-demand-filling')" class="btn">需求填报</div>
<div @click="jump('/Teacher')" class="btn">创业导师</div>
<div @click="jump('/hatch-cooperative-partner')" class="btn">合作伙伴</div>
<!-- <div class="font-bold-24">孵化平台</div> -->
<div @click="jump('/virtual-application?type=2')" class="btn">入驻实体申请</div>
<div @click="jump('/virtual-application?type=1')" class="btn">入驻数智创时代 专业孵化器申请</div>
<div @click="jump('/virtual-application?type=0')" class="btn">入驻线上孵化器</div>
<div @click="jump('/incubation-services')" class="btn">孵化平台栏目</div>
<div @click="jump('/hatching-demand-filling')" class="btn">孵化服务申请</div>
<div @click="jump('/teacher')" class="btn">导师管理</div>
<div @click="jump('/teacher-type')" class="btn">导师类型</div>
<!-- <div @click="jump('/hatch-cooperative-partner')" class="btn">合作伙伴</div> -->
<!-- <div class="font-bold-24">产业部</div>
<div @click="jump('/industrial-services')" class="btn">服务</div>

2
src/components/EntityApply/EntityApplyAdd.vue

@ -374,7 +374,7 @@ export default {
patentGrented: this.platform.patentGrented,
patentInvent: this.platform.patentInvent,
phone: this.platform.tel,
placeType: this.placeType, // store 0:1:
placeType: this.placeType, // store 0:线1:2
plantKind: this.platform.plantKind,
position: this.platform.position,
productTech: this.platform.productTech,

36
src/components/EntityApply/EntityApplyDate.vue

@ -40,13 +40,16 @@
<!-- 操作 -->
<template slot="edit" slot-scope="text, record">
<a-icon @click="showEditModal(record)" class="pointer" theme="twoTone" type="edit" />
<a-button @click="handleApply(record.id, 2)" class="ml-3" size="small" type="primary" v-if="record.dealStatus === 1"
>通过</a-button
>
<a-button @click="handleApply(record.id, 1)" class="ml-3" size="small" type="danger" v-if="record.dealStatus === 2"
>不通过</a-button
>
<!-- <a-icon @click="showEditModal(record)" class="pointer" theme="twoTone" type="edit" /> -->
<a-button @click="handleApply(record.id, 2)" class="ml-3" size="small" type="primary" v-if="record.dealStatus === 1">
通过
</a-button>
<a-button @click="handleApply(record.id, 1)" class="ml-3" size="small" type="danger" v-if="record.dealStatus === 2">
不通过
</a-button>
<a-popconfirm @confirm="() => onDelete(record.id)" title="确定要删除这一条?">
<a-icon class="ml-3 pointer" theme="twoTone" two-tone-color="#ff0000" type="delete" />
</a-popconfirm>
</template>
<div class="d-flex flex-nowrap justify-space-between" slot="expandedRowRender" slot-scope="record" style="margin: 0">
@ -61,7 +64,7 @@
<script>
import EditableCellSelect from 'components/EditableCellSelect/EditableCellSelect.vue';
import Detail from 'components/EntityApply/Detail.vue';
import { changeStatus } from 'config/api';
import { changeStatus, deletePlace } from 'config/api';
const columns = [
{
@ -177,6 +180,23 @@ export default {
this.$message.error(error || '审核失败');
}
},
//
async onDelete(id){
try {
const params = { param: { id } };
const res = await deletePlace(params);
const { data, msg, code } = res.data;
if (code === 200) {
this.$message.success('删除成功');
this.$emit('entityApplicationSearch');
} else {
throw msg;
}
} catch (error) {
this.$message.error(error || '删除失败');
}
},
},
};
</script>

11
src/components/EntityApply/EntityApplySearch.vue

@ -1,3 +1,10 @@
<!--
* @Author: wally
* @email: 18603454788@163.com
* @Date: 2021-03-23 10:09:54
* @LastEditors: wally
* @LastEditTime: 2021-04-17 19:35:22
-->
<template>
<div class="d-flex flex-wrap pb-3">
<!-- 企业名称 -->
@ -26,9 +33,7 @@ import EntityApplyAdd from 'components/EntityApply/EntityApplyAdd.vue';
export default {
name: 'EntityApplySearch',
components: {
EntityApplyAdd,
},
components: { EntityApplyAdd },
data() {
return {
visible: false,

57
src/components/Manage/ManageAdd.vue

@ -2,9 +2,9 @@
<div class="d-flex flex-wrap pb-3">
<!-- 添加 -->
<a-modal
:maskClosable="false"
:mask-closable="false"
@cancel="$emit('closeModal')"
destroyOnClose
destroy-on-close
footer
title="添加分类管理"
v-model="visible"
@ -12,48 +12,34 @@
>
<a-form :form="form" @submit="handleSubmit">
<!-- 类型 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="类型"
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="类型">
<a-select
placeholder="类型"
style="width:100%"
style="width: 100%"
v-decorator="[
'model',
{
rules: [
{ required: true, message: '类型不能为空' },
],
},
]"
'model',
{
rules: [{ required: true, message: '类型不能为空' }],
},
]"
>
<a-select-option
:key="index"
:value="item.id"
v-for="(item, index) in types"
>{{ item.name }}</a-select-option>
<a-select-option :key="index" :value="item.id" v-for="(item, index) in types">{{ item.name }}</a-select-option>
</a-select>
</a-form-item>
<!-- 分类名称 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="分类名称"
>
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="分类名称">
<a-input
placeholder="分类名称"
v-decorator="[
'name',
{
rules: [
{ required: true, message: '分类名称不能为空' },
{ whitespace: true, message: '分类名称不能为空' },
{ max: 140, massage: '分类名称最多140个字符' },
],
},
]"
'name',
{
rules: [
{ required: true, message: '分类名称不能为空' },
{ whitespace: true, message: '分类名称不能为空' },
{ max: 140, massage: '分类名称最多140个字符' },
],
},
]"
/>
</a-form-item>
@ -88,6 +74,9 @@ export default {
{ id: 0, name: '成果' },
{ id: 1, name: '仪器' },
{ id: 2, name: '实验室' },
{ id: 3, name: '产品' },
{ id: 4, name: '创业学院' },
{ id: 5, name: '发榜' },
],
};
},

13
src/components/Manage/ManageDate.vue

@ -18,8 +18,11 @@
<template slot="model" slot-scope="text, record">
<span v-if="record.model === 0">成果</span>
<span v-if="record.model === 1">仪器</span>
<span v-if="record.model === 2">实验室</span>
<span v-else-if="record.model === 1">仪器</span>
<span v-else-if="record.model === 2">实验室</span>
<span v-else-if="record.model === 3">产品</span>
<span v-else-if="record.model === 4">创业学院</span>
<span v-else-if="record.model === 5">发榜</span>
</template>
<template slot="edit" slot-scope="text, record">
@ -33,7 +36,7 @@
<a-empty v-else />
<!-- 编辑 -->
<manage-edit :editItem="editItem" :editVisible="editVisible" @closeModal="closeModal" @selModelSearch="selModelSearch" />
<manage-edit :edit-item="editItem" :edit-visible="editVisible" @closeModal="closeModal" @selModelSearch="selModelSearch" />
</div>
</template>
@ -74,9 +77,7 @@ const columns = [
export default {
name: 'ManageDate',
components: {
ManageEdit,
},
components: { ManageEdit },
props: { lists: { type: Object, default: () => {} }, pagination: { type: Object, default: () => {} } },

22
src/components/Manage/ManageSearch.vue

@ -1,16 +1,17 @@
<!--
* @Author: wally
* @email: 18603454788@163.com
* @Date: 2021-03-23 10:09:54
* @LastEditors: wally
* @LastEditTime: 2021-04-17 18:30:23
-->
<template>
<div class="d-flex flex-wrap pb-3">
<!-- 团队名称 -->
<div>
<a-input @change="handleChangeName" placeholder="分类名称" style="width: 150px" v-model="name" />
<a-select
@change="handleChangeSelect('model',$event)"
allow-clear
class="ml-3"
placeholder="类型"
style="width: 150px"
>
<a-select @change="handleChangeSelect('model', $event)" allow-clear class="ml-3" placeholder="类型" style="width: 150px">
<a-select-option :key="model.id" :value="model.id" v-for="model in models">{{ model.value }}</a-select-option>
</a-select>
@ -31,9 +32,7 @@ import ManageAdd from 'components/Manage/ManageAdd.vue';
export default {
name: 'ManageSearch',
components: {
ManageAdd,
},
components: { ManageAdd },
data() {
return {
visible: false,
@ -42,6 +41,9 @@ export default {
{ id: 0, value: '成果' },
{ id: 1, value: '仪器' },
{ id: 2, value: '实验室' },
{ id: 3, value: '产品' },
{ id: 4, value: '创业学院' },
{ id: 5, value: '发榜' },
],
};
},

6
src/components/Policy/PolicyAdd.vue

@ -78,9 +78,9 @@ export default {
tailItemLayout,
form: this.$form.createForm(this, { name: 'policy-edit' }),
applyStatus: [
{ id: 0, name: '审核中' },
{ id: 1, name: '未通过' },
{ id: 2, name: '已通过' },
{ id: 2, name: '审核中' },
{ id: 0, name: '未通过' },
{ id: 1, name: '已通过' },
],
status: null,
maxSize: 2048,

46
src/components/Policy/PolicyDate.vue

@ -1,15 +1,9 @@
<template>
<div class="main flex-1">
<div style="width:100%" v-if="lists && lists.length > 0">
<div style="width: 100%" v-if="lists && lists.length > 0">
<div class="mb-4">
<a-button :disabled="!hasSelected" :loading="loading" @click="start(2)" type="primary">审核通过</a-button>
<a-button
:disabled="!hasSelected"
:loading="loading"
@click="start(1)"
class="ml-3"
type="danger"
>审核不通过</a-button>
<a-button :disabled="!hasSelected" :loading="loading" @click="start(1)" type="primary">审核通过</a-button>
<a-button :disabled="!hasSelected" :loading="loading" @click="start(0)" class="ml-3" type="danger">审核不通过</a-button>
<span class="ml-2">
<template v-if="hasSelected">{{ `选中 ${selectedRowKeys.length} ` }}</template>
</span>
@ -31,27 +25,30 @@
</template>
<template slot="type" slot-scope="text, record">
<a-tag
color="blue"
>{{ record.type === 0 ? '申报通知' : record.type === 1 ? '公告公示' : record.type === 2 ? '政策动态' : record.type === 3 ? '申报指南' : '' }}</a-tag>
<a-tag color="blue">{{
record.type === 0
? '申报通知'
: record.type === 1
? '公告公示'
: record.type === 2
? '政策动态'
: record.type === 3
? '申报指南'
: ''
}}</a-tag>
</template>
<template slot="status" slot-scope="text, record">
<a-tag
:color="record.status === 2 ? 'green' : record.status === 1 ? 'red' : 'blue'"
>{{ record.status === 2 ? '已通过' : record.status === 1 ? '未通过' : '审核中' }}</a-tag>
<a-tag :color="record.status === 1 ? 'green' : record.status === 0 ? 'red' : 'blue'">{{
record.status === 1 ? '已通过' : record.status === 0 ? '未通过' : '审核中'
}}</a-tag>
</template>
<template slot="edit" slot-scope="text, record">
<a-icon @click="showEditModal(record)" class="pointer" theme="twoTone" type="edit" />
</template>
<div
class="d-flex flex-column"
slot="expandedRowRender"
slot-scope="record"
style="margin: 0"
>
<div class="d-flex flex-column" slot="expandedRowRender" slot-scope="record" style="margin: 0">
<div class="mb-3">
<span class="font-bold-14">原文链接</span>
{{ record.titleUrl }}
@ -73,12 +70,7 @@
<a-empty v-else />
<!-- 编辑 -->
<policy-edit
:editItem="editItem"
:editVisible="editVisible"
@closeModal="closeModal"
@getSelectTeam="getSelectTeam"
/>
<policy-edit :editItem="editItem" :editVisible="editVisible" @closeModal="closeModal" @getSelectTeam="getSelectTeam" />
</div>
</template>

6
src/components/Policy/PolicyEdit.vue

@ -139,9 +139,9 @@ export default {
tailItemLayout,
form: this.$form.createForm(this, { name: 'policy-edit' }),
applyStatus: [
{ id: 0, name: '审核中' },
{ id: 1, name: '未通过' },
{ id: 2, name: '已通过' },
{ id: 2, name: '审核中' },
{ id: 0, name: '未通过' },
{ id: 1, name: '已通过' },
],
status: null,
maxSize: 2048,

6
src/components/Policy/PolicySearch.vue

@ -52,9 +52,9 @@ export default {
{ code: 'area', value: '地区/发布部门' },
],
policyStatus: [
{ id: 0, value: '审核中' },
{ id: 1, value: '未通过' },
{ id: 2, value: '已通过' },
{ id: 2, value: '审核中' },
{ id: 0, value: '未通过' },
{ id: 1, value: '已通过' },
],
options: {
bw: 0,

39
src/config/api.js

@ -23,8 +23,7 @@ const place = `${greenvalley}/place`; // 孵化部入驻实体申请相关操作
const business = `${greenvalley}/business`; // 交流社区相关操作
const academy = `${greenvalley}/academy`; // 创业学院相关操作
const releaseTheList = `${greenvalley}/releaseTheList`; // 创业学院相关操作
const tutorRelated = `${greenvalley}/tutorRelated`; //导师的相关接口
const tutorRelated = `${greenvalley}/tutorRelated`; // 导师相关操作
export const upload = `${greenvalley}/file/upload`;
// websocket基础地址
@ -72,6 +71,9 @@ export const saveActivity = params => axios.post(`${activity}/save`, params);
// 修改活动公告
export const updateActivity = params => axios.post(`${activity}/update`, params);
// 删除活动公告
export const deleteActivity = params => axios.post(`${activity}/del`, params);
// 查看活动下所有申请的人员列表
export const getQueryApply = params => axios.post(`${activity}/query/apply`, params);
@ -195,6 +197,9 @@ export const entityApplicationSearch = params => axios.post(`${place}/search`, p
// 入驻企业申请的处理状态
export const changeStatus = params => axios.post(`${place}/status`, params);
// 入驻企业申请的删除
export const deletePlace = params => axios.post(`${place}/delete`, params);
// 入驻企业申请(管理员用)
export const handleApplyBackend = params => axios.post(`${place}/applyBackend`, params);
@ -294,14 +299,26 @@ export const selfulUnveiling = params => axios.post(`${releaseTheList}/selfulUnv
// 创新挑战修改揭榜审核状态
export const upUnveiling = params => axios.post(`${releaseTheList}/upSuccessfulUnveiling`, params);
//导师的相关接口
//查询老师 前台
export const selTeacher = params => axios.post(`${tutorRelated}/selTeacher`, params);
//查询老师 后台
export const findTeachH = params => axios.post(`${tutorRelated}/findTeachH`, params);
//增加老师
// 增加导师
export const addTeacher = params => axios.post(`${tutorRelated}/addTeacher`, params);
//查询导师分类
export const selTutorH = params => axios.post(`${tutorRelated}/selTutorH`, params);
// 删除导师
export const delTeacher = params => axios.post(`${tutorRelated}/delTeacher`, params);
// 修改导师
export const upTeacher = params => axios.post(`${tutorRelated}/upTeacher`, params);
// 查询导师
export const getFindTeachH = params => axios.post(`${tutorRelated}/findTeachH`, params);
// 查询导师类型
export const getSelTutorH = params => axios.post(`${tutorRelated}/selTutorH`, params);
// 增加导师类型
export const addTutor = params => axios.post(`${tutorRelated}/addTutor`, params);
// 修改导师类型
export const upTutorH = params => axios.post(`${tutorRelated}/upTutorH`, params);
// 删除导师类型
export const delTutorH = params => axios.post(`${tutorRelated}/delTutorH`, params);

14
src/router/index.js

@ -84,7 +84,7 @@ const routes = [
component: () =>
import(/* webpackChunkName: "about-us-derivative-enterprise" */ 'views/CooperativePartner/AboutUsDerivativeEnterprise.vue'),
},
// -------创新部
// 创新部
// 合作意向
{
path: '/cooperation-intention',
@ -190,11 +190,17 @@ const routes = [
name: 'College',
component: () => import(/* webpackChunkName: "industry-demand-report" */ 'views/College/College.vue'),
},
// 创业导师
// 导师管理
{
path: '/Teacher',
path: '/teacher',
name: 'Teacher',
component: () => import(/* webpackChunkName: "Teacher" */ 'views/Teacher/Teacher.vue'),
component: () => import(/* webpackChunkName: "industry-demand-report" */ 'views/Teacher/Teacher.vue'),
},
// 导师类型
{
path: '/teacher-type',
name: 'teacherType',
component: () => import(/* webpackChunkName: "industry-demand-report" */ 'views/teacherType/teacherType.vue'),
},
];

19
src/store/getters.js

@ -1,9 +1,14 @@
const getters = {
// 域定制导航展示形式
// 0 -> 无特殊导航文字
// 1 -> 横向定制导航
// 2 -> 纵向定制导航
};
/*
* @Author: wally
* @email: 18603454788@163.com
* @Date: 2021-04-20 12:33:22
* @LastEditors: wally
* @LastEditTime: 2021-04-22 13:09:35
*/
const getters = {};
// 域定制导航展示形式
// 0 -> 无特殊导航文字
// 1 -> 横向定制导航
// 2 -> 纵向定制导航
export default getters;

3
src/views/College/components/CollegeAdd.vue

@ -128,6 +128,7 @@ export default {
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
if (!isJpgOrPng) {
this.$message.error('仅支持 JPG/PNG 格式的图片!');
this.fileList = [];
}
return isJpgOrPng;
},
@ -195,7 +196,7 @@ export default {
this.picId = this.fileList[0];
const params = {
param: {
banners: this.banners,
banners: this.banner,
contentUrl: this.contentUrl,
coverPicture: this.fileList[0],
intro: this.intro,

1
src/views/College/components/CollegeEdit.vue

@ -10,6 +10,7 @@
v-model="editVisible"
width="700px"
>
<div>{{ editData }}</div>
<a-form :form="form" @submit="handleSubmit">
<!-- 标题 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="标题">

10
src/views/CooperativePartner/CooperativePartner.vue

@ -1,3 +1,10 @@
<!--
* @Author: wally
* @email: 18603454788@163.com
* @Date: 2021-03-23 10:09:55
* @LastEditors: wally
* @LastEditTime: 2021-04-20 12:44:57
-->
<template>
<div class="pa-3 white fill-height d-flex flex-column">
<partner-search @getBackendSearch="getBackendSearch" />
@ -28,7 +35,8 @@ export default {
computed: mapState(['partnerOptions']),
async created() {
const options = { type: 1, typeOfPlatform: 2 };
const { query } = this.$route;
const options = { type: query.type1, typeOfPlatform: query.type2 };
this.setPartnerOptions(options);
await this.getBackendSearch();
},

10
src/views/EntityApplication/VirtualApplication.vue

@ -1,3 +1,10 @@
<!--
* @Author: wally
* @email: 18603454788@163.com
* @Date: 2021-03-23 10:09:55
* @LastEditors: wally
* @LastEditTime: 2021-04-17 19:41:42
-->
<template>
<div class="pa-3 white fill-height d-flex flex-column">
<entity-apply-search @entityApplicationSearch="entityApplicationSearch" />
@ -28,7 +35,8 @@ export default {
computed: mapState(['placeType']),
async created() {
this.setPlaceType(0);
const { query } = this.$route;
this.setPlaceType(query.type);
await this.entityApplicationSearch();
},

11
src/views/Index/Index.vue

@ -1,9 +1,14 @@
<!--
* @Author: wally
* @email: 18603454788@163.com
* @Date: 2021-04-20 12:33:22
* @LastEditors: wally
* @LastEditTime: 2021-04-22 13:08:42
-->
<template>
<div></div>
</template>
<script>
export default {
name: 'Index',
};
export default { name: 'Index' };
</script>

16
src/views/InnovativeAchievements/InnovativeAchievements.vue

@ -1,12 +1,14 @@
<!--
* @Author: wally
* @email: 18603454788@163.com
* @Date: 2021-04-20 12:33:22
* @LastEditors: wally
* @LastEditTime: 2021-04-20 12:45:39
-->
<template>
<div class="pa-3 white fill-height d-flex flex-column">
<development-search :typeLists="typeLists" @selResSearch="selResSearch" />
<development-date
:lists="lists"
:pagination="pagination"
:typeLists="typeLists"
@selResSearch="selResSearch"
/>
<development-search :type-lists="typeLists" @selResSearch="selResSearch" />
<development-date :lists="lists" :pagination="pagination" :type-lists="typeLists" @selResSearch="selResSearch" />
</div>
</template>

19
src/views/UserManage/UserManage.vue

@ -1,3 +1,10 @@
<!--
* @Author: wally
* @email: 18603454788@163.com
* @Date: 2021-04-20 12:33:22
* @LastEditors: wally
* @LastEditTime: 2021-04-20 12:45:23
-->
<template>
<div class="pa-3 white fill-height d-flex flex-column">
<!-- <user-search />
@ -8,14 +15,14 @@
<script>
// @ is an alias to /src
import UserSearch from 'components/User/UserSearch.vue';
import UserDate from 'components/User/UserDate.vue';
// import UserSearch from 'components/User/UserSearch.vue';
// import UserDate from 'components/User/UserDate.vue';
export default {
name: 'Home',
components: {
UserSearch,
UserDate,
},
// components: {
// UserSearch,
// UserDate,
// },
};
</script>

550
src/views/teacher/Teacher.vue

@ -0,0 +1,550 @@
<template>
<div class="pa-3 white fill-height d-flex flex-column">
<!-- 搜索 -->
<div class="d-flex flex-wrap pb-3">
<div>
<span class="mr-4">导师姓名:</span>
<a-input placeholder="导师姓名" style="width: 150px" v-model="teacherName" />
<span class="ml-4 mr-4">导师分类:</span>
<a-select mode="multiple" style="width: 400px" @change="typeChange($event, 0)" placeholder="导师分类">
<a-select-option v-for="item in typeList" :key="item.id" :value="item.id">
{{ item.categoryName }}
</a-select-option>
</a-select>
<a-button @click="selModelSearch" class="ml-3" type="primary">搜索</a-button>
</div>
<div class="flex-1"></div>
<a-button class="editable-add-btn" @click="visible = true" style="margin-top: 1px" type="primary">增加</a-button>
</div>
<!-- 添加表单 -->
<a-modal :mask-closable="false" destroy-on-close title="添加导师" v-model="visible" width="700px" @ok="addTeacherData">
<a-form :form="form">
<!-- 公司名称 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="公司名称">
<a-input placeholder="所在公司名称" v-model="addData.company" />
</a-form-item>
<!-- 职务/职称 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="职务/职称">
<a-input placeholder="职务/职称" v-model="addData.duties" />
</a-form-item>
<!-- 导师姓名 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="导师姓名">
<a-input placeholder="导师姓名" v-model="addData.name" />
</a-form-item>
<!-- 导师性别 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="导师性别">
<a-radio-group :default-value="0" @change="changeAddSex">
<a-radio :value="0"> </a-radio>
<a-radio :value="1"> </a-radio>
</a-radio-group>
</a-form-item>
<!-- 导师照片 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="导师照片">
<a-upload :action="upload" :before-upload="beforeUpload" @change="handleChange($event, 1)" list-type="picture" name="files">
<a-button v-show="fileList.length - 0 === 0"> <a-icon type="upload" />选择图片 </a-button>
</a-upload>
</a-form-item>
<!-- 导师简介 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="导师简介">
<a-textarea style="height: 100px" placeholder="导师简介" v-model="addData.intro" />
</a-form-item>
<!-- 服务案例 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="服务案例">
<a-textarea style="height: 100px" placeholder="服务案例" v-model="addData.serviceCase" />
</a-form-item>
<!-- 导师分类 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="导师分类">
<a-select mode="multiple" style="width: 100%" @change="typeChange($event, 1)" placeholder="导师分类">
<a-select-option v-for="item in typeList" :key="item.id" :value="item.id">
{{ item.categoryName }}
</a-select-option>
</a-select>
</a-form-item>
<!-- 导师聘书 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="导师聘书">
<a-upload :action="upload" :before-upload="beforeUpload1" @change="handleChange($event, 2)" list-type="picture" name="files">
<a-button v-show="fileList1.length - 0 === 0"> <a-icon type="upload" />选择图片 </a-button>
</a-upload>
</a-form-item>
<!-- 导师简历 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="导师简历">
<a-upload :action="upload" :before-upload="beforeUpload2" @change="handleChange($event, 3)" list-type="picture" name="files">
<a-button v-show="fileList2.length - 0 === 0"> <a-icon type="upload" />选择图片 </a-button>
</a-upload>
</a-form-item>
</a-form>
</a-modal>
<!-- 表格 -->
<div class="main flex-1">
<div style="width: 100%" v-if="lists.list && lists.list.length > 0">
<a-table
:columns="columns"
:data-source="lists.list"
:pagination="pagination"
:row-key="record => record.id"
@change="handleTableChange"
:scroll="{ y: height }"
bordered
class="white"
>
<template slot="id" slot-scope="text, record, index">
<span>{{ index + 1 }}</span>
</template>
<template slot="sex" slot-scope="text, record">
<span v-if="record.sex === 0"></span>
<span v-else></span>
</template>
<template slot="teacherPhoto" slot-scope="text, record">
<img style="width: 100%" v-if="record.teacherPhoto" :src="record.teacherPhoto" />
</template>
<template slot="resume" slot-scope="text, record">
<img style="width: 100%" v-if="record.resume" :src="record.resume" />
</template>
<template slot="offer" slot-scope="text, record">
<img style="width: 100%" v-if="record.offer" :src="record.offer" />
</template>
<template slot="edit" slot-scope="text, record">
<a-icon @click="showEditModal(record)" class="pointer" theme="twoTone" type="edit" />
<a-popconfirm @confirm="() => onDelete(record.id)" title="确定要删除这一条?" v-if="lists.list.length">
<a-icon class="ml-4 pointer" theme="twoTone" two-tone-color="#ff0000" type="delete" />
</a-popconfirm>
</template>
</a-table>
</div>
<a-empty v-else />
</div>
<!-- 修改表单 -->
<a-modal :mask-closable="false" destroy-on-close title="修改" v-model="visible1" width="700px" @ok="editTeacherData">
<a-form :form="form">
<!-- 公司名称 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="公司名称">
<a-input placeholder="所在公司名称" v-model="editData.company" />
</a-form-item>
<!-- 职务/职称 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="职务/职称">
<a-input placeholder="职务/职称" v-model="editData.duties" />
</a-form-item>
<!-- 导师姓名 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="导师姓名">
<a-input placeholder="导师姓名" v-model="editData.name" />
</a-form-item>
<!-- 导师性别 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="导师性别">
<a-radio-group :default-value="editData.sex" @change="changeAddSex">
<a-radio :value="0"> </a-radio>
<a-radio :value="1"> </a-radio>
</a-radio-group>
</a-form-item>
<!-- 导师照片 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="导师照片">
<a-upload :action="upload" @change="handleChange($event, 4)" name="files">
<a-button v-if="!editData.teacherPhoto"> <a-icon type="upload" />选择图片 </a-button>
<img v-else :src="editData.teacherPhoto" style="width: 100%; cursor: pointer" title="重新选择" />
<div slot="listType"></div>
</a-upload>
</a-form-item>
<!-- 导师简介 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="导师简介">
<a-textarea style="height: 100px" placeholder="导师简介" v-model="editData.intro" />
</a-form-item>
<!-- 服务案例 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="服务案例">
<a-textarea style="height: 100px" placeholder="服务案例" v-model="editData.serviceCase" />
</a-form-item>
<!-- 导师分类 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="导师分类">
<a-select
:default-value="editData.categoryList"
mode="multiple"
style="width: 100%"
@change="typeChange($event, 2)"
placeholder="导师分类"
>
<a-select-option v-for="item in typeList" :key="item.id" :value="item.id">
{{ item.categoryName }}
</a-select-option>
</a-select>
</a-form-item>
<!-- 导师聘书 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="导师聘书">
<a-upload :action="upload" @change="handleChange($event, 5)" name="files">
<a-button v-if="!editData.offer"> <a-icon type="upload" />选择图片 </a-button>
<img v-else :src="editData.offer" style="width: 100%; cursor: pointer" title="重新选择" />
<div slot="listType"></div>
</a-upload>
</a-form-item>
<!-- 导师简历 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="导师简历">
<a-upload :action="upload" @change="handleChange($event, 6)" name="files">
<a-button v-if="!editData.resume"> <a-icon type="upload" />选择图片 </a-button>
<img v-else :src="editData.resume" style="width: 100%; cursor: pointer" title="重新选择" />
<div slot="listType"></div>
</a-upload>
</a-form-item>
</a-form>
</a-modal>
</div>
</template>
<script>
import { upload, getFindTeachH, getSelTutorH, delTeacher, addTeacher, upTeacher } from 'config/api';
const formItemLayout = {
labelCol: { span: 6 },
wrapperCol: { span: 16 },
};
const tailItemLayout = { wrapperCol: { span: 16, offset: 6 } };
const columns = [
{
title: '序号',
align: 'center',
dataIndex: 'id',
key: 'id',
width: '7%',
scopedSlots: { customRender: 'id' },
},
{
title: '所在单位',
align: 'center',
dataIndex: 'company',
key: 'company',
},
{
title: '职务',
align: 'center',
dataIndex: 'duties',
key: 'duties',
},
{
title: '姓名',
align: 'center',
dataIndex: 'name',
key: 'name',
},
{
title: '性别',
align: 'center',
dataIndex: 'sex',
key: 'sex',
scopedSlots: { customRender: 'sex' },
},
{
title: '照片',
align: 'center',
dataIndex: 'teacherPhoto',
key: 'teacherPhoto',
scopedSlots: { customRender: 'teacherPhoto' },
},
{
title: '简介',
align: 'center',
dataIndex: 'intro',
key: 'intro',
},
{
title: '教师聘书',
align: 'center',
dataIndex: 'offer',
key: 'offer',
scopedSlots: { customRender: 'offer' },
},
{
title: '教师简历',
align: 'center',
dataIndex: 'resume',
key: 'resume',
scopedSlots: { customRender: 'resume' },
},
{
title: '编辑',
align: 'center',
dataIndex: 'edit',
key: 'edit',
scopedSlots: { customRender: 'edit' },
},
];
export default {
name: 'Teacher',
data() {
return {
upload,
//
beforeUpload: file => {
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
if (!isJpgOrPng) {
this.$message.error('仅支持 JPG/PNG 格式的图片!');
this.fileList = [];
}
return isJpgOrPng;
},
beforeUpload1: file => {
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
if (!isJpgOrPng) {
this.$message.error('仅支持 JPG/PNG 格式的图片!');
this.fileList1 = [];
}
return isJpgOrPng;
},
beforeUpload2: file => {
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
if (!isJpgOrPng) {
this.$message.error('仅支持 JPG/PNG 格式的图片!');
this.fileList2 = [];
}
return isJpgOrPng;
},
columns,
formItemLayout,
tailItemLayout,
form: this.$form.createForm(this, { name: 'teacher-add' }),
height: '',
lists: {},
pagination: { current: 1, pageSize: 10, total: 0 },
typeList: [], //
teacherType: [], //
addType: [], //
addData: {
company: '', // /
duties: '', // /
intro: '', // (id)
name: '', //
serviceCase: '', //
sex: 0, //
},
teacherName: '',
pageNum: 1,
visible: false, //
visible1: false, //
fileList: [], //
fileList1: [], //
fileList2: [], //
editData: {
id: '', // id
company: '', // /
duties: '', // /
intro: '', // (id)
name: '', //
serviceCase: '', //
sex: 0, //
teacherPhoto: '', //
teacherPhotoId: '', // id
offer: '', // ()
offerId: '', // id
resume: '', // ()
resumeId: '', // id
categoryList: [],
},
};
},
created() {
this.getTeaClass();
this.selModelSearch();
},
mounted() {
let th = 150;
let wh = window.innerHeight;
this.height = wh - th;
window.onresize = () => {
return (() => {
wh = window.innerHeight;
this.height = wh - th;
})();
};
},
methods: {
/**
* 获取导师列表
*/
async selModelSearch() {
try {
const { teacherName, pageNum, teacherType } = this;
const params = {
param: {
teacherName,
pageNum,
pageSize: 10,
teacherType,
},
};
const res = await getFindTeachH(params);
const { code, data, msg } = res.data;
if (code === 200) {
this.lists = data;
this.pagination.total = parseInt(data.total);
const paper = { ...this.pagination };
paper.current = data.pageNum;
paper.total = +data.total;
paper.pageSize = data.pageSize;
this.pagination = paper;
} else {
throw msg;
}
} catch (error) {
throw error;
}
},
/**
* 查询导师类型
*/
async getTeaClass() {
try {
const params = { param: { categoryName: '', recStatus: 0 } };
const res = await getSelTutorH(params);
const { code, msg, data } = res.data;
if (code === 200) {
this.typeList = data;
} else {
throw msg;
}
} catch (error) {
throw error;
}
},
/**
* 改变导师分类
*/
typeChange(e, num) {
if (num === 0) {
this.teacherType = e;
} else if (num === 1) {
this.addType = e;
} else if (num === 2) {
this.editData.categoryList = e;
}
},
/**
* 提交添加表单
*/
handleSubmit(e) {
console.log(e);
},
/**
* 表格改变分页
*/
handleTableChange(pagination) {
this.pageNum = pagination.current;
this.selModelSearch();
},
//
async onDelete(teacherId) {
try {
const params = { param: { teacherId } };
const res = await delTeacher(params);
const { data, msg, code } = res.data;
if (code === 200) {
this.$message.success('删除成功');
this.selModelSearch();
} else {
throw msg;
}
} catch (error) {
this.$message.error(error || '删除失败');
}
},
/**
* 添加时修改性别
*/
changeAddSex(e) {
this.addData.sex = e.target.value;
},
/**
* 增加导师的上传图片事件
*/
handleChange(info, num) {
if (info.file.status === 'done') {
if (num === 1) {
this.fileList.push(info.file.response.data[0].id);
} else if (num === 2) {
this.fileList1.push(info.file.response.data[0].id);
} else if (num === 3) {
this.fileList2.push(info.file.response.data[0].id);
} else if (num === 4) {
this.editData.teacherPhoto = info.file.response.data[0].visitUrl;
this.editData.teacherPhotoId = info.file.response.data[0].id;
} else if (num === 5) {
this.editData.offer = info.file.response.data[0].visitUrl;
this.editData.offerId = info.file.response.data[0].id;
} else if (num === 6) {
this.editData.resume = info.file.response.data[0].visitUrl;
this.editData.resumeId = info.file.response.data[0].id;
}
} else if (info.file.status === 'removed') {
if (num === 1) {
this.fileList = info.fileList;
} else if (num === 2) {
this.fileList1 = info.fileList;
} else if (num === 3) {
this.fileList2 = info.fileList;
}
}
},
/**
* 增加导师 事件
*/
async addTeacherData() {
try {
const { addData, addType, fileList, fileList1, fileList2 } = this;
const params = {
param: {
services: addType,
teacherPhoto: fileList[0],
offer: fileList1[0],
resume: fileList2[0],
...addData,
},
};
const res = await addTeacher(params);
const { code, msg, data } = res.data;
if (code === 200) {
this.$message.success('增加导师成功');
this.selModelSearch();
this.visible = false;
} else {
this.$message.error('增加导师失败');
}
} catch (error) {
this.$message.error('增加导师失败');
}
},
/**
* 显示修改modal
*/
showEditModal(data) {
let { editData } = this;
editData = { ...data };
this.editData = { ...editData };
this.visible1 = true;
},
/**
* 修改确定事件
*/
async editTeacherData() {
try {
const { editData } = this;
const params = {
param: {
...editData,
offer: editData.offerId,
resume: editData.resumeId,
teacherPhoto: editData.teacherPhotoId,
},
};
const res = await upTeacher(params);
const { code, msg, data } = res.data;
if (code === 200) {
this.visible1 = false;
this.$message.success('修改成功');
this.selModelSearch();
} else {
this.$message.error(msg);
}
} catch (error) {
this.$message.error('修改失败');
}
},
},
};
</script>

310
src/views/teacherType/teacherType.vue

@ -0,0 +1,310 @@
<template>
<div class="pa-3 white fill-height d-flex flex-column">
<!-- 搜索 -->
<div class="d-flex flex-wrap pb-3">
<div>
<span class="mr-4">分类名称:</span>
<a-input placeholder="分类名称" style="width: 150px" v-model="typeName" />
<span class="ml-4 mr-4">分类状态:</span>
<a-select allow-clear style="width: 200px" @change="typeChange($event, 0)" placeholder="分类状态">
<a-select-option v-for="item in typeList" :key="item.id" :value="item.id">
{{ item.categoryName }}
</a-select-option>
</a-select>
<a-button @click="getTeaClass" class="ml-3" type="primary">搜索</a-button>
</div>
<div class="flex-1"></div>
<a-button class="editable-add-btn" @click="visible = true" style="margin-top: 1px" type="primary">增加</a-button>
</div>
<!-- 添加表单 -->
<a-modal :mask-closable="false" destroy-on-close title="添加导师" v-model="visible" width="700px" @ok="addClass">
<a-form :form="form">
<!-- 分类名称 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="分类名称" required>
<a-input placeholder="分类名称" v-model="addType" />
</a-form-item>
</a-form>
</a-modal>
<!-- 表格 -->
<div class="main flex-1">
<div style="width: 100%" v-if="list && list.length > 0">
<a-table
:columns="columns"
:data-source="list"
:pagination="pagination"
:row-key="record => record.id"
@change="handleTableChange"
:scroll="{ y: height }"
bordered
class="white"
>
<template slot="id" slot-scope="text, record, index">
<span>{{ index + 1 }}</span>
</template>
<template slot="recStatus" slot-scope="text, record">
<span style="width: 100%" v-if="record.recStatus === 0">正常</span>
<span style="width: 100%" v-else-if="record.recStatus === 1">禁用</span>
<span style="width: 100%" v-else-if="record.recStatus === 2">删除</span>
</template>
<template slot="edit" slot-scope="text, record">
<a-icon @click="showEditModel(record)" class="mr-3 pointer" theme="twoTone" type="edit" />
<a-popconfirm @confirm="() => onDelete(record.id)" title="确定要删除这一条?">
<a-icon class="mr-3 pointer" theme="twoTone" two-tone-color="#ff0000" type="delete" />
</a-popconfirm>
</template>
</a-table>
</div>
<a-empty v-else />
</div>
<!-- 修改表单 -->
<a-modal :mask-closable="false" destroy-on-close title="修改" v-model="visible1" width="700px" @ok="editChange">
<a-form :form="form">
<!-- 分类名称 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="分类名称">
<a-input placeholder="分类名称" v-model="editData.categoryName" />
</a-form-item>
<!-- 分类状态 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="分类状态">
<a-select
:default-value="getDefault(editData.recStatus)"
allow-clear
style="width: 100%"
@change="typeChange($event, 1)"
placeholder="分类状态"
>
<a-select-option v-for="item in typeList" :key="item.id" :value="item.id">
{{ item.categoryName }}
</a-select-option>
</a-select>
</a-form-item>
</a-form>
</a-modal>
</div>
</template>
<script>
import { getSelTutorH, addTutor, upTutorH, delTutorH } from 'config/api';
const formItemLayout = {
labelCol: { span: 6 },
wrapperCol: { span: 16 },
};
const tailItemLayout = { wrapperCol: { span: 16, offset: 6 } };
const columns = [
{
title: '序号',
align: 'center',
dataIndex: 'id',
key: 'id',
width: '7%',
scopedSlots: { customRender: 'id' },
},
{
title: '分类名称',
align: 'center',
dataIndex: 'categoryName',
key: 'categoryName',
},
{
title: '分类状态',
align: 'center',
dataIndex: 'recStatus',
key: 'recStatus',
scopedSlots: { customRender: 'recStatus' },
},
{
title: '修改',
align: 'center',
dataIndex: 'edit',
key: 'edit',
scopedSlots: { customRender: 'edit' },
},
];
export default {
name: 'Teacher',
data() {
return {
columns,
formItemLayout,
tailItemLayout,
form: this.$form.createForm(this, { name: 'teacher-add' }),
height: '',
list: [],
pagination: { current: 1, pageSize: 10, total: 0 },
typeList: [
{
id: 0,
categoryName: '正常',
},
{
id: 1,
categoryName: '禁用',
},
{
id: 2,
categoryName: '删除',
},
], //
teacherType: '', //
addType: '', //
typeName: '',
pageNum: 1,
visible: false, //
visible1: false, //
editData: {
categoryName: '',
recStatus: '',
id: '',
},
};
},
created() {
this.getTeaClass();
},
mounted() {
let th = 150;
let wh = window.innerHeight;
this.height = wh - th;
window.onresize = () => {
return (() => {
wh = window.innerHeight;
this.height = wh - th;
})();
};
},
methods: {
/**
* 查询导师类型
*/
async getTeaClass() {
try {
const params = {
param: {
categoryName: this.typeName,
recStatus: this.teacherType,
},
};
const res = await getSelTutorH(params);
const { code, msg, data } = res.data;
if (code === 200) {
this.list = data;
} else {
throw msg;
}
} catch (error) {
throw error;
}
},
/**
* 改变导师分类
*/
typeChange(e, num) {
if (num === 0) {
this.teacherType = e;
} else if (num === 1) {
this.editData.recStatus = e;
}
},
/**
* 添加导师分类
*/
async addClass() {
try {
const { addType } = this;
if (addType === '') {
this.$message.error('请填写分类名称');
return;
}
const params = { param: { categoryName: addType } };
const res = await addTutor(params);
const { code, msg, data } = res.data;
if (code === 200) {
this.$message.success('分类添加成功');
this.visible = false;
this.getTeaClass();
} else {
this.$message.error('分类添加失败');
}
} catch (error) {
this.$message.error('分类添加失败');
}
},
/**
* 表格改变分页
*/
handleTableChange(pagination) {
// this.pageNum = pagination.current;
this.pagination.current = pagination.current;
},
/**
* 显示修改弹框,获取需要修改的数据
*/
showEditModel(data) {
this.editData = data;
this.visible1 = true;
},
/**
* 确认修改
*/
async editChange() {
try {
const { editData } = this;
if (!editData.categoryName && !editData.recStatus) {
this.$message.error('请填写完整信息');
return;
}
const params = { param: { ...editData } };
const res = await upTutorH(params);
const { code, msg, data } = res.data;
if (code === 200) {
this.$message.success('修改成功');
this.visible1 = false;
this.editData = {
categoryName: '',
recStatus: '',
id: '',
};
} else {
this.$message.error(msg);
}
} catch (error) {
this.$message.error('修改失败');
}
},
/**
* 获取分类默认值
*/
getDefault(e) {
if (e !== '') {
const defaultObj = this.typeList.find(item => {
return item.id === e;
});
return defaultObj.categoryName;
} else {
return '';
}
},
//
async onDelete(id){
try {
const params = { param: { id} };
const res = await delTutorH(params);
const { data, msg, code } = res.data;
if (code === 200) {
this.$message.success('删除成功');
this.getTeaClass();
} else {
throw msg;
}
} catch (error) {
this.$message.error(error || '删除失败');
}
},
},
};
</script>

63
yarn.lock

@ -1716,8 +1716,8 @@
"color-convert" "^2.0.1"
"ansi-styles@^4.1.0":
"integrity" "sha1-7dgDYornHATIWuegkG7a00tkiTc="
"resolved" "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1601839122515&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz"
"integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
"resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
"version" "4.3.0"
dependencies:
"color-convert" "^2.0.1"
@ -2535,8 +2535,8 @@
"supports-color" "^7.1.0"
"chalk@^4.1.0":
"integrity" "sha1-ThSHCmGNni7dl92DRf2dncMVZGo="
"resolved" "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz"
"integrity" "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A=="
"resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz"
"version" "4.1.0"
dependencies:
"ansi-styles" "^4.1.0"
@ -2755,8 +2755,8 @@
"color-name" "1.1.3"
"color-convert@^2.0.1":
"integrity" "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM="
"resolved" "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz"
"integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
"resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
"version" "2.0.1"
dependencies:
"color-name" "~1.1.4"
@ -2767,8 +2767,8 @@
"version" "1.1.3"
"color-name@~1.1.4":
"integrity" "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI="
"resolved" "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz"
"integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
"resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
"version" "1.1.4"
"color-string@^1.5.4":
@ -3393,6 +3393,11 @@
"resolved" "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz?cache=0&sync_timestamp=1593463429320&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-1.5.2.tgz"
"version" "1.5.2"
"deepmerge@^4.2.2":
"integrity" "sha1-RNLqNnm49NT/ujPwPYZfwee/SVU="
"resolved" "https://registry.npm.taobao.org/deepmerge/download/deepmerge-4.2.2.tgz?cache=0&sync_timestamp=1593463429320&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-4.2.2.tgz"
"version" "4.2.2"
"deepmerge@1.3.2":
"integrity" "sha1-FmNpFinU2/42T6EqKk8KqGqjoFA="
"resolved" "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.3.2.tgz?cache=0&sync_timestamp=1593463429320&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-1.3.2.tgz"
@ -3594,7 +3599,7 @@
"dompurify@^2.0.0":
"integrity" "sha1-VJRdxcC0XOWuIocFd36OWdey7cQ="
"resolved" "https://registry.npm.taobao.org/dompurify/download/dompurify-2.2.6.tgz?cache=0&sync_timestamp=1608303432721&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdompurify%2Fdownload%2Fdompurify-2.2.6.tgz"
"resolved" "https://registry.npm.taobao.org/dompurify/download/dompurify-2.2.6.tgz"
"version" "2.2.6"
"domready@1.0.8":
@ -4697,8 +4702,8 @@
"version" "3.0.0"
"has-flag@^4.0.0":
"integrity" "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s="
"resolved" "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz"
"integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
"resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
"version" "4.0.0"
"has-symbols@^1.0.1":
@ -5957,6 +5962,11 @@
dependencies:
"object-visit" "^1.0.0"
"material-design-icons-iconfont@^6.1.0":
"integrity" "sha1-/60hpx8gADNv1BDL66Nt2/MB8PI="
"resolved" "https://registry.npm.taobao.org/material-design-icons-iconfont/download/material-design-icons-iconfont-6.1.0.tgz"
"version" "6.1.0"
"md5.js@^1.3.4":
"integrity" "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8="
"resolved" "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz"
@ -8043,7 +8053,7 @@
"sass-loader@^8.0.2":
"integrity" "sha1-3r7NjDziQ8dkVPLoKQSCFQOACQ0="
"resolved" "https://registry.npm.taobao.org/sass-loader/download/sass-loader-8.0.2.tgz"
"resolved" "https://registry.npm.taobao.org/sass-loader/download/sass-loader-8.0.2.tgz?cache=0&sync_timestamp=1612804548821&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsass-loader%2Fdownload%2Fsass-loader-8.0.2.tgz"
"version" "8.0.2"
dependencies:
"clone-deep" "^4.0.1"
@ -8052,10 +8062,10 @@
"schema-utils" "^2.6.1"
"semver" "^6.3.0"
"sass@^1.26.5":
"integrity" "sha1-7E4YQsFG2OqSWMKMFBuMK3xqt/E="
"resolved" "https://registry.npm.taobao.org/sass/download/sass-1.29.0.tgz?cache=0&sync_timestamp=1604536483628&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsass%2Fdownload%2Fsass-1.29.0.tgz"
"version" "1.29.0"
"sass@^1.32.8":
"integrity" "sha1-8WqavY3FMK3Yg05QaHiigIwDe9w="
"resolved" "https://registry.npm.taobao.org/sass/download/sass-1.32.8.tgz?cache=0&sync_timestamp=1613687400541&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsass%2Fdownload%2Fsass-1.32.8.tgz"
"version" "1.32.8"
dependencies:
"chokidar" ">=2.0.0 <4.0.0"
@ -8797,8 +8807,8 @@
"has-flag" "^4.0.0"
"supports-color@^7.1.0":
"integrity" "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo="
"resolved" "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1598611732186&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz"
"integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
"resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
"version" "7.2.0"
dependencies:
"has-flag" "^4.0.0"
@ -9397,8 +9407,8 @@
"version" "0.0.4"
"vue-dompurify-html@^2.3.0":
"integrity" "sha1-sXXt2lc2LPewPShkRo+mROBaKtA="
"resolved" "https://registry.npm.taobao.org/vue-dompurify-html/download/vue-dompurify-html-2.3.0.tgz"
"integrity" "sha512-Iz9wI4iiJF+rzC2x3r8quw/VXrkwgMsWXt9p0Le4wXtolBXwMDJOmK3QNMiNg36bzU2b0f3En/wjidoeRVNZ7A=="
"resolved" "https://registry.npmjs.org/vue-dompurify-html/-/vue-dompurify-html-2.3.0.tgz"
"version" "2.3.0"
dependencies:
"dompurify" "^2.0.0"
@ -9421,9 +9431,9 @@
"version" "2.3.4"
"vue-loader-v16@npm:vue-loader@^16.0.0-beta.7":
"integrity" "sha1-nB8WhOLQHIpyIW+dTbEZ4VxiJkU="
"resolved" "https://registry.npm.taobao.org/vue-loader/download/vue-loader-16.0.0-rc.1.tgz?cache=0&sync_timestamp=1604764704943&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-loader%2Fdownload%2Fvue-loader-16.0.0-rc.1.tgz"
"version" "16.0.0-rc.1"
"integrity" "sha512-TitGhqSQ61RJljMmhIGvfWzJ2zk9m1Qug049Ugml6QP3t0e95o0XJjk29roNEiPKJQBEi8Ord5hFuSuELzSp8Q=="
"resolved" "https://registry.npmjs.org/vue-loader/-/vue-loader-16.2.0.tgz"
"version" "16.2.0"
dependencies:
"chalk" "^4.1.0"
"hash-sum" "^2.0.0"
@ -9479,11 +9489,16 @@
"resolved" "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz"
"version" "1.9.1"
"vue@^2.0.0", "vue@^2.6.11":
"vue@^2.6.11":
"integrity" "sha1-9evU+mvShpQD4pqJau1JBEVskSM="
"resolved" "https://registry.npm.taobao.org/vue/download/vue-2.6.12.tgz"
"version" "2.6.12"
"vuetify@^2.4.6":
"integrity" "sha1-Ens3vTbHpj9hYV4M1vl+iyA+egc="
"resolved" "https://registry.npm.taobao.org/vuetify/download/vuetify-2.4.6.tgz"
"version" "2.4.6"
"vuex@^3.4.0":
"integrity" "sha1-8bjc6mSbwlJUz09DWAgdv12hiz0="
"resolved" "https://registry.npm.taobao.org/vuex/download/vuex-3.5.1.tgz?cache=0&sync_timestamp=1604065438225&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvuex%2Fdownload%2Fvuex-3.5.1.tgz"

Loading…
Cancel
Save