Browse Source

修复bug

master
rose 4 years ago
parent
commit
57c6eabe93
  1. 162
      package-lock.json
  2. 12
      src/App.vue
  3. 8
      src/components/BtnCom/BtnCon.vue
  4. 15
      src/components/Policy/PolicyEdit.vue
  5. 27
      src/components/RD/RDDate.vue
  6. 210
      src/components/Teacher/TeacherAdd.vue
  7. 227
      src/components/Teacher/TeacherDate.vue
  8. 51
      src/components/Teacher/TeacherSearch.vue
  9. 17
      src/config/api.js
  10. 6
      src/router/index.js
  11. 21
      src/views/College/components/CollegeDate.vue
  12. 259
      src/views/College/components/CollegeEdit.vue
  13. 1
      src/views/DemandFilling/DemandFilling.vue
  14. 1
      src/views/HatchingDemandFilling/HatchingDemandFilling.vue
  15. 70
      src/views/Teacher/Teacher.vue

162
package-lock.json

@ -1808,6 +1808,16 @@
"integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
"dev": true
},
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"optional": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"cacache": {
"version": "13.0.1",
"resolved": "https://registry.npm.taobao.org/cacache/download/cacache-13.0.1.tgz?cache=0&sync_timestamp=1594427999421&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-13.0.1.tgz",
@ -1840,6 +1850,34 @@
"integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
"dev": true
},
"chalk": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
"dev": true,
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"optional": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true,
"optional": true
},
"css-loader": {
"version": "3.6.0",
"resolved": "https://registry.npm.taobao.org/css-loader/download/css-loader-3.6.0.tgz?cache=0&sync_timestamp=1604507107408&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-loader%2Fdownload%2Fcss-loader-3.6.0.tgz",
@ -1893,6 +1931,13 @@
"universalify": "^0.1.0"
}
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"optional": true
},
"icss-utils": {
"version": "4.1.1",
"resolved": "https://registry.npm.taobao.org/icss-utils/download/icss-utils-4.1.1.tgz?cache=0&sync_timestamp=1602527330977&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ficss-utils%2Fdownload%2Ficss-utils-4.1.1.tgz",
@ -2007,6 +2052,16 @@
"minipass": "^3.1.1"
}
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"optional": true,
"requires": {
"has-flag": "^4.0.0"
}
},
"terser-webpack-plugin": {
"version": "2.3.8",
"resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-2.3.8.tgz?cache=0&sync_timestamp=1603881757308&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-2.3.8.tgz",
@ -2023,6 +2078,32 @@
"terser": "^4.6.12",
"webpack-sources": "^1.4.3"
}
},
"vue-loader-v16": {
"version": "npm:vue-loader@16.2.0",
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.2.0.tgz",
"integrity": "sha512-TitGhqSQ61RJljMmhIGvfWzJ2zk9m1Qug049Ugml6QP3t0e95o0XJjk29roNEiPKJQBEi8Ord5hFuSuELzSp8Q==",
"dev": true,
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
},
"dependencies": {
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
"dev": true,
"optional": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
}
}
}
}
},
@ -12580,87 +12661,6 @@
}
}
},
"vue-loader-v16": {
"version": "npm:vue-loader@16.1.2",
"resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-16.1.2.tgz?cache=0&sync_timestamp=1608188050165&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-loader%2Fdownload%2Fvue-loader-16.1.2.tgz",
"integrity": "sha1-XAO2xQ0qX5g8fOuhXFDXjKKymPQ=",
"dev": true,
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
},
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
"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": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
"dev": true,
"optional": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.0",
"resolved": "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz",
"integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=",
"dev": true,
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
"integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
"dev": true,
"optional": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
"integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
"dev": true,
"optional": true
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
"integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
"dev": true,
"optional": true
},
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz",
"integrity": "sha1-5MrOW4FtQloWa18JfhDNErNgZLA=",
"dev": true,
"optional": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
},
"supports-color": {
"version": "7.2.0",
"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": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
"dev": true,
"optional": true,
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"vue-quill-editor": {
"version": "3.0.6",
"resolved": "https://registry.npm.taobao.org/vue-quill-editor/download/vue-quill-editor-3.0.6.tgz",

12
src/App.vue

@ -1,7 +1,7 @@
<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,11 +10,11 @@
<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 },
// components: { BtnCon },
data() {
return {
zh_CN,
@ -35,9 +35,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();

8
src/components/BtnCom/BtnCon.vue

@ -16,12 +16,12 @@
<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('/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-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-achievements')" class="btn">成果</div> -->
@ -30,8 +30,8 @@
<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('/')" 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>

15
src/components/Policy/PolicyEdit.vue

@ -85,6 +85,20 @@
]"
/>
</a-form-item>
<!--简介-->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="简介">
<a-textarea
style="height:120px"
placeholder="原文链接"
v-decorator="[
'url',
{
initialValue: editItem.intro,
},
]"
/>
</a-form-item>
<!-- 政策内容 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="政策内容" required>
<quill-editor
@ -154,6 +168,7 @@ export default {
//
onChange(date, dateString) {
console.log(date, dateString);
this.pushTime = dateString;
},

27
src/components/RD/RDDate.vue

@ -30,6 +30,13 @@
<template slot="edit" slot-scope="text, record">
<a-icon @click="showEditModal(record.id, record.status)" class="pointer" theme="twoTone" type="edit" />
<a-popconfirm
@confirm="() => onDeleteRecord(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>
@ -43,7 +50,7 @@
</template>
<script>
import { serviceApplyStatus } from 'config/api';
import { serviceApplyStatus,deleteServiceApply } from 'config/api';
const columns = [
{
@ -168,6 +175,24 @@ export default {
this.value = this.enable[e];
this.dealStatus = e;
},
//
async onDeleteRecord(id) {
try {
const params = { param: { id } };
const res = await deleteServiceApply(params);
const { data, msg, code } = res.data;
if (code === 200) {
this.$emit('searchServiceApply');
this.$message.success('删除成功');
// TODO:
} else {
throw msg;
}
} catch (error) {
this.$message.error(error || '删除失败');
}
},
//
async onDelete() {
try {

210
src/components/Teacher/TeacherAdd.vue

@ -0,0 +1,210 @@
<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-form :form="form" @submit="handleSubmit">
<!-- 公司 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="公司"
>
<a-input
v-decorator="['company', { rules: [{ required: true, message: '请输入公司' }] }]"
/>
</a-form-item>
<!-- 职责 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="职责"
>
<a-input
v-decorator="['duties', { rules: [{ required: true, message: '请输入职责' }] }]"
/>
</a-form-item>
<!-- 名称 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="名称"
>
<a-input
v-decorator="['name', { rules: [{ required: true, message: '请输入名称' }] }]"
/>
</a-form-item>
<!-- 排序 -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="排序"
>
<a-input
placeholder="请输入正整数的排序"
v-decorator="['orders', { rules: [{ pattern: new RegExp(/^[+]{0,1}(\d+)$/),required: true, message: '请输入排序(仅限制正整数,包含0)' }] }]"
/>
</a-form-item>
<!-- services -->
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="导师分类id"
>
<!-- <div>{{ services }}</div> -->
<a-select
mode="multiple"
placeholder="请输入导师分类id"
:default-value="[ 1,2]"
style="width: 100%"
@change="handleChange"
>
<a-select-option v-for="(item) in services" :key="item.id">
{{ item.categoryName }}
</a-select-option>
</a-select>
<!-- <a-input
v-model="services"
placeholder=""
/> -->
</a-form-item>
<a-form-item class="d-flex flex-row-reverse">
<a-button @click="$emit('closeModal')" class="mr-3">取消</a-button>
<a-button class="white--text" html-type="submit" type="primary">保存</a-button>
</a-form-item>
</a-form>
</a-modal>
</div>
</template>
<script>
import { mapState } from 'vuex';
import { addTeacher ,selTutorH} from 'config/api';
import { quillEditor } from 'vue-quill-editor';
const formItemLayout = {
labelCol: { span: 6 },
wrapperCol: { span: 16 },
};
const tailItemLayout = { wrapperCol: { span: 16, offset: 6 } };
export default {
name: 'TeacherAdd',
props: { visible: { type: Boolean, default: false } },
components: {
quillEditor, //
},
data() {
return {
formItemLayout,
tailItemLayout,
form: this.$form.createForm(this, { name: 'page-add' }),
content: '',
services: [],
servicesForm: [1],
};
},
created() {
this.getTeacherType();
},
computed: mapState(['titles']),
methods: {
handleChange(value) {
// console.log()
console.log(`Selected: ${value}`);
this.servicesForm = value;
console.log(this.servicesForm)
},
//
async getTeacherType() {
try {
const params = {
param: {
recStatus: 0,
},
};
const res = await selTutorH(params);
const { code, msg, data } = res.data;
if (code === 200) {
console.log("getTeacherType方法已经走到")
console.log(data)
this.services = data;
// const paper = { ...this.pagination };
// paper.current = data.pageNum;
// paper.total = +data.total;
// paper.pageSize = data.pageSize;
// this.pagination = paper;
} else {
throw msg || '获取失败';
}
} catch (error) {
this.$message.error(error);
}
},
//
handleSubmit(e) {
e.preventDefault();
this.form.validateFieldsAndScroll(async (err, values) => {
if (!err) {
try {
console.log("是否走到了这个逻辑")
console.log('Received values of form: ', values);
// if (values.titleCode.length > 1) {
// values.titleCode = `${values.titleCode[0]}-${values.titleCode[1]}`;
// } else {
// values.titleCode = `${values.titleCode[0]}`;
// }
const param = values;
param.services = this.servicesForm
const params = { param };
console.log('params: ', params);
const res = await addTeacher(params);
const { data, msg, code } = res.data;
if (code === 200) {
this.$message.success('添加成功');
this.$emit('closeModal');
} else {
throw msg;
}
} catch (error) {
this.$message.error(error || '添加失败');
}
}
});
},
},
};
</script>
<style scoped lang="stylus"></style>

227
src/components/Teacher/TeacherDate.vue

@ -0,0 +1,227 @@
<template>
<div class="main flex-1">
<a-spin :spinning="showEdit">
<!-- <div>{{ lists }}</div> -->
<div style="width: 100%" v-if="lists && lists.length > 0">
<a-table
:columns="columns"
:data-source="lists"
:loading="loading"
:pagination="pagination"
:row-key="record => record.id"
:scroll="{ y: height }"
@change="handleTableChange"
bordered
class="white"
>
<template slot="id" slot-scope="text, record, index">
<span>{{ index + 1 }}</span>
</template>
<template slot="categoryName" slot-scope="text, record">
<span>{{ record.categoryName }}</span>
</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.length">
<a-icon class="ml-4 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">
<div>
<div v-for="(item,index) in record.services" :key="index">
<div class="d-flex">
<div class="ml-5">姓名{{item.name}}</div>
<div class="ml-3"> 性别{{item.sex}} </div>
<div class="ml-3"> 所在公司{{item.company}}</div>
<div class="ml-3"> 职责{{item.duties}}</div>
<div class="ml-3"> 排序{{item.order}}</div>
</div>
</div>
</div>
</div> -->
</a-table>
</div>
<a-empty v-else />
<!-- 编辑 -->
<!-- <page-edit :editItem="editItem" :editVisible="editVisible" @closeModal="closeModal" @getPageList="getPageList" /> -->
</a-spin>
</div>
</template>
<script>
// import PageEdit from 'components/Page/PageEdit.vue';
import { deletePage, getPage } from 'config/api';
const columns = [
{
title: '序号',
align: 'center',
dataIndex: 'id',
key: 'id',
width: 80,
scopedSlots: { customRender: 'id' },
},
{
title: '公司',
align: 'center',
dataIndex: 'company',
key: 'company',
scopedSlots: { customRender: 'company' },
},
{
title: '职责',
align: 'center',
dataIndex: 'duties',
key: 'duties',
scopedSlots: { customRender: 'duties' },
},
{
title: '序号',
align: 'center',
dataIndex: 'orders',
key: 'orders',
scopedSlots: { customRender: 'orders' },
},
{
title: '名字',
align: 'center',
dataIndex: 'name',
key: 'name',
scopedSlots: { customRender: 'name' },
},
{
title: '性别',
align: 'center',
dataIndex: 'sex',
key: 'sex',
scopedSlots: { customRender: 'sex' },
},
// {
// title: '',
// align: 'center',
// dataIndex: 'resume',
// key: 'resume',
// scopedSlots: { customRender: 'resume' },
// },
{
title: '职工照片id',
align: 'center',
dataIndex: 'teacherPhoto',
key: 'teacherPhoto',
scopedSlots: { customRender: 'teacherPhoto' },
},
];
export default {
name: 'TeacherDate',
components: {
},
props: { lists: { type: Array, default: () => [] }, pagination: { type: Object, default: () => {} } },
data() {
return {
columns,
loading: false,
height: '',
editVisible: false,
editItem: {}, //
spinning: false,
showEdit: false,
};
},
mounted() {
let th = 250;
let wh = window.innerHeight;
this.height = wh - th;
window.onresize = () => {
return (() => {
wh = window.innerHeight;
this.height = wh - th;
})();
};
},
methods: {
async showEditModal(record) {
this.showEdit = true;
await this.getDetail(true, record);
this.showEdit = false;
this.editItem = record;
this.editVisible = true;
},
closeModal() {
this.editVisible = false;
},
async getPageList() {
await this.$emit('getPageList');
},
handleTableChange(pagination) {
const { current, pageSize } = pagination;
const condition = { current, pageSize };
this.$emit('getPageList', condition);
},
//
async onDelete(id) {
try {
const params = { param: { id } };
const res = await deletePage(params);
const { data, msg, code } = res.data;
if (code === 200) {
this.$message.success('删除成功');
await this.$emit('getPageList');
} else {
throw msg;
}
} catch (error) {
this.$message.error('删除失败');
// this.$message.error(error || '');
}
},
//
async getDetail(expanded, record) {
if (!expanded) return;
try {
this.spinning = true;
const params = { param: { id: record.id } };
const res = await getPage(params);
const { data, msg, code } = res.data;
this.spinning = false;
if (code === 200) {
const item = this.lists.find(item => item.id === record.id);
item.content = data.content;
} else {
throw msg;
}
} catch (error) {
this.$message.error(error || '查询失败');
}
},
//
openSignUp() {
const { query } = this.$route;
this.$router.push({ path: '/sign-up', query });
},
},
};
</script>
<style scoped lang="stylus"></style>

51
src/components/Teacher/TeacherSearch.vue

@ -0,0 +1,51 @@
<template>
<div class="d-flex flex-wrap pb-3">
<div class="d-flex flex-row">
<!-- 模块 -->
<a-input placeholder="标题code" v-model="titleCode" />
<a-button @click="handleTableChange" class="mx-2" type="primary">搜索</a-button>
</div>
<div class="flex-1"></div>
<a-button @click="showModal" class="editable-add-btn" type="primary">增加</a-button>
<!-- 添加 -->
<teacher-add :visible="visible" @closeModal="closeModal" />
</div>
</template>
<script>
import TeacherAdd from 'components/Teacher/TeacherAdd.vue';
export default {
name: 'TeacherSearch',
components: {
TeacherAdd
},
data() {
return {
visible: false,
titleCode: '',
};
},
methods: {
showModal() {
this.visible = true;
},
closeModal() {
this.visible = false;
},
handleTableChange() {
const condition = { titleCode: this.titleCode };
this.$emit('getPageList', condition);
},
},
};
</script>
<style scoped lang="stylus"></style>

17
src/config/api.js

@ -23,6 +23,8 @@ const place = `${greenvalley}/place`; // 孵化部入驻实体申请相关操作
const business = `${greenvalley}/business`; // 交流社区相关操作
const academy = `${greenvalley}/academy`; // 创业学院相关操作
const releaseTheList = `${greenvalley}/releaseTheList`; // 创业学院相关操作
const tutorRelated = `${greenvalley}/tutorRelated`; //导师的相关接口
export const upload = `${greenvalley}/file/upload`;
// websocket基础地址
@ -238,6 +240,9 @@ export const updateCarousel = params => axios.post(`${carousel}/updateCarousel`,
// 三大平台需求填报查询
export const searchServiceApply = params => axios.post(`${service}/searchServiceApply`, params);
// 三大平台需求删除
export const deleteServiceApply = params => axios.post(`${service}/deleteServiceApply`, params);
// 三大平台需求填报状态修改
export const serviceApplyStatus = params => axios.post(`${service}/ServiceApplyStatus`, params);
@ -288,3 +293,15 @@ 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);

6
src/router/index.js

@ -190,6 +190,12 @@ const routes = [
name: 'College',
component: () => import(/* webpackChunkName: "industry-demand-report" */ 'views/College/College.vue'),
},
// 创业导师
{
path: '/Teacher',
name: 'Teacher',
component: () => import(/* webpackChunkName: "Teacher" */ 'views/Teacher/Teacher.vue'),
},
];
const router = new VueRouter({

21
src/views/College/components/CollegeDate.vue

@ -5,7 +5,7 @@
:columns="columns"
:data-source="lists.list"
:loading="loading"
:row-key="record => record.id"
:row-key="record => record.academyId"
:pagination="pagination"
:scroll="{ y: height }"
@change="handleTableChange"
@ -36,21 +36,22 @@
<a-icon class="ml-4 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">
<!-- <div class="d-flex flex-nowrap justify-space-between" slot="expandedRowRender" slot-scope="record" style="margin: 0">
{{ getselContent(record.id) }}
</div>
</div> -->
</a-table>
</div>
<a-empty v-else />
<!-- 编辑 -->
<!-- <challenge-edit :edit-visible="editVisible" :edit-data="editData"
@getData="getData" :contents="contents" @closeModal="closeModal" /> -->
<college-edit v-if="editVisible" :edit-visible="editVisible" :edit-data="editData"
@getData="getData" @closeModal="closeModal"
/>
</div>
</template>
<script>
// import ChallengeEdit from 'components/Challenge/ChallengeEdit.vue';
import CollegeEdit from './CollegeEdit.vue';
import { academyDelete } from 'config/api';
const columns = [
{
@ -119,9 +120,7 @@ const columns = [
export default {
name: 'CollegeDate',
// components: {
// ChallengeEdit,
// },
components: { CollegeEdit },
// props: { lists: { type: Array, default: () => {} } },
props: { lists: { type: Object, default: () => {} }, pagination: { type: Object, default: () => {} } },
@ -150,9 +149,11 @@ export default {
},
methods: {
showEditModal(data) {
console.log("=====>showEditModal",data)
this.editData = data;
this.contents = this.getselContent(data.id);
// this.contents = this.getselContent(data.academyId);
this.editVisible = true;
console.log("是否显示")
},
closeModal() {

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

@ -0,0 +1,259 @@
<template>
<div class="d-flex flex-wrap pb-3">
<!-- 添加 -->
<a-modal
:mask-closable="false"
@cancel="$emit('closeModal')"
destroy-on-close
footer
title="创业学院修改"
v-model="editVisible"
width="700px"
>
<a-form :form="form" @submit="handleSubmit">
<!-- 标题 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="标题">
<a-input
class="ml-3"
placeholder="标题"
v-decorator="[
'title',
{
rules: [
{ required: true, message: '标题不能为空' },
{ whitespace: true, message: '标题不能为空' },
{ max: 140, massage: '标题最多140个字符' },
],
initialValue: title,
},
]"
/>
</a-form-item>
<!-- 内容链接 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="内容链接">
<a-input
class="ml-3"
placeholder="内容链接"
v-decorator="[
'contentUrl',
{
rules: [
{ required: true, message: '内容链接不能为空' },
{ whitespace: true, message: '内容链接不能为空' },
{ max: 300, massage: '内容链接最多30个字符' },
],
initialValue:contentUrl,
},
]"
/>
</a-form-item>
<!-- 简介 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="简介">
<a-textarea
class="ml-3"
style="height:80px"
placeholder="简介"
v-decorator="[
'intro',
{
rules: [
{ required: true, message: '简介不能为空' },
{ whitespace: true, message: '简介不能为空' },
{ max: 140, massage: '简介最多140个字符' },
],
initialValue:intro,
},
]"
/>
</a-form-item>
<!-- 封面图片 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="封面图片">
<div v-if="editData.picUrl" class="d-flex align-end ml-4">
<img :src="editData.picUrl" style="height:100px;" alt="">
<div>
<a-icon @click="deleteFileList" class="ml-5" type="close-circle" />
</div>
</div>
<a-upload :action="upload" :before-upload="beforeUpload" @change="handleChange" class="ml-3" 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-date-picker :default-value="editData.times" class="ml-3" @change="changeBirthday" show-time />
</a-form-item>
<!-- 类型 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="类型">
<a-select
v-decorator="[ 'type', { initialValue:type }, ]"
class="ml-3" default-value="视频" style="width: 100%"
>
<a-select-option :key="index" :value="index + 1" v-for="(item, index) in recStatusList">{{ item }}</a-select-option>
</a-select>
</a-form-item>
<!-- 是否在首页展示 -->
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" label="是否在首页展示">
<a-radio-group class="ml-3"
v-decorator="[ 'whetherShow', { initialValue:whetherShow, }, ]"
>
<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-checkbox-group class="ml-3" @change="onChangeBan">
<a-checkbox class="my-2" v-for="(item, index) in bannersList" :key="index" :value="item.moldId">{{ item.moldName }}</a-checkbox>
</a-checkbox-group>
</a-form-item>
<a-form-item class="d-flex flex-row-reverse">
<a-button @click="$emit('closeModal')" class="mr-3">取消</a-button>
<a-button class="white--text" html-type="submit" type="primary">保存</a-button>
</a-form-item>
</a-form>
</a-modal>
</div>
</template>
<script>
import { upload, academyUpdate, queryMold } from 'config/api';
const formItemLayout = {
labelCol: { span: 6 },
wrapperCol: { span: 16 },
};
const tailItemLayout = { wrapperCol: { span: 16, offset: 6 } };
export default {
name: 'CollegeEdit',
props: {
editVisible: { type: Boolean, default: false },
editData: { type: Object, default: () => {} },
},
data() {
return {
formItemLayout,
tailItemLayout,
form: this.$form.createForm(this, { name: 'college-edit' }),
upload: upload,
fileList: [],
//
beforeUpload: file => {
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
if (!isJpgOrPng) {
this.$message.error('仅支持 JPG/PNG 格式的图片!');
}
return isJpgOrPng;
},
recStatusList: ['视频', '音频', 'PPT'],
bannersList: [],
banner: [],
title: '',
contentUrl: '',
intro: '',
times: '',
type: 1,
whetherShow: 0,
};
},
created() {
this.getQueryMold();
// this.from = this.editData
this.title = this.editData.title,
this.contentUrl = this.editData.contentUrl
this.intro = this.editData.intro
this.times = this.editData.times
this.type = this.editData.type
this.whetherShow = this.editData.whetherShow
this.fileList.push(this.editData.coverPicture)
console.log("======>collegeEdit",this.data)
},
methods: {
// fileList
deleteFileList(){
console.log("进入事件")
this.fileList = []
this.editData.picUrl = ''
},
changeBirthday(date, dateString) {
// console.log(this.$moment(date._e).format('YYYY-MM-DD HH:mm:ss'));
this.times = this.$moment(date._e).format('YYYY-MM-DD HH:mm:ss');
},
onChangeBan(e) {
this.banner = e;
console.log(this.banner)
},
//
handleChange(info) {
// this.fileList = fileList;
console.log(info);
if (info.file.status === 'done') {
this.fileList.push(info.file.response.data[0].id);
} else if (info.file.status === 'removed') {
this.fileList = info.fileList;
}
},
async getQueryMold() {
try {
const res = await queryMold();
const { code, msg, data } = res.data;
if (code === 200) {
this.bannersList = data;
} else {
this.$message.error(msg);
}
} catch (error) {
this.$message.error(error);
}
},
//
handleSubmit(e) {
e.preventDefault();
this.form.validateFieldsAndScroll(async (err, values) => {
if (!err) {
if (this.fileList.length > 0 || this.editData.picUrl) {
try {
console.log("handleSubmit",values)
this.picId = this.fileList[0];
const params = {
param: {
academyId: this.editData.academyId,
banners: this.banner,
contentUrl: values.contentUrl,
coverPicture: this.fileList[0] || this.editData.coverPicture,
intro: values.intro,
times: this.times,
title: values.title,
type: values.type,
whetherShow: values.whetherShow,
},
};
const res = await academyUpdate(params);
const { data, msg, code } = res.data;
if (code === 200) {
this.$emit('getData');
this.$emit('closeModal');
this.$message.success('保存成功');
} else {
throw msg;
}
} catch (error) {
this.$message.error(error || '添加失败');
}
} else {
this.$message.error('请上传图片');
}
}
});
},
},
};
</script>
<style scoped lang="stylus"></style>

1
src/views/DemandFilling/DemandFilling.vue

@ -43,6 +43,7 @@ export default {
type: paramData && paramData.type !== '' ? paramData.type : '',
pageNum: paramData && paramData.current ? paramData.current : 1,
pageSize: paramData && paramData.pageSize ? paramData.pageSize : 10,
serviceType: 1,
},
};
const res = await searchServiceApply(params);

1
src/views/HatchingDemandFilling/HatchingDemandFilling.vue

@ -43,6 +43,7 @@ export default {
type: paramData && paramData.type !== '' ? paramData.type : '',
pageNum: paramData && paramData.current ? paramData.current : 1,
pageSize: paramData && paramData.pageSize ? paramData.pageSize : 10,
serviceType: 2,
},
};
const res = await searchServiceApply(params);

70
src/views/Teacher/Teacher.vue

@ -0,0 +1,70 @@
<template>
<div class="pa-3 white fill-height d-flex flex-column">
<teacher-search @getPageList="getPageList" />
<teacher-date :lists="lists" :pagination="pagination" @getPageList="getPageList" />
</div>
</template>
<script>
// import PageSearch from 'components/Page/PageSearch.vue';
import TeacherDate from 'components/Teacher/TeacherDate.vue';
import TeacherSearch from 'components/Teacher/TeacherSearch.vue';
import { selTeacher,findTeachH } from 'config/api';
export default {
name: 'Teacher',
components: {
TeacherSearch,
TeacherDate
},
data() {
return {
lists: [],
pagination: { current: 1, pageSize: 10 },
};
},
created() {
this.getPageList();
},
methods: {
/**
* 页面列表查询
* @param { String } pageNum 页码
* @param { String } pageSize 每页多少条
* @param { String } titleCode 模块
*/
async getPageList(condition) {
try {
const params = {
param: {
pageNum: (condition && condition.current) || 1,
pageSize: (condition && condition.pageSize) || 10,
},
};
const res = await findTeachH(params);
const { code, msg, data } = res.data;
if (code === 200) {
console.log("selTeacher方法已经走到")
this.lists = data.list;
const paper = { ...this.pagination };
paper.current = data.pageNum;
paper.total = +data.total;
paper.pageSize = data.pageSize;
this.pagination = paper;
} else {
throw msg || '获取失败';
}
} catch (error) {
this.$message.error(error);
}
},
},
};
</script>
Loading…
Cancel
Save