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