|
@@ -3,12 +3,15 @@
|
|
|
<el-row>
|
|
|
<el-col :span="24">
|
|
|
<el-table :data="nextData" stripe style="width: 100%" border>
|
|
|
+ <el-table-column prop="room_id" label="房间号" align="center" :show-overflow-tooltip="true"> </el-table-column>
|
|
|
<el-table-column prop="title" label="对接会标题" align="center" :show-overflow-tooltip="true"> </el-table-column>
|
|
|
<el-table-column prop="start_time" label="开始时间" align="center" :show-overflow-tooltip="true"> </el-table-column>
|
|
|
+ <el-table-column prop="end_time" label="结束时间" align="center" :show-overflow-tooltip="true"> </el-table-column>
|
|
|
<el-table-column prop="join_end" label="报名截止时间" align="center" :show-overflow-tooltip="true"> </el-table-column>
|
|
|
<el-table-column prop="sheng" label="省" align="center" :show-overflow-tooltip="true"> </el-table-column>
|
|
|
<el-table-column prop="shi" label="市" align="center" :show-overflow-tooltip="true"> </el-table-column>
|
|
|
- <el-table-column prop="desc" label="简介" align="center" :show-overflow-tooltip="true"> </el-table-column>
|
|
|
+ <el-table-column prop="adminuser" label="负责人" align="center" :show-overflow-tooltip="true"> </el-table-column>
|
|
|
+ <el-table-column prop="phone" label="联系电话" align="center" :show-overflow-tooltip="true"> </el-table-column>
|
|
|
<el-table-column label="操作" style="width:200px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<el-button size="mini" type="text" @click.prevent="handleEdit(scope.row.id)"
|
|
@@ -23,35 +26,149 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-dialog title="申请" :visible.sync="dialogFormVisible" :before-close="handleClose">
|
|
|
- <el-form :model="applyForm" :rules="rules" ref="applyForm">
|
|
|
- <el-form-item label="申请人身份" label-width="120px">
|
|
|
- <el-radio-group v-model="applyForm.buyer" @change="changeuser">
|
|
|
- <el-radio label="0">买家</el-radio>
|
|
|
- <el-radio label="1">卖家</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="选择产品" label-width="120px" v-if="this.resource == '1' || this.resource == ''">
|
|
|
- <el-select v-model="applyForm.goodsList" placeholder="请选择选择产品">
|
|
|
- <el-option v-for="(item, index) in goodsLists" :key="index" :label="item.name" :value="item.id"> </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="联系人" label-width="120px">
|
|
|
- <el-input v-model="applyForm.contact" autocomplete="off"></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="联系电话" label-width="120px">
|
|
|
- <el-input v-model="applyForm.contact_tel" autocomplete="off"></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="电子邮箱" label-width="120px">
|
|
|
- <el-input v-model="applyForm.email" autocomplete="off"></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="单位名称" label-width="120px">
|
|
|
- <el-input v-model="applyForm.company" autocomplete="off"></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- <div slot="footer" class="dialog-footer" style="text-align:center;">
|
|
|
- <el-button @click="resetBtn">取 消</el-button>
|
|
|
- <el-button type="primary" @click="submitBtn">确 定</el-button>
|
|
|
- </div>
|
|
|
+ <el-tabs v-model="activeName">
|
|
|
+ <el-tab-pane label="技术需求" name="first">
|
|
|
+ <el-form :model="demandForm" :rules="demandFormrules" ref="ruleForm" label-width="130px" class="demo-ruleForm">
|
|
|
+ <el-form-item label="产品类型" prop="totaltype">
|
|
|
+ <el-select v-model="demandForm.totaltype" placeholder="请选择产品类型">
|
|
|
+ <el-option label="技术" value="0"></el-option>
|
|
|
+ <el-option label="产品" value="1" disabled></el-option>
|
|
|
+ <el-option label="服务" value="2" disabled></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="名称" prop="name">
|
|
|
+ <el-input v-model="demandForm.name" placeholder="请输入名称"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="类型">
|
|
|
+ <el-select v-model="demandForm.product_type_id" filterable @change="selectChild">
|
|
|
+ <el-option v-for="(item, index) in columnList" :key="index" :value="item.id" :label="item.name"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="产品简介">
|
|
|
+ <el-input type="textarea" v-model="demandForm.introduction" placeholder="请输入产品简介"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="研发阶段">
|
|
|
+ <el-select v-model="demandForm.phase" placeholder="请选择研发阶段">
|
|
|
+ <el-option label="阶段成果" value="0"></el-option>
|
|
|
+ <el-option label="最终成果" value="1"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="产品单价">
|
|
|
+ <el-input v-model="demandForm.price" placeholder="请输入产品单价"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="产品单位">
|
|
|
+ <el-select v-model="demandForm.priceunit" placeholder="请选择产品单位">
|
|
|
+ <el-option label="公斤" value="0"></el-option>
|
|
|
+ <el-option label="套" value="1"></el-option>
|
|
|
+ <el-option label="件" value="2"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-form-item label="产品图片" prop="image">
|
|
|
+ <upload
|
|
|
+ :limit="6"
|
|
|
+ :data="demandForm.image"
|
|
|
+ :uploadBtn="true"
|
|
|
+ type="image"
|
|
|
+ :url="`/files/image/upload`"
|
|
|
+ @upload="uploadSuccess"
|
|
|
+ @delete="uploadDelete"
|
|
|
+ ></upload>
|
|
|
+ </el-form-item>
|
|
|
+ <span>
|
|
|
+ <el-form-item label="所属领域">
|
|
|
+ <el-select v-model="demandForm.field" placeholder="请选择所属领域">
|
|
|
+ <el-option label="先进制造" value="0"></el-option>
|
|
|
+ <el-option label="新材料" value="1"></el-option>
|
|
|
+ <el-option label="光电子" value="2"></el-option>
|
|
|
+ <el-option label="信息技术" value="3"></el-option>
|
|
|
+ <el-option label="文化和科技融合" value="4"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </span>
|
|
|
+ <el-form-item label="服务范围">
|
|
|
+ <el-input type="textarea" v-model="demandForm.scope" placeholder="请输入服务范围"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="合作方式">
|
|
|
+ <el-select v-model="demandForm.coopermode" placeholder="请选择合作方式">
|
|
|
+ <el-option label="技术转让" value="0"></el-option>
|
|
|
+ <el-option label="技术服务" value="1"></el-option>
|
|
|
+ <el-option label="技术许可" value="2"></el-option>
|
|
|
+ <el-option label="技术融资" value="3"></el-option>
|
|
|
+ <el-option label="其他" value="4"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="交易方式">
|
|
|
+ <el-select v-model="demandForm.business" placeholder="请选择交易方式">
|
|
|
+ <el-option label="公用" value="0"></el-option>
|
|
|
+ <el-option label="竞价" value="1"></el-option>
|
|
|
+ <el-option label="转让" value="2"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="投入预算">
|
|
|
+ <el-input v-model="demandForm.budget" placeholder="请输入投入预算"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="需求截止日期">
|
|
|
+ <el-date-picker v-model="demandForm.end_date" type="date" placeholder="请选择需求截止日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd">
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <span slot="label">
|
|
|
+ <el-popover
|
|
|
+ placement="top-start"
|
|
|
+ width="200"
|
|
|
+ trigger="hover"
|
|
|
+ content="(阐述在生产经营、项目建设、科研活动、产业化方向中遇到的技术难题或瓶颈问题及需达到的技术指标)"
|
|
|
+ >
|
|
|
+ <span slot="reference" style="color:#409eff">难题或瓶颈问题</span>
|
|
|
+ </el-popover>
|
|
|
+ </span>
|
|
|
+ <el-input type="textarea" v-model="demandForm.difficult_problem" placeholder="请输入难题或瓶颈问题"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <span slot="label">
|
|
|
+ <el-popover
|
|
|
+ placement="top-start"
|
|
|
+ width="200"
|
|
|
+ trigger="hover"
|
|
|
+ content="(企业承接成果、技术所具备的技术人员、设备、资金等基础条件及其他配套条件)"
|
|
|
+ >
|
|
|
+ <span slot="reference" style="color:#409eff">企业解决技术需求已具备的条件</span>
|
|
|
+ </el-popover>
|
|
|
+ </span>
|
|
|
+ <el-input type="textarea" v-model="demandForm.demand" placeholder="请输入企业解决需求"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="联系人" prop="contact_user">
|
|
|
+ <el-input v-model="demandForm.contact_user" placeholder="请输入联系人"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="联系电话" prop="contact_tel">
|
|
|
+ <el-input v-model.number="demandForm.contact_tel" placeholder="请输入联系电话" maxlength="11"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button @click="resetForm('ruleForm')">取消</el-button>
|
|
|
+ <el-button type="primary" @click="submitForm('ruleForm')">确定</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="产品供求" name="second">
|
|
|
+ <el-form :model="productForm" :rules="productFormrules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
|
|
|
+ <el-form-item label="选择产品">
|
|
|
+ <el-select v-model="productForm.goodsList" value-key="id" multiple placeholder="请选择选择产品">
|
|
|
+ <el-option v-for="(item, index) in goodsLists" :key="index" :label="item.name" :value="item"> </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="primary" @click="submitproductForm('ruleForm')">确定</el-button>
|
|
|
+ <el-button @click="resetForm('ruleForm')">取消</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -59,45 +176,57 @@
|
|
|
<script>
|
|
|
import page from '@/components/pagination.vue';
|
|
|
import { mapState, createNamespacedHelpers } from 'vuex';
|
|
|
+import _ from 'lodash';
|
|
|
+import upload from '@/components/upload.vue';
|
|
|
const { mapActions: dock } = createNamespacedHelpers('dock');
|
|
|
-const { mapActions: apply } = createNamespacedHelpers('apply');
|
|
|
-const { mapActions: login } = createNamespacedHelpers('login');
|
|
|
const { mapActions: place } = createNamespacedHelpers('place');
|
|
|
+const { mapActions: apply } = createNamespacedHelpers('apply');
|
|
|
+const { mapActions: mapMarkettype } = createNamespacedHelpers('markettype');
|
|
|
const { mapActions: mapProduct } = createNamespacedHelpers('marketproduct');
|
|
|
export default {
|
|
|
name: 'nextLive',
|
|
|
props: {},
|
|
|
components: {
|
|
|
page,
|
|
|
+ upload,
|
|
|
},
|
|
|
data: function() {
|
|
|
return {
|
|
|
// 下期直播
|
|
|
nextData: [],
|
|
|
nextTotal: 0,
|
|
|
-
|
|
|
- rules: {
|
|
|
- oldpasswd: [{ required: true, message: '请输入旧密码', trigger: 'blur' }],
|
|
|
- newpasswd: [{ required: true, message: '请输入新密码', trigger: 'blur' }],
|
|
|
- },
|
|
|
- // 选择产品
|
|
|
- resource: '',
|
|
|
- goodsLists: [],
|
|
|
- // 申请直播
|
|
|
dialogFormVisible: false,
|
|
|
- applyForm: {},
|
|
|
dock_id: '',
|
|
|
+ activeName: 'first',
|
|
|
+ // 需求
|
|
|
+ demandForm: {
|
|
|
+ totaltype: '0',
|
|
|
+ },
|
|
|
+ columnList: [], //类型
|
|
|
+ demandFormrules: {
|
|
|
+ name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
|
|
|
+ totaltype: [{ required: true, message: '请输入名称', trigger: 'change' }],
|
|
|
+ contact_user: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
|
|
|
+ contact_tel: [{ required: true, message: '请输入联系电话', trigger: 'blur' }],
|
|
|
+ },
|
|
|
+ // 技术
|
|
|
+ productForm: {},
|
|
|
+ productFormrules: {},
|
|
|
+ // 产品类别
|
|
|
+ goodsLists: [],
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
|
this.search();
|
|
|
+ this.maarkettype();
|
|
|
},
|
|
|
methods: {
|
|
|
...dock(['query', 'delete', 'update']),
|
|
|
- ...apply({ applyupdate: 'update', applyCreate: 'create' }),
|
|
|
- ...login({ logout: 'logout', transactiondtetle: 'delete' }),
|
|
|
...place({ palcequery: 'query', palcefetch: 'fetch' }),
|
|
|
+ ...apply({ applyupdate: 'update', applyCreate: 'create' }),
|
|
|
+ ...mapMarkettype({ markettypeList: 'query' }),
|
|
|
...mapProduct({ mapProductQuery: 'query', mapProductFetch: 'fetch' }),
|
|
|
+ // 查询对接会
|
|
|
async search({ skip = 0, limit = 0 } = { skip: 0, limit: 0 }) {
|
|
|
let res = await this.query({ skip, limit, status: '0' });
|
|
|
for (const val of res.data) {
|
|
@@ -116,42 +245,94 @@ export default {
|
|
|
}
|
|
|
this.$set(this, `nextData`, res.data);
|
|
|
this.$set(this, `nextTotal`, res.total);
|
|
|
- res = await this.mapProductQuery({ userid: this.user.uid });
|
|
|
- if (res.errcode === 0) {
|
|
|
- this.$set(this, `goodsLists`, res.data);
|
|
|
- }
|
|
|
},
|
|
|
// 申请对接会
|
|
|
handleEdit(id) {
|
|
|
this.dialogFormVisible = true;
|
|
|
this.$set(this, `dock_id`, id);
|
|
|
},
|
|
|
- // 提交申请
|
|
|
- async submitBtn() {
|
|
|
- this.applyForm.user_id = this.user.uid;
|
|
|
- this.applyForm.user_name = this.user.name;
|
|
|
- this.applyForm.role = this.user.role;
|
|
|
- const res = await this.applyCreate({ id: this.dock_id, ...this.applyForm });
|
|
|
+ // 需求提交
|
|
|
+ async submitForm() {
|
|
|
+ let data = {};
|
|
|
+ data.user_id = this.user.uid;
|
|
|
+ data.user_name = this.user.name;
|
|
|
+ data.contact_tel = this.user.phone;
|
|
|
+ data.role = this.user.role;
|
|
|
+ let goods = [];
|
|
|
+ goods.push(this.demandForm);
|
|
|
+ data.goodsList = goods;
|
|
|
+ const res = await this.applyCreate({ id: this.dock_id, ...data });
|
|
|
if (res.errcode === 0) {
|
|
|
this.$message({
|
|
|
- message: '申请参加对接会成功,等待管理员审核',
|
|
|
+ message: '申请参加对接会成功',
|
|
|
type: 'success',
|
|
|
});
|
|
|
+ this.resetForm();
|
|
|
}
|
|
|
- this.resetBtn();
|
|
|
},
|
|
|
- // 取消申请
|
|
|
- resetBtn() {
|
|
|
- this.applyForm = {};
|
|
|
+ // 產品提交
|
|
|
+ async submitproductForm() {
|
|
|
+ let data = this.productForm;
|
|
|
+ data.user_id = this.user.uid;
|
|
|
+ data.user_name = this.user.name;
|
|
|
+ data.contact_tel = this.user.phone;
|
|
|
+ data.role = this.user.role;
|
|
|
+ const res = await this.applyCreate({ id: this.dock_id, ...data });
|
|
|
+ if (res.errcode === 0) {
|
|
|
+ this.$message({
|
|
|
+ message: '申请参加对接会成功',
|
|
|
+ type: 'success',
|
|
|
+ });
|
|
|
+ this.resetForm();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 取消
|
|
|
+ resetForm() {
|
|
|
+ this.demandForm = {
|
|
|
+ totaltype: '0',
|
|
|
+ };
|
|
|
+ this.productForm = {};
|
|
|
this.dialogFormVisible = false;
|
|
|
+ this.search();
|
|
|
},
|
|
|
+ // 关闭申请
|
|
|
handleClose(done) {
|
|
|
this.resetBtn();
|
|
|
done();
|
|
|
},
|
|
|
- // 选择产品
|
|
|
- changeuser(label) {
|
|
|
- this.$set(this, 'resource', label);
|
|
|
+ // 查询类型
|
|
|
+ async maarkettype({ category = 54, ...info } = {}) {
|
|
|
+ const res = await this.markettypeList({ category, ...info });
|
|
|
+ if (this.$checkRes(res)) {
|
|
|
+ this.$set(this, `columnList`, res.data);
|
|
|
+ }
|
|
|
+ const arr = await this.mapProductQuery({ userid: this.user.uid });
|
|
|
+ if (this.$checkRes(arr)) {
|
|
|
+ this.$set(this, `goodsLists`, arr.data);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 类型选择
|
|
|
+ selectChild(product_type_id) {
|
|
|
+ let res = this.columnList.filter(fil => fil.id === product_type_id);
|
|
|
+ if (res.length > 0) {
|
|
|
+ this.$set(this.demandForm, `product_type_name`, res[0].name);
|
|
|
+ }
|
|
|
+ this.$forceUpdate();
|
|
|
+ },
|
|
|
+ // 图片
|
|
|
+ uploadSuccess({ type, data }) {
|
|
|
+ let arr = _.get(this.demandForm, type);
|
|
|
+ if (_.isArray(arr)) {
|
|
|
+ let datas = { name: data.name, url: data.uri };
|
|
|
+ this.demandForm[type].push({ name: data.name, url: data.uri });
|
|
|
+ } else {
|
|
|
+ let newArr = [{ name: data.name, url: data.uri }];
|
|
|
+ this.$set(this.demandForm, `${type}`, newArr);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 删除图片
|
|
|
+ uploadDelete(index) {
|
|
|
+ this.demandForm.image.splice(index, 1);
|
|
|
},
|
|
|
},
|
|
|
computed: {
|