From f34f5322ffa898b42ce4467af9916c9e73deb4f9 Mon Sep 17 00:00:00 2001 From: rk <94314517@qq.com> Date: 星期一, 22 九月 2025 17:01:27 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- frontWuhu/src/api/business/applicationInfo.js | 6 frontWuhu/src/utils/request.js | 2 frontWuhu/src/router/index.js | 2 frontWuhu/src/views/business/serverProvider.vue | 2 frontWuhu/src/views/system/menu.vue | 4 frontWuhu/src/views/business/serviceProviderResources.vue | 115 ++++++-- frontWuhu/src/components/business/OperaDetailsBWindow.vue | 199 ++++++++++++++ frontWuhu/src/api/business/serverProvider.js | 5 frontWuhu/src/components/Protocol.vue | 8 frontWuhu/src/views/business/appHall.vue | 307 +++++++++++++++++++++ frontWuhu/src/views/business/applicationInfo.vue | 31 - frontWuhu/src/assets/images/bg_yingyong.png | 0 frontWuhu/src/components/business/OperaDetailsAWindow.vue | 64 +++- frontWuhu/src/components/common/RichEditor.vue | 11 frontWuhu/src/views/business/demandRecord.vue | 61 ++-- frontWuhu/src/components/business/OperaServerProviderWindow.vue | 2 frontWuhu/.env.development | 3 frontWuhu/src/components/business/OperaApplicationInfoWindow.vue | 10 18 files changed, 726 insertions(+), 106 deletions(-) diff --git a/frontWuhu/.env.development b/frontWuhu/.env.development index 5652e89..60e8a48 100644 --- a/frontWuhu/.env.development +++ b/frontWuhu/.env.development @@ -8,7 +8,8 @@ # VVUE_APP_API_BASE_URL='http://192.168.0.102:10031' # 浠诲悍鏈湴 -VUE_APP_API_BASE_URL='http://192.168.1.54:10031' +# VUE_APP_API_BASE_URL='http://192.168.1.54:10031' +VUE_APP_API_BASE_URL = 'http://wuhu.dtkey.cn/hfznzzzd' #鐒︽澗鏈湴 # VUE_APP_API_BASE_URL='http://192.168.0.36:10011' diff --git a/frontWuhu/src/api/business/applicationInfo.js b/frontWuhu/src/api/business/applicationInfo.js index 27153ce..a5aec13 100644 --- a/frontWuhu/src/api/business/applicationInfo.js +++ b/frontWuhu/src/api/business/applicationInfo.js @@ -34,3 +34,9 @@ export function deleteById (id) { return request.get(`/business/applicationInfo/delete/${id}`) } + +// 鏍规嵁ID鏌ヨ +export function getById (id) { + return request.get(`/business/applicationInfo/${id}`) +} + diff --git a/frontWuhu/src/api/business/serverProvider.js b/frontWuhu/src/api/business/serverProvider.js index 3198732..caa125c 100644 --- a/frontWuhu/src/api/business/serverProvider.js +++ b/frontWuhu/src/api/business/serverProvider.js @@ -35,4 +35,7 @@ return request.get(`/business/serverProvider/delete/${id}`) } - +// 鏍规嵁ID鏌ヨ +export function getById (id) { + return request.get(`/business/serverProvider/${id}`) +} diff --git a/frontWuhu/src/assets/images/bg_yingyong.png b/frontWuhu/src/assets/images/bg_yingyong.png new file mode 100644 index 0000000..bdcfe89 --- /dev/null +++ b/frontWuhu/src/assets/images/bg_yingyong.png Binary files differ diff --git a/frontWuhu/src/components/Protocol.vue b/frontWuhu/src/components/Protocol.vue index 6a1fa4a..2073a7c 100644 --- a/frontWuhu/src/components/Protocol.vue +++ b/frontWuhu/src/components/Protocol.vue @@ -47,7 +47,11 @@ open(title, target) { this.title = title this.visible = true - this.getProtocl() + if (target) { + this.content = target + } else { + this.getProtocl() + } }, getProtocl() { companyUserRules() @@ -59,7 +63,7 @@ this.$message.error(e) }) }, - + }, } </script> diff --git a/frontWuhu/src/components/business/OperaApplicationInfoWindow.vue b/frontWuhu/src/components/business/OperaApplicationInfoWindow.vue index 9457ead..0a370c2 100644 --- a/frontWuhu/src/components/business/OperaApplicationInfoWindow.vue +++ b/frontWuhu/src/components/business/OperaApplicationInfoWindow.vue @@ -29,7 +29,7 @@ <el-input type="textarea" :autosize="{ minRows: 12, maxRows: 6 }" v-model="form.introduction" placeholder="璇疯緭鍏ュ簲鐢ㄧ畝浠�" v-trim/> </el-form-item> <el-form-item label="搴旂敤璇︽儏" prop="details"> - <el-input v-model="form.details" placeholder="璇疯緭鍏ュ簲鐢ㄨ鎯�" v-trim/> + <RichEditor :content="{ content: form.details }" @edit="form.details = $event" :max-length="0" /> </el-form-item> </el-form> </GlobalWindow> @@ -40,10 +40,11 @@ import GlobalWindow from '@/components/common/GlobalWindow' import UploadAvatarImage from '@/components/common/UploadAvatarImage' import { fetchList } from '@/api/business/serverProvider' +import RichEditor from '@/components/common/RichEditor' export default { name: 'OperaApplicationInfoWindow', extends: BaseOpera, - components: { GlobalWindow, UploadAvatarImage }, + components: { GlobalWindow, UploadAvatarImage, RichEditor }, data () { return { // 琛ㄥ崟鏁版嵁 @@ -92,6 +93,8 @@ this.visible = true // 鏂板缓 if (target == null) { + this.file.imgurl = '' + this.file.imgurlfull = '' this.$nextTick(() => { this.$refs.form.resetFields() this.form[this.configData['field.id']] = null @@ -103,6 +106,9 @@ for (const key in this.form) { this.form[key] = target[key] } + setTimeout(() => { + this.form.details = target.details + }, 500) this.file.imgurl = target.logo this.file.imgurlfull = target.fullLog }) diff --git a/frontWuhu/src/components/business/OperaDetailsAWindow.vue b/frontWuhu/src/components/business/OperaDetailsAWindow.vue index ba99539..4f2ee33 100644 --- a/frontWuhu/src/components/business/OperaDetailsAWindow.vue +++ b/frontWuhu/src/components/business/OperaDetailsAWindow.vue @@ -3,18 +3,36 @@ :title="title" :visible.sync="visible" :confirm-working="isWorking" - @confirm="confirm" + :withFooter="false" > - <div class="com"> + <div class="com" v-if="info"> <div class="com_image"> - <img src="../../assets/images/zhuce_ic_qiye@2x.png" /> + <img :src="info.fullLog" /> </div> <div class="com_info"> - <div class="com_info_title">澶у攼铻嶅悎鐗╄仈绉戞妧鏃犻敗鏈夐檺鍏徃</div> + <div class="com_info_title">{{info.name}}</div> <div class="com_info_list"> <div class="com_info_list_item"> <div class="com_info_list_item_label">琛屼笟绫诲埆锛�</div> - <div class="com_info_list_item_val">鐢靛瓙浜у搧鍙婅蒋浠�</div> + <div class="com_info_list_item_val">{{info.industryName}}</div> + </div> + <div class="com_info_list_item"> + <div class="com_info_list_item_label">鏈嶅姟鍟嗘槦绾э細</div> + <div class="com_info_list_item_val"> + <el-rate v-model="info.starLevel" :colors="['#FF934D','#FF934D','#FF934D']" disabled text-color="#ff9900"></el-rate> + </div> + </div> + <div class="com_info_list_item"> + <div class="com_info_list_item_label">鑱旂郴浜猴細</div> + <div class="com_info_list_item_val">{{info.linkName}}</div> + </div> + <div class="com_info_list_item"> + <div class="com_info_list_item_label">鑱旂郴鏂瑰紡锛�</div> + <div class="com_info_list_item_val">{{info.linkPhone}}</div> + </div> + <div class="com_info_list_item"> + <div class="com_info_list_item_label">浼佷笟浠嬬粛锛�</div> + <div class="com_info_list_item_val">{{info.introduction}}</div> </div> </div> </div> @@ -25,20 +43,24 @@ <script> import BaseOpera from '@/components/base/BaseOpera' import GlobalWindow from '@/components/common/GlobalWindow' +import { getById } from '@/api/business/serverProvider' export default { name: 'OperaDemandRecordWindow', extends: BaseOpera, components: { GlobalWindow }, data () { return { - form: {} + value: 4, + info: null } }, - created () { - this.config({ - api: '/business/demandRecord', - 'field.id': 'id' - }) + methods: { + async open (title, id) { + this.title = title + this.info = await getById(id) + this.visible = true + + } } } </script> @@ -53,6 +75,13 @@ flex-shrink: 0; background: #F4F7FC; margin-right: 30px; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + img { + width: 100%; + } } .com_info { flex: 1; @@ -62,6 +91,7 @@ font-weight: 600; font-size: 26px; color: #222222; + margin-bottom: 20px; } .com_info_list { display: flex; @@ -69,12 +99,18 @@ .com_info_list_item { width: 100%; display: flex; - align-items: center; + margin-bottom: 30px; .com_info_list_item_label { - + font-weight: 400; + font-size: 16px; + color: #666666; + flex-shrink: 0; } .com_info_list_item_val { - + flex: 1; + font-weight: 400; + font-size: 16px; + color: #333333; } } } diff --git a/frontWuhu/src/components/business/OperaDetailsBWindow.vue b/frontWuhu/src/components/business/OperaDetailsBWindow.vue new file mode 100644 index 0000000..59b2fcd --- /dev/null +++ b/frontWuhu/src/components/business/OperaDetailsBWindow.vue @@ -0,0 +1,199 @@ +<template> + <GlobalWindow + :title="title" + :visible.sync="visible" + :confirm-working="isWorking" + :withFooter="false" + > + <div class="com" v-if="info"> + <div class="com_image"> + <img :src="info.fullLog" /> + </div> + <div class="com_info"> + <div class="com_info_title">{{info.name}}</div> + <div class="list_item_cate"> + <div class="list_item_cate_row" v-for="(item, index) in info.lablesList" :key="index">{{item}}</div> + </div> + <div class="com_info_text1">鏈嶅姟鍟嗭細{{info.serverName}}</div> + <div class="com_info_text">{{info.introduction}}</div> + <div class="com_info_btn" @click="openT" v-if="[1, 2].includes(userInfo.type)">鑱旂郴鎴戜滑</div> + <div class="com_info_x"></div> + <div class="com_info_content" v-html="info.details"></div> + </div> + <el-dialog + title="鑱旂郴鎴戜滑" + :destroy-on-close="true" + :visible.sync="show" + :close-on-click-modal="false" + :modal-append-to-body="false" + width="500px"> + <el-form :model="formData" label-position="right" :rules="rules" ref="ruleForm"> + <el-form-item label="鑱旂郴浜�" prop="name"> + <el-input v-model="formData.name"></el-input> + </el-form-item> + <el-form-item label="鑱旂郴鐢佃瘽" prop="phone"> + <el-input type="number" v-model="formData.phone" maxlength="11"></el-input> + </el-form-item> + <el-form-item label="绠�瑕佹弿杩�" prop="description"> + <el-input v-model="formData.description"></el-input> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="show = false">鍙� 娑�</el-button> + <el-button type="primary" @click="submit">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> + </GlobalWindow> +</template> + +<script> +import BaseOpera from '@/components/base/BaseOpera' +import GlobalWindow from '@/components/common/GlobalWindow' +import { getById } from '@/api/business/applicationInfo' +import { create } from '@/api/business/demandRecord' +import { mapState } from 'vuex' +export default { + name: 'OperaDemandRecordWindow', + extends: BaseOpera, + components: { GlobalWindow }, + computed: { + ...mapState(['userInfo']) + }, + data () { + return { + form: {}, + formData: { + name: '', + phone: '', + description: '' + }, + rules: { + name: [ + { required: true, message: '璇疯緭鍏�', trigger: 'blur' } + ], + phone: [ + { required: true, message: '璇疯緭鍏�', trigger: 'blur' } + ] + }, + show: false, + info: null + } + }, + methods: { + async open (title, id) { + this.title = title + this.info = await getById(id) + this.info.lablesList = this.info.lables.split(',') || [] + this.visible = true + }, + openT() { + this.formData.name = '' + this.formData.phone = '' + this.formData.description = '' + this.show = true + }, + submit() { + this.$refs.ruleForm.validate((valid) => { + if (valid) { + create({ + applicationId: this.info.id, + linkName: this.formData.name, + linkPhone: this.formData.phone, + details: this.formData.description + }).then(res => { + this.$message.success('鎻愪氦鎴愬姛锛�') + this.show = false + }) + } else { + return false; + } + }); + } + } +} +</script> + +<style lang="scss" scoped> + .com { + width: 100%; + display: flex; + .com_image { + width: 140px; + height: 140px; + flex-shrink: 0; + background: #F4F7FC; + margin-right: 30px; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + img { + width: 100%; + } + } + .com_info { + flex: 1; + display: flex; + flex-direction: column; + .com_info_title { + font-weight: 600; + font-size: 26px; + color: #222222; + } + .com_info_text1 { + font-weight: 400; + font-size: 13px; + color: #666666; + margin-top: 15px; + } + .com_info_text { + font-weight: 400; + font-size: 16px; + color: #666666; + margin-top: 15px; + } + .com_info_btn { + width: 96px; + height: 36px; + line-height: 36px; + text-align: center; + font-weight: 400; + font-size: 14px; + color: #FFFFFF; + background: #216EEE; + border-radius: 2px; + cursor: pointer; + margin-top: 15px; + } + .com_info_x { + width: 100%; + height: 1px; + margin: 20px 0; + background-color: #DFE2E8; + } + .com_info_content { + width: 100%; + } + .list_item_cate { + width: 100%; + display: flex; + align-items: center; + margin-top: 12px; + .list_item_cate_row { + padding: 5px 8px; + box-sizing: border-box; + background: rgba(33,110,238,0.1); + border-radius: 2px; + font-weight: 400; + font-size: 12px; + color: #216EEE; + margin-right: 10px; + &:last-child { + margin-right: 0 !important; + } + } + } + } + } +</style> diff --git a/frontWuhu/src/components/business/OperaServerProviderWindow.vue b/frontWuhu/src/components/business/OperaServerProviderWindow.vue index 7576be2..f94413a 100644 --- a/frontWuhu/src/components/business/OperaServerProviderWindow.vue +++ b/frontWuhu/src/components/business/OperaServerProviderWindow.vue @@ -105,6 +105,8 @@ this.visible = true // 鏂板缓 if (target == null) { + this.file.imgurlfull = '' + this.file.imgurl = '' this.$nextTick(() => { this.$refs.form.resetFields() this.form[this.configData['field.id']] = null diff --git a/frontWuhu/src/components/common/RichEditor.vue b/frontWuhu/src/components/common/RichEditor.vue index 1acf8cc..fee81d5 100644 --- a/frontWuhu/src/components/common/RichEditor.vue +++ b/frontWuhu/src/components/common/RichEditor.vue @@ -16,7 +16,7 @@ /> </div> </template> - + <script> import { Editor, Toolbar } from '@wangeditor/editor-for-vue' export default { @@ -129,7 +129,7 @@ console.log(`${file.name} 涓婁紶鍑洪敊`, err, res) }, }, - + } }, mode: 'default', // or 'simple' @@ -145,19 +145,20 @@ this.editor = Object.seal(editor) }, onChange (editor) { + console.log('editor', editor) // debugger this.$emit('edit', this.content.content) // this.value = this.html // console.log(this.content); }, - + // onBlur (editor) { // console.log('onBlur', editor) // this.$emit('edit', this.html) // }, }, - + } </script> -<style src="@wangeditor/editor/dist/css/style.css"></style> \ No newline at end of file +<style src="@wangeditor/editor/dist/css/style.css"></style> diff --git a/frontWuhu/src/router/index.js b/frontWuhu/src/router/index.js index ed074b2..dacc38f 100644 --- a/frontWuhu/src/router/index.js +++ b/frontWuhu/src/router/index.js @@ -67,7 +67,7 @@ router.beforeEach((to, from, next) => { if (to.path === '/business/screen') { // window.open('http://localhost:8080/#/maturity') - window.open('http://106.14.20.42/screen/#/maturity') + window.open(process.env.VUE_APP_SCREENURL2) next({ name: from.name }) return } diff --git a/frontWuhu/src/utils/request.js b/frontWuhu/src/utils/request.js index 0b411f9..c7d2098 100644 --- a/frontWuhu/src/utils/request.js +++ b/frontWuhu/src/utils/request.js @@ -3,6 +3,7 @@ import pkg from '../../package' import { trim } from './util' import cache from '../plugins/cache' +import { Message } from 'element-ui' axios.defaults.headers.common['Content-Type'] = 'application/json;charset=UTF-8' const axiosInstance = axios.create({ @@ -64,6 +65,7 @@ } // 涓氬姟澶辫触 if (!response.data.success) { + Message.error(response.data.message) return Promise.reject(response.data) } return response.data.data diff --git a/frontWuhu/src/views/business/appHall.vue b/frontWuhu/src/views/business/appHall.vue new file mode 100644 index 0000000..3e83f47 --- /dev/null +++ b/frontWuhu/src/views/business/appHall.vue @@ -0,0 +1,307 @@ +<template> + <div class="box"> + <div class="box_head"> + <div class="box_head_title">搴旂敤澶у巺</div> + <div class="box_head_info">鍙戝姏浼佷笟杩愯惀鈥滅爺浜т緵閿�鏈嶁�滃叧閿幆鑺傦紝姹囬泦澶氬浼樿川鏈嶅姟鍟嗭紝鎻愪緵绮鹃�夊簲鐢ㄤ笌鏈嶅姟</div> + <div class="box_head_search"> + <div class="left"> + <div class="box_head_search_input"> + <input type="text" v-model="applicationInfo" placeholder="杈撳叆搴旂敤鍚嶇О/鏈嶅姟鍟嗗悕绉版悳绱�"> + <img src="../../assets/images/ic_clear@2x.png" v-if="applicationInfo" @click="clearText" /> + </div> + <div class="box_head_search_btn" @click="search">鏌ヨ</div> + </div> + </div> + </div> + <div class="box_cate"> + <div class="list" v-if="list.length > 0"> + <div class="list_item" v-for="(item, index) in list" :key="index"> + <div class="list_item_image"> + <img :src="item.fullLog" alt="" /> + </div> + <div class="list_item_title">{{item.name}}</div> + <div class="list_item_cate" v-if="item.lables"> + <div class="list_item_cate_row" v-for="(child, i) in item.lablesList" :key="i">{{child}}</div> + </div> + <div class="list_item_company">鏈嶅姟鍟嗭細{{item.serverName}}</div> + <div class="list_item_info">{{item.introduction}}</div> + <div class="list_item_btn" @click="$refs.operaDetailsBWindow.open('搴旂敤璇︽儏', item.id)">鏌ョ湅璇︽儏</div> + </div> + <div class="list_zw"></div> + <div class="list_zw"></div> + </div> + <div class="list" v-else> + <div class="list_wu">鏃犳暟鎹�</div> + </div> + <div class="pagination"> + <el-pagination + v-if="list.length > 0" + @current-change="handleCurrentChange" + :current-page="page" + :page-sizes="[12, 24, 36, 48]" + :page-size="12" + layout="total, prev, pager, next, jumper" + :total="total"> + </el-pagination> + <div class="pagination_info">Copyright 漏 2022 - 2023 鏅鸿兘鍒堕�犺瘖鏂患鍚堟湇鍔″钩鍙�. All Rights Reserved. 鐗堟潈鎵�鏈�</div> + </div> + </div> + <!-- 璇︽儏 --> + <OperaDetailsBWindow ref="operaDetailsBWindow" @success="" /> + </div> +</template> + +<script> + import OperaDetailsBWindow from '@/components/business/OperaDetailsBWindow' + import { fetchList } from '@/api/business/applicationInfo' + export default { + name: 'serviceProviderResources', + components: { OperaDetailsBWindow }, + data() { + return { + applicationInfo: '', + value: 3, + page: 1, + total: 0, + list: [] + } + }, + created () { + this.getList() + }, + methods: { + search() { + this.page = 1 + this.getList() + }, + handleCurrentChange(e) { + this.page = e + this.getList() + }, + clearText() { + this.applicationInfo = '' + }, + getList() { + fetchList({ + capacity: 12, + page: this.page, + model: { + applicationInfo: this.applicationInfo, + status: 0 + } + }).then(res => { + res.records.forEach((item) => { + item.lablesList = item.lables.split(',') || [] + }) + this.list = res.records + this.total = res.total + }) + } + } + } +</script> + +<style lang="scss" scoped> + .box { + width: 100%; + .box_head { + width: 100%; + height: 264px; + padding: 36px 50px; + box-sizing: border-box; + background-image: url("../../assets/images/bg_yingyong.png"); + background-repeat: no-repeat; + background-size: cover; + display: flex; + flex-direction: column; + .box_head_title { + font-weight: 600; + font-size: 40px; + color: #216EEE; + } + .box_head_info { + font-weight: 400; + font-size: 16px; + color: #333333; + margin-top: 14px; + } + .box_head_search { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + margin-top: 36px; + .left { + display: flex; + align-items: center; + .box_head_search_input { + width: 360px; + height: 48px; + padding: 0 15px; + box-sizing: border-box; + background: rgba(255,255,255,0.72); + border-radius: 2px; + margin-right: 10px; + display: flex; + align-items: center; + img { + width: 20px; + height: 20px; + flex-shrink: 0; + cursor: pointer; + } + input { + flex: 1; + height: 100%; + margin-right: 15px; + font-weight: 400; + font-size: 14px; + color: #222222; + border: none; + outline: none; + background: rgba(0,0,0,0); + &::-webkit-input-placeholder { + color: #999999; + font-size: 14px; + font-weight: 400; + } + } + } + .box_head_search_btn { + width: 68px; + height: 48px; + line-height: 48px; + text-align: center; + background: #216EEE; + border-radius: 2px; + font-weight: 600; + font-size: 15px; + color: #FFFFFF; + cursor: pointer; + } + } + } + } + .box_cate { + width: 100%; + padding: 0 20px; + box-sizing: border-box; + position: relative; + top: -30px; + left: 0; + z-index: 9; + .list { + width: 100%; + display: flex; + align-items: center; + flex-wrap: wrap; + justify-content: space-between; + .list_wu { + width: 100%; + text-align: center; + margin: 50px 0; + font-size: 14px; + color: #666666; + } + .list_zw { + width: 24%; + height: 0; + } + .list_item { + width: 24%; + height: 317px; + padding: 20px 30px; + box-sizing: border-box; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + background: #FFFFFF; + border-radius: 8px; + margin-bottom: 1%; + .list_item_btn { + font-weight: 400; + font-size: 14px; + color: #FFFFFF; + width: 96px; + height: 36px; + line-height: 36px; + text-align: center; + background: #216EEE; + border-radius: 2px; + cursor: pointer; + } + .list_item_image { + width: 70px; + height: 70px; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + img { + width: 100%; + } + } + .list_item_title { + font-weight: 600; + font-size: 18px; + color: #222222; + } + .list_item_cate { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + .list_item_cate_row { + padding: 5px 8px; + box-sizing: border-box; + background: rgba(33,110,238,0.1); + border-radius: 2px; + font-weight: 400; + font-size: 12px; + color: #216EEE; + margin-right: 10px; + &:last-child { + margin-right: 0 !important; + } + } + } + .list_item_company { + width: 100%; + text-align: center; + font-weight: 400; + font-size: 12px; + color: #666666; + } + .list_item_info { + width: 100%; + text-align: center; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; /* 闄愬埗鏂囨湰涓�2琛� */ + overflow: hidden; + font-weight: 400; + font-size: 12px; + color: #999999; + } + } + } + .pagination { + width: 100%; + display: flex; + align-items: center; + flex-direction: column; + justify-content: center; + margin-top: 20px; + .pagination_info { + width: 100%; + text-align: center; + font-weight: 400; + font-size: 12px; + color: #828D9E; + margin-top: 30px; + } + } + } + } +</style> diff --git a/frontWuhu/src/views/business/applicationInfo.vue b/frontWuhu/src/views/business/applicationInfo.vue index 93d8bf0..f5fc3c1 100644 --- a/frontWuhu/src/views/business/applicationInfo.vue +++ b/frontWuhu/src/views/business/applicationInfo.vue @@ -5,12 +5,11 @@ <el-form-item label="搴旂敤鍚嶇О" prop="name"> <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ簲鐢ㄥ悕绉�" @keypress.enter.native="search"></el-input> </el-form-item> - <el-form-item label="鏈嶅姟鍟嗗悕绉�" prop="serverId"> - <el-input v-model="searchForm.serverId" placeholder="璇疯緭鍏ユ湇鍔″晢鍚嶇О" @keypress.enter.native="search"></el-input> + <el-form-item label="鏈嶅姟鍟嗗悕绉�" prop="serverName"> + <el-input v-model="searchForm.serverName" placeholder="璇疯緭鍏ユ湇鍔″晢鍚嶇О" @keypress.enter.native="search"></el-input> </el-form-item> <section> <el-button type="primary" @click="search">鎼滅储</el-button> - <el-button type="primary" :loading="isWorking.export" v-permissions="['business:applicationinfo:exportExcel']" @click="exportExcel">瀵煎嚭</el-button> <el-button @click="reset">閲嶇疆</el-button> </section> </el-form> @@ -38,7 +37,11 @@ <el-table-column prop="serverName" label="鏈嶅姟鍟�" min-width="100px"></el-table-column> <el-table-column prop="lables" label="鏍囩" min-width="100px"></el-table-column> <el-table-column prop="introduction" label="绠�浠�" min-width="100px"></el-table-column> - <el-table-column prop="details" label="璇︽儏" min-width="100px"></el-table-column> + <el-table-column prop="details" label="璇︽儏" min-width="100px"> + <template slot-scope="{row}"> + <el-button type="text" @click="$refs.protocol.open('璇︽儏', row.details || '<p></p>')">鐐瑰嚮鏌ョ湅</el-button> + </template> + </el-table-column> <el-table-column label="鐘舵��" min-width="100px"> <template slot-scope="{row}"> <el-switch @@ -72,6 +75,7 @@ </template> <!-- 鏂板缓/淇敼 --> <OperaApplicationInfoWindow ref="operaApplicationInfoWindow" @success="handlePageChange"/> + <Protocol ref="protocol"/> </TableLayout> </template> @@ -81,28 +85,17 @@ import Pagination from '@/components/common/Pagination' import OperaApplicationInfoWindow from '@/components/business/OperaApplicationInfoWindow' import { updateStatus } from '@/api/business/applicationInfo' +import Protocol from "@/components/Protocol.vue"; export default { name: 'ApplicationInfo', extends: BaseTable, - components: { TableLayout, Pagination, OperaApplicationInfoWindow }, + components: { TableLayout, Pagination, OperaApplicationInfoWindow, Protocol }, data () { return { // 鎼滅储 searchForm: { - id: '', - creator: '', - createDate: '', - editor: '', - editDate: '', - isdeleted: '', - status: '', - remark: '', - serverId: '', - name: '', - logo: '', - lables: '', - introduction: '', - details: '' + serverName: '', + name: '' } } }, diff --git a/frontWuhu/src/views/business/demandRecord.vue b/frontWuhu/src/views/business/demandRecord.vue index b987280..e6b762f 100644 --- a/frontWuhu/src/views/business/demandRecord.vue +++ b/frontWuhu/src/views/business/demandRecord.vue @@ -2,14 +2,22 @@ <TableLayout :permissions="['business:demandrecord:query']"> <!-- 鎼滅储琛ㄥ崟 --> <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> - <el-form-item label="搴旂敤鍚嶇О" prop="applicationId"> - <el-input v-model="searchForm.applicationId" placeholder="璇疯緭鍏ュ簲鐢ㄥ悕绉�" @keypress.enter.native="search"></el-input> + <el-form-item label="搴旂敤鍚嶇О" prop="applicationName"> + <el-input v-model="searchForm.applicationName" placeholder="璇疯緭鍏ュ簲鐢ㄥ悕绉�" @keypress.enter.native="search"></el-input> </el-form-item> <el-form-item label="闇�姹傛彁鍑鸿��" prop="linkName"> - <el-input v-model="searchForm.linkName" placeholder="璇疯緭鍏ヨ仈绯讳汉濮撳悕" @keypress.enter.native="search"></el-input> + <el-input v-model="searchForm.linkName" placeholder="璇疯緭鍏ラ渶姹傛彁鍑鸿�呭鍚�" @keypress.enter.native="search"></el-input> </el-form-item> <el-form-item label="鎻愪氦鏃堕棿" prop="createDate"> - <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨鎻愪氦鏃堕棿" @change="search"/> + <el-date-picker + v-model="time" + type="daterange" + range-separator="鑷�" + @change="getTime" + value-format="yyyy-MM-dd" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡"> + </el-date-picker> </el-form-item> <section> <el-button type="primary" @click="search">鎼滅储</el-button> @@ -27,23 +35,12 @@ :data="tableData.list" stripe > - <el-table-column prop="applicationId" label="搴旂敤鍚嶇О" min-width="100px"></el-table-column> - <el-table-column prop="companyId" label="闇�姹備紒涓�" min-width="100px"></el-table-column> + <el-table-column prop="applicationName" label="搴旂敤鍚嶇О" min-width="100px"></el-table-column> + <el-table-column prop="companyName" label="闇�姹備紒涓�" min-width="100px"></el-table-column> <el-table-column prop="linkName" label="鑱旂郴浜哄鍚�" min-width="100px"></el-table-column> <el-table-column prop="linkPhone" label="鑱旂郴浜虹數璇�" min-width="100px"></el-table-column> <el-table-column prop="details" label="鎻忚堪" min-width="100px"></el-table-column> <el-table-column prop="createDate" label="鎻愪氦鏃堕棿" min-width="100px"></el-table-column> - <el-table-column - v-if="containPermissions(['business:demandrecord:update', 'business:demandrecord:delete'])" - label="鎿嶄綔" - min-width="120" - fixed="right" - > - <template slot-scope="{row}"> - <el-button type="text" @click="$refs.operaDemandRecordWindow.open('缂栬緫闇�姹傝褰�', row)" icon="el-icon-edit" v-permissions="['business:demandrecord:update']">缂栬緫</el-button> - <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:demandrecord:delete']">鍒犻櫎</el-button> - </template> - </el-table-column> </el-table> <pagination @size-change="handleSizeChange" @@ -70,20 +67,12 @@ return { // 鎼滅储 searchForm: { - id: '', - creator: '', - createDate: '', - editor: '', - editDate: '', - isdeleted: '', - status: '', - remark: '', - applicationId: '', - companyId: '', + applicationName: '', linkName: '', - linkPhone: '', - details: '' - } + startDate: '', + endDate: '' + }, + time: [] } }, created () { @@ -94,6 +83,18 @@ 'field.main': 'id' }) this.search() + }, + methods: { + getTime(e) { + if (e && e.length > 0) { + this.searchForm.startDate = e[0] + this.searchForm.endDate = e[1] + } else { + this.searchForm.startDate = '' + this.searchForm.endDate = '' + } + this.search() + } } } </script> diff --git a/frontWuhu/src/views/business/serverProvider.vue b/frontWuhu/src/views/business/serverProvider.vue index 6dbf31f..23643c5 100644 --- a/frontWuhu/src/views/business/serverProvider.vue +++ b/frontWuhu/src/views/business/serverProvider.vue @@ -17,7 +17,7 @@ </el-form-item> <section> <el-button type="primary" @click="search">鎼滅储</el-button> - <el-button type="primary" :loading="isWorking.export" v-permissions="['business:serverprovider:exportExcel']" @click="exportExcel">瀵煎嚭</el-button> +<!-- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:serverprovider:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>--> <el-button @click="reset">閲嶇疆</el-button> </section> </el-form> diff --git a/frontWuhu/src/views/business/serviceProviderResources.vue b/frontWuhu/src/views/business/serviceProviderResources.vue index 53d9c11..d371552 100644 --- a/frontWuhu/src/views/business/serviceProviderResources.vue +++ b/frontWuhu/src/views/business/serviceProviderResources.vue @@ -9,37 +9,43 @@ <input type="text" v-model="name" placeholder="杈撳叆鏈嶅姟鍟嗗悕绉版悳绱�"> <img src="../../assets/images/ic_clear@2x.png" v-if="name" @click="clearText" /> </div> - <div class="box_head_search_btn">鏌ヨ</div> + <div class="box_head_search_btn" @click="search">鏌ヨ</div> </div> <div class="right"> <img src="../../assets/images/ic_fuwushang@2x.png" alt="" /> - <span class="right_name">鏈嶅姟鍟嗘�绘暟锛�</span> - <span class="right_num">220</span> + <span class="right_name">鏈嶅姟鍟嗘�绘暟锛�<span class="right_num">{{total}}</span></span> </div> </div> </div> <div class="box_cate"> <div class="cate"> <div class="cate_label">琛屼笟鍒嗙被锛�</div> - <div class="cate_val"> - <div :class="index === 0 ? 'cate_val_row active' : 'cate_val_row'" v-for="(item, index) in cateList" :key="index">{{item}}</div> + <div class="cate_val" :style="{ height: open ? 'auto' : '30px' }"> + <div :class="cateId === item.id ? 'cate_val_row active' : 'cate_val_row'" v-for="(item, index) in cateList" :key="index" @click="select(item.id)">{{item.name}}</div> </div> - <div class="cate_dwon"> - <span>灞曞紑</span> - <i class="el-icon-arrow-down"></i> + <div class="cate_dwon" @click="open = !open"> + <template v-if="open"> + <span>鏀惰捣</span> + <i class="el-icon-arrow-up"></i> + </template> + <template v-else> + <span>灞曞紑</span> + <i class="el-icon-arrow-down"></i> + </template> </div> </div> - <div class="list"> - <div class="list_item" v-for="(item, index) in 6" :key="index" @click="$refs.operaDetailsAWindow.open('鏈嶅姟鍟嗚鎯�')"> + <div class="list" v-if="list.length > 0"> + <div class="list_item" v-for="(item, index) in list" :key="index" @click="$refs.operaDetailsAWindow.open('鏈嶅姟鍟嗚鎯�', item.id)"> <div class="list_item_image"> - <img src="../../assets/images/zhuce_ic_qiye@2x.png" alt="" /> + <img :src="item.fullLog" alt="" /> </div> - <div class="list_item_title">瀹夊窘璞嗙背绉戞妧鏈夐檺鍏徃</div> - <div class="list_item_info">瀹夊窘璞嗙背绉戞妧鏈夐檺鍏徃浠ヨ蒋浠跺紑鍙戙�佷汉宸ユ櫤鑳藉簲鐢ㄥ紑鍙戜负鏍稿績...</div> + <div class="list_item_title">{{item.name}}</div> + <div class="list_item_info">{{item.introduction}}</div> <div class="list_item_divide"> <el-rate - v-model="value" + v-model="item.starLevel" disabled + :colors="['#FF934D','#FF934D','#FF934D']" text-color="#ff9900"> </el-rate> </div> @@ -47,14 +53,18 @@ <div class="list_zw"></div> <div class="list_zw"></div> </div> + <div class="list" v-else> + <div class="list_wu">鏃犳暟鎹�</div> + </div> <div class="pagination"> <el-pagination + v-if="list.length > 0" @current-change="handleCurrentChange" - :current-page="currentPage" - :page-sizes="[10, 20, 30, 40]" - :page-size="10" + :current-page="page" + :page-sizes="[12, 24, 36, 48]" + :page-size="12" layout="total, prev, pager, next, jumper" - :total="50"> + :total="total"> </el-pagination> <div class="pagination_info">Copyright 漏 2022 - 2023 鏅鸿兘鍒堕�犺瘖鏂患鍚堟湇鍔″钩鍙�. All Rights Reserved. 鐗堟潈鎵�鏈�</div> </div> @@ -66,25 +76,60 @@ <script> import OperaDetailsAWindow from '@/components/business/OperaDetailsAWindow' + import { list } from '@/api/business/labels' + import { fetchList } from '@/api/business/serverProvider' export default { name: 'serviceProviderResources', components: { OperaDetailsAWindow }, data() { return { name: '', - value: 5, - cateList: ['鍏ㄩ儴','鏂版潗鏂�','鍏朵粬','鏂板瀷骞虫澘鏄剧ず','鐢熺墿鍖昏嵂','椋熷搧鍔犲伐','鍐堕噾','姹借溅宸ヤ笟','杞诲伐绾虹粐','瑁呭鍒堕��','鍖栧伐','鐢靛瓙浜у搧鍙婅蒋浠�','鐢熶骇鎬ф湇鍔′笟','鑺傝兘鐜繚','瀹跺叿鍒堕�犺涓�'] + value: 3, + page: 1, + cateId: '', + total: 0, + cateList: [], + list: [], + open: false } + }, + created () { + this.getAll() + this.getList() }, methods: { handleCurrentChange(e) { - console.log(e) - }, - currentPage(e) { - console.log(e) + this.page = e + this.getList() }, clearText() { this.name = '' + }, + async getAll() { + this.cateList = await list({ type: 1, isdeleted: 0 }) + this.cateList.unshift({ name: '鍏ㄩ儴', id: '' }) + }, + select(id) { + this.cateId = id + this.page = 1 + this.getList() + }, + search() { + this.page = 1 + this.getList() + }, + getList() { + fetchList({ + capacity: 12, + page: this.page, + model: { + industryId: this.cateId, + name: this.name + } + }).then(res => { + this.list = res.records + this.total = res.total + }) } } } @@ -100,7 +145,7 @@ box-sizing: border-box; background-image: url("../../assets/images/bg_fuwushang.png"); background-repeat: no-repeat; - background-size: 100% 100%; + background-size: cover; display: flex; flex-direction: column; .box_head_title { @@ -170,9 +215,7 @@ } } .right { - width: 173px; - height: 48px; - padding: 0 15px; + padding: 15px; box-sizing: border-box; background: #FFFFFF; border-radius: 2px; @@ -180,10 +223,13 @@ align-items: center; justify-content: space-between; img { + flex-shrink: 0; width: 16px; height: 16px; + margin-right: 6px; } .right_name { + flex: 1; font-weight: 400; font-size: 15px; color: #333333; @@ -210,6 +256,13 @@ align-items: center; flex-wrap: wrap; justify-content: space-between; + .list_wu { + width: 100%; + text-align: center; + margin: 50px 0; + font-size: 14px; + color: #666666; + } .list_zw { width: 24%; height: 0; @@ -225,6 +278,7 @@ justify-content: space-between; background: #FFFFFF; border-radius: 8px; + cursor: pointer; margin-bottom: 1%; .list_item_image { width: 70px; @@ -244,6 +298,7 @@ } .list_item_info { width: 100%; + text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; @@ -273,6 +328,7 @@ display: flex; align-items: center; flex-wrap: wrap; + overflow: hidden; .active { background: #216EEE !important; border-radius: 2px !important; @@ -297,6 +353,9 @@ font-size: 12px; color: #216EEE; } + .el-icon-arrow-up { + color: #216EEE; + } .el-icon-arrow-down { color: #216EEE; } diff --git a/frontWuhu/src/views/system/menu.vue b/frontWuhu/src/views/system/menu.vue index b71fa84..d15254f 100644 --- a/frontWuhu/src/views/system/menu.vue +++ b/frontWuhu/src/views/system/menu.vue @@ -16,11 +16,11 @@ row-key="id" stripe border - + @selection-change="handleSelectionChange" > <el-table-column type="selection" width="55" align="center" fixed="left"></el-table-column> - <el-table-column prop="name" label="鑿滃崟鍚嶇О" fixed="left" align="center" min-width="160px"></el-table-column> + <el-table-column prop="name" label="鑿滃崟鍚嶇О" fixed="left" min-width="160px"></el-table-column> <el-table-column prop="icon" label="鍥炬爣" align="center" min-width="80px" class-name="table-column-icon"> <template slot-scope="{row}"> <i v-if="row.icon != null && row.icon !== ''" :class="{[row.icon]: true}"></i> -- Gitblit v1.9.3