Browse Source

修改bug

master
rose 4 years ago
parent
commit
76e2f4858c
  1. 16101
      package-lock.json
  2. 25
      src/App.vue
  3. 165
      src/components/Activity/ActivityAdd.vue
  4. 89
      src/components/Activity/ActivityDate.vue
  5. 110
      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. 31
      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> <template>
<a-config-provider :locale="zh_CN"> <a-config-provider :locale="zh_CN">
<div class="d-flex flex-row flex-nowrap" id="app"> <div class="d-flex flex-row flex-nowrap" id="app">
<!-- <btn-con /> --> <btn-con />
<router-view class="flex-1 bg pa-3"></router-view> <router-view class="flex-1 bg pa-3"></router-view>
</div> </div>
</a-config-provider> </a-config-provider>
@ -10,15 +17,13 @@
<script> <script>
import { mapState, mapActions, mapMutations } from 'vuex'; import { mapState, mapActions, mapMutations } from 'vuex';
import zh_CN from 'ant-design-vue/lib/locale-provider/zh_CN'; 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 { export default {
name: 'app', name: 'App',
// components: { BtnCon }, components: { BtnCon },
data() { data() {
return { return { zh_CN };
zh_CN,
};
}, },
computed: mapState(['anyringToken', 'ptProps']), computed: mapState(['anyringToken', 'ptProps']),
@ -35,9 +40,9 @@ export default {
created() { created() {
// //
// const userId = '1218763410024566784'; const userId = '1218763410024566784';
// const params = { userId }; const params = { userId };
// this.getUserId(params); this.getUserId(params);
const that = this; const that = this;
window.plugin = window.TallPlugin.init(); window.plugin = window.TallPlugin.init();

165
src/components/Activity/ActivityAdd.vue

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

89
src/components/Activity/ActivityDate.vue

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

110
src/components/Activity/ActivityEdit.vue

@ -12,11 +12,7 @@
> >
<a-form :form="form" @submit="handleSubmit" v-if="editVisible && editItem"> <a-form :form="form" @submit="handleSubmit" v-if="editVisible && editItem">
<!-- 标题 --> <!-- 标题 -->
<a-form-item <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="标题">
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="标题"
>
<a-input <a-input
placeholder="标题" placeholder="标题"
v-decorator="[ v-decorator="[
@ -33,11 +29,7 @@
/> />
</a-form-item> </a-form-item>
<!-- 地点 --> <!-- 地点 -->
<a-form-item <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="地点">
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="地点"
>
<a-input <a-input
placeholder="地点" placeholder="地点"
v-decorator="[ v-decorator="[
@ -54,30 +46,21 @@
/> />
</a-form-item> </a-form-item>
<!-- 时间 --> <!-- 时间 -->
<a-form-item <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="时间" required>
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="时间"
required
>
<a-range-picker <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" @change="onChange"
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
show-time show-time
style="width:100%" style="width: 100%"
/> />
</a-form-item> </a-form-item>
<!-- 活动类型 --> <!-- 活动类型 -->
<a-form-item <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="活动类型">
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="活动类型"
>
<a-select <a-select
@change="changeType" @change="changeType"
placeholder="活动类型" placeholder="活动类型"
style="width:100%" style="width: 100%"
v-decorator="[ v-decorator="[
'activityType', 'activityType',
{ {
@ -85,26 +68,18 @@
}, },
]" ]"
> >
<a-select-option <a-select-option :key="index" :value="category.id" v-for="(category, index) in types">{{ category.name }}</a-select-option>
:key="index"
:value="category.id"
v-for="(category, index) in types"
>{{ category.name }}</a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
<!-- 主讲人 --> <!-- 主讲人 -->
<a-form-item <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="主讲人">
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="主讲人"
>
<a-input <a-input
placeholder="主讲人" placeholder="主讲人"
v-decorator="[ v-decorator="[
'name', 'name',
{ {
initialValue: (editItem.info && editItem.info.name) ? editItem.info.name : '', initialValue: editItem.info && editItem.info.name ? editItem.info.name : '',
rules: [ rules: [
{ required: true, message: '主讲人不能为空' }, { required: true, message: '主讲人不能为空' },
{ whitespace: true, message: '主讲人不能为空' }, { whitespace: true, message: '主讲人不能为空' },
@ -115,113 +90,84 @@
/> />
</a-form-item> </a-form-item>
<!-- 组织单位 --> <!-- 组织单位 -->
<a-form-item <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="组织单位">
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="组织单位"
>
<a-input <a-input
placeholder="组织单位" placeholder="组织单位"
v-decorator="[ v-decorator="[
'organization', 'organization',
{ {
initialValue: (editItem.info && editItem.info.organization) ? editItem.info.organization : '', initialValue: editItem.info && editItem.info.organization ? editItem.info.organization : '',
}, },
]" ]"
/> />
</a-form-item> </a-form-item>
<!-- 其他事宜 --> <!-- 其他事宜 -->
<a-form-item <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="其他事宜">
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="其他事宜"
>
<a-input <a-input
placeholder="其他事宜" placeholder="其他事宜"
v-decorator="[ v-decorator="[
'other', 'other',
{ {
initialValue: (editItem.info && editItem.info.other) ? editItem.info.other : '', initialValue: editItem.info && editItem.info.other ? editItem.info.other : '',
}, },
]" ]"
/> />
</a-form-item> </a-form-item>
<!-- 会议主题 --> <!-- 会议主题 -->
<a-form-item <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="会议主题">
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="会议主题"
>
<a-input <a-input
placeholder="会议主题" placeholder="会议主题"
v-decorator="[ v-decorator="[
'theme', 'theme',
{ {
initialValue: (editItem.info && editItem.info.theme) ? editItem.info.theme : '', initialValue: editItem.info && editItem.info.theme ? editItem.info.theme : '',
}, },
]" ]"
/> />
</a-form-item> </a-form-item>
<!-- 培训对象 --> <!-- 培训对象 -->
<a-form-item <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="培训对象">
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="培训对象"
>
<a-input <a-input
placeholder="培训对象" placeholder="培训对象"
v-decorator="[ v-decorator="[
'trainees', 'trainees',
{ {
initialValue: (editItem.info && editItem.info.trainees) ? editItem.info.trainees : '', initialValue: editItem.info && editItem.info.trainees ? editItem.info.trainees : '',
}, },
]" ]"
/> />
</a-form-item> </a-form-item>
<!-- 报名方式 --> <!-- 报名方式 -->
<a-form-item <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="报名方式">
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="报名方式"
>
<a-input <a-input
placeholder="报名方式" placeholder="报名方式"
v-decorator="[ v-decorator="[
'way', 'way',
{ {
initialValue: (editItem.info && editItem.info.way) ? editItem.info.way : '', initialValue: editItem.info && editItem.info.way ? editItem.info.way : '',
}, },
]" ]"
/> />
</a-form-item> </a-form-item>
<!-- 活动结束内容 --> <!-- 活动结束内容 -->
<a-form-item <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="活动结束内容">
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="活动结束内容"
>
<a-textarea <a-textarea
placeholder="活动结束内容" placeholder="活动结束内容"
v-decorator="[ v-decorator="[
'endContent', 'endContent',
{ {
initialValue: (editItem.info && editItem.info.endContent) ? editItem.info.endContent : '', initialValue: editItem.info && editItem.info.endContent ? editItem.info.endContent : '',
}, },
]" ]"
/> />
</a-form-item> </a-form-item>
<!-- 详情 --> <!-- 详情 -->
<a-form-item <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="详情" required>
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="详情"
required
>
<quill-editor <quill-editor
:max-size="maxSize" :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" @changeInput="changeInput"
/> />
</a-form-item> </a-form-item>
@ -255,9 +201,11 @@ export default {
tailItemLayout, tailItemLayout,
form: this.$form.createForm(this, { name: 'activity-edit' }), form: this.$form.createForm(this, { name: 'activity-edit' }),
types: [ types: [
{ id: 0, name: '路演' }, { id: 0, name: '培训' },
{ id: 1, name: '沙龙' }, { id: 1, name: '讲座' },
{ id: 2, name: '论坛' }, { id: 2, name: '交流' },
{ id: 3, name: '路演' },
{ id: 4, name: '论坛' },
], ],
activityType: null, activityType: null,
maxSize: 2048, 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> <template>
<div class="d-flex flex-wrap pb-3 align-center"> <div class="d-flex flex-wrap pb-3 align-center">
<!-- 活动类型 0路演 1讲座 2沙龙 不传参数则查询全部 --> <!-- 活动类型 0路演 1讲座 2沙龙 不传参数则查询全部 -->
@ -6,13 +13,7 @@
<a-checkbox-group :options="items" @change="onChange" /> <a-checkbox-group :options="items" @change="onChange" />
</div> </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" /> <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 { export default {
name: 'ActivitySearch', name: 'ActivitySearch',
components: { components: { ActivityAdd },
ActivityAdd,
},
data() { data() {
return { return {
visible: false, visible: false,
titleKey: '', titleKey: '',
items: ['路演', '讲座', '沙龙'], items: ['培训', '讲座', '交流', '路演', '论坛'],
activityType: [], activityType: [],
checkedValues: [], checkedValues: [],
publishPlatform: '', // 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> <template>
<div class="btn-box pa-3"> <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('/page-manage')" class="btn">内容管理</div>
<div @click="jump('/industry-info')" 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('/banner-manage')" class="btn">轮播图管理</div>
<!-- <div @click="jump('/communication-community')" 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('/innovation-policy')" class="btn">创新政策</div>
<div @click="jump('/Challenge')" class="btn">创新挑战</div> <div @click="jump('/Challenge')" class="btn">创新挑战</div>
<div @click="jump('/College')" class="btn">创业学院</div> <div @click="jump('/College')" class="btn">创业学院</div>
<!-- <div @click="jump('/talent-recruitment')" class="btn">人才招聘</div> --> <!-- <div @click="jump('/talent-recruitment')" class="btn">人才招聘</div> -->
<div @click="jump('/cooperative-partner')" 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('/cooperation-intention')" class="btn">合作意向</div> -->
<div @click="jump('/demand-filling')" class="btn">需求填报</div> <div @click="jump('/demand-filling')" class="btn">需求填报</div>
<div @click="jump('/innovative-service')" 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('/')" class="btn">衍生企业</div> <!-- <div @click="jump('/')" class="btn">衍生企业</div> -->
<!-- <div @click="jump('/innovative-lab')" class="btn">实验室</div> --> <!-- <div @click="jump('/innovative-lab')" class="btn">实验室</div> -->
<div @click="jump('/category-manage')" class="btn">分类管理</div> <div @click="jump('/category-manage')" class="btn">分类管理</div>
<!-- <div @click="jump('/innovative-equipment')" class="btn">设备</div> --> <!-- <div @click="jump('/innovative-equipment')" class="btn">设备</div> -->
<!-- <div @click="jump('/innovative-achievements')" class="btn">成果</div> --> <!-- <div @click="jump('/innovative-achievements')" class="btn">成果</div> -->
<div class="font-bold-24">孵化平台</div> <!-- <div class="font-bold-24">孵化平台</div> -->
<div @click="jump('/entity-application')" class="btn">入驻实体申请</div> <div @click="jump('/virtual-application?type=2')" class="btn">入驻实体申请</div>
<div @click="jump('/virtual-application')" class="btn">入驻数智创时代 专业孵化器申请</div> <div @click="jump('/virtual-application?type=1')" class="btn">入驻数智创时代 专业孵化器申请</div>
<div @click="jump('/virtual-application')" class="btn">入驻线上孵化器</div> <div @click="jump('/virtual-application?type=0')" class="btn">入驻线上孵化器</div>
<div @click="jump('/incubation-services')" class="btn">服务</div> <div @click="jump('/incubation-services')" class="btn">孵化平台栏目</div>
<div @click="jump('/hatching-demand-filling')" class="btn">需求填报</div> <div @click="jump('/hatching-demand-filling')" class="btn">孵化服务申请</div>
<div @click="jump('/Teacher')" class="btn">创业导师</div> <div @click="jump('/teacher')" class="btn">导师管理</div>
<div @click="jump('/hatch-cooperative-partner')" 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 class="font-bold-24">产业部</div>
<div @click="jump('/industrial-services')" class="btn">服务</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, patentGrented: this.platform.patentGrented,
patentInvent: this.platform.patentInvent, patentInvent: this.platform.patentInvent,
phone: this.platform.tel, phone: this.platform.tel,
placeType: this.placeType, // store 0:1: placeType: this.placeType, // store 0:线1:2
plantKind: this.platform.plantKind, plantKind: this.platform.plantKind,
position: this.platform.position, position: this.platform.position,
productTech: this.platform.productTech, productTech: this.platform.productTech,

36
src/components/EntityApply/EntityApplyDate.vue

@ -40,13 +40,16 @@
<!-- 操作 --> <!-- 操作 -->
<template slot="edit" slot-scope="text, record"> <template slot="edit" slot-scope="text, record">
<a-icon @click="showEditModal(record)" class="pointer" theme="twoTone" type="edit" /> <!-- <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 @click="handleApply(record.id, 2)" class="ml-3" size="small" type="primary" v-if="record.dealStatus === 1">
>通过</a-button 通过
> </a-button>
<a-button @click="handleApply(record.id, 1)" class="ml-3" size="small" type="danger" v-if="record.dealStatus === 2" <a-button @click="handleApply(record.id, 1)" class="ml-3" size="small" type="danger" v-if="record.dealStatus === 2">
>不通过</a-button 不通过
> </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> </template>
<div class="d-flex flex-nowrap justify-space-between" slot="expandedRowRender" slot-scope="record" style="margin: 0"> <div class="d-flex flex-nowrap justify-space-between" slot="expandedRowRender" slot-scope="record" style="margin: 0">
@ -61,7 +64,7 @@
<script> <script>
import EditableCellSelect from 'components/EditableCellSelect/EditableCellSelect.vue'; import EditableCellSelect from 'components/EditableCellSelect/EditableCellSelect.vue';
import Detail from 'components/EntityApply/Detail.vue'; import Detail from 'components/EntityApply/Detail.vue';
import { changeStatus } from 'config/api'; import { changeStatus, deletePlace } from 'config/api';
const columns = [ const columns = [
{ {
@ -177,6 +180,23 @@ export default {
this.$message.error(error || '审核失败'); 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> </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> <template>
<div class="d-flex flex-wrap pb-3"> <div class="d-flex flex-wrap pb-3">
<!-- 企业名称 --> <!-- 企业名称 -->
@ -26,9 +33,7 @@ import EntityApplyAdd from 'components/EntityApply/EntityApplyAdd.vue';
export default { export default {
name: 'EntityApplySearch', name: 'EntityApplySearch',
components: { components: { EntityApplyAdd },
EntityApplyAdd,
},
data() { data() {
return { return {
visible: false, visible: false,

31
src/components/Manage/ManageAdd.vue

@ -2,9 +2,9 @@
<div class="d-flex flex-wrap pb-3"> <div class="d-flex flex-wrap pb-3">
<!-- 添加 --> <!-- 添加 -->
<a-modal <a-modal
:maskClosable="false" :mask-closable="false"
@cancel="$emit('closeModal')" @cancel="$emit('closeModal')"
destroyOnClose destroy-on-close
footer footer
title="添加分类管理" title="添加分类管理"
v-model="visible" v-model="visible"
@ -12,36 +12,22 @@
> >
<a-form :form="form" @submit="handleSubmit"> <a-form :form="form" @submit="handleSubmit">
<!-- 类型 --> <!-- 类型 -->
<a-form-item <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="类型">
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="类型"
>
<a-select <a-select
placeholder="类型" placeholder="类型"
style="width:100%" style="width: 100%"
v-decorator="[ v-decorator="[
'model', 'model',
{ {
rules: [ rules: [{ required: true, message: '类型不能为空' }],
{ required: true, message: '类型不能为空' },
],
}, },
]" ]"
> >
<a-select-option <a-select-option :key="index" :value="item.id" v-for="(item, index) in types">{{ item.name }}</a-select-option>
:key="index"
:value="item.id"
v-for="(item, index) in types"
>{{ item.name }}</a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
<!-- 分类名称 --> <!-- 分类名称 -->
<a-form-item <a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="分类名称">
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="分类名称"
>
<a-input <a-input
placeholder="分类名称" placeholder="分类名称"
v-decorator="[ v-decorator="[
@ -88,6 +74,9 @@ export default {
{ id: 0, name: '成果' }, { id: 0, name: '成果' },
{ id: 1, name: '仪器' }, { id: 1, name: '仪器' },
{ id: 2, 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"> <template slot="model" slot-scope="text, record">
<span v-if="record.model === 0">成果</span> <span v-if="record.model === 0">成果</span>
<span v-if="record.model === 1">仪器</span> <span v-else-if="record.model === 1">仪器</span>
<span v-if="record.model === 2">实验室</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>
<template slot="edit" slot-scope="text, record"> <template slot="edit" slot-scope="text, record">
@ -33,7 +36,7 @@
<a-empty v-else /> <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> </div>
</template> </template>
@ -74,9 +77,7 @@ const columns = [
export default { export default {
name: 'ManageDate', name: 'ManageDate',
components: { components: { ManageEdit },
ManageEdit,
},
props: { lists: { type: Object, default: () => {} }, pagination: { type: Object, default: () => {} } }, 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> <template>
<div class="d-flex flex-wrap pb-3"> <div class="d-flex flex-wrap pb-3">
<!-- 团队名称 --> <!-- 团队名称 -->
<div> <div>
<a-input @change="handleChangeName" placeholder="分类名称" style="width: 150px" v-model="name" /> <a-input @change="handleChangeName" placeholder="分类名称" style="width: 150px" v-model="name" />
<a-select <a-select @change="handleChangeSelect('model', $event)" allow-clear class="ml-3" placeholder="类型" style="width: 150px">
@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-option :key="model.id" :value="model.id" v-for="model in models">{{ model.value }}</a-select-option>
</a-select> </a-select>
@ -31,9 +32,7 @@ import ManageAdd from 'components/Manage/ManageAdd.vue';
export default { export default {
name: 'ManageSearch', name: 'ManageSearch',
components: { components: { ManageAdd },
ManageAdd,
},
data() { data() {
return { return {
visible: false, visible: false,
@ -42,6 +41,9 @@ export default {
{ id: 0, value: '成果' }, { id: 0, value: '成果' },
{ id: 1, value: '仪器' }, { id: 1, value: '仪器' },
{ id: 2, 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, tailItemLayout,
form: this.$form.createForm(this, { name: 'policy-edit' }), form: this.$form.createForm(this, { name: 'policy-edit' }),
applyStatus: [ applyStatus: [
{ id: 0, name: '审核中' }, { id: 2, name: '审核中' },
{ id: 1, name: '未通过' }, { id: 0, name: '未通过' },
{ id: 2, name: '已通过' }, { id: 1, name: '已通过' },
], ],
status: null, status: null,
maxSize: 2048, maxSize: 2048,

46
src/components/Policy/PolicyDate.vue

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

6
src/components/Policy/PolicyEdit.vue

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

6
src/components/Policy/PolicySearch.vue

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

39
src/config/api.js

@ -23,8 +23,7 @@ const place = `${greenvalley}/place`; // 孵化部入驻实体申请相关操作
const business = `${greenvalley}/business`; // 交流社区相关操作 const business = `${greenvalley}/business`; // 交流社区相关操作
const academy = `${greenvalley}/academy`; // 创业学院相关操作 const academy = `${greenvalley}/academy`; // 创业学院相关操作
const releaseTheList = `${greenvalley}/releaseTheList`; // 创业学院相关操作 const releaseTheList = `${greenvalley}/releaseTheList`; // 创业学院相关操作
const tutorRelated = `${greenvalley}/tutorRelated`; //导师的相关接口 const tutorRelated = `${greenvalley}/tutorRelated`; // 导师相关操作
export const upload = `${greenvalley}/file/upload`; export const upload = `${greenvalley}/file/upload`;
// websocket基础地址 // 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 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); 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 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); 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 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 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: () => component: () =>
import(/* webpackChunkName: "about-us-derivative-enterprise" */ 'views/CooperativePartner/AboutUsDerivativeEnterprise.vue'), import(/* webpackChunkName: "about-us-derivative-enterprise" */ 'views/CooperativePartner/AboutUsDerivativeEnterprise.vue'),
}, },
// -------创新部 // 创新部
// 合作意向 // 合作意向
{ {
path: '/cooperation-intention', path: '/cooperation-intention',
@ -190,11 +190,17 @@ const routes = [
name: 'College', name: 'College',
component: () => import(/* webpackChunkName: "industry-demand-report" */ 'views/College/College.vue'), component: () => import(/* webpackChunkName: "industry-demand-report" */ 'views/College/College.vue'),
}, },
// 创业导师 // 导师管理
{ {
path: '/Teacher', path: '/teacher',
name: '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 = { /*
// 域定制导航展示形式 * @Author: wally
// 0 -> 无特殊导航文字 * @email: 18603454788@163.com
// 1 -> 横向定制导航 * @Date: 2021-04-20 12:33:22
// 2 -> 纵向定制导航 * @LastEditors: wally
* @LastEditTime: 2021-04-22 13:09:35
}; */
const getters = {};
// 域定制导航展示形式
// 0 -> 无特殊导航文字
// 1 -> 横向定制导航
// 2 -> 纵向定制导航
export default getters; 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'; const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
if (!isJpgOrPng) { if (!isJpgOrPng) {
this.$message.error('仅支持 JPG/PNG 格式的图片!'); this.$message.error('仅支持 JPG/PNG 格式的图片!');
this.fileList = [];
} }
return isJpgOrPng; return isJpgOrPng;
}, },
@ -195,7 +196,7 @@ export default {
this.picId = this.fileList[0]; this.picId = this.fileList[0];
const params = { const params = {
param: { param: {
banners: this.banners, banners: this.banner,
contentUrl: this.contentUrl, contentUrl: this.contentUrl,
coverPicture: this.fileList[0], coverPicture: this.fileList[0],
intro: this.intro, intro: this.intro,

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

@ -10,6 +10,7 @@
v-model="editVisible" v-model="editVisible"
width="700px" width="700px"
> >
<div>{{ editData }}</div>
<a-form :form="form" @submit="handleSubmit"> <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="标题">

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> <template>
<div class="pa-3 white fill-height d-flex flex-column"> <div class="pa-3 white fill-height d-flex flex-column">
<partner-search @getBackendSearch="getBackendSearch" /> <partner-search @getBackendSearch="getBackendSearch" />
@ -28,7 +35,8 @@ export default {
computed: mapState(['partnerOptions']), computed: mapState(['partnerOptions']),
async created() { async created() {
const options = { type: 1, typeOfPlatform: 2 }; const { query } = this.$route;
const options = { type: query.type1, typeOfPlatform: query.type2 };
this.setPartnerOptions(options); this.setPartnerOptions(options);
await this.getBackendSearch(); 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> <template>
<div class="pa-3 white fill-height d-flex flex-column"> <div class="pa-3 white fill-height d-flex flex-column">
<entity-apply-search @entityApplicationSearch="entityApplicationSearch" /> <entity-apply-search @entityApplicationSearch="entityApplicationSearch" />
@ -28,7 +35,8 @@ export default {
computed: mapState(['placeType']), computed: mapState(['placeType']),
async created() { async created() {
this.setPlaceType(0); const { query } = this.$route;
this.setPlaceType(query.type);
await this.entityApplicationSearch(); 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> <template>
<div></div> <div></div>
</template> </template>
<script> <script>
export default { export default { name: 'Index' };
name: 'Index',
};
</script> </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> <template>
<div class="pa-3 white fill-height d-flex flex-column"> <div class="pa-3 white fill-height d-flex flex-column">
<development-search :typeLists="typeLists" @selResSearch="selResSearch" /> <development-search :type-lists="typeLists" @selResSearch="selResSearch" />
<development-date <development-date :lists="lists" :pagination="pagination" :type-lists="typeLists" @selResSearch="selResSearch" />
:lists="lists"
:pagination="pagination"
:typeLists="typeLists"
@selResSearch="selResSearch"
/>
</div> </div>
</template> </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> <template>
<div class="pa-3 white fill-height d-flex flex-column"> <div class="pa-3 white fill-height d-flex flex-column">
<!-- <user-search /> <!-- <user-search />
@ -8,14 +15,14 @@
<script> <script>
// @ is an alias to /src // @ is an alias to /src
import UserSearch from 'components/User/UserSearch.vue'; // import UserSearch from 'components/User/UserSearch.vue';
import UserDate from 'components/User/UserDate.vue'; // import UserDate from 'components/User/UserDate.vue';
export default { export default {
name: 'Home', name: 'Home',
components: { // components: {
UserSearch, // UserSearch,
UserDate, // UserDate,
}, // },
}; };
</script> </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" "color-convert" "^2.0.1"
"ansi-styles@^4.1.0": "ansi-styles@^4.1.0":
"integrity" "sha1-7dgDYornHATIWuegkG7a00tkiTc=" "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
"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" "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
"version" "4.3.0" "version" "4.3.0"
dependencies: dependencies:
"color-convert" "^2.0.1" "color-convert" "^2.0.1"
@ -2535,8 +2535,8 @@
"supports-color" "^7.1.0" "supports-color" "^7.1.0"
"chalk@^4.1.0": "chalk@^4.1.0":
"integrity" "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=" "integrity" "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A=="
"resolved" "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz" "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz"
"version" "4.1.0" "version" "4.1.0"
dependencies: dependencies:
"ansi-styles" "^4.1.0" "ansi-styles" "^4.1.0"
@ -2755,8 +2755,8 @@
"color-name" "1.1.3" "color-name" "1.1.3"
"color-convert@^2.0.1": "color-convert@^2.0.1":
"integrity" "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=" "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
"resolved" "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz" "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
"version" "2.0.1" "version" "2.0.1"
dependencies: dependencies:
"color-name" "~1.1.4" "color-name" "~1.1.4"
@ -2767,8 +2767,8 @@
"version" "1.1.3" "version" "1.1.3"
"color-name@~1.1.4": "color-name@~1.1.4":
"integrity" "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=" "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
"resolved" "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz" "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
"version" "1.1.4" "version" "1.1.4"
"color-string@^1.5.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" "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" "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": "deepmerge@1.3.2":
"integrity" "sha1-FmNpFinU2/42T6EqKk8KqGqjoFA=" "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" "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": "dompurify@^2.0.0":
"integrity" "sha1-VJRdxcC0XOWuIocFd36OWdey7cQ=" "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" "version" "2.2.6"
"domready@1.0.8": "domready@1.0.8":
@ -4697,8 +4702,8 @@
"version" "3.0.0" "version" "3.0.0"
"has-flag@^4.0.0": "has-flag@^4.0.0":
"integrity" "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=" "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
"resolved" "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz" "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
"version" "4.0.0" "version" "4.0.0"
"has-symbols@^1.0.1": "has-symbols@^1.0.1":
@ -5957,6 +5962,11 @@
dependencies: dependencies:
"object-visit" "^1.0.0" "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": "md5.js@^1.3.4":
"integrity" "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=" "integrity" "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8="
"resolved" "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz" "resolved" "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz"
@ -8043,7 +8053,7 @@
"sass-loader@^8.0.2": "sass-loader@^8.0.2":
"integrity" "sha1-3r7NjDziQ8dkVPLoKQSCFQOACQ0=" "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" "version" "8.0.2"
dependencies: dependencies:
"clone-deep" "^4.0.1" "clone-deep" "^4.0.1"
@ -8052,10 +8062,10 @@
"schema-utils" "^2.6.1" "schema-utils" "^2.6.1"
"semver" "^6.3.0" "semver" "^6.3.0"
"sass@^1.26.5": "sass@^1.32.8":
"integrity" "sha1-7E4YQsFG2OqSWMKMFBuMK3xqt/E=" "integrity" "sha1-8WqavY3FMK3Yg05QaHiigIwDe9w="
"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" "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.29.0" "version" "1.32.8"
dependencies: dependencies:
"chokidar" ">=2.0.0 <4.0.0" "chokidar" ">=2.0.0 <4.0.0"
@ -8797,8 +8807,8 @@
"has-flag" "^4.0.0" "has-flag" "^4.0.0"
"supports-color@^7.1.0": "supports-color@^7.1.0":
"integrity" "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=" "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
"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" "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
"version" "7.2.0" "version" "7.2.0"
dependencies: dependencies:
"has-flag" "^4.0.0" "has-flag" "^4.0.0"
@ -9397,8 +9407,8 @@
"version" "0.0.4" "version" "0.0.4"
"vue-dompurify-html@^2.3.0": "vue-dompurify-html@^2.3.0":
"integrity" "sha1-sXXt2lc2LPewPShkRo+mROBaKtA=" "integrity" "sha512-Iz9wI4iiJF+rzC2x3r8quw/VXrkwgMsWXt9p0Le4wXtolBXwMDJOmK3QNMiNg36bzU2b0f3En/wjidoeRVNZ7A=="
"resolved" "https://registry.npm.taobao.org/vue-dompurify-html/download/vue-dompurify-html-2.3.0.tgz" "resolved" "https://registry.npmjs.org/vue-dompurify-html/-/vue-dompurify-html-2.3.0.tgz"
"version" "2.3.0" "version" "2.3.0"
dependencies: dependencies:
"dompurify" "^2.0.0" "dompurify" "^2.0.0"
@ -9421,9 +9431,9 @@
"version" "2.3.4" "version" "2.3.4"
"vue-loader-v16@npm:vue-loader@^16.0.0-beta.7": "vue-loader-v16@npm:vue-loader@^16.0.0-beta.7":
"integrity" "sha1-nB8WhOLQHIpyIW+dTbEZ4VxiJkU=" "integrity" "sha512-TitGhqSQ61RJljMmhIGvfWzJ2zk9m1Qug049Ugml6QP3t0e95o0XJjk29roNEiPKJQBEi8Ord5hFuSuELzSp8Q=="
"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" "resolved" "https://registry.npmjs.org/vue-loader/-/vue-loader-16.2.0.tgz"
"version" "16.0.0-rc.1" "version" "16.2.0"
dependencies: dependencies:
"chalk" "^4.1.0" "chalk" "^4.1.0"
"hash-sum" "^2.0.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" "resolved" "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz"
"version" "1.9.1" "version" "1.9.1"
"vue@^2.0.0", "vue@^2.6.11": "vue@^2.6.11":
"integrity" "sha1-9evU+mvShpQD4pqJau1JBEVskSM=" "integrity" "sha1-9evU+mvShpQD4pqJau1JBEVskSM="
"resolved" "https://registry.npm.taobao.org/vue/download/vue-2.6.12.tgz" "resolved" "https://registry.npm.taobao.org/vue/download/vue-2.6.12.tgz"
"version" "2.6.12" "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": "vuex@^3.4.0":
"integrity" "sha1-8bjc6mSbwlJUz09DWAgdv12hiz0=" "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" "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